blob: c2ad1b0e4c04944e2dd8ef236e7bf85d7ea0d224 [file] [log] [blame]
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301/* Copyright (c) 2012-2017, The Linux Foundation. All rights reserved.
2 *
3 * This program is free software; you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License version 2 and
5 * only version 2 as published by the Free Software Foundation.
6 *
7 * This program is distributed in the hope that it will be useful,
8 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 * GNU General Public License for more details.
11 */
12
13#include <linux/init.h>
14#include <linux/err.h>
15#include <linux/module.h>
16#include <linux/moduleparam.h>
17#include <linux/platform_device.h>
18#include <linux/bitops.h>
19#include <linux/mutex.h>
20#include <linux/of_device.h>
21#include <linux/slab.h>
22#include <sound/core.h>
23#include <sound/soc.h>
24#include <sound/soc-dapm.h>
25#include <sound/pcm.h>
26#include <sound/initval.h>
27#include <sound/control.h>
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053028#include <sound/tlv.h>
29#include <sound/asound.h>
30#include <sound/pcm_params.h>
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053031#include <sound/hwdep.h>
Laxminath Kasam605b42f2017-08-01 22:02:15 +053032#include <sound/audio_effects.h>
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
60static struct cal_type_data *cal_data;
61
62static int fm_switch_enable;
63static int hfp_switch_enable;
64static int int0_mi2s_switch_enable;
65static int int4_mi2s_switch_enable;
66static int pri_mi2s_switch_enable;
67static int sec_mi2s_switch_enable;
68static int tert_mi2s_switch_enable;
69static int quat_mi2s_switch_enable;
Rohit Kumara5077932017-09-10 22:05:05 +053070static int quin_mi2s_switch_enable;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053071static int fm_pcmrx_switch_enable;
72static int usb_switch_enable;
73static int lsm_port_index;
74static int slim0_rx_aanc_fb_port;
75static int msm_route_ec_ref_rx;
76static int msm_ec_ref_ch = 4;
77static int msm_ec_ref_bit_format = SNDRV_PCM_FORMAT_S16_LE;
78static int msm_ec_ref_sampling_rate = 48000;
79static uint32_t voc_session_id = ALL_SESSION_VSID;
80static int msm_route_ext_ec_ref;
81static bool is_custom_stereo_on;
82static bool is_ds2_on;
83static bool swap_ch;
84
85#define WEIGHT_0_DB 0x4000
86/* all the FEs which can support channel mixer */
87static struct msm_pcm_channel_mixer channel_mixer[MSM_FRONTEND_DAI_MM_SIZE];
88/* input BE for each FE */
89static int channel_input[MSM_FRONTEND_DAI_MM_SIZE][ADM_MAX_CHANNELS];
90
91enum {
92 MADNONE,
93 MADAUDIO,
94 MADBEACON,
95 MADULTRASOUND,
96 MADSWAUDIO,
97};
98
99#define ADM_LSM_PORT_INDEX 9
100
101#define SLIMBUS_0_TX_TEXT "SLIMBUS_0_TX"
102#define SLIMBUS_1_TX_TEXT "SLIMBUS_1_TX"
103#define SLIMBUS_2_TX_TEXT "SLIMBUS_2_TX"
104#define SLIMBUS_3_TX_TEXT "SLIMBUS_3_TX"
105#define SLIMBUS_4_TX_TEXT "SLIMBUS_4_TX"
106#define SLIMBUS_5_TX_TEXT "SLIMBUS_5_TX"
107#define TERT_MI2S_TX_TEXT "TERT_MI2S_TX"
108#define QUAT_MI2S_TX_TEXT "QUAT_MI2S_TX"
109#define ADM_LSM_TX_TEXT "ADM_LSM_TX"
110#define INT3_MI2S_TX_TEXT "INT3_MI2S_TX"
111
112#define LSM_FUNCTION_TEXT "LSM Function"
113static const char * const lsm_port_text[] = {
114 "None",
115 SLIMBUS_0_TX_TEXT, SLIMBUS_1_TX_TEXT, SLIMBUS_2_TX_TEXT,
116 SLIMBUS_3_TX_TEXT, SLIMBUS_4_TX_TEXT, SLIMBUS_5_TX_TEXT,
117 TERT_MI2S_TX_TEXT, QUAT_MI2S_TX_TEXT, ADM_LSM_TX_TEXT,
118 INT3_MI2S_TX_TEXT
119};
120
121struct msm_pcm_route_bdai_pp_params {
122 u16 port_id; /* AFE port ID */
123 unsigned long pp_params_config;
124 bool mute_on;
125 int latency;
126};
127
128static struct msm_pcm_route_bdai_pp_params
129 msm_bedais_pp_params[MSM_BACKEND_DAI_PP_PARAMS_REQ_MAX] = {
130 {HDMI_RX, 0, 0, 0},
131 {DISPLAY_PORT_RX, 0, 0, 0},
132};
133
134/*
135 * The be_dai_name_table is passed to HAL so that it can specify the
136 * BE ID for the BE it wants to enable based on the name. Thus there
137 * is a matching table and structure in HAL that need to be updated
138 * if any changes to these are made.
139 */
140struct msm_pcm_route_bdai_name {
141 unsigned int be_id;
142 char be_name[LPASS_BE_NAME_MAX_LENGTH];
143};
144static struct msm_pcm_route_bdai_name be_dai_name_table[MSM_BACKEND_DAI_MAX];
145
146static int msm_routing_send_device_pp_params(int port_id, int copp_idx,
147 int fe_id);
148
149static int msm_routing_get_bit_width(unsigned int format)
150{
151 int bit_width;
152
153 switch (format) {
154 case SNDRV_PCM_FORMAT_S32_LE:
155 bit_width = 32;
156 break;
157 case SNDRV_PCM_FORMAT_S24_LE:
158 case SNDRV_PCM_FORMAT_S24_3LE:
159 bit_width = 24;
160 break;
161 case SNDRV_PCM_FORMAT_S16_LE:
162 default:
163 bit_width = 16;
164 }
165 return bit_width;
166}
167
168static bool msm_is_resample_needed(int input_sr, int output_sr)
169{
170 bool rc = false;
171
172 if (input_sr != output_sr)
173 rc = true;
174
175 pr_debug("perform resampling (%s) for copp rate (%d)afe rate (%d)",
176 (rc ? "oh yes" : "not really"),
177 input_sr, output_sr);
178
179 return rc;
180}
181
182static void msm_pcm_routing_cfg_pp(int port_id, int copp_idx, int topology,
183 int channels)
184{
185 int rc = 0;
186
187 switch (topology) {
188 case SRS_TRUMEDIA_TOPOLOGY_ID:
189 pr_debug("%s: SRS_TRUMEDIA_TOPOLOGY_ID\n", __func__);
190 msm_dts_srs_tm_init(port_id, copp_idx);
191 break;
192 case DS2_ADM_COPP_TOPOLOGY_ID:
193 pr_debug("%s: DS2_ADM_COPP_TOPOLOGY %d\n",
194 __func__, DS2_ADM_COPP_TOPOLOGY_ID);
195 rc = msm_ds2_dap_init(port_id, copp_idx, channels,
196 is_custom_stereo_on);
197 if (rc < 0)
198 pr_err("%s: DS2 topo_id 0x%x, port %d, CS %d rc %d\n",
199 __func__, topology, port_id,
200 is_custom_stereo_on, rc);
201 break;
202 case DOLBY_ADM_COPP_TOPOLOGY_ID:
203 if (is_ds2_on) {
204 pr_debug("%s: DS2_ADM_COPP_TOPOLOGY\n", __func__);
205 rc = msm_ds2_dap_init(port_id, copp_idx, channels,
206 is_custom_stereo_on);
207 if (rc < 0)
208 pr_err("%s:DS2 topo_id 0x%x, port %d, rc %d\n",
209 __func__, topology, port_id, rc);
210 } else {
211 pr_debug("%s: DOLBY_ADM_COPP_TOPOLOGY_ID\n", __func__);
212 rc = msm_dolby_dap_init(port_id, copp_idx, channels,
213 is_custom_stereo_on);
214 if (rc < 0)
215 pr_err("%s: DS1 topo_id 0x%x, port %d, rc %d\n",
216 __func__, topology, port_id, rc);
217 }
218 break;
219 case ADM_CMD_COPP_OPEN_TOPOLOGY_ID_AUDIOSPHERE:
220 pr_debug("%s: TOPOLOGY_ID_AUDIOSPHERE\n", __func__);
221 rc = msm_qti_pp_asphere_init(port_id, copp_idx);
222 if (rc < 0)
223 pr_err("%s: topo_id 0x%x, port %d, copp %d, rc %d\n",
224 __func__, topology, port_id, copp_idx, rc);
225 break;
226 default:
227 /* custom topology specific feature param handlers */
228 break;
229 }
230}
231
232static void msm_pcm_routing_deinit_pp(int port_id, int topology)
233{
234 switch (topology) {
235 case SRS_TRUMEDIA_TOPOLOGY_ID:
236 pr_debug("%s: SRS_TRUMEDIA_TOPOLOGY_ID\n", __func__);
237 msm_dts_srs_tm_deinit(port_id);
238 break;
239 case DS2_ADM_COPP_TOPOLOGY_ID:
240 pr_debug("%s: DS2_ADM_COPP_TOPOLOGY_ID %d\n",
241 __func__, DS2_ADM_COPP_TOPOLOGY_ID);
242 msm_ds2_dap_deinit(port_id);
243 break;
244 case DOLBY_ADM_COPP_TOPOLOGY_ID:
245 if (is_ds2_on) {
246 pr_debug("%s: DS2_ADM_COPP_TOPOLOGY_ID\n", __func__);
247 msm_ds2_dap_deinit(port_id);
248 } else {
249 pr_debug("%s: DOLBY_ADM_COPP_TOPOLOGY_ID\n", __func__);
250 msm_dolby_dap_deinit(port_id);
251 }
252 break;
253 case ADM_CMD_COPP_OPEN_TOPOLOGY_ID_AUDIOSPHERE:
254 pr_debug("%s: TOPOLOGY_ID_AUDIOSPHERE\n", __func__);
255 msm_qti_pp_asphere_deinit(port_id);
256 break;
257 default:
258 /* custom topology specific feature deinit handlers */
259 break;
260 }
261}
262
263static void msm_pcm_routng_cfg_matrix_map_pp(struct route_payload payload,
264 int path_type, int perf_mode)
265{
266 int itr = 0, rc = 0;
267
268 if ((path_type == ADM_PATH_PLAYBACK) &&
269 (perf_mode == LEGACY_PCM_MODE) &&
270 is_custom_stereo_on) {
271 for (itr = 0; itr < payload.num_copps; itr++) {
272 if ((payload.port_id[itr] != SLIMBUS_0_RX) &&
273 (payload.port_id[itr] != RT_PROXY_PORT_001_RX)) {
274 continue;
275 }
276
277 rc = msm_qti_pp_send_stereo_to_custom_stereo_cmd(
278 payload.port_id[itr],
279 payload.copp_idx[itr],
280 payload.session_id,
281 Q14_GAIN_ZERO_POINT_FIVE,
282 Q14_GAIN_ZERO_POINT_FIVE,
283 Q14_GAIN_ZERO_POINT_FIVE,
284 Q14_GAIN_ZERO_POINT_FIVE);
285 if (rc < 0)
286 pr_err("%s: err setting custom stereo\n",
287 __func__);
288 }
289 }
290}
291
292#define SLIMBUS_EXTPROC_RX AFE_PORT_INVALID
293struct msm_pcm_routing_bdai_data msm_bedais[MSM_BACKEND_DAI_MAX] = {
294 { PRIMARY_I2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_PRI_I2S_RX},
295 { PRIMARY_I2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_PRI_I2S_TX},
296 { SLIMBUS_0_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_0_RX},
297 { SLIMBUS_0_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_0_TX},
298 { HDMI_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_HDMI},
299 { INT_BT_SCO_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_INT_BT_SCO_RX},
300 { INT_BT_SCO_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_INT_BT_SCO_TX},
301 { INT_FM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_INT_FM_RX},
302 { INT_FM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_INT_FM_TX},
303 { RT_PROXY_PORT_001_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
304 LPASS_BE_AFE_PCM_RX},
305 { RT_PROXY_PORT_001_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
306 LPASS_BE_AFE_PCM_TX},
307 { AFE_PORT_ID_PRIMARY_PCM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
308 LPASS_BE_AUXPCM_RX},
309 { AFE_PORT_ID_PRIMARY_PCM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
310 LPASS_BE_AUXPCM_TX},
311 { VOICE_PLAYBACK_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
312 LPASS_BE_VOICE_PLAYBACK_TX},
313 { VOICE2_PLAYBACK_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
314 LPASS_BE_VOICE2_PLAYBACK_TX},
315 { VOICE_RECORD_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
316 LPASS_BE_INCALL_RECORD_RX},
317 { VOICE_RECORD_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
318 LPASS_BE_INCALL_RECORD_TX},
319 { MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_MI2S_RX},
320 { MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_MI2S_TX},
321 { SECONDARY_I2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SEC_I2S_RX},
322 { SLIMBUS_1_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_1_RX},
323 { SLIMBUS_1_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_1_TX},
324 { SLIMBUS_2_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_2_RX},
325 { SLIMBUS_2_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_2_TX},
326 { SLIMBUS_3_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_3_RX},
327 { SLIMBUS_3_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_3_TX},
328 { SLIMBUS_4_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_4_RX},
329 { SLIMBUS_4_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_4_TX},
330 { SLIMBUS_5_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_5_RX},
331 { SLIMBUS_5_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_5_TX},
332 { SLIMBUS_6_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_6_RX},
333 { SLIMBUS_6_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_6_TX},
334 { SLIMBUS_7_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_7_RX},
335 { SLIMBUS_7_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_7_TX},
336 { SLIMBUS_8_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_8_RX},
337 { SLIMBUS_8_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_8_TX},
338 { SLIMBUS_EXTPROC_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_STUB_RX},
339 { SLIMBUS_EXTPROC_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_STUB_TX},
340 { SLIMBUS_EXTPROC_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_STUB_1_TX},
341 { AFE_PORT_ID_QUATERNARY_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
342 LPASS_BE_QUAT_MI2S_RX},
343 { AFE_PORT_ID_QUATERNARY_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
344 LPASS_BE_QUAT_MI2S_TX},
345 { AFE_PORT_ID_SECONDARY_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
346 LPASS_BE_SEC_MI2S_RX},
347 { AFE_PORT_ID_SECONDARY_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
348 LPASS_BE_SEC_MI2S_TX},
349 { AFE_PORT_ID_PRIMARY_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
350 LPASS_BE_PRI_MI2S_RX},
351 { AFE_PORT_ID_PRIMARY_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
352 LPASS_BE_PRI_MI2S_TX},
353 { AFE_PORT_ID_TERTIARY_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
354 LPASS_BE_TERT_MI2S_RX},
355 { AFE_PORT_ID_TERTIARY_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
356 LPASS_BE_TERT_MI2S_TX},
357 { AUDIO_PORT_ID_I2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
358 LPASS_BE_AUDIO_I2S_RX},
359 { AFE_PORT_ID_SECONDARY_PCM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
360 LPASS_BE_SEC_AUXPCM_RX},
361 { AFE_PORT_ID_SECONDARY_PCM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
362 LPASS_BE_SEC_AUXPCM_TX},
363 { AFE_PORT_ID_SPDIF_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
364 LPASS_BE_SPDIF_RX},
365 { AFE_PORT_ID_SECONDARY_MI2S_RX_SD1, 0, {0}, {0}, 0, 0, 0, 0, {0},
366 LPASS_BE_SEC_MI2S_RX_SD1},
367 { AFE_PORT_ID_QUINARY_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
368 LPASS_BE_QUIN_MI2S_RX},
369 { AFE_PORT_ID_QUINARY_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
370 LPASS_BE_QUIN_MI2S_TX},
371 { AFE_PORT_ID_SENARY_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
372 LPASS_BE_SENARY_MI2S_TX},
373 { AFE_PORT_ID_PRIMARY_TDM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
374 LPASS_BE_PRI_TDM_RX_0},
375 { AFE_PORT_ID_PRIMARY_TDM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
376 LPASS_BE_PRI_TDM_TX_0},
377 { AFE_PORT_ID_PRIMARY_TDM_RX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
378 LPASS_BE_PRI_TDM_RX_1},
379 { AFE_PORT_ID_PRIMARY_TDM_TX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
380 LPASS_BE_PRI_TDM_TX_1},
381 { AFE_PORT_ID_PRIMARY_TDM_RX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
382 LPASS_BE_PRI_TDM_RX_2},
383 { AFE_PORT_ID_PRIMARY_TDM_TX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
384 LPASS_BE_PRI_TDM_TX_2},
385 { AFE_PORT_ID_PRIMARY_TDM_RX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
386 LPASS_BE_PRI_TDM_RX_3},
387 { AFE_PORT_ID_PRIMARY_TDM_TX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
388 LPASS_BE_PRI_TDM_TX_3},
389 { AFE_PORT_ID_PRIMARY_TDM_RX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
390 LPASS_BE_PRI_TDM_RX_4},
391 { AFE_PORT_ID_PRIMARY_TDM_TX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
392 LPASS_BE_PRI_TDM_TX_4},
393 { AFE_PORT_ID_PRIMARY_TDM_RX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
394 LPASS_BE_PRI_TDM_RX_5},
395 { AFE_PORT_ID_PRIMARY_TDM_TX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
396 LPASS_BE_PRI_TDM_TX_5},
397 { AFE_PORT_ID_PRIMARY_TDM_RX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
398 LPASS_BE_PRI_TDM_RX_6},
399 { AFE_PORT_ID_PRIMARY_TDM_TX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
400 LPASS_BE_PRI_TDM_TX_6},
401 { AFE_PORT_ID_PRIMARY_TDM_RX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
402 LPASS_BE_PRI_TDM_RX_7},
403 { AFE_PORT_ID_PRIMARY_TDM_TX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
404 LPASS_BE_PRI_TDM_TX_7},
405 { AFE_PORT_ID_SECONDARY_TDM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
406 LPASS_BE_SEC_TDM_RX_0},
407 { AFE_PORT_ID_SECONDARY_TDM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
408 LPASS_BE_SEC_TDM_TX_0},
409 { AFE_PORT_ID_SECONDARY_TDM_RX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
410 LPASS_BE_SEC_TDM_RX_1},
411 { AFE_PORT_ID_SECONDARY_TDM_TX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
412 LPASS_BE_SEC_TDM_TX_1},
413 { AFE_PORT_ID_SECONDARY_TDM_RX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
414 LPASS_BE_SEC_TDM_RX_2},
415 { AFE_PORT_ID_SECONDARY_TDM_TX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
416 LPASS_BE_SEC_TDM_TX_2},
417 { AFE_PORT_ID_SECONDARY_TDM_RX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
418 LPASS_BE_SEC_TDM_RX_3},
419 { AFE_PORT_ID_SECONDARY_TDM_TX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
420 LPASS_BE_SEC_TDM_TX_3},
421 { AFE_PORT_ID_SECONDARY_TDM_RX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
422 LPASS_BE_SEC_TDM_RX_4},
423 { AFE_PORT_ID_SECONDARY_TDM_TX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
424 LPASS_BE_SEC_TDM_TX_4},
425 { AFE_PORT_ID_SECONDARY_TDM_RX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
426 LPASS_BE_SEC_TDM_RX_5},
427 { AFE_PORT_ID_SECONDARY_TDM_TX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
428 LPASS_BE_SEC_TDM_TX_5},
429 { AFE_PORT_ID_SECONDARY_TDM_RX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
430 LPASS_BE_SEC_TDM_RX_6},
431 { AFE_PORT_ID_SECONDARY_TDM_TX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
432 LPASS_BE_SEC_TDM_TX_6},
433 { AFE_PORT_ID_SECONDARY_TDM_RX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
434 LPASS_BE_SEC_TDM_RX_7},
435 { AFE_PORT_ID_SECONDARY_TDM_TX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
436 LPASS_BE_SEC_TDM_TX_7},
437 { AFE_PORT_ID_TERTIARY_TDM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
438 LPASS_BE_TERT_TDM_RX_0},
439 { AFE_PORT_ID_TERTIARY_TDM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
440 LPASS_BE_TERT_TDM_TX_0},
441 { AFE_PORT_ID_TERTIARY_TDM_RX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
442 LPASS_BE_TERT_TDM_RX_1},
443 { AFE_PORT_ID_TERTIARY_TDM_TX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
444 LPASS_BE_TERT_TDM_TX_1},
445 { AFE_PORT_ID_TERTIARY_TDM_RX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
446 LPASS_BE_TERT_TDM_RX_2},
447 { AFE_PORT_ID_TERTIARY_TDM_TX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
448 LPASS_BE_TERT_TDM_TX_2},
449 { AFE_PORT_ID_TERTIARY_TDM_RX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
450 LPASS_BE_TERT_TDM_RX_3},
451 { AFE_PORT_ID_TERTIARY_TDM_TX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
452 LPASS_BE_TERT_TDM_TX_3},
453 { AFE_PORT_ID_TERTIARY_TDM_RX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
454 LPASS_BE_TERT_TDM_RX_4},
455 { AFE_PORT_ID_TERTIARY_TDM_TX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
456 LPASS_BE_TERT_TDM_TX_4},
457 { AFE_PORT_ID_TERTIARY_TDM_RX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
458 LPASS_BE_TERT_TDM_RX_5},
459 { AFE_PORT_ID_TERTIARY_TDM_TX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
460 LPASS_BE_TERT_TDM_TX_5},
461 { AFE_PORT_ID_TERTIARY_TDM_RX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
462 LPASS_BE_TERT_TDM_RX_6},
463 { AFE_PORT_ID_TERTIARY_TDM_TX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
464 LPASS_BE_TERT_TDM_TX_6},
465 { AFE_PORT_ID_TERTIARY_TDM_RX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
466 LPASS_BE_TERT_TDM_RX_7},
467 { AFE_PORT_ID_TERTIARY_TDM_TX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
468 LPASS_BE_TERT_TDM_TX_7},
469 { AFE_PORT_ID_QUATERNARY_TDM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
470 LPASS_BE_QUAT_TDM_RX_0},
471 { AFE_PORT_ID_QUATERNARY_TDM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
472 LPASS_BE_QUAT_TDM_TX_0},
473 { AFE_PORT_ID_QUATERNARY_TDM_RX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
474 LPASS_BE_QUAT_TDM_RX_1},
475 { AFE_PORT_ID_QUATERNARY_TDM_TX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
476 LPASS_BE_QUAT_TDM_TX_1},
477 { AFE_PORT_ID_QUATERNARY_TDM_RX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
478 LPASS_BE_QUAT_TDM_RX_2},
479 { AFE_PORT_ID_QUATERNARY_TDM_TX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
480 LPASS_BE_QUAT_TDM_TX_2},
481 { AFE_PORT_ID_QUATERNARY_TDM_RX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
482 LPASS_BE_QUAT_TDM_RX_3},
483 { AFE_PORT_ID_QUATERNARY_TDM_TX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
484 LPASS_BE_QUAT_TDM_TX_3},
485 { AFE_PORT_ID_QUATERNARY_TDM_RX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
486 LPASS_BE_QUAT_TDM_RX_4},
487 { AFE_PORT_ID_QUATERNARY_TDM_TX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
488 LPASS_BE_QUAT_TDM_TX_4},
489 { AFE_PORT_ID_QUATERNARY_TDM_RX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
490 LPASS_BE_QUAT_TDM_RX_5},
491 { AFE_PORT_ID_QUATERNARY_TDM_TX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
492 LPASS_BE_QUAT_TDM_TX_5},
493 { AFE_PORT_ID_QUATERNARY_TDM_RX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
494 LPASS_BE_QUAT_TDM_RX_6},
495 { AFE_PORT_ID_QUATERNARY_TDM_TX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
496 LPASS_BE_QUAT_TDM_TX_6},
497 { AFE_PORT_ID_QUATERNARY_TDM_RX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
498 LPASS_BE_QUAT_TDM_RX_7},
499 { AFE_PORT_ID_QUATERNARY_TDM_TX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
500 LPASS_BE_QUAT_TDM_TX_7},
Rohit Kumara5077932017-09-10 22:05:05 +0530501 { AFE_PORT_ID_QUINARY_TDM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
502 LPASS_BE_QUIN_TDM_RX_0},
503 { AFE_PORT_ID_QUINARY_TDM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
504 LPASS_BE_QUIN_TDM_TX_0},
505 { AFE_PORT_ID_QUINARY_TDM_RX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
506 LPASS_BE_QUIN_TDM_RX_1},
507 { AFE_PORT_ID_QUINARY_TDM_TX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
508 LPASS_BE_QUIN_TDM_TX_1},
509 { AFE_PORT_ID_QUINARY_TDM_RX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
510 LPASS_BE_QUIN_TDM_RX_2},
511 { AFE_PORT_ID_QUINARY_TDM_TX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
512 LPASS_BE_QUIN_TDM_TX_2},
513 { AFE_PORT_ID_QUINARY_TDM_RX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
514 LPASS_BE_QUIN_TDM_RX_3},
515 { AFE_PORT_ID_QUINARY_TDM_TX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
516 LPASS_BE_QUIN_TDM_TX_3},
517 { AFE_PORT_ID_QUINARY_TDM_RX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
518 LPASS_BE_QUIN_TDM_RX_4},
519 { AFE_PORT_ID_QUINARY_TDM_TX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
520 LPASS_BE_QUIN_TDM_TX_4},
521 { AFE_PORT_ID_QUINARY_TDM_RX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
522 LPASS_BE_QUIN_TDM_RX_5},
523 { AFE_PORT_ID_QUINARY_TDM_TX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
524 LPASS_BE_QUIN_TDM_TX_5},
525 { AFE_PORT_ID_QUINARY_TDM_RX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
526 LPASS_BE_QUIN_TDM_RX_6},
527 { AFE_PORT_ID_QUINARY_TDM_TX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
528 LPASS_BE_QUIN_TDM_TX_6},
529 { AFE_PORT_ID_QUINARY_TDM_RX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
530 LPASS_BE_QUIN_TDM_RX_7},
531 { AFE_PORT_ID_QUINARY_TDM_TX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
532 LPASS_BE_QUIN_TDM_TX_7},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530533 { INT_BT_A2DP_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
534 LPASS_BE_INT_BT_A2DP_RX},
535 { AFE_PORT_ID_USB_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
536 LPASS_BE_USB_AUDIO_RX},
537 { AFE_PORT_ID_USB_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
538 LPASS_BE_USB_AUDIO_TX},
539 { DISPLAY_PORT_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
540 LPASS_BE_DISPLAY_PORT},
541 { AFE_PORT_ID_TERTIARY_PCM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
542 LPASS_BE_TERT_AUXPCM_RX},
543 { AFE_PORT_ID_TERTIARY_PCM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
544 LPASS_BE_TERT_AUXPCM_TX},
545 { AFE_PORT_ID_QUATERNARY_PCM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
546 LPASS_BE_QUAT_AUXPCM_RX},
547 { AFE_PORT_ID_QUATERNARY_PCM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
548 LPASS_BE_QUAT_AUXPCM_TX},
Rohit Kumara5077932017-09-10 22:05:05 +0530549 { AFE_PORT_ID_QUINARY_PCM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
550 LPASS_BE_QUIN_AUXPCM_RX},
551 { AFE_PORT_ID_QUINARY_PCM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
552 LPASS_BE_QUIN_AUXPCM_TX},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530553 { AFE_PORT_ID_INT0_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
554 LPASS_BE_INT0_MI2S_RX},
555 { AFE_PORT_ID_INT0_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
556 LPASS_BE_INT0_MI2S_TX},
557 { AFE_PORT_ID_INT1_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
558 LPASS_BE_INT1_MI2S_RX},
559 { AFE_PORT_ID_INT1_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
560 LPASS_BE_INT1_MI2S_TX},
561 { AFE_PORT_ID_INT2_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
562 LPASS_BE_INT2_MI2S_RX},
563 { AFE_PORT_ID_INT2_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
564 LPASS_BE_INT2_MI2S_TX},
565 { AFE_PORT_ID_INT3_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
566 LPASS_BE_INT3_MI2S_RX},
567 { AFE_PORT_ID_INT3_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
568 LPASS_BE_INT3_MI2S_TX},
569 { AFE_PORT_ID_INT4_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
570 LPASS_BE_INT4_MI2S_RX},
571 { AFE_PORT_ID_INT4_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
572 LPASS_BE_INT4_MI2S_TX},
573 { AFE_PORT_ID_INT5_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
574 LPASS_BE_INT5_MI2S_RX},
575 { AFE_PORT_ID_INT5_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
576 LPASS_BE_INT5_MI2S_TX},
577 { AFE_PORT_ID_INT6_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
578 LPASS_BE_INT6_MI2S_RX},
579 { AFE_PORT_ID_INT6_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
580 LPASS_BE_INT6_MI2S_TX},
581};
582
583/* Track ASM playback & capture sessions of DAI
584 * Track LSM listen sessions
585 */
586static struct msm_pcm_routing_fdai_data
587 fe_dai_map[MSM_FRONTEND_DAI_MAX][2] = {
588 /* MULTIMEDIA1 */
589 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
590 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
591 /* MULTIMEDIA2 */
592 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
593 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
594 /* MULTIMEDIA3 */
595 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
596 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
597 /* MULTIMEDIA4 */
598 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
599 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
600 /* MULTIMEDIA5 */
601 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
602 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
603 /* MULTIMEDIA6 */
604 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
605 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
606 /* MULTIMEDIA7*/
607 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
608 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
609 /* MULTIMEDIA8 */
610 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
611 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
612 /* MULTIMEDIA9 */
613 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
614 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
615 /* MULTIMEDIA10 */
616 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
617 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
618 /* MULTIMEDIA11 */
619 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
620 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
621 /* MULTIMEDIA12 */
622 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
623 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
624 /* MULTIMEDIA13 */
625 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
626 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
627 /* MULTIMEDIA14 */
628 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
629 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
630 /* MULTIMEDIA15 */
631 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
632 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
633 /* MULTIMEDIA16 */
634 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
635 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
636 /* MULTIMEDIA17 */
637 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
638 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
639 /* MULTIMEDIA18 */
640 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
641 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
642 /* MULTIMEDIA19 */
643 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
644 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
645 /* MULTIMEDIA20 */
646 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
647 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530648 /* VOIP */
649 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
650 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
651 /* AFE_RX */
652 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
653 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
654 /* AFE_TX */
655 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
656 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
657 /* VOICE_STUB */
658 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
659 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530660 /* DTMF_RX */
661 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
662 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530663 /* QCHAT */
664 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
665 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
666 /* VOLTE_STUB */
667 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
668 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
669 /* LSM1 */
670 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
671 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
672 /* LSM2 */
673 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
674 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
675 /* LSM3 */
676 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
677 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
678 /* LSM4 */
679 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
680 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
681 /* LSM5 */
682 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
683 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
684 /* LSM6 */
685 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
686 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
687 /* LSM7 */
688 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
689 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
690 /* LSM8 */
691 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
692 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
693 /* VOICE2_STUB */
694 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
695 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530696 /* VOICEMMODE1 */
697 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
698 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
699 /* VOICEMMODE2 */
700 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
701 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
702};
703
704static unsigned long session_copp_map[MSM_FRONTEND_DAI_MAX][2]
705 [MSM_BACKEND_DAI_MAX];
706static struct msm_pcm_routing_app_type_data app_type_cfg[MAX_APP_TYPES];
707static struct msm_pcm_routing_app_type_data lsm_app_type_cfg[MAX_APP_TYPES];
708static struct msm_pcm_stream_app_type_cfg
709 fe_dai_app_type_cfg[MSM_FRONTEND_DAI_MAX][2][MSM_BACKEND_DAI_MAX];
710
711static int last_be_id_configured[MSM_FRONTEND_DAI_MAX][MAX_SESSION_TYPES];
712
713/* The caller of this should aqcuire routing lock */
714void msm_pcm_routing_get_bedai_info(int be_idx,
715 struct msm_pcm_routing_bdai_data *be_dai)
716{
717 if (be_idx >= 0 && be_idx < MSM_BACKEND_DAI_MAX)
718 memcpy(be_dai, &msm_bedais[be_idx],
719 sizeof(struct msm_pcm_routing_bdai_data));
720}
721
722/* The caller of this should aqcuire routing lock */
723void msm_pcm_routing_get_fedai_info(int fe_idx, int sess_type,
724 struct msm_pcm_routing_fdai_data *fe_dai)
725{
726 if ((sess_type == SESSION_TYPE_TX) || (sess_type == SESSION_TYPE_RX))
727 memcpy(fe_dai, &fe_dai_map[fe_idx][sess_type],
728 sizeof(struct msm_pcm_routing_fdai_data));
729}
730
731void msm_pcm_routing_acquire_lock(void)
732{
733 mutex_lock(&routing_lock);
734}
735
736void msm_pcm_routing_release_lock(void)
737{
738 mutex_unlock(&routing_lock);
739}
740
741static int msm_pcm_routing_get_app_type_idx(int app_type)
742{
743 int idx;
744
745 pr_debug("%s: app_type: %d\n", __func__, app_type);
746 for (idx = 0; idx < MAX_APP_TYPES; idx++) {
747 if (app_type_cfg[idx].app_type == app_type)
748 return idx;
749 }
750 pr_info("%s: App type not available, fallback to default\n", __func__);
751 return 0;
752}
753
754static int msm_pcm_routing_get_lsm_app_type_idx(int app_type)
755{
756 int idx;
757
758 pr_debug("%s: app_type: %d\n", __func__, app_type);
759 for (idx = 0; idx < MAX_APP_TYPES; idx++) {
760 if (lsm_app_type_cfg[idx].app_type == app_type)
761 return idx;
762 }
763 pr_debug("%s: App type not available, fallback to default\n", __func__);
764 return 0;
765}
766
767static bool is_mm_lsm_fe_id(int fe_id)
768{
769 bool rc = true;
770
771 if (fe_id > MSM_FRONTEND_DAI_MM_MAX_ID &&
772 ((fe_id < MSM_FRONTEND_DAI_LSM1) ||
773 (fe_id > MSM_FRONTEND_DAI_LSM8))) {
774 rc = false;
775 }
776 return rc;
777}
778
779int msm_pcm_routing_reg_stream_app_type_cfg(
780 int fedai_id, int session_type, int be_id,
781 struct msm_pcm_stream_app_type_cfg *cfg_data)
782{
783 int ret = 0;
784
785 if (cfg_data == NULL) {
786 pr_err("%s: Received NULL pointer for cfg_data\n", __func__);
787 ret = -EINVAL;
788 goto done;
789 }
790
791 pr_debug("%s: fedai_id %d, session_type %d, be_id %d, app_type %d, acdb_dev_id %d, sample_rate %d\n",
792 __func__, fedai_id, session_type, be_id,
793 cfg_data->app_type, cfg_data->acdb_dev_id,
794 cfg_data->sample_rate);
795
796 if (!is_mm_lsm_fe_id(fedai_id)) {
797 pr_err("%s: Invalid machine driver ID %d\n",
798 __func__, fedai_id);
799 ret = -EINVAL;
800 goto done;
801 }
802 if (session_type != SESSION_TYPE_RX &&
803 session_type != SESSION_TYPE_TX) {
804 pr_err("%s: Invalid session type %d\n",
805 __func__, session_type);
806 ret = -EINVAL;
807 goto done;
808 }
809 if (be_id < 0 || be_id >= MSM_BACKEND_DAI_MAX) {
810 pr_err("%s: Received out of bounds be_id %d\n",
811 __func__, be_id);
812 ret = -EINVAL;
813 goto done;
814 }
815
816 fe_dai_app_type_cfg[fedai_id][session_type][be_id] = *cfg_data;
817
818 /*
819 * Store the BE ID of the configuration information set as the latest so
820 * the get mixer control knows what to return.
821 */
822 last_be_id_configured[fedai_id][session_type] = be_id;
823
824done:
825 return ret;
826}
827EXPORT_SYMBOL(msm_pcm_routing_reg_stream_app_type_cfg);
828
829/**
830 * msm_pcm_routing_get_stream_app_type_cfg
831 *
832 * Receives fedai_id, session_type, be_id, and populates app_type,
833 * acdb_dev_id, & sample rate. Returns 0 on success. On failure returns
834 * -EINVAL and does not alter passed values.
835 *
836 * fedai_id - Passed value, front end ID for which app type config is wanted
837 * session_type - Passed value, session type for which app type config
838 * is wanted
839 * be_id - Returned value, back end device id the app type config data is for
840 * cfg_data - Returned value, configuration data used by app type config
841 */
842int msm_pcm_routing_get_stream_app_type_cfg(
843 int fedai_id, int session_type, int *bedai_id,
844 struct msm_pcm_stream_app_type_cfg *cfg_data)
845{
846 int be_id;
847 int ret = 0;
848
849 if (bedai_id == NULL) {
850 pr_err("%s: Received NULL pointer for backend ID\n", __func__);
851 ret = -EINVAL;
852 goto done;
853 } else if (cfg_data == NULL) {
854 pr_err("%s: NULL pointer sent for cfg_data\n", __func__);
855 ret = -EINVAL;
856 goto done;
857 } else if (!is_mm_lsm_fe_id(fedai_id)) {
858 pr_err("%s: Invalid FE ID %d\n", __func__, fedai_id);
859 ret = -EINVAL;
860 goto done;
861 } else if (session_type != SESSION_TYPE_RX &&
862 session_type != SESSION_TYPE_TX) {
863 pr_err("%s: Invalid session type %d\n", __func__, session_type);
864 ret = -EINVAL;
865 goto done;
866 }
867
868 be_id = last_be_id_configured[fedai_id][session_type];
869 if (be_id < 0 || be_id >= MSM_BACKEND_DAI_MAX) {
870 pr_err("%s: Invalid BE ID %d\n", __func__, be_id);
871 ret = -EINVAL;
872 goto done;
873 }
874
875 *bedai_id = be_id;
876 *cfg_data = fe_dai_app_type_cfg[fedai_id][session_type][be_id];
877 pr_debug("%s: fedai_id %d, session_type %d, be_id %d, app_type %d, acdb_dev_id %d, sample_rate %d\n",
878 __func__, fedai_id, session_type, *bedai_id,
879 cfg_data->app_type, cfg_data->acdb_dev_id,
880 cfg_data->sample_rate);
881done:
882 return ret;
883}
884EXPORT_SYMBOL(msm_pcm_routing_get_stream_app_type_cfg);
885
886static struct cal_block_data *msm_routing_find_topology_by_path(int path)
887{
888 struct list_head *ptr, *next;
889 struct cal_block_data *cal_block = NULL;
890
891 pr_debug("%s\n", __func__);
892
893 list_for_each_safe(ptr, next,
894 &cal_data->cal_blocks) {
895
896 cal_block = list_entry(ptr,
897 struct cal_block_data, list);
898
899 if (((struct audio_cal_info_adm_top *)cal_block->cal_info)
900 ->path == path) {
901 return cal_block;
902 }
903 }
904 pr_debug("%s: Can't find topology for path %d\n", __func__, path);
905 return NULL;
906}
907
908static struct cal_block_data *msm_routing_find_topology(int path,
909 int app_type,
910 int acdb_id)
911{
912 struct list_head *ptr, *next;
913 struct cal_block_data *cal_block = NULL;
914 struct audio_cal_info_adm_top *cal_info;
915
916 pr_debug("%s\n", __func__);
917
918 list_for_each_safe(ptr, next,
919 &cal_data->cal_blocks) {
920
921 cal_block = list_entry(ptr,
922 struct cal_block_data, list);
923
924 cal_info = (struct audio_cal_info_adm_top *)
925 cal_block->cal_info;
926 if ((cal_info->path == path) &&
927 (cal_info->app_type == app_type) &&
928 (cal_info->acdb_id == acdb_id)) {
929 return cal_block;
930 }
931 }
932 pr_debug("%s: Can't find topology for path %d, app %d, acdb_id %d defaulting to search by path\n",
933 __func__, path, app_type, acdb_id);
934 return msm_routing_find_topology_by_path(path);
935}
936
937static int msm_routing_get_adm_topology(int fedai_id, int session_type,
938 int be_id)
939{
940 int topology = NULL_COPP_TOPOLOGY;
941 struct cal_block_data *cal_block = NULL;
942 int app_type = 0, acdb_dev_id = 0;
943
944
945 pr_debug("%s: fedai_id %d, session_type %d, be_id %d\n",
946 __func__, fedai_id, session_type, be_id);
947
948 if (cal_data == NULL)
949 goto done;
950
951 mutex_lock(&cal_data->lock);
952
953 app_type = fe_dai_app_type_cfg[fedai_id][session_type][be_id].app_type;
954 acdb_dev_id =
955 fe_dai_app_type_cfg[fedai_id][session_type][be_id].acdb_dev_id;
956
957 cal_block = msm_routing_find_topology(session_type, app_type,
958 acdb_dev_id);
959 if (cal_block == NULL)
960 goto unlock;
961
962 topology = ((struct audio_cal_info_adm_top *)
963 cal_block->cal_info)->topology;
964unlock:
965 mutex_unlock(&cal_data->lock);
966done:
967 pr_debug("%s: Using topology %d\n", __func__, topology);
968 return topology;
969}
970
971static uint8_t is_be_dai_extproc(int be_dai)
972{
973 if (be_dai == MSM_BACKEND_DAI_EXTPROC_RX ||
974 be_dai == MSM_BACKEND_DAI_EXTPROC_TX ||
975 be_dai == MSM_BACKEND_DAI_EXTPROC_EC_TX)
976 return 1;
977 else
978 return 0;
979}
980
981static void msm_pcm_routing_build_matrix(int fedai_id, int sess_type,
982 int path_type, int perf_mode,
983 uint32_t passthr_mode)
984{
985 int i, port_type, j, num_copps = 0;
986 struct route_payload payload;
987
988 port_type = ((path_type == ADM_PATH_PLAYBACK ||
989 path_type == ADM_PATH_COMPRESSED_RX) ?
990 MSM_AFE_PORT_TYPE_RX : MSM_AFE_PORT_TYPE_TX);
991
992 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
993 if (!is_be_dai_extproc(i) &&
994 (afe_get_port_type(msm_bedais[i].port_id) == port_type) &&
995 (msm_bedais[i].active) &&
996 (test_bit(fedai_id, &msm_bedais[i].fe_sessions[0]))) {
997 for (j = 0; j < MAX_COPPS_PER_PORT; j++) {
998 unsigned long copp =
999 session_copp_map[fedai_id][sess_type][i];
1000 if (test_bit(j, &copp)) {
1001 payload.port_id[num_copps] =
1002 msm_bedais[i].port_id;
1003 payload.copp_idx[num_copps] = j;
1004 payload.app_type[num_copps] =
1005 fe_dai_app_type_cfg
1006 [fedai_id][sess_type][i]
1007 .app_type;
1008 payload.acdb_dev_id[num_copps] =
1009 fe_dai_app_type_cfg
1010 [fedai_id][sess_type][i]
1011 .acdb_dev_id;
1012 payload.sample_rate[num_copps] =
1013 fe_dai_app_type_cfg
1014 [fedai_id][sess_type][i]
1015 .sample_rate;
1016 num_copps++;
1017 }
1018 }
1019 }
1020 }
1021
1022 if (num_copps) {
1023 payload.num_copps = num_copps;
1024 payload.session_id = fe_dai_map[fedai_id][sess_type].strm_id;
1025 adm_matrix_map(path_type, payload, perf_mode, passthr_mode);
1026 msm_pcm_routng_cfg_matrix_map_pp(payload, path_type, perf_mode);
1027 }
1028}
1029
1030void msm_pcm_routing_reg_psthr_stream(int fedai_id, int dspst_id,
1031 int stream_type)
1032{
1033 int i, session_type, path_type, port_type;
1034 u32 mode = 0;
1035
1036 if (fedai_id > MSM_FRONTEND_DAI_MM_MAX_ID) {
1037 /* bad ID assigned in machine driver */
1038 pr_err("%s: bad MM ID\n", __func__);
1039 return;
1040 }
1041
1042 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK) {
1043 session_type = SESSION_TYPE_RX;
1044 path_type = ADM_PATH_PLAYBACK;
1045 port_type = MSM_AFE_PORT_TYPE_RX;
1046 } else {
1047 session_type = SESSION_TYPE_TX;
1048 path_type = ADM_PATH_LIVE_REC;
1049 port_type = MSM_AFE_PORT_TYPE_TX;
1050 }
1051
1052 mutex_lock(&routing_lock);
1053
1054 fe_dai_map[fedai_id][session_type].strm_id = dspst_id;
1055 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
1056 if (!is_be_dai_extproc(i) &&
1057 (afe_get_port_type(msm_bedais[i].port_id) == port_type) &&
1058 (msm_bedais[i].active) &&
1059 (test_bit(fedai_id, &msm_bedais[i].fe_sessions[0]))) {
1060 mode = afe_get_port_type(msm_bedais[i].port_id);
1061 adm_connect_afe_port(mode, dspst_id,
1062 msm_bedais[i].port_id);
1063 break;
1064 }
1065 }
1066 mutex_unlock(&routing_lock);
1067}
1068
1069static bool route_check_fe_id_adm_support(int fe_id)
1070{
1071 bool rc = true;
1072
1073 if ((fe_id >= MSM_FRONTEND_DAI_LSM1) &&
1074 (fe_id <= MSM_FRONTEND_DAI_LSM8)) {
1075 /* fe id is listen while port is set to afe */
1076 if (lsm_port_index != ADM_LSM_PORT_INDEX) {
1077 pr_debug("%s: fe_id %d, lsm mux slim port %d\n",
1078 __func__, fe_id, lsm_port_index);
1079 rc = false;
1080 }
1081 }
1082
1083 return rc;
1084}
1085
1086int msm_pcm_routing_reg_phy_compr_stream(int fe_id, int perf_mode,
1087 int dspst_id, int stream_type,
1088 uint32_t passthr_mode)
1089{
1090 int i, j, session_type, path_type, port_type, topology;
1091 int num_copps = 0;
1092 struct route_payload payload;
1093 u32 channels, sample_rate;
1094 u16 bit_width = 16;
1095 bool is_lsm;
1096
1097 pr_debug("%s:fe_id[%d] perf_mode[%d] id[%d] stream_type[%d] passt[%d]",
1098 __func__, fe_id, perf_mode, dspst_id,
1099 stream_type, passthr_mode);
1100 if (!is_mm_lsm_fe_id(fe_id)) {
1101 /* bad ID assigned in machine driver */
1102 pr_err("%s: bad MM ID %d\n", __func__, fe_id);
1103 return -EINVAL;
1104 }
1105
1106 if (!route_check_fe_id_adm_support(fe_id)) {
1107 /* ignore adm open if not supported for fe_id */
1108 pr_debug("%s: No ADM support for fe id %d\n", __func__, fe_id);
1109 return 0;
1110 }
1111
1112 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK) {
1113 session_type = SESSION_TYPE_RX;
1114 if (passthr_mode != LEGACY_PCM)
1115 path_type = ADM_PATH_COMPRESSED_RX;
1116 else
1117 path_type = ADM_PATH_PLAYBACK;
1118 port_type = MSM_AFE_PORT_TYPE_RX;
1119 } else if (stream_type == SNDRV_PCM_STREAM_CAPTURE) {
1120 session_type = SESSION_TYPE_TX;
Laxminath Kasam38070be2017-08-17 18:21:59 +05301121 if ((passthr_mode != LEGACY_PCM) && (passthr_mode != LISTEN))
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301122 path_type = ADM_PATH_COMPRESSED_TX;
1123 else
1124 path_type = ADM_PATH_LIVE_REC;
1125 port_type = MSM_AFE_PORT_TYPE_TX;
1126 } else {
1127 pr_err("%s: invalid stream type %d\n", __func__, stream_type);
1128 return -EINVAL;
1129 }
1130
1131 is_lsm = (fe_id >= MSM_FRONTEND_DAI_LSM1) &&
1132 (fe_id <= MSM_FRONTEND_DAI_LSM8);
1133 mutex_lock(&routing_lock);
1134
1135 payload.num_copps = 0; /* only RX needs to use payload */
1136 fe_dai_map[fe_id][session_type].strm_id = dspst_id;
1137 /* re-enable EQ if active */
1138 msm_qti_pp_send_eq_values(fe_id);
1139 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
1140 if (test_bit(fe_id, &msm_bedais[i].fe_sessions[0]))
1141 msm_bedais[i].passthr_mode[fe_id] = passthr_mode;
1142
1143 if (!is_be_dai_extproc(i) &&
1144 (afe_get_port_type(msm_bedais[i].port_id) ==
1145 port_type) &&
1146 (msm_bedais[i].active) &&
1147 (test_bit(fe_id, &msm_bedais[i].fe_sessions[0]))) {
1148 int app_type, app_type_idx, copp_idx, acdb_dev_id;
1149
1150 /*
1151 * check if ADM needs to be configured with different
1152 * channel mapping than backend
1153 */
1154 if (!msm_bedais[i].adm_override_ch)
1155 channels = msm_bedais[i].channel;
1156 else
1157 channels = msm_bedais[i].adm_override_ch;
1158
1159 bit_width = msm_routing_get_bit_width(
1160 msm_bedais[i].format);
1161 app_type =
1162 fe_dai_app_type_cfg[fe_id][session_type][i].app_type;
1163 if (app_type && is_lsm) {
1164 app_type_idx =
1165 msm_pcm_routing_get_lsm_app_type_idx(app_type);
1166 sample_rate =
1167 fe_dai_app_type_cfg[fe_id][session_type][i]
1168 .sample_rate;
1169 bit_width =
1170 lsm_app_type_cfg[app_type_idx].bit_width;
1171 } else if (app_type) {
1172 app_type_idx =
1173 msm_pcm_routing_get_app_type_idx(
1174 app_type);
1175 sample_rate =
1176 fe_dai_app_type_cfg[fe_id][session_type][i].sample_rate;
1177 bit_width =
1178 app_type_cfg[app_type_idx].bit_width;
1179 } else {
1180 sample_rate = msm_bedais[i].sample_rate;
1181 }
1182 acdb_dev_id =
1183 fe_dai_app_type_cfg[fe_id][session_type][i].acdb_dev_id;
1184 topology = msm_routing_get_adm_topology(fe_id,
1185 session_type,
1186 i);
1187 if ((passthr_mode == COMPRESSED_PASSTHROUGH_DSD)
1188 || (passthr_mode ==
1189 COMPRESSED_PASSTHROUGH_GEN))
1190 topology = COMPRESSED_PASSTHROUGH_NONE_TOPOLOGY;
1191 pr_debug("%s: Before adm open topology %d\n", __func__,
1192 topology);
1193
1194 copp_idx =
1195 adm_open(msm_bedais[i].port_id,
1196 path_type, sample_rate, channels,
1197 topology, perf_mode, bit_width,
1198 app_type, acdb_dev_id);
1199 if ((copp_idx < 0) ||
1200 (copp_idx >= MAX_COPPS_PER_PORT)) {
1201 pr_err("%s:adm open failed coppid:%d\n",
1202 __func__, copp_idx);
1203 mutex_unlock(&routing_lock);
1204 return -EINVAL;
1205 }
1206 pr_debug("%s: set idx bit of fe:%d, type: %d, be:%d\n",
1207 __func__, fe_id, session_type, i);
1208 set_bit(copp_idx,
1209 &session_copp_map[fe_id][session_type][i]);
1210
1211 if (msm_is_resample_needed(
1212 sample_rate,
1213 msm_bedais[i].sample_rate))
1214 adm_copp_mfc_cfg(
1215 msm_bedais[i].port_id, copp_idx,
1216 msm_bedais[i].sample_rate);
1217
1218 for (j = 0; j < MAX_COPPS_PER_PORT; j++) {
1219 unsigned long copp =
1220 session_copp_map[fe_id][session_type][i];
1221 if (test_bit(j, &copp)) {
1222 payload.port_id[num_copps] =
1223 msm_bedais[i].port_id;
1224 payload.copp_idx[num_copps] = j;
1225 payload.app_type[num_copps] =
1226 fe_dai_app_type_cfg
1227 [fe_id][session_type][i]
1228 .app_type;
1229 payload.acdb_dev_id[num_copps] =
1230 fe_dai_app_type_cfg
1231 [fe_id][session_type][i]
1232 .acdb_dev_id;
1233 payload.sample_rate[num_copps] =
1234 fe_dai_app_type_cfg
1235 [fe_id][session_type][i]
1236 .sample_rate;
1237 num_copps++;
1238 }
1239 }
1240 if (passthr_mode != COMPRESSED_PASSTHROUGH_DSD
1241 && passthr_mode !=
1242 COMPRESSED_PASSTHROUGH_GEN) {
1243 msm_routing_send_device_pp_params(
1244 msm_bedais[i].port_id,
1245 copp_idx, fe_id);
1246 }
1247 }
1248 }
1249 if (num_copps) {
1250 payload.num_copps = num_copps;
1251 payload.session_id = fe_dai_map[fe_id][session_type].strm_id;
1252 adm_matrix_map(path_type, payload, perf_mode, passthr_mode);
1253 msm_pcm_routng_cfg_matrix_map_pp(payload, path_type, perf_mode);
1254 }
1255 mutex_unlock(&routing_lock);
1256 return 0;
1257}
1258
1259static u32 msm_pcm_routing_get_voc_sessionid(u16 val)
1260{
1261 u32 session_id;
1262
1263 switch (val) {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301264 case MSM_FRONTEND_DAI_QCHAT:
1265 session_id = voc_get_session_id(QCHAT_SESSION_NAME);
1266 break;
1267 case MSM_FRONTEND_DAI_VOIP:
1268 session_id = voc_get_session_id(VOIP_SESSION_NAME);
1269 break;
1270 case MSM_FRONTEND_DAI_VOICEMMODE1:
1271 session_id = voc_get_session_id(VOICEMMODE1_NAME);
1272 break;
1273 case MSM_FRONTEND_DAI_VOICEMMODE2:
1274 session_id = voc_get_session_id(VOICEMMODE2_NAME);
1275 break;
1276 default:
1277 session_id = 0;
1278 }
1279
1280 pr_debug("%s session_id 0x%x", __func__, session_id);
1281 return session_id;
1282}
1283
1284static int msm_pcm_routing_channel_mixer(int fe_id, bool perf_mode,
1285 int dspst_id, int stream_type)
1286{
1287 int copp_idx = 0;
1288 int sess_type = 0;
1289 int i = 0, j = 0, be_id;
1290 int ret = 0;
1291
1292 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
1293 pr_err("%s: invalid FE %d\n", __func__, fe_id);
1294 return 0;
1295 }
1296
1297 if (!(channel_mixer[fe_id].enable)) {
1298 pr_debug("%s: channel mixer not enabled for FE %d\n",
1299 __func__, fe_id);
1300 return 0;
1301 }
1302
1303 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK)
1304 sess_type = SESSION_TYPE_RX;
1305 else
1306 sess_type = SESSION_TYPE_TX;
1307
1308 for (i = 0; i < ADM_MAX_CHANNELS && channel_input[fe_id][i] > 0;
1309 ++i) {
1310 be_id = channel_input[fe_id][i] - 1;
1311 channel_mixer[fe_id].input_channels[i] =
1312 msm_bedais[be_id].channel;
1313
1314 if ((msm_bedais[be_id].active) &&
1315 test_bit(fe_id,
1316 &msm_bedais[be_id].fe_sessions[0])) {
1317 unsigned long copp =
1318 session_copp_map[fe_id][sess_type][be_id];
1319 for (j = 0; j < MAX_COPPS_PER_PORT; j++) {
1320 if (test_bit(j, &copp)) {
1321 copp_idx = j;
1322 break;
1323 }
1324 }
1325
1326 pr_debug("%s: fe %d, be %d, channel %d, copp %d\n",
1327 __func__,
1328 fe_id, be_id, msm_bedais[be_id].channel,
1329 copp_idx);
1330 ret = adm_programable_channel_mixer(
1331 msm_bedais[be_id].port_id,
1332 copp_idx, dspst_id, sess_type,
1333 channel_mixer + fe_id, i);
1334 }
1335 }
1336
1337 return ret;
1338}
1339
1340int msm_pcm_routing_reg_phy_stream(int fedai_id, int perf_mode,
1341 int dspst_id, int stream_type)
1342{
1343 int i, j, session_type, path_type, port_type, topology, num_copps = 0;
1344 struct route_payload payload;
1345 u32 channels, sample_rate;
1346 uint16_t bits_per_sample = 16;
1347 uint32_t passthr_mode = LEGACY_PCM;
1348 int ret = 0;
1349
1350 if (fedai_id > MSM_FRONTEND_DAI_MM_MAX_ID) {
1351 /* bad ID assigned in machine driver */
1352 pr_err("%s: bad MM ID %d\n", __func__, fedai_id);
1353 return -EINVAL;
1354 }
1355
1356 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK) {
1357 session_type = SESSION_TYPE_RX;
1358 path_type = ADM_PATH_PLAYBACK;
1359 port_type = MSM_AFE_PORT_TYPE_RX;
1360 } else {
1361 session_type = SESSION_TYPE_TX;
1362 path_type = ADM_PATH_LIVE_REC;
1363 port_type = MSM_AFE_PORT_TYPE_TX;
1364 }
1365
1366 mutex_lock(&routing_lock);
1367
1368 payload.num_copps = 0; /* only RX needs to use payload */
1369 fe_dai_map[fedai_id][session_type].strm_id = dspst_id;
1370 fe_dai_map[fedai_id][session_type].perf_mode = perf_mode;
1371
1372 /* re-enable EQ if active */
1373 msm_qti_pp_send_eq_values(fedai_id);
1374 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
1375 if (!is_be_dai_extproc(i) &&
1376 (afe_get_port_type(msm_bedais[i].port_id) == port_type) &&
1377 (msm_bedais[i].active) &&
1378 (test_bit(fedai_id, &msm_bedais[i].fe_sessions[0]))) {
1379 int app_type, app_type_idx, copp_idx, acdb_dev_id;
1380 /*
1381 * check if ADM needs to be configured with different
1382 * channel mapping than backend
1383 */
1384 if (!msm_bedais[i].adm_override_ch)
1385 channels = msm_bedais[i].channel;
1386 else
1387 channels = msm_bedais[i].adm_override_ch;
1388 msm_bedais[i].passthr_mode[fedai_id] =
1389 LEGACY_PCM;
1390
1391 bits_per_sample = msm_routing_get_bit_width(
1392 msm_bedais[i].format);
1393
1394 app_type =
1395 fe_dai_app_type_cfg[fedai_id][session_type][i].app_type;
1396 if (app_type) {
1397 app_type_idx =
1398 msm_pcm_routing_get_app_type_idx(app_type);
1399 sample_rate =
1400 fe_dai_app_type_cfg[fedai_id][session_type][i]
1401 .sample_rate;
1402 bits_per_sample =
1403 app_type_cfg[app_type_idx].bit_width;
1404 } else
1405 sample_rate = msm_bedais[i].sample_rate;
1406
1407 acdb_dev_id =
1408 fe_dai_app_type_cfg[fedai_id][session_type][i]
1409 .acdb_dev_id;
1410 topology = msm_routing_get_adm_topology(fedai_id,
1411 session_type,
1412 i);
1413 copp_idx = adm_open(msm_bedais[i].port_id, path_type,
1414 sample_rate, channels, topology,
1415 perf_mode, bits_per_sample,
1416 app_type, acdb_dev_id);
1417 if ((copp_idx < 0) ||
1418 (copp_idx >= MAX_COPPS_PER_PORT)) {
1419 pr_err("%s: adm open failed copp_idx:%d\n",
1420 __func__, copp_idx);
1421 mutex_unlock(&routing_lock);
1422 return -EINVAL;
1423 }
1424 pr_debug("%s: setting idx bit of fe:%d, type: %d, be:%d\n",
1425 __func__, fedai_id, session_type, i);
1426 set_bit(copp_idx,
1427 &session_copp_map[fedai_id][session_type][i]);
1428
1429 if (msm_is_resample_needed(
1430 sample_rate,
1431 msm_bedais[i].sample_rate))
1432 adm_copp_mfc_cfg(
1433 msm_bedais[i].port_id, copp_idx,
1434 msm_bedais[i].sample_rate);
1435
1436 for (j = 0; j < MAX_COPPS_PER_PORT; j++) {
1437 unsigned long copp =
1438 session_copp_map[fedai_id][session_type][i];
1439 if (test_bit(j, &copp)) {
1440 payload.port_id[num_copps] =
1441 msm_bedais[i].port_id;
1442 payload.copp_idx[num_copps] = j;
1443 payload.app_type[num_copps] =
1444 fe_dai_app_type_cfg
1445 [fedai_id][session_type]
1446 [i].app_type;
1447 payload.acdb_dev_id[num_copps] =
1448 fe_dai_app_type_cfg
1449 [fedai_id][session_type]
1450 [i].acdb_dev_id;
1451 payload.sample_rate[num_copps] =
1452 fe_dai_app_type_cfg
1453 [fedai_id][session_type]
1454 [i].sample_rate;
1455 num_copps++;
1456 }
1457 }
1458 if ((perf_mode == LEGACY_PCM_MODE) &&
1459 (msm_bedais[i].passthr_mode[fedai_id] ==
1460 LEGACY_PCM))
1461 msm_pcm_routing_cfg_pp(msm_bedais[i].port_id,
1462 copp_idx, topology,
1463 channels);
1464 }
1465 }
1466 if (num_copps) {
1467 payload.num_copps = num_copps;
1468 payload.session_id = fe_dai_map[fedai_id][session_type].strm_id;
1469 adm_matrix_map(path_type, payload, perf_mode, passthr_mode);
1470 msm_pcm_routng_cfg_matrix_map_pp(payload, path_type, perf_mode);
1471 }
1472
1473 ret = msm_pcm_routing_channel_mixer(fedai_id, perf_mode,
1474 dspst_id, stream_type);
1475 mutex_unlock(&routing_lock);
1476 return ret;
1477}
1478
1479int msm_pcm_routing_reg_phy_stream_v2(int fedai_id, int perf_mode,
1480 int dspst_id, int stream_type,
1481 struct msm_pcm_routing_evt event_info)
1482{
1483 if (msm_pcm_routing_reg_phy_stream(fedai_id, perf_mode, dspst_id,
1484 stream_type)) {
1485 pr_err("%s: failed to reg phy stream\n", __func__);
1486 return -EINVAL;
1487 }
1488
1489 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK)
1490 fe_dai_map[fedai_id][SESSION_TYPE_RX].event_info = event_info;
1491 else
1492 fe_dai_map[fedai_id][SESSION_TYPE_TX].event_info = event_info;
1493 return 0;
1494}
1495
1496void msm_pcm_routing_dereg_phy_stream(int fedai_id, int stream_type)
1497{
1498 int i, port_type, session_type, path_type, topology;
1499 struct msm_pcm_routing_fdai_data *fdai;
1500
1501 if (!is_mm_lsm_fe_id(fedai_id)) {
1502 /* bad ID assigned in machine driver */
1503 pr_err("%s: bad MM ID\n", __func__);
1504 return;
1505 }
1506
1507 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK) {
1508 port_type = MSM_AFE_PORT_TYPE_RX;
1509 session_type = SESSION_TYPE_RX;
1510 path_type = ADM_PATH_PLAYBACK;
1511 } else {
1512 port_type = MSM_AFE_PORT_TYPE_TX;
1513 session_type = SESSION_TYPE_TX;
1514 path_type = ADM_PATH_LIVE_REC;
1515 }
1516
1517 mutex_lock(&routing_lock);
1518 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
1519 if (!is_be_dai_extproc(i) &&
1520 (afe_get_port_type(msm_bedais[i].port_id) == port_type) &&
1521 (msm_bedais[i].active) &&
1522 (test_bit(fedai_id, &msm_bedais[i].fe_sessions[0]))) {
1523 int idx;
1524 unsigned long copp =
1525 session_copp_map[fedai_id][session_type][i];
1526 fdai = &fe_dai_map[fedai_id][session_type];
1527
1528 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++)
1529 if (test_bit(idx, &copp))
1530 break;
1531
1532 if (idx >= MAX_COPPS_PER_PORT || idx < 0) {
1533 pr_debug("%s: copp idx is invalid, exiting\n",
1534 __func__);
1535 continue;
1536 }
1537 topology = adm_get_topology_for_port_copp_idx(
1538 msm_bedais[i].port_id, idx);
1539 adm_close(msm_bedais[i].port_id, fdai->perf_mode, idx);
1540 pr_debug("%s:copp:%ld,idx bit fe:%d,type:%d,be:%d\n",
1541 __func__, copp, fedai_id, session_type, i);
1542 clear_bit(idx,
1543 &session_copp_map[fedai_id][session_type][i]);
1544 if ((topology == DOLBY_ADM_COPP_TOPOLOGY_ID ||
1545 topology == DS2_ADM_COPP_TOPOLOGY_ID) &&
1546 (fdai->perf_mode == LEGACY_PCM_MODE) &&
1547 (msm_bedais[i].passthr_mode[fedai_id] ==
1548 LEGACY_PCM))
1549 msm_pcm_routing_deinit_pp(msm_bedais[i].port_id,
1550 topology);
1551 }
1552 }
1553
1554 fe_dai_map[fedai_id][session_type].strm_id = INVALID_SESSION;
1555 fe_dai_map[fedai_id][session_type].be_srate = 0;
1556 mutex_unlock(&routing_lock);
1557}
1558
1559/* Check if FE/BE route is set */
1560static bool msm_pcm_routing_route_is_set(u16 be_id, u16 fe_id)
1561{
1562 bool rc = false;
1563
1564 if (!is_mm_lsm_fe_id(fe_id)) {
1565 /* recheck FE ID in the mixer control defined in this file */
1566 pr_err("%s: bad MM ID\n", __func__);
1567 return rc;
1568 }
1569
1570 if (test_bit(fe_id, &msm_bedais[be_id].fe_sessions[0]))
1571 rc = true;
1572
1573 return rc;
1574}
1575
1576static void msm_pcm_routing_process_audio(u16 reg, u16 val, int set)
1577{
1578 int session_type, path_type, topology;
1579 u32 channels, sample_rate;
1580 uint16_t bits_per_sample = 16;
1581 struct msm_pcm_routing_fdai_data *fdai;
1582 uint32_t passthr_mode;
1583 bool is_lsm;
1584
1585 pr_debug("%s: reg %x val %x set %x\n", __func__, reg, val, set);
1586
1587 if (!is_mm_lsm_fe_id(val)) {
1588 /* recheck FE ID in the mixer control defined in this file */
1589 pr_err("%s: bad MM ID\n", __func__);
1590 return;
1591 }
1592
1593 if (!route_check_fe_id_adm_support(val)) {
1594 /* ignore adm open if not supported for fe_id */
1595 pr_debug("%s: No ADM support for fe id %d\n", __func__, val);
1596 return;
1597 }
1598
1599 passthr_mode = msm_bedais[reg].passthr_mode[val];
1600 if (afe_get_port_type(msm_bedais[reg].port_id) ==
1601 MSM_AFE_PORT_TYPE_RX) {
1602 session_type = SESSION_TYPE_RX;
1603 if (passthr_mode != LEGACY_PCM)
1604 path_type = ADM_PATH_COMPRESSED_RX;
1605 else
1606 path_type = ADM_PATH_PLAYBACK;
1607 } else {
1608 session_type = SESSION_TYPE_TX;
1609 if (passthr_mode != LEGACY_PCM)
1610 path_type = ADM_PATH_COMPRESSED_TX;
1611 else
1612 path_type = ADM_PATH_LIVE_REC;
1613 }
1614 is_lsm = (val >= MSM_FRONTEND_DAI_LSM1) &&
1615 (val <= MSM_FRONTEND_DAI_LSM8);
1616
1617 mutex_lock(&routing_lock);
1618 if (set) {
1619 if (!test_bit(val, &msm_bedais[reg].fe_sessions[0]) &&
1620 ((msm_bedais[reg].port_id == VOICE_PLAYBACK_TX) ||
1621 (msm_bedais[reg].port_id == VOICE2_PLAYBACK_TX)))
1622 voc_start_playback(set, msm_bedais[reg].port_id);
1623
1624 set_bit(val, &msm_bedais[reg].fe_sessions[0]);
1625 fdai = &fe_dai_map[val][session_type];
1626 if (msm_bedais[reg].active && fdai->strm_id !=
1627 INVALID_SESSION) {
1628 int app_type, app_type_idx, copp_idx, acdb_dev_id;
1629 /*
1630 * check if ADM needs to be configured with different
1631 * channel mapping than backend
1632 */
1633 if (!msm_bedais[reg].adm_override_ch)
1634 channels = msm_bedais[reg].channel;
1635 else
1636 channels = msm_bedais[reg].adm_override_ch;
1637 if (session_type == SESSION_TYPE_TX &&
1638 fdai->be_srate &&
1639 (fdai->be_srate != msm_bedais[reg].sample_rate)) {
1640 pr_debug("%s: flush strm %d diff BE rates\n",
1641 __func__, fdai->strm_id);
1642
1643 if (fdai->event_info.event_func)
1644 fdai->event_info.event_func(
1645 MSM_PCM_RT_EVT_BUF_RECFG,
1646 fdai->event_info.priv_data);
1647 fdai->be_srate = 0; /* might not need it */
1648 }
1649
1650 bits_per_sample = msm_routing_get_bit_width(
1651 msm_bedais[reg].format);
1652
1653 app_type =
1654 fe_dai_app_type_cfg[val][session_type][reg].app_type;
1655 if (app_type && is_lsm) {
1656 app_type_idx =
1657 msm_pcm_routing_get_lsm_app_type_idx(app_type);
1658 sample_rate =
1659 fe_dai_app_type_cfg[val][session_type][reg]
1660 .sample_rate;
1661 bits_per_sample =
1662 lsm_app_type_cfg[app_type_idx].bit_width;
1663 } else if (app_type) {
1664 app_type_idx =
1665 msm_pcm_routing_get_app_type_idx(app_type);
1666 sample_rate =
1667 fe_dai_app_type_cfg[val][session_type][reg]
1668 .sample_rate;
1669 bits_per_sample =
1670 app_type_cfg[app_type_idx].bit_width;
1671 } else
1672 sample_rate = msm_bedais[reg].sample_rate;
1673
1674 topology = msm_routing_get_adm_topology(val,
1675 session_type,
1676 reg);
1677 acdb_dev_id =
1678 fe_dai_app_type_cfg[val][session_type][reg].acdb_dev_id;
1679 copp_idx = adm_open(msm_bedais[reg].port_id, path_type,
1680 sample_rate, channels, topology,
1681 fdai->perf_mode, bits_per_sample,
1682 app_type, acdb_dev_id);
1683 if ((copp_idx < 0) ||
1684 (copp_idx >= MAX_COPPS_PER_PORT)) {
1685 pr_err("%s: adm open failed\n", __func__);
1686 mutex_unlock(&routing_lock);
1687 return;
1688 }
1689 pr_debug("%s: setting idx bit of fe:%d, type: %d, be:%d\n",
1690 __func__, val, session_type, reg);
1691 set_bit(copp_idx,
1692 &session_copp_map[val][session_type][reg]);
1693
1694 if (msm_is_resample_needed(
1695 sample_rate,
1696 msm_bedais[reg].sample_rate))
1697 adm_copp_mfc_cfg(
1698 msm_bedais[reg].port_id, copp_idx,
1699 msm_bedais[reg].sample_rate);
1700
1701 if (session_type == SESSION_TYPE_RX &&
1702 fdai->event_info.event_func)
1703 fdai->event_info.event_func(
1704 MSM_PCM_RT_EVT_DEVSWITCH,
1705 fdai->event_info.priv_data);
1706
1707 msm_pcm_routing_build_matrix(val, session_type,
1708 path_type,
1709 fdai->perf_mode,
1710 passthr_mode);
1711 if ((fdai->perf_mode == LEGACY_PCM_MODE) &&
1712 (passthr_mode == LEGACY_PCM))
1713 msm_pcm_routing_cfg_pp(msm_bedais[reg].port_id,
1714 copp_idx, topology,
1715 channels);
1716 }
1717 } else {
1718 if (test_bit(val, &msm_bedais[reg].fe_sessions[0]) &&
1719 ((msm_bedais[reg].port_id == VOICE_PLAYBACK_TX) ||
1720 (msm_bedais[reg].port_id == VOICE2_PLAYBACK_TX)))
1721 voc_start_playback(set, msm_bedais[reg].port_id);
1722 clear_bit(val, &msm_bedais[reg].fe_sessions[0]);
1723 fdai = &fe_dai_map[val][session_type];
1724 if (msm_bedais[reg].active && fdai->strm_id !=
1725 INVALID_SESSION) {
1726 int idx;
1727 int port_id;
1728 unsigned long copp =
1729 session_copp_map[val][session_type][reg];
1730 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++)
1731 if (test_bit(idx, &copp))
1732 break;
1733
1734 port_id = msm_bedais[reg].port_id;
1735 topology = adm_get_topology_for_port_copp_idx(port_id,
1736 idx);
1737 adm_close(msm_bedais[reg].port_id, fdai->perf_mode,
1738 idx);
1739 pr_debug("%s: copp: %ld, reset idx bit fe:%d, type: %d, be:%d topology=0x%x\n",
1740 __func__, copp, val, session_type, reg,
1741 topology);
1742 clear_bit(idx,
1743 &session_copp_map[val][session_type][reg]);
1744 if ((topology == DOLBY_ADM_COPP_TOPOLOGY_ID ||
1745 topology == DS2_ADM_COPP_TOPOLOGY_ID) &&
1746 (fdai->perf_mode == LEGACY_PCM_MODE) &&
1747 (passthr_mode == LEGACY_PCM))
1748 msm_pcm_routing_deinit_pp(
1749 msm_bedais[reg].port_id,
1750 topology);
1751 msm_pcm_routing_build_matrix(val, session_type,
1752 path_type,
1753 fdai->perf_mode,
1754 passthr_mode);
1755 }
1756 }
1757 if ((msm_bedais[reg].port_id == VOICE_RECORD_RX)
1758 || (msm_bedais[reg].port_id == VOICE_RECORD_TX))
1759 voc_start_record(msm_bedais[reg].port_id, set, voc_session_id);
1760
1761 mutex_unlock(&routing_lock);
1762}
1763
1764static int msm_routing_get_audio_mixer(struct snd_kcontrol *kcontrol,
1765 struct snd_ctl_elem_value *ucontrol)
1766{
1767 struct soc_mixer_control *mc =
1768 (struct soc_mixer_control *)kcontrol->private_value;
1769
1770 if (test_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]))
1771 ucontrol->value.integer.value[0] = 1;
1772 else
1773 ucontrol->value.integer.value[0] = 0;
1774
1775 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
1776 ucontrol->value.integer.value[0]);
1777
1778 return 0;
1779}
1780
1781static int msm_routing_put_audio_mixer(struct snd_kcontrol *kcontrol,
1782 struct snd_ctl_elem_value *ucontrol)
1783{
Asish Bhattacharya34504582017-08-08 12:55:01 +05301784 struct snd_soc_dapm_widget *widget =
1785 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301786 struct soc_mixer_control *mc =
1787 (struct soc_mixer_control *)kcontrol->private_value;
1788 struct snd_soc_dapm_update *update = NULL;
1789
1790 if (ucontrol->value.integer.value[0] &&
1791 msm_pcm_routing_route_is_set(mc->reg, mc->shift) == false) {
1792 msm_pcm_routing_process_audio(mc->reg, mc->shift, 1);
1793 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
1794 update);
1795 } else if (!ucontrol->value.integer.value[0] &&
1796 msm_pcm_routing_route_is_set(mc->reg, mc->shift) == true) {
1797 msm_pcm_routing_process_audio(mc->reg, mc->shift, 0);
1798 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
1799 update);
1800 }
1801
1802 return 1;
1803}
1804
1805static int msm_routing_get_listen_mixer(struct snd_kcontrol *kcontrol,
1806 struct snd_ctl_elem_value *ucontrol)
1807{
1808 struct soc_mixer_control *mc =
1809 (struct soc_mixer_control *)kcontrol->private_value;
1810
1811 if (test_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]))
1812 ucontrol->value.integer.value[0] = 1;
1813 else
1814 ucontrol->value.integer.value[0] = 0;
1815
1816 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
1817 ucontrol->value.integer.value[0]);
1818
1819 return 0;
1820}
1821
1822static int msm_routing_put_listen_mixer(struct snd_kcontrol *kcontrol,
1823 struct snd_ctl_elem_value *ucontrol)
1824{
Asish Bhattacharya34504582017-08-08 12:55:01 +05301825 struct snd_soc_dapm_widget *widget =
1826 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301827 struct soc_mixer_control *mc =
1828 (struct soc_mixer_control *)kcontrol->private_value;
1829 struct snd_soc_dapm_update *update = NULL;
1830
1831 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
1832 ucontrol->value.integer.value[0]);
1833
1834 if (ucontrol->value.integer.value[0]) {
1835 if (msm_pcm_routing_route_is_set(mc->reg, mc->shift) == false)
1836 msm_pcm_routing_process_audio(mc->reg, mc->shift, 1);
1837 snd_soc_dapm_mixer_update_power(widget->dapm,
1838 kcontrol, 1, update);
1839 } else if (!ucontrol->value.integer.value[0]) {
1840 if (msm_pcm_routing_route_is_set(mc->reg, mc->shift) == true)
1841 msm_pcm_routing_process_audio(mc->reg, mc->shift, 0);
1842 snd_soc_dapm_mixer_update_power(widget->dapm,
1843 kcontrol, 0, update);
1844 }
1845
1846 return 1;
1847}
1848
1849static void msm_pcm_routing_process_voice(u16 reg, u16 val, int set)
1850{
1851 u32 session_id = 0;
1852 u16 path_type;
1853 struct media_format_info voc_be_media_format;
1854
1855 pr_debug("%s: reg %x val %x set %x\n", __func__, reg, val, set);
1856
1857 session_id = msm_pcm_routing_get_voc_sessionid(val);
1858
1859 pr_debug("%s: FE DAI 0x%x session_id 0x%x\n",
1860 __func__, val, session_id);
1861
1862 mutex_lock(&routing_lock);
1863
1864 if (set)
1865 set_bit(val, &msm_bedais[reg].fe_sessions[0]);
1866 else
1867 clear_bit(val, &msm_bedais[reg].fe_sessions[0]);
1868
1869 if (val == MSM_FRONTEND_DAI_DTMF_RX &&
1870 afe_get_port_type(msm_bedais[reg].port_id) ==
1871 MSM_AFE_PORT_TYPE_RX) {
1872 pr_debug("%s(): set=%d port id=0x%x for dtmf generation\n",
1873 __func__, set, msm_bedais[reg].port_id);
1874 afe_set_dtmf_gen_rx_portid(msm_bedais[reg].port_id, set);
1875 }
1876
1877 if (afe_get_port_type(msm_bedais[reg].port_id) ==
1878 MSM_AFE_PORT_TYPE_RX)
1879 path_type = RX_PATH;
1880 else
1881 path_type = TX_PATH;
1882
1883 if (set) {
1884 if (msm_bedais[reg].active) {
1885 voc_set_route_flag(session_id, path_type, 1);
1886
1887 memset(&voc_be_media_format, 0,
1888 sizeof(struct media_format_info));
1889
1890 voc_be_media_format.port_id = msm_bedais[reg].port_id;
1891 voc_be_media_format.num_channels =
1892 msm_bedais[reg].channel;
1893 voc_be_media_format.sample_rate =
1894 msm_bedais[reg].sample_rate;
1895 voc_be_media_format.bits_per_sample =
1896 msm_bedais[reg].format;
1897 /* Defaulting this to 1 for voice call usecases */
1898 voc_be_media_format.channel_mapping[0] = 1;
1899
1900 voc_set_device_config(session_id, path_type,
1901 &voc_be_media_format);
1902
1903 if (voc_get_route_flag(session_id, TX_PATH) &&
1904 voc_get_route_flag(session_id, RX_PATH))
1905 voc_enable_device(session_id);
1906 } else {
1907 pr_debug("%s BE is not active\n", __func__);
1908 }
1909 } else {
1910 voc_set_route_flag(session_id, path_type, 0);
1911 voc_disable_device(session_id);
1912 }
1913
1914 mutex_unlock(&routing_lock);
1915
1916}
1917
1918static int msm_routing_get_voice_mixer(struct snd_kcontrol *kcontrol,
1919 struct snd_ctl_elem_value *ucontrol)
1920{
1921 struct soc_mixer_control *mc =
1922 (struct soc_mixer_control *)kcontrol->private_value;
1923
1924 mutex_lock(&routing_lock);
1925
1926 if (test_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]))
1927 ucontrol->value.integer.value[0] = 1;
1928 else
1929 ucontrol->value.integer.value[0] = 0;
1930
1931 mutex_unlock(&routing_lock);
1932
1933 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
1934 ucontrol->value.integer.value[0]);
1935
1936 return 0;
1937}
1938
1939static int msm_routing_put_voice_mixer(struct snd_kcontrol *kcontrol,
1940 struct snd_ctl_elem_value *ucontrol)
1941{
Asish Bhattacharya34504582017-08-08 12:55:01 +05301942 struct snd_soc_dapm_widget *widget =
1943 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301944 struct soc_mixer_control *mc =
1945 (struct soc_mixer_control *)kcontrol->private_value;
1946 struct snd_soc_dapm_update *update = NULL;
1947
1948 if (ucontrol->value.integer.value[0]) {
1949 msm_pcm_routing_process_voice(mc->reg, mc->shift, 1);
1950 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
1951 update);
1952 } else {
1953 msm_pcm_routing_process_voice(mc->reg, mc->shift, 0);
1954 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
1955 update);
1956 }
1957
1958 return 1;
1959}
1960
1961static int msm_routing_get_voice_stub_mixer(struct snd_kcontrol *kcontrol,
1962 struct snd_ctl_elem_value *ucontrol)
1963{
1964 struct soc_mixer_control *mc =
1965 (struct soc_mixer_control *)kcontrol->private_value;
1966
1967 mutex_lock(&routing_lock);
1968
1969 if (test_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]))
1970 ucontrol->value.integer.value[0] = 1;
1971 else
1972 ucontrol->value.integer.value[0] = 0;
1973
1974 mutex_unlock(&routing_lock);
1975
1976 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
1977 ucontrol->value.integer.value[0]);
1978
1979 return 0;
1980}
1981
1982static int msm_routing_put_voice_stub_mixer(struct snd_kcontrol *kcontrol,
1983 struct snd_ctl_elem_value *ucontrol)
1984{
Asish Bhattacharya34504582017-08-08 12:55:01 +05301985 struct snd_soc_dapm_widget *widget =
1986 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301987 struct soc_mixer_control *mc =
1988 (struct soc_mixer_control *)kcontrol->private_value;
1989 struct snd_soc_dapm_update *update = NULL;
1990
1991 if (ucontrol->value.integer.value[0]) {
1992 mutex_lock(&routing_lock);
1993 set_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]);
1994 mutex_unlock(&routing_lock);
1995
1996 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
1997 update);
1998 } else {
1999 mutex_lock(&routing_lock);
2000 clear_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]);
2001 mutex_unlock(&routing_lock);
2002
2003 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2004 update);
2005 }
2006
2007 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
2008 ucontrol->value.integer.value[0]);
2009
2010 return 1;
2011}
2012
2013/*
2014 * Return the mapping between port ID and backend ID to enable the AFE callback
2015 * to determine the acdb_dev_id from the port id
2016 */
2017int msm_pcm_get_be_id_from_port_id(int port_id)
2018{
2019 int i;
2020 int be_id = -EINVAL;
2021
2022 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
2023 if (msm_bedais[i].port_id == port_id) {
2024 be_id = i;
2025 break;
2026 }
2027 }
2028
2029 return be_id;
2030}
2031
2032/*
2033 * Return the registered dev_acdb_id given a port ID to enable identifying the
2034 * correct AFE calibration information by comparing the header information.
2035 */
2036static int msm_pcm_get_dev_acdb_id_by_port_id(int port_id)
2037{
2038 int acdb_id = -EINVAL;
2039 int i = 0;
2040 int session;
2041 int port_type = afe_get_port_type(port_id);
2042 int be_id = msm_pcm_get_be_id_from_port_id(port_id);
2043
2044 pr_debug("%s:port_id %d be_id %d, port_type 0x%x\n",
2045 __func__, port_id, be_id, port_type);
2046
2047 if (port_type == MSM_AFE_PORT_TYPE_TX) {
2048 session = SESSION_TYPE_TX;
2049 } else if (port_type == MSM_AFE_PORT_TYPE_RX) {
2050 session = SESSION_TYPE_RX;
2051 } else {
2052 pr_err("%s: Invalid port type %d\n", __func__, port_type);
2053 acdb_id = -EINVAL;
2054 goto exit;
2055 }
2056
2057 if (be_id < 0) {
2058 pr_err("%s: Error getting backend id %d\n", __func__, be_id);
2059 goto exit;
2060 }
2061
2062 mutex_lock(&routing_lock);
2063 i = find_first_bit(&msm_bedais[be_id].fe_sessions[0],
2064 MSM_FRONTEND_DAI_MAX);
2065 if (i < MSM_FRONTEND_DAI_MAX)
2066 acdb_id = fe_dai_app_type_cfg[i][session][be_id].acdb_dev_id;
2067
2068 pr_debug("%s: FE[%d] session[%d] BE[%d] acdb_id(%d)\n",
2069 __func__, i, session, be_id, acdb_id);
2070 mutex_unlock(&routing_lock);
2071exit:
2072 return acdb_id;
2073}
2074
2075static int msm_routing_get_switch_mixer(struct snd_kcontrol *kcontrol,
2076 struct snd_ctl_elem_value *ucontrol)
2077{
2078 ucontrol->value.integer.value[0] = fm_switch_enable;
2079 pr_debug("%s: FM Switch enable %ld\n", __func__,
2080 ucontrol->value.integer.value[0]);
2081 return 0;
2082}
2083
2084static int msm_routing_put_switch_mixer(struct snd_kcontrol *kcontrol,
2085 struct snd_ctl_elem_value *ucontrol)
2086{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302087 struct snd_soc_dapm_widget *widget =
2088 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302089 struct snd_soc_dapm_update *update = NULL;
2090
2091 pr_debug("%s: FM Switch enable %ld\n", __func__,
2092 ucontrol->value.integer.value[0]);
2093 if (ucontrol->value.integer.value[0])
2094 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2095 update);
2096 else
2097 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2098 update);
2099 fm_switch_enable = ucontrol->value.integer.value[0];
2100 return 1;
2101}
2102
2103static int msm_routing_get_hfp_switch_mixer(struct snd_kcontrol *kcontrol,
2104 struct snd_ctl_elem_value *ucontrol)
2105{
2106 ucontrol->value.integer.value[0] = hfp_switch_enable;
2107 pr_debug("%s: HFP Switch enable %ld\n", __func__,
2108 ucontrol->value.integer.value[0]);
2109 return 0;
2110}
2111
2112static int msm_routing_put_hfp_switch_mixer(struct snd_kcontrol *kcontrol,
2113 struct snd_ctl_elem_value *ucontrol)
2114{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302115 struct snd_soc_dapm_widget *widget =
2116 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302117 struct snd_soc_dapm_update *update = NULL;
2118
2119 pr_debug("%s: HFP Switch enable %ld\n", __func__,
2120 ucontrol->value.integer.value[0]);
2121 if (ucontrol->value.integer.value[0])
2122 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol,
2123 1, update);
2124 else
2125 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol,
2126 0, update);
2127 hfp_switch_enable = ucontrol->value.integer.value[0];
2128 return 1;
2129}
2130
2131static int msm_routing_get_int0_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2132 struct snd_ctl_elem_value *ucontrol)
2133{
2134 ucontrol->value.integer.value[0] = int0_mi2s_switch_enable;
2135 pr_debug("%s: INT0 MI2S Switch enable %ld\n", __func__,
2136 ucontrol->value.integer.value[0]);
2137 return 0;
2138}
2139
2140static int msm_routing_put_int0_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2141 struct snd_ctl_elem_value *ucontrol)
2142{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302143 struct snd_soc_dapm_widget *widget =
2144 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302145 struct snd_soc_dapm_update *update = NULL;
2146
2147 pr_debug("%s: INT0 MI2S Switch enable %ld\n", __func__,
2148 ucontrol->value.integer.value[0]);
2149 if (ucontrol->value.integer.value[0])
2150 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2151 update);
2152 else
2153 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2154 update);
2155 int0_mi2s_switch_enable = ucontrol->value.integer.value[0];
2156 return 1;
2157}
2158
2159static int msm_routing_get_int4_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2160 struct snd_ctl_elem_value *ucontrol)
2161{
2162 ucontrol->value.integer.value[0] = int4_mi2s_switch_enable;
2163 pr_debug("%s: INT4 MI2S Switch enable %ld\n", __func__,
2164 ucontrol->value.integer.value[0]);
2165 return 0;
2166}
2167
2168static int msm_routing_put_int4_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2169 struct snd_ctl_elem_value *ucontrol)
2170{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302171 struct snd_soc_dapm_widget *widget =
2172 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302173 struct snd_soc_dapm_update *update = NULL;
2174
2175 pr_debug("%s: INT4 MI2S Switch enable %ld\n", __func__,
2176 ucontrol->value.integer.value[0]);
2177 if (ucontrol->value.integer.value[0])
2178 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2179 update);
2180 else
2181 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2182 update);
2183 int4_mi2s_switch_enable = ucontrol->value.integer.value[0];
2184 return 1;
2185}
2186
2187static int msm_routing_get_usb_switch_mixer(struct snd_kcontrol *kcontrol,
2188 struct snd_ctl_elem_value *ucontrol)
2189{
2190 ucontrol->value.integer.value[0] = usb_switch_enable;
2191 pr_debug("%s: HFP Switch enable %ld\n", __func__,
2192 ucontrol->value.integer.value[0]);
2193 return 0;
2194}
2195
2196static int msm_routing_put_usb_switch_mixer(struct snd_kcontrol *kcontrol,
2197 struct snd_ctl_elem_value *ucontrol)
2198{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302199 struct snd_soc_dapm_widget *widget =
2200 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302201 struct snd_soc_dapm_update *update = NULL;
2202
2203 pr_debug("%s: USB Switch enable %ld\n", __func__,
2204 ucontrol->value.integer.value[0]);
2205 if (ucontrol->value.integer.value[0])
2206 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol,
2207 1, update);
2208 else
2209 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol,
2210 0, update);
2211 usb_switch_enable = ucontrol->value.integer.value[0];
2212 return 1;
2213}
2214
2215static int msm_routing_get_pri_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2216 struct snd_ctl_elem_value *ucontrol)
2217{
2218 ucontrol->value.integer.value[0] = pri_mi2s_switch_enable;
2219 pr_debug("%s: PRI MI2S Switch enable %ld\n", __func__,
2220 ucontrol->value.integer.value[0]);
2221 return 0;
2222}
2223
2224static int msm_routing_put_pri_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2225 struct snd_ctl_elem_value *ucontrol)
2226{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302227 struct snd_soc_dapm_widget *widget =
2228 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302229 struct snd_soc_dapm_update *update = NULL;
2230
2231 pr_debug("%s: PRI MI2S Switch enable %ld\n", __func__,
2232 ucontrol->value.integer.value[0]);
2233 if (ucontrol->value.integer.value[0])
2234 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2235 update);
2236 else
2237 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2238 update);
2239 pri_mi2s_switch_enable = ucontrol->value.integer.value[0];
2240 return 1;
2241}
2242
2243static int msm_routing_get_sec_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2244 struct snd_ctl_elem_value *ucontrol)
2245{
2246 ucontrol->value.integer.value[0] = sec_mi2s_switch_enable;
2247 pr_debug("%s: SEC MI2S Switch enable %ld\n", __func__,
2248 ucontrol->value.integer.value[0]);
2249 return 0;
2250}
2251
2252static int msm_routing_put_sec_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2253 struct snd_ctl_elem_value *ucontrol)
2254{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302255 struct snd_soc_dapm_widget *widget =
2256 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302257 struct snd_soc_dapm_update *update = NULL;
2258
2259 pr_debug("%s: SEC MI2S Switch enable %ld\n", __func__,
2260 ucontrol->value.integer.value[0]);
2261 if (ucontrol->value.integer.value[0])
2262 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2263 update);
2264 else
2265 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2266 update);
2267 sec_mi2s_switch_enable = ucontrol->value.integer.value[0];
2268 return 1;
2269}
2270
2271static int msm_routing_get_tert_mi2s_switch_mixer(
2272 struct snd_kcontrol *kcontrol,
2273 struct snd_ctl_elem_value *ucontrol)
2274{
2275 ucontrol->value.integer.value[0] = tert_mi2s_switch_enable;
2276 pr_debug("%s: TERT MI2S Switch enable %ld\n", __func__,
2277 ucontrol->value.integer.value[0]);
2278 return 0;
2279}
2280
2281static int msm_routing_put_tert_mi2s_switch_mixer(
2282 struct snd_kcontrol *kcontrol,
2283 struct snd_ctl_elem_value *ucontrol)
2284{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302285 struct snd_soc_dapm_widget *widget =
2286 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302287 struct snd_soc_dapm_update *update = NULL;
2288
2289 pr_debug("%s: TERT MI2S Switch enable %ld\n", __func__,
2290 ucontrol->value.integer.value[0]);
2291 if (ucontrol->value.integer.value[0])
2292 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2293 update);
2294 else
2295 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2296 update);
2297 tert_mi2s_switch_enable = ucontrol->value.integer.value[0];
2298 return 1;
2299}
2300
2301static int msm_routing_get_quat_mi2s_switch_mixer(
2302 struct snd_kcontrol *kcontrol,
2303 struct snd_ctl_elem_value *ucontrol)
2304{
2305 ucontrol->value.integer.value[0] = quat_mi2s_switch_enable;
2306 pr_debug("%s: QUAT MI2S Switch enable %ld\n", __func__,
2307 ucontrol->value.integer.value[0]);
2308 return 0;
2309}
2310
2311static int msm_routing_put_quat_mi2s_switch_mixer(
2312 struct snd_kcontrol *kcontrol,
2313 struct snd_ctl_elem_value *ucontrol)
2314{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302315 struct snd_soc_dapm_widget *widget =
2316 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302317 struct snd_soc_dapm_update *update = NULL;
2318
2319 pr_debug("%s: QUAT MI2S Switch enable %ld\n", __func__,
2320 ucontrol->value.integer.value[0]);
2321 if (ucontrol->value.integer.value[0])
2322 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2323 update);
2324 else
2325 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2326 update);
2327 quat_mi2s_switch_enable = ucontrol->value.integer.value[0];
2328 return 1;
2329}
2330
Rohit Kumara5077932017-09-10 22:05:05 +05302331static int msm_routing_get_quin_mi2s_switch_mixer(
2332 struct snd_kcontrol *kcontrol,
2333 struct snd_ctl_elem_value *ucontrol)
2334{
2335 ucontrol->value.integer.value[0] = quin_mi2s_switch_enable;
2336 pr_debug("%s: QUIN MI2S Switch enable %ld\n", __func__,
2337 ucontrol->value.integer.value[0]);
2338 return 0;
2339}
2340
2341static int msm_routing_put_quin_mi2s_switch_mixer(
2342 struct snd_kcontrol *kcontrol,
2343 struct snd_ctl_elem_value *ucontrol)
2344{
2345 struct snd_soc_dapm_widget *widget =
2346 snd_soc_dapm_kcontrol_widget(kcontrol);
2347 struct snd_soc_dapm_update *update = NULL;
2348
2349 pr_debug("%s: QUIN MI2S Switch enable %ld\n", __func__,
2350 ucontrol->value.integer.value[0]);
2351 if (ucontrol->value.integer.value[0])
2352 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2353 update);
2354 else
2355 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2356 update);
2357 quin_mi2s_switch_enable = ucontrol->value.integer.value[0];
2358 return 1;
2359}
2360
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302361static int msm_routing_get_fm_pcmrx_switch_mixer(struct snd_kcontrol *kcontrol,
2362 struct snd_ctl_elem_value *ucontrol)
2363{
2364 ucontrol->value.integer.value[0] = fm_pcmrx_switch_enable;
2365 pr_debug("%s: FM Switch enable %ld\n", __func__,
2366 ucontrol->value.integer.value[0]);
2367 return 0;
2368}
2369
2370static int msm_routing_put_fm_pcmrx_switch_mixer(struct snd_kcontrol *kcontrol,
2371 struct snd_ctl_elem_value *ucontrol)
2372{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302373 struct snd_soc_dapm_widget *widget =
2374 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302375 struct snd_soc_dapm_update *update = NULL;
2376
2377 pr_debug("%s: FM Switch enable %ld\n", __func__,
2378 ucontrol->value.integer.value[0]);
2379 if (ucontrol->value.integer.value[0])
2380 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2381 update);
2382 else
2383 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2384 update);
2385 fm_pcmrx_switch_enable = ucontrol->value.integer.value[0];
2386 return 1;
2387}
2388
2389static int msm_routing_lsm_port_get(struct snd_kcontrol *kcontrol,
2390 struct snd_ctl_elem_value *ucontrol)
2391{
2392 ucontrol->value.integer.value[0] = lsm_port_index;
2393 return 0;
2394}
2395
2396static int msm_routing_lsm_port_put(struct snd_kcontrol *kcontrol,
2397 struct snd_ctl_elem_value *ucontrol)
2398{
2399 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
2400 int mux = ucontrol->value.enumerated.item[0];
2401 int lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_5_TX;
2402
2403 if (mux >= e->items) {
2404 pr_err("%s: Invalid mux value %d\n", __func__, mux);
2405 return -EINVAL;
2406 }
2407
2408 pr_debug("%s: LSM enable %ld\n", __func__,
2409 ucontrol->value.integer.value[0]);
2410 switch (ucontrol->value.integer.value[0]) {
2411 case 1:
2412 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_0_TX;
2413 break;
2414 case 2:
2415 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_1_TX;
2416 break;
2417 case 3:
2418 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_2_TX;
2419 break;
2420 case 4:
2421 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_3_TX;
2422 break;
2423 case 5:
2424 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_4_TX;
2425 break;
2426 case 6:
2427 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_5_TX;
2428 break;
2429 case 7:
2430 lsm_port = AFE_PORT_ID_TERTIARY_MI2S_TX;
2431 break;
2432 case 8:
2433 lsm_port = AFE_PORT_ID_QUATERNARY_MI2S_TX;
2434 break;
2435 case 9:
2436 lsm_port = ADM_LSM_PORT_ID;
2437 break;
2438 case 10:
2439 lsm_port = AFE_PORT_ID_INT3_MI2S_TX;
2440 break;
2441 default:
2442 pr_err("Default lsm port");
2443 break;
2444 }
2445 set_lsm_port(lsm_port);
2446 lsm_port_index = ucontrol->value.integer.value[0];
2447
2448 return 0;
2449}
2450
2451static int msm_routing_lsm_func_get(struct snd_kcontrol *kcontrol,
2452 struct snd_ctl_elem_value *ucontrol)
2453{
2454 int i;
2455 u16 port_id;
2456 enum afe_mad_type mad_type;
2457
2458 pr_debug("%s: enter\n", __func__);
2459 for (i = 0; i < ARRAY_SIZE(lsm_port_text); i++)
2460 if (!strnstr(kcontrol->id.name, lsm_port_text[i],
2461 strlen(lsm_port_text[i])))
2462 break;
2463
2464 if (i-- == ARRAY_SIZE(lsm_port_text)) {
2465 WARN(1, "Invalid id name %s\n", kcontrol->id.name);
2466 return -EINVAL;
2467 }
2468
2469 port_id = i * 2 + 1 + SLIMBUS_0_RX;
2470
2471 /*Check for Tertiary/Quaternary/INT3 TX port*/
2472 if (strnstr(kcontrol->id.name, lsm_port_text[7],
2473 strlen(lsm_port_text[7])))
2474 port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
2475
2476 if (strnstr(kcontrol->id.name, lsm_port_text[8],
2477 strlen(lsm_port_text[8])))
2478 port_id = AFE_PORT_ID_QUATERNARY_MI2S_TX;
2479
2480 if (strnstr(kcontrol->id.name, lsm_port_text[10],
2481 strlen(lsm_port_text[10])))
2482 port_id = AFE_PORT_ID_INT3_MI2S_TX;
2483
2484 mad_type = afe_port_get_mad_type(port_id);
2485 pr_debug("%s: port_id 0x%x, mad_type %d\n", __func__, port_id,
2486 mad_type);
2487 switch (mad_type) {
2488 case MAD_HW_NONE:
2489 ucontrol->value.integer.value[0] = MADNONE;
2490 break;
2491 case MAD_HW_AUDIO:
2492 ucontrol->value.integer.value[0] = MADAUDIO;
2493 break;
2494 case MAD_HW_BEACON:
2495 ucontrol->value.integer.value[0] = MADBEACON;
2496 break;
2497 case MAD_HW_ULTRASOUND:
2498 ucontrol->value.integer.value[0] = MADULTRASOUND;
2499 break;
2500 case MAD_SW_AUDIO:
2501 ucontrol->value.integer.value[0] = MADSWAUDIO;
2502 break;
2503 default:
2504 WARN(1, "Unknown\n");
2505 return -EINVAL;
2506 }
2507 return 0;
2508}
2509
2510static int msm_routing_lsm_func_put(struct snd_kcontrol *kcontrol,
2511 struct snd_ctl_elem_value *ucontrol)
2512{
2513 int i;
2514 u16 port_id;
2515 enum afe_mad_type mad_type;
2516
2517 pr_debug("%s: enter\n", __func__);
2518 for (i = 0; i < ARRAY_SIZE(lsm_port_text); i++)
2519 if (strnstr(kcontrol->id.name, lsm_port_text[i],
2520 strlen(lsm_port_text[i])))
2521 break;
2522
2523 if (i-- == ARRAY_SIZE(lsm_port_text)) {
2524 WARN(1, "Invalid id name %s\n", kcontrol->id.name);
2525 return -EINVAL;
2526 }
2527
2528 port_id = i * 2 + 1 + SLIMBUS_0_RX;
2529 switch (ucontrol->value.integer.value[0]) {
2530 case MADNONE:
2531 mad_type = MAD_HW_NONE;
2532 break;
2533 case MADAUDIO:
2534 mad_type = MAD_HW_AUDIO;
2535 break;
2536 case MADBEACON:
2537 mad_type = MAD_HW_BEACON;
2538 break;
2539 case MADULTRASOUND:
2540 mad_type = MAD_HW_ULTRASOUND;
2541 break;
2542 case MADSWAUDIO:
2543 mad_type = MAD_SW_AUDIO;
2544 break;
2545 default:
2546 WARN(1, "Unknown\n");
2547 return -EINVAL;
2548 }
2549
2550 /*Check for Tertiary/Quaternary/INT3 TX port*/
2551 if (strnstr(kcontrol->id.name, lsm_port_text[7],
2552 strlen(lsm_port_text[7])))
2553 port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
2554
2555 if (strnstr(kcontrol->id.name, lsm_port_text[8],
2556 strlen(lsm_port_text[8])))
2557 port_id = AFE_PORT_ID_QUATERNARY_MI2S_TX;
2558
2559 if (strnstr(kcontrol->id.name, lsm_port_text[10],
2560 strlen(lsm_port_text[10])))
2561 port_id = AFE_PORT_ID_INT3_MI2S_TX;
2562
2563 pr_debug("%s: port_id 0x%x, mad_type %d\n", __func__, port_id,
2564 mad_type);
2565 return afe_port_set_mad_type(port_id, mad_type);
2566}
2567
2568static const char *const adm_override_chs_text[] = {"Zero", "One", "Two"};
2569
2570static SOC_ENUM_SINGLE_EXT_DECL(slim_7_rx_adm_override_chs,
2571 adm_override_chs_text);
2572
2573static int msm_routing_adm_get_backend_idx(struct snd_kcontrol *kcontrol)
2574{
2575 int backend_id;
2576
2577 if (strnstr(kcontrol->id.name, "SLIM7_RX", sizeof("SLIM7_RX"))) {
2578 backend_id = MSM_BACKEND_DAI_SLIMBUS_7_RX;
2579 } else {
2580 pr_err("%s: unsupported backend id: %s",
2581 __func__, kcontrol->id.name);
2582 return -EINVAL;
2583 }
2584
2585 return backend_id;
2586}
2587static int msm_routing_adm_channel_config_get(
2588 struct snd_kcontrol *kcontrol,
2589 struct snd_ctl_elem_value *ucontrol)
2590{
2591 int backend_id = msm_routing_adm_get_backend_idx(kcontrol);
2592
2593 if (backend_id >= 0) {
2594 mutex_lock(&routing_lock);
2595 ucontrol->value.integer.value[0] =
2596 msm_bedais[backend_id].adm_override_ch;
2597 pr_debug("%s: adm channel count %ld for BE:%d\n", __func__,
2598 ucontrol->value.integer.value[0], backend_id);
2599 mutex_unlock(&routing_lock);
2600 }
2601
2602 return 0;
2603}
2604
2605static int msm_routing_adm_channel_config_put(
2606 struct snd_kcontrol *kcontrol,
2607 struct snd_ctl_elem_value *ucontrol)
2608{
2609 int backend_id = msm_routing_adm_get_backend_idx(kcontrol);
2610
2611 if (backend_id >= 0) {
2612 mutex_lock(&routing_lock);
2613 msm_bedais[backend_id].adm_override_ch =
2614 ucontrol->value.integer.value[0];
2615 pr_debug("%s:updating BE :%d adm channels: %d\n",
2616 __func__, backend_id,
2617 msm_bedais[backend_id].adm_override_ch);
2618 mutex_unlock(&routing_lock);
2619 }
2620
2621 return 0;
2622}
2623
2624static const struct snd_kcontrol_new adm_channel_config_controls[] = {
2625 SOC_ENUM_EXT("SLIM7_RX ADM Channels", slim_7_rx_adm_override_chs,
2626 msm_routing_adm_channel_config_get,
2627 msm_routing_adm_channel_config_put),
2628};
2629
2630static int msm_routing_slim_0_rx_aanc_mux_get(struct snd_kcontrol *kcontrol,
2631 struct snd_ctl_elem_value *ucontrol)
2632{
2633
2634 mutex_lock(&routing_lock);
2635 ucontrol->value.integer.value[0] = slim0_rx_aanc_fb_port;
2636 mutex_unlock(&routing_lock);
2637 pr_debug("%s: AANC Mux Port %ld\n", __func__,
2638 ucontrol->value.integer.value[0]);
2639 return 0;
2640};
2641
2642static int msm_routing_slim_0_rx_aanc_mux_put(struct snd_kcontrol *kcontrol,
2643 struct snd_ctl_elem_value *ucontrol)
2644{
2645 struct aanc_data aanc_info;
2646
2647 mutex_lock(&routing_lock);
2648 memset(&aanc_info, 0x00, sizeof(aanc_info));
2649 pr_debug("%s: AANC Mux Port %ld\n", __func__,
2650 ucontrol->value.integer.value[0]);
2651 slim0_rx_aanc_fb_port = ucontrol->value.integer.value[0];
2652 if (ucontrol->value.integer.value[0] == 0) {
2653 aanc_info.aanc_active = false;
2654 aanc_info.aanc_tx_port = 0;
2655 aanc_info.aanc_rx_port = 0;
2656 } else {
2657 aanc_info.aanc_active = true;
2658 aanc_info.aanc_rx_port = SLIMBUS_0_RX;
2659 aanc_info.aanc_tx_port =
2660 (SLIMBUS_0_RX - 1 + (slim0_rx_aanc_fb_port * 2));
2661 }
2662 afe_set_aanc_info(&aanc_info);
2663 mutex_unlock(&routing_lock);
2664 return 0;
2665};
2666static int msm_routing_get_port_mixer(struct snd_kcontrol *kcontrol,
2667 struct snd_ctl_elem_value *ucontrol)
2668{
2669 int idx = 0, shift = 0;
2670 struct soc_mixer_control *mc =
2671 (struct soc_mixer_control *)kcontrol->private_value;
2672
2673 idx = mc->shift/(sizeof(msm_bedais[mc->reg].port_sessions[0]) * 8);
2674 shift = mc->shift%(sizeof(msm_bedais[mc->reg].port_sessions[0]) * 8);
2675
2676 if (idx >= BE_DAI_PORT_SESSIONS_IDX_MAX) {
2677 pr_err("%s: Invalid idx = %d\n", __func__, idx);
2678 return -EINVAL;
2679 }
2680
2681 if (test_bit(shift,
2682 (unsigned long *)&msm_bedais[mc->reg].port_sessions[idx]))
2683 ucontrol->value.integer.value[0] = 1;
2684 else
2685 ucontrol->value.integer.value[0] = 0;
2686
2687 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
2688 ucontrol->value.integer.value[0]);
2689
2690 return 0;
2691}
2692
2693static int msm_routing_put_port_mixer(struct snd_kcontrol *kcontrol,
2694 struct snd_ctl_elem_value *ucontrol)
2695{
2696 int idx = 0, shift = 0;
2697 struct soc_mixer_control *mc =
2698 (struct soc_mixer_control *)kcontrol->private_value;
2699
2700 idx = mc->shift/(sizeof(msm_bedais[mc->reg].port_sessions[0]) * 8);
2701 shift = mc->shift%(sizeof(msm_bedais[mc->reg].port_sessions[0]) * 8);
2702
2703 if (idx >= BE_DAI_PORT_SESSIONS_IDX_MAX) {
2704 pr_err("%s: Invalid idx = %d\n", __func__, idx);
2705 return -EINVAL;
2706 }
2707
2708 pr_debug("%s: reg 0x%x shift 0x%x val %ld idx %d reminder shift %d\n",
2709 __func__, mc->reg, mc->shift,
2710 ucontrol->value.integer.value[0], idx, shift);
2711
2712 if (ucontrol->value.integer.value[0]) {
2713 afe_loopback(1, msm_bedais[mc->reg].port_id,
2714 msm_bedais[mc->shift].port_id);
2715 set_bit(shift,
2716 (unsigned long *)&msm_bedais[mc->reg].port_sessions[idx]);
2717 } else {
2718 afe_loopback(0, msm_bedais[mc->reg].port_id,
2719 msm_bedais[mc->shift].port_id);
2720 clear_bit(shift,
2721 (unsigned long *)&msm_bedais[mc->reg].port_sessions[idx]);
2722 }
2723
2724 return 1;
2725}
2726
2727static int msm_pcm_get_channel_rule_index(struct snd_kcontrol *kcontrol,
2728 struct snd_ctl_elem_value *ucontrol)
2729{
2730 u16 fe_id = 0;
2731
2732 fe_id = ((struct soc_mixer_control *)
2733 kcontrol->private_value)->shift;
2734 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2735 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2736 return -EINVAL;
2737 }
2738
2739 ucontrol->value.integer.value[0] = channel_mixer[fe_id].rule;
2740
2741 return 0;
2742}
2743
2744static int msm_pcm_put_channel_rule_index(struct snd_kcontrol *kcontrol,
2745 struct snd_ctl_elem_value *ucontrol)
2746{
2747 u16 fe_id = 0;
2748
2749 fe_id = ((struct soc_mixer_control *)
2750 kcontrol->private_value)->shift;
2751 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2752 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2753 return -EINVAL;
2754 }
2755
2756 channel_mixer[fe_id].rule = ucontrol->value.integer.value[0];
2757
2758 return 1;
2759}
2760
2761static int msm_pcm_get_out_chs(struct snd_kcontrol *kcontrol,
2762 struct snd_ctl_elem_value *ucontrol)
2763{
2764 u16 fe_id = 0;
2765
2766 fe_id = ((struct soc_multi_mixer_control *)
2767 kcontrol->private_value)->shift;
2768 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2769 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2770 return -EINVAL;
2771 }
2772
2773 ucontrol->value.integer.value[0] =
2774 channel_mixer[fe_id].output_channel;
2775 return 0;
2776}
2777
2778static int msm_pcm_put_out_chs(struct snd_kcontrol *kcontrol,
2779 struct snd_ctl_elem_value *ucontrol)
2780{
2781 u16 fe_id = 0;
2782
2783 fe_id = ((struct soc_multi_mixer_control *)
2784 kcontrol->private_value)->shift;
2785 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2786 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2787 return -EINVAL;
2788 }
2789
2790 pr_debug("%s: fe_id is %d, output channels = %d\n", __func__,
2791 fe_id,
2792 (unsigned int)(ucontrol->value.integer.value[0]));
2793 channel_mixer[fe_id].output_channel =
2794 (unsigned int)(ucontrol->value.integer.value[0]);
2795
2796 return 1;
2797}
2798
2799static const char *const ch_mixer[] = {"Disable", "Enable"};
2800
2801/* If new backend is added, need update this array */
2802static const char *const be_name[] = {
2803"ZERO", "PRI_I2S_RX", "PRI_I2S_TX", "SLIM_0_RX",
2804"SLIM_0_TX", "HDMI_RX", "INT_BT_SCO_RX", "INT_BT_SCO_TX",
2805"INT_FM_RX", "INT_FM_TX", "AFE_PCM_RX", "AFE_PCM_TX",
2806"AUXPCM_RX", "AUXPCM_TX", "VOICE_PLAYBACK_TX", "VOICE2_PLAYBACK_TX",
2807"INCALL_RECORD_RX", "INCALL_RECORD_TX", "MI2S_RX", "MI2S_TX",
2808"SEC_I2S_RX", "SLIM_1_RX", "SLIM_1_TX", "SLIM_2_RX",
2809"SLIM_2_TX", "SLIM_3_RX", "SLIM_3_TX", "SLIM_4_RX",
2810"SLIM_4_TX", "SLIM_5_RX", "SLIM_5_TX", "SLIM_6_RX",
2811"SLIM_6_TX", "SLIM_7_RX", "SLIM_7_TX", "SLIM_8_RX",
2812"SLIM_8_TX", "EXTPROC_RX", "EXTPROC_TX", "EXPROC_EC_TX",
2813"QUAT_MI2S_RX", "QUAT_MI2S_TX", "SECOND_MI2S_RX", "SECOND_MI2S_TX",
2814"PRI_MI2S_RX", "PRI_MI2S_TX", "TERT_MI2S_RX", "TERT_MI2S_TX",
2815"AUDIO_I2S_RX", "SEC_AUXPCM_RX", "SEC_AUXPCM_TX", "SPDIF_RX",
2816"SECOND_MI2S_RX_SD1", "QUIN_MI2S_RX", "QUIN_MI2S_TX", "SENARY_MI2S_TX",
2817"PRI_TDM_RX_0", "PRI_TDM_TX_0", "PRI_TDM_RX_1", "PRI_TDM_TX_1",
2818"PRI_TDM_RX_2", "PRI_TDM_TX_2", "PRI_TDM_RX_3", "PRI_TDM_TX_3",
2819"PRI_TDM_RX_4", "PRI_TDM_TX_4", "PRI_TDM_RX_5", "PRI_TDM_TX_5",
2820"PRI_TDM_RX_6", "PRI_TDM_TX_6", "PRI_TDM_RX_7", "PRI_TDM_TX_7",
2821"SEC_TDM_RX_0", "SEC_TDM_TX_0", "SEC_TDM_RX_1", "SEC_TDM_TX_1",
2822"SEC_TDM_RX_2", "SEC_TDM_TX_2", "SEC_TDM_RX_3", "SEC_TDM_TX_3",
2823"SEC_TDM_RX_4", "SEC_TDM_TX_4", "SEC_TDM_RX_5", "SEC_TDM_TX_5",
2824"SEC_TDM_RX_6", "SEC_TDM_TX_6", "SEC_TDM_RX_7", "SEC_TDM_TX_7",
2825"TERT_TDM_RX_0", "TERT_TDM_TX_0", "TERT_TDM_RX_1", "TERT_TDM_TX_1",
2826"TERT_TDM_RX_2", "TERT_TDM_TX_2", "TERT_TDM_RX_3", "TERT_TDM_TX_3",
2827"TERT_TDM_RX_4", "TERT_TDM_TX_4", "TERT_TDM_RX_5", "TERT_TDM_TX_5",
2828"TERT_TDM_RX_6", "TERT_TDM_TX_6", "TERT_TDM_RX_7", "TERT_TDM_TX_7",
2829"QUAT_TDM_RX_0", "QUAT_TDM_TX_0", "QUAT_TDM_RX_1", "QUAT_TDM_TX_1",
2830"QUAT_TDM_RX_2", "QUAT_TDM_TX_2", "QUAT_TDM_RX_3", "QUAT_TDM_TX_3",
2831"QUAT_TDM_RX_4", "QUAT_TDM_TX_4", "QUAT_TDM_RX_5", "QUAT_TDM_TX_5",
2832"QUAT_TDM_RX_6", "QUAT_TDM_TX_6", "QUAT_TDM_RX_7", "QUAT_TDM_TX_7",
Rohit Kumara5077932017-09-10 22:05:05 +05302833"QUIN_TDM_RX_0", "QUIN_TDM_TX_0", "QUIN_TDM_RX_1", "QUIN_TDM_TX_1",
2834"QUIN_TDM_RX_2", "QUIN_TDM_TX_2", "QUIN_TDM_RX_3", "QUIN_TDM_TX_3",
2835"QUIN_TDM_RX_4", "QUIN_TDM_TX_4", "QUIN_TDM_RX_5", "QUIN_TDM_TX_5",
2836"QUIN_TDM_RX_6", "QUIN_TDM_TX_6", "QUIN_TDM_RX_7", "QUIN_TDM_TX_7",
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302837"INT_BT_A2DP_RX", "USB_RX", "USB_TX", "DISPLAY_PORT_RX",
2838"TERT_AUXPCM_RX", "TERT_AUXPCM_TX", "QUAT_AUXPCM_RX", "QUAT_AUXPCM_TX",
Rohit Kumara5077932017-09-10 22:05:05 +05302839"QUIN_AUXPCM_RX", "QUIN_AUXPCM_TX",
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302840"INT0_MI2S_RX", "INT0_MI2S_TX", "INT1_MI2S_RX", "INT1_MI2S_TX",
2841"INT2_MI2S_RX", "INT2_MI2S_TX", "INT3_MI2S_RX", "INT3_MI2S_TX",
2842"INT4_MI2S_RX", "INT4_MI2S_TX", "INT5_MI2S_RX", "INT5_MI2S_TX",
2843"INT6_MI2S_RX", "INT6_MI2S_TX"
2844};
2845
2846static SOC_ENUM_SINGLE_DECL(mm1_channel_mux,
2847 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, ch_mixer);
2848static SOC_ENUM_SINGLE_DECL(mm2_channel_mux,
2849 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA2, ch_mixer);
2850static SOC_ENUM_SINGLE_DECL(mm3_channel_mux,
2851 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA3, ch_mixer);
2852static SOC_ENUM_SINGLE_DECL(mm4_channel_mux,
2853 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA4, ch_mixer);
2854
2855static SOC_ENUM_DOUBLE_DECL(mm1_ch1_enum,
2856 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 0, be_name);
2857static SOC_ENUM_DOUBLE_DECL(mm1_ch2_enum,
2858 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 1, be_name);
2859static SOC_ENUM_DOUBLE_DECL(mm1_ch3_enum,
2860 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 2, be_name);
2861static SOC_ENUM_DOUBLE_DECL(mm1_ch4_enum,
2862 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 3, be_name);
2863static SOC_ENUM_DOUBLE_DECL(mm1_ch5_enum,
2864 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 4, be_name);
2865static SOC_ENUM_DOUBLE_DECL(mm1_ch6_enum,
2866 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 5, be_name);
2867static SOC_ENUM_DOUBLE_DECL(mm1_ch7_enum,
2868 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 6, be_name);
2869static SOC_ENUM_DOUBLE_DECL(mm1_ch8_enum,
2870 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 7, be_name);
2871
2872static int msm_pcm_get_ctl_enum_info(struct snd_ctl_elem_info *uinfo,
2873 unsigned int channels,
2874 unsigned int items, const char *const names[])
2875{
2876 if (uinfo->value.enumerated.item >= items)
2877 uinfo->value.enumerated.item = items - 1;
2878
2879 WARN(strlen(names[uinfo->value.enumerated.item]) >=
2880 sizeof(uinfo->value.enumerated.name),
2881 "ALSA: too long item name '%s'\n",
2882 names[uinfo->value.enumerated.item]);
2883 strlcpy(uinfo->value.enumerated.name,
2884 names[uinfo->value.enumerated.item],
2885 sizeof(uinfo->value.enumerated.name));
2886 return 0;
2887}
2888
2889static int msm_pcm_channel_mixer_info(struct snd_kcontrol *kcontrol,
2890 struct snd_ctl_elem_info *uinfo)
2891{
2892 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
2893
2894 uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED;
2895 uinfo->count = 1;
2896
2897 uinfo->value.enumerated.items = ARRAY_SIZE(ch_mixer);
2898 msm_pcm_get_ctl_enum_info(uinfo, 1, e->items, e->texts);
2899
2900 return 0;
2901}
2902static int msm_pcm_channel_mixer_get(struct snd_kcontrol *kcontrol,
2903 struct snd_ctl_elem_value *ucontrol)
2904{
2905 u16 fe_id = 0;
2906
2907 fe_id = ((struct soc_enum *)
2908 kcontrol->private_value)->shift_l;
2909 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2910 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2911 return -EINVAL;
2912 }
2913
2914 pr_debug("%s: FE %d %s\n", __func__,
2915 fe_id,
2916 channel_mixer[fe_id].enable ? "Enabled" : "Disabled");
2917 ucontrol->value.enumerated.item[0] = channel_mixer[fe_id].enable;
2918 return 0;
2919}
2920
2921static int msm_pcm_channel_mixer_put(struct snd_kcontrol *kcontrol,
2922 struct snd_ctl_elem_value *ucontrol)
2923{
2924 u16 fe_id = 0;
2925
2926 fe_id = ((struct soc_enum *)
2927 kcontrol->private_value)->shift_l;
2928 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2929 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2930 return -EINVAL;
2931 }
2932
2933 channel_mixer[fe_id].enable = ucontrol->value.enumerated.item[0];
2934 pr_debug("%s: %s FE %d\n", __func__,
2935 channel_mixer[fe_id].enable ? "Enable" : "Disable",
2936 fe_id);
2937 return 0;
2938}
2939
2940static int msm_pcm_channel_input_be_info(struct snd_kcontrol *kcontrol,
2941 struct snd_ctl_elem_info *uinfo)
2942{
2943 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
2944
2945 uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED;
2946 uinfo->count = 1;
2947
2948 uinfo->value.enumerated.items = ARRAY_SIZE(be_name);
2949 msm_pcm_get_ctl_enum_info(uinfo, 1, e->items, e->texts);
2950
2951 return 0;
2952}
2953
2954static int msm_pcm_channel_input_be_put(struct snd_kcontrol *kcontrol,
2955 struct snd_ctl_elem_value *ucontrol)
2956{
2957 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
2958 u16 fe_id = 0, in_ch = 0;
2959
2960 fe_id = e->shift_l;
2961 in_ch = e->shift_r;
2962 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2963 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2964 return -EINVAL;
2965 }
2966 if (in_ch >= ADM_MAX_CHANNELS) {
2967 pr_err("%s: invalid input channel %d\n", __func__, in_ch);
2968 return -EINVAL;
2969 }
2970
2971 channel_input[fe_id][in_ch] = ucontrol->value.enumerated.item[0];
2972 return 1;
2973}
2974
2975static int msm_pcm_channel_input_be_get(struct snd_kcontrol *kcontrol,
2976 struct snd_ctl_elem_value *ucontrol)
2977{
2978 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
2979 u16 fe_id = 0, in_ch = 0;
2980
2981 fe_id = e->shift_l;
2982 in_ch = e->shift_r;
2983 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2984 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2985 return -EINVAL;
2986 }
2987 if (in_ch >= ADM_MAX_CHANNELS) {
2988 pr_err("%s: invalid input channel %d\n", __func__, in_ch);
2989 return -EINVAL;
2990 }
2991
2992 ucontrol->value.enumerated.item[0] = channel_input[fe_id][in_ch];
2993 return 1;
2994}
2995
2996
2997static int msm_pcm_channel_weight_info(struct snd_kcontrol *kcontrol,
2998 struct snd_ctl_elem_info *uinfo)
2999{
3000 uinfo->type = SNDRV_CTL_ELEM_TYPE_INTEGER;
3001 uinfo->count = ADM_MAX_CHANNELS;
3002 uinfo->value.integer.min = 0;
3003 uinfo->value.integer.max = WEIGHT_0_DB;
3004
3005 return 0;
3006}
3007
3008static int msm_pcm_channel_weight_put(struct snd_kcontrol *kcontrol,
3009 struct snd_ctl_elem_value *ucontrol)
3010{
3011 u16 fe_id = 0, out_ch = 0;
3012 int i, weight;
3013
3014 fe_id = ((struct soc_multi_mixer_control *)
3015 kcontrol->private_value)->shift;
3016 out_ch = ((struct soc_multi_mixer_control *)
3017 kcontrol->private_value)->rshift;
3018 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
3019 pr_err("%s: invalid FE %d\n", __func__, fe_id);
3020 return -EINVAL;
3021 }
3022 if (out_ch >= ADM_MAX_CHANNELS) {
3023 pr_err("%s: invalid input channel %d\n", __func__, out_ch);
3024 return -EINVAL;
3025 }
3026
3027 pr_debug("%s: FE_ID: %d, channel weight %ld, %ld, %ld, %ld, %ld, %ld, %ld, %ld\n",
3028 __func__, fe_id,
3029 ucontrol->value.integer.value[0],
3030 ucontrol->value.integer.value[1],
3031 ucontrol->value.integer.value[2],
3032 ucontrol->value.integer.value[3],
3033 ucontrol->value.integer.value[4],
3034 ucontrol->value.integer.value[5],
3035 ucontrol->value.integer.value[6],
3036 ucontrol->value.integer.value[7]);
3037
3038 for (i = 0; i < ADM_MAX_CHANNELS; ++i) {
3039 weight = ucontrol->value.integer.value[i];
3040 channel_mixer[fe_id].channel_weight[out_ch][i] = weight;
3041 pr_debug("%s: FE_ID %d, output %d input %d weight %d\n",
3042 __func__, fe_id, out_ch, i,
3043 channel_mixer[fe_id].channel_weight[out_ch][i]);
3044 }
3045
3046 return 0;
3047}
3048
3049static int msm_pcm_channel_weight_get(struct snd_kcontrol *kcontrol,
3050 struct snd_ctl_elem_value *ucontrol)
3051{
3052 u16 fe_id = 0, out_ch = 0;
3053 int i;
3054
3055 fe_id = ((struct soc_multi_mixer_control *)
3056 kcontrol->private_value)->shift;
3057 out_ch = ((struct soc_multi_mixer_control *)
3058 kcontrol->private_value)->rshift;
3059 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
3060 pr_err("%s: invalid FE %d\n", __func__, fe_id);
3061 return -EINVAL;
3062 }
3063 if (out_ch >= ADM_MAX_CHANNELS) {
3064 pr_err("%s: invalid input channel %d\n", __func__, out_ch);
3065 return -EINVAL;
3066 }
3067
3068 for (i = 0; i < ADM_MAX_CHANNELS; ++i)
3069 ucontrol->value.integer.value[i] =
3070 channel_mixer[fe_id].channel_weight[out_ch][i];
3071
3072 pr_debug("%s: FE_ID: %d, weight %ld, %ld, %ld, %ld, %ld, %ld, %ld, %ld",
3073 __func__, fe_id,
3074 ucontrol->value.integer.value[0],
3075 ucontrol->value.integer.value[1],
3076 ucontrol->value.integer.value[2],
3077 ucontrol->value.integer.value[3],
3078 ucontrol->value.integer.value[4],
3079 ucontrol->value.integer.value[5],
3080 ucontrol->value.integer.value[6],
3081 ucontrol->value.integer.value[7]);
3082
3083 return 0;
3084}
3085
3086static const struct snd_kcontrol_new channel_mixer_controls[] = {
3087 SOC_SINGLE_EXT("MultiMedia1 Channel Rule", SND_SOC_NOPM,
3088 MSM_FRONTEND_DAI_MULTIMEDIA1, 8, 0,
3089 msm_pcm_get_channel_rule_index,
3090 msm_pcm_put_channel_rule_index),
3091 SOC_SINGLE_EXT("MultiMedia2 Channel Rule", SND_SOC_NOPM,
3092 MSM_FRONTEND_DAI_MULTIMEDIA2, 8, 0,
3093 msm_pcm_get_channel_rule_index,
3094 msm_pcm_put_channel_rule_index),
3095 SOC_SINGLE_EXT("MultiMedia3 Channel Rule", SND_SOC_NOPM,
3096 MSM_FRONTEND_DAI_MULTIMEDIA3, 8, 0,
3097 msm_pcm_get_channel_rule_index,
3098 msm_pcm_put_channel_rule_index),
3099 SOC_SINGLE_EXT("MultiMedia4 Channel Rule", SND_SOC_NOPM,
3100 MSM_FRONTEND_DAI_MULTIMEDIA4, 8, 0,
3101 msm_pcm_get_channel_rule_index,
3102 msm_pcm_put_channel_rule_index),
3103 SOC_SINGLE_EXT("MultiMedia5 Channel Rule", SND_SOC_NOPM,
3104 MSM_FRONTEND_DAI_MULTIMEDIA5, 8, 0,
3105 msm_pcm_get_channel_rule_index,
3106 msm_pcm_put_channel_rule_index),
3107 SOC_SINGLE_EXT("MultiMedia6 Channel Rule", SND_SOC_NOPM,
3108 MSM_FRONTEND_DAI_MULTIMEDIA6, 8, 0,
3109 msm_pcm_get_channel_rule_index,
3110 msm_pcm_put_channel_rule_index),
3111
3112 SOC_SINGLE_EXT("MultiMedia1 Channels", SND_SOC_NOPM,
3113 MSM_FRONTEND_DAI_MULTIMEDIA1, 8, 0,
3114 msm_pcm_get_out_chs,
3115 msm_pcm_put_out_chs),
3116 SOC_SINGLE_EXT("MultiMedia2 Channels", SND_SOC_NOPM,
3117 MSM_FRONTEND_DAI_MULTIMEDIA2, 8, 0,
3118 msm_pcm_get_out_chs,
3119 msm_pcm_put_out_chs),
3120 SOC_SINGLE_EXT("MultiMedia3 Channels", SND_SOC_NOPM,
3121 MSM_FRONTEND_DAI_MULTIMEDIA3, 8, 0,
3122 msm_pcm_get_out_chs,
3123 msm_pcm_put_out_chs),
3124 SOC_SINGLE_EXT("MultiMedia4 Channels", SND_SOC_NOPM,
3125 MSM_FRONTEND_DAI_MULTIMEDIA4, 8, 0,
3126 msm_pcm_get_out_chs,
3127 msm_pcm_put_out_chs),
3128 SOC_SINGLE_EXT("MultiMedia5 Channels", SND_SOC_NOPM,
3129 MSM_FRONTEND_DAI_MULTIMEDIA5, 8, 0,
3130 msm_pcm_get_out_chs,
3131 msm_pcm_put_out_chs),
3132 SOC_SINGLE_EXT("MultiMedia6 Channels", SND_SOC_NOPM,
3133 MSM_FRONTEND_DAI_MULTIMEDIA6, 8, 0,
3134 msm_pcm_get_out_chs,
3135 msm_pcm_put_out_chs),
3136 {
3137 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3138 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3139 .name = "MultiMedia1 Channel Mixer",
3140 .info = msm_pcm_channel_mixer_info,
3141 .get = msm_pcm_channel_mixer_get,
3142 .put = msm_pcm_channel_mixer_put,
3143 .private_value = (unsigned long)&(mm1_channel_mux)
3144 },
3145 {
3146 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3147 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3148 .name = "MultiMedia2 Channel Mixer",
3149 .info = msm_pcm_channel_mixer_info,
3150 .get = msm_pcm_channel_mixer_get,
3151 .put = msm_pcm_channel_mixer_put,
3152 .private_value = (unsigned long)&(mm2_channel_mux)
3153 },
3154 {
3155 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3156 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3157 .name = "MultiMedia3 Channel Mixer",
3158 .info = msm_pcm_channel_mixer_info,
3159 .get = msm_pcm_channel_mixer_get,
3160 .put = msm_pcm_channel_mixer_put,
3161 .private_value = (unsigned long)&(mm3_channel_mux)
3162 },
3163 {
3164 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3165 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3166 .name = "MultiMedia4 Channel Mixer",
3167 .info = msm_pcm_channel_mixer_info,
3168 .get = msm_pcm_channel_mixer_get,
3169 .put = msm_pcm_channel_mixer_put,
3170 .private_value = (unsigned long)&(mm4_channel_mux)
3171 },
3172 {
3173 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3174 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3175 .name = "MultiMedia1 Output Channel1",
3176 .info = msm_pcm_channel_weight_info,
3177 .get = msm_pcm_channel_weight_get,
3178 .put = msm_pcm_channel_weight_put,
3179 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3180 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 0,}
3181 },
3182 {
3183 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3184 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3185 .name = "MultiMedia1 Output Channel2",
3186 .info = msm_pcm_channel_weight_info,
3187 .get = msm_pcm_channel_weight_get,
3188 .put = msm_pcm_channel_weight_put,
3189 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3190 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 1, }
3191 },
3192 {
3193 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3194 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3195 .name = "MultiMedia1 Output Channel3",
3196 .info = msm_pcm_channel_weight_info,
3197 .get = msm_pcm_channel_weight_get,
3198 .put = msm_pcm_channel_weight_put,
3199 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3200 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 2,}
3201 },
3202 {
3203 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3204 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3205 .name = "MultiMedia1 Output Channel4",
3206 .info = msm_pcm_channel_weight_info,
3207 .get = msm_pcm_channel_weight_get,
3208 .put = msm_pcm_channel_weight_put,
3209 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3210 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 3,}
3211 },
3212 {
3213 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3214 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3215 .name = "MultiMedia1 Output Channel5",
3216 .info = msm_pcm_channel_weight_info,
3217 .get = msm_pcm_channel_weight_get,
3218 .put = msm_pcm_channel_weight_put,
3219 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3220 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 4,}
3221 },
3222 {
3223 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3224 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3225 .name = "MultiMedia1 Output Channel6",
3226 .info = msm_pcm_channel_weight_info,
3227 .get = msm_pcm_channel_weight_get,
3228 .put = msm_pcm_channel_weight_put,
3229 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3230 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 5,}
3231 },
3232 {
3233 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3234 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3235 .name = "MultiMedia1 Output Channel7",
3236 .info = msm_pcm_channel_weight_info,
3237 .get = msm_pcm_channel_weight_get,
3238 .put = msm_pcm_channel_weight_put,
3239 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3240 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 6,}
3241 },
3242 {
3243 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3244 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3245 .name = "MultiMedia1 Output Channel8",
3246 .info = msm_pcm_channel_weight_info,
3247 .get = msm_pcm_channel_weight_get,
3248 .put = msm_pcm_channel_weight_put,
3249 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3250 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 7,}
3251 },
3252 {
3253 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3254 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3255 .name = "MultiMedia2 Output Channel1",
3256 .info = msm_pcm_channel_weight_info,
3257 .get = msm_pcm_channel_weight_get,
3258 .put = msm_pcm_channel_weight_put,
3259 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3260 {.shift = MSM_FRONTEND_DAI_MULTIMEDIA2, .rshift = 0,}
3261 },
3262 {
3263 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3264 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3265 .name = "MultiMedia2 Output Channel2",
3266 .info = msm_pcm_channel_weight_info,
3267 .get = msm_pcm_channel_weight_get,
3268 .put = msm_pcm_channel_weight_put,
3269 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3270 {.shift = MSM_FRONTEND_DAI_MULTIMEDIA2, .rshift = 1,}
3271 },
3272 {
3273 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3274 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3275 .name = "MultiMedia2 Output Channel3",
3276 .info = msm_pcm_channel_weight_info,
3277 .get = msm_pcm_channel_weight_get,
3278 .put = msm_pcm_channel_weight_put,
3279 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3280 {.shift = MSM_FRONTEND_DAI_MULTIMEDIA2, .rshift = 2,}
3281 },
3282 {
3283 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3284 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3285 .name = "MultiMedia3 Output Channel1",
3286 .info = msm_pcm_channel_weight_info,
3287 .get = msm_pcm_channel_weight_get,
3288 .put = msm_pcm_channel_weight_put,
3289 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3290 {.shift = MSM_FRONTEND_DAI_MULTIMEDIA3, .rshift = 0,}
3291 },
3292 {
3293 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3294 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3295 .name = "MultiMedia3 Output Channel2",
3296 .info = msm_pcm_channel_weight_info,
3297 .get = msm_pcm_channel_weight_get,
3298 .put = msm_pcm_channel_weight_put,
3299 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3300 {.shift = MSM_FRONTEND_DAI_MULTIMEDIA3, .rshift = 1,}
3301 },
3302 {
3303 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3304 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3305 .name = "MultiMedia1 Channel1",
3306 .info = msm_pcm_channel_input_be_info,
3307 .get = msm_pcm_channel_input_be_get,
3308 .put = msm_pcm_channel_input_be_put,
3309 .private_value = (unsigned long)&(mm1_ch1_enum)
3310 },
3311 {
3312 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3313 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3314 .name = "MultiMedia1 Channel2",
3315 .info = msm_pcm_channel_input_be_info,
3316 .get = msm_pcm_channel_input_be_get,
3317 .put = msm_pcm_channel_input_be_put,
3318 .private_value = (unsigned long)&(mm1_ch2_enum)
3319 },
3320 {
3321 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3322 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3323 .name = "MultiMedia1 Channel3",
3324 .info = msm_pcm_channel_input_be_info,
3325 .get = msm_pcm_channel_input_be_get,
3326 .put = msm_pcm_channel_input_be_put,
3327 .private_value = (unsigned long)&(mm1_ch3_enum)
3328 },
3329 {
3330 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3331 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3332 .name = "MultiMedia1 Channel4",
3333 .info = msm_pcm_channel_input_be_info,
3334 .get = msm_pcm_channel_input_be_get,
3335 .put = msm_pcm_channel_input_be_put,
3336 .private_value = (unsigned long)&(mm1_ch4_enum)
3337 },
3338 {
3339 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3340 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3341 .name = "MultiMedia1 Channel5",
3342 .info = msm_pcm_channel_input_be_info,
3343 .get = msm_pcm_channel_input_be_get,
3344 .put = msm_pcm_channel_input_be_put,
3345 .private_value = (unsigned long)&(mm1_ch5_enum)
3346 },
3347 {
3348 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3349 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3350 .name = "MultiMedia1 Channel6",
3351 .info = msm_pcm_channel_input_be_info,
3352 .get = msm_pcm_channel_input_be_get,
3353 .put = msm_pcm_channel_input_be_put,
3354 .private_value = (unsigned long)&(mm1_ch6_enum)
3355 },
3356 {
3357 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3358 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3359 .name = "MultiMedia1 Channel7",
3360 .info = msm_pcm_channel_input_be_info,
3361 .get = msm_pcm_channel_input_be_get,
3362 .put = msm_pcm_channel_input_be_put,
3363 .private_value = (unsigned long)&(mm1_ch7_enum)
3364 },
3365 {
3366 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3367 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3368 .name = "MultiMedia1 Channel8",
3369 .info = msm_pcm_channel_input_be_info,
3370 .get = msm_pcm_channel_input_be_get,
3371 .put = msm_pcm_channel_input_be_put,
3372 .private_value = (unsigned long)&(mm1_ch8_enum)
3373 },
3374};
3375static int msm_ec_ref_ch_get(struct snd_kcontrol *kcontrol,
3376 struct snd_ctl_elem_value *ucontrol)
3377{
3378 ucontrol->value.integer.value[0] = msm_ec_ref_ch;
3379 pr_debug("%s: msm_ec_ref_ch = %ld\n", __func__,
3380 ucontrol->value.integer.value[0]);
3381 return 0;
3382}
3383
3384static int msm_ec_ref_ch_put(struct snd_kcontrol *kcontrol,
3385 struct snd_ctl_elem_value *ucontrol)
3386{
3387 msm_ec_ref_ch = ucontrol->value.integer.value[0];
3388 pr_debug("%s: msm_ec_ref_ch = %d\n", __func__, msm_ec_ref_ch);
3389 adm_num_ec_ref_rx_chans(msm_ec_ref_ch);
3390 return 0;
3391}
3392
3393static const char *const ec_ref_ch_text[] = {"Zero", "One", "Two", "Three",
3394 "Four", "Five", "Six", "Seven", "Eight"};
3395
3396static int msm_ec_ref_bit_format_get(struct snd_kcontrol *kcontrol,
3397 struct snd_ctl_elem_value *ucontrol)
3398{
3399 switch (msm_ec_ref_bit_format) {
3400 case SNDRV_PCM_FORMAT_S24_LE:
3401 ucontrol->value.integer.value[0] = 2;
3402 break;
3403 case SNDRV_PCM_FORMAT_S16_LE:
3404 ucontrol->value.integer.value[0] = 1;
3405 break;
3406 default:
3407 ucontrol->value.integer.value[0] = 0;
3408 break;
3409 }
3410 pr_debug("%s: msm_ec_ref_bit_format = %ld\n",
3411 __func__, ucontrol->value.integer.value[0]);
3412 return 0;
3413}
3414
3415static int msm_ec_ref_bit_format_put(struct snd_kcontrol *kcontrol,
3416 struct snd_ctl_elem_value *ucontrol)
3417{
3418 u16 bit_width = 0;
3419
3420 switch (ucontrol->value.integer.value[0]) {
3421 case 2:
3422 msm_ec_ref_bit_format = SNDRV_PCM_FORMAT_S24_LE;
3423 break;
3424 case 1:
3425 msm_ec_ref_bit_format = SNDRV_PCM_FORMAT_S16_LE;
3426 break;
3427 default:
3428 msm_ec_ref_bit_format = 0;
3429 break;
3430 }
3431
3432 if (msm_ec_ref_bit_format == SNDRV_PCM_FORMAT_S16_LE)
3433 bit_width = 16;
3434 else if (msm_ec_ref_bit_format == SNDRV_PCM_FORMAT_S24_LE)
3435 bit_width = 24;
3436
3437 pr_debug("%s: msm_ec_ref_bit_format = %d\n",
3438 __func__, msm_ec_ref_bit_format);
3439 adm_ec_ref_rx_bit_width(bit_width);
3440 return 0;
3441}
3442
3443static char const *ec_ref_bit_format_text[] = {"0", "S16_LE", "S24_LE"};
3444
3445static int msm_ec_ref_rate_get(struct snd_kcontrol *kcontrol,
3446 struct snd_ctl_elem_value *ucontrol)
3447{
3448 ucontrol->value.integer.value[0] = msm_ec_ref_sampling_rate;
3449 pr_debug("%s: msm_ec_ref_sampling_rate = %ld\n",
3450 __func__, ucontrol->value.integer.value[0]);
3451 return 0;
3452}
3453
3454static int msm_ec_ref_rate_put(struct snd_kcontrol *kcontrol,
3455 struct snd_ctl_elem_value *ucontrol)
3456{
3457 switch (ucontrol->value.integer.value[0]) {
3458 case 0:
3459 msm_ec_ref_sampling_rate = 0;
3460 break;
3461 case 1:
3462 msm_ec_ref_sampling_rate = 8000;
3463 break;
3464 case 2:
3465 msm_ec_ref_sampling_rate = 16000;
3466 break;
3467 case 3:
3468 msm_ec_ref_sampling_rate = 32000;
3469 break;
3470 case 4:
3471 msm_ec_ref_sampling_rate = 44100;
3472 break;
3473 case 5:
3474 msm_ec_ref_sampling_rate = 48000;
3475 break;
3476 case 6:
3477 msm_ec_ref_sampling_rate = 96000;
3478 break;
3479 case 7:
3480 msm_ec_ref_sampling_rate = 192000;
3481 break;
3482 case 8:
3483 msm_ec_ref_sampling_rate = 384000;
3484 break;
3485 default:
3486 msm_ec_ref_sampling_rate = 48000;
3487 break;
3488 }
3489 pr_debug("%s: msm_ec_ref_sampling_rate = %d\n",
3490 __func__, msm_ec_ref_sampling_rate);
3491 adm_ec_ref_rx_sampling_rate(msm_ec_ref_sampling_rate);
3492 return 0;
3493}
3494
3495static const char *const ec_ref_rate_text[] = {"0", "8000", "16000",
3496 "32000", "44100", "48000", "96000", "192000", "384000"};
3497
3498static const struct soc_enum msm_route_ec_ref_params_enum[] = {
3499 SOC_ENUM_SINGLE_EXT(9, ec_ref_ch_text),
3500 SOC_ENUM_SINGLE_EXT(3, ec_ref_bit_format_text),
3501 SOC_ENUM_SINGLE_EXT(9, ec_ref_rate_text),
3502};
3503
3504static const struct snd_kcontrol_new ec_ref_param_controls[] = {
3505 SOC_ENUM_EXT("EC Reference Channels", msm_route_ec_ref_params_enum[0],
3506 msm_ec_ref_ch_get, msm_ec_ref_ch_put),
3507 SOC_ENUM_EXT("EC Reference Bit Format", msm_route_ec_ref_params_enum[1],
3508 msm_ec_ref_bit_format_get, msm_ec_ref_bit_format_put),
3509 SOC_ENUM_EXT("EC Reference SampleRate", msm_route_ec_ref_params_enum[2],
3510 msm_ec_ref_rate_get, msm_ec_ref_rate_put),
3511};
3512
3513static int msm_routing_ec_ref_rx_get(struct snd_kcontrol *kcontrol,
3514 struct snd_ctl_elem_value *ucontrol)
3515{
3516 pr_debug("%s: ec_ref_rx = %d", __func__, msm_route_ec_ref_rx);
3517 mutex_lock(&routing_lock);
3518 ucontrol->value.integer.value[0] = msm_route_ec_ref_rx;
3519 mutex_unlock(&routing_lock);
3520 return 0;
3521}
3522
3523static int msm_routing_ec_ref_rx_put(struct snd_kcontrol *kcontrol,
3524 struct snd_ctl_elem_value *ucontrol)
3525{
3526 int ec_ref_port_id;
Asish Bhattacharya34504582017-08-08 12:55:01 +05303527 struct snd_soc_dapm_widget *widget =
3528 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303529 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
3530 struct snd_soc_dapm_update *update = NULL;
3531
3532
3533 mutex_lock(&routing_lock);
3534 switch (ucontrol->value.integer.value[0]) {
3535 case 0:
3536 msm_route_ec_ref_rx = 0;
3537 ec_ref_port_id = AFE_PORT_INVALID;
3538 break;
3539 case 1:
3540 msm_route_ec_ref_rx = 1;
3541 ec_ref_port_id = SLIMBUS_0_RX;
3542 break;
3543 case 2:
3544 msm_route_ec_ref_rx = 2;
3545 ec_ref_port_id = AFE_PORT_ID_PRIMARY_MI2S_RX;
3546 break;
3547 case 3:
3548 msm_route_ec_ref_rx = 3;
3549 ec_ref_port_id = AFE_PORT_ID_PRIMARY_MI2S_TX;
3550 break;
3551 case 4:
3552 msm_route_ec_ref_rx = 4;
3553 ec_ref_port_id = AFE_PORT_ID_SECONDARY_MI2S_TX;
3554 break;
3555 case 5:
3556 msm_route_ec_ref_rx = 5;
3557 ec_ref_port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
3558 break;
3559 case 6:
3560 msm_route_ec_ref_rx = 6;
3561 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_MI2S_TX;
3562 break;
3563 case 7:
3564 msm_route_ec_ref_rx = 7;
3565 ec_ref_port_id = AFE_PORT_ID_SECONDARY_MI2S_RX;
3566 break;
3567 case 9:
3568 msm_route_ec_ref_rx = 9;
3569 ec_ref_port_id = SLIMBUS_5_RX;
3570 break;
3571 case 10:
3572 msm_route_ec_ref_rx = 10;
3573 ec_ref_port_id = SLIMBUS_1_TX;
3574 break;
3575 case 11:
3576 msm_route_ec_ref_rx = 11;
3577 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_TDM_TX_1;
3578 break;
3579 case 12:
3580 msm_route_ec_ref_rx = 12;
3581 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_TDM_RX;
3582 break;
3583 case 13:
3584 msm_route_ec_ref_rx = 13;
3585 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_TDM_RX_1;
3586 break;
3587 case 14:
3588 msm_route_ec_ref_rx = 14;
3589 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_TDM_RX_2;
3590 break;
3591 case 15:
3592 msm_route_ec_ref_rx = 15;
3593 ec_ref_port_id = SLIMBUS_6_RX;
3594 break;
3595 case 16:
3596 msm_route_ec_ref_rx = 16;
3597 ec_ref_port_id = AFE_PORT_ID_TERTIARY_MI2S_RX;
3598 break;
3599 case 17:
3600 msm_route_ec_ref_rx = 17;
3601 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_MI2S_RX;
3602 break;
3603 case 18:
3604 msm_route_ec_ref_rx = 18;
3605 ec_ref_port_id = AFE_PORT_ID_TERTIARY_TDM_TX;
3606 break;
3607 case 19:
3608 msm_route_ec_ref_rx = 19;
3609 ec_ref_port_id = AFE_PORT_ID_USB_RX;
3610 break;
3611 case 20:
3612 msm_route_ec_ref_rx = 20;
3613 ec_ref_port_id = AFE_PORT_ID_INT0_MI2S_RX;
3614 break;
3615 case 21:
3616 msm_route_ec_ref_rx = 21;
3617 ec_ref_port_id = AFE_PORT_ID_INT4_MI2S_RX;
3618 break;
3619 case 22:
3620 msm_route_ec_ref_rx = 22;
3621 ec_ref_port_id = AFE_PORT_ID_INT3_MI2S_TX;
3622 break;
3623 default:
3624 msm_route_ec_ref_rx = 0; /* NONE */
3625 pr_err("%s EC ref rx %ld not valid\n",
3626 __func__, ucontrol->value.integer.value[0]);
3627 ec_ref_port_id = AFE_PORT_INVALID;
3628 break;
3629 }
3630 adm_ec_ref_rx_id(ec_ref_port_id);
3631 pr_debug("%s: msm_route_ec_ref_rx = %d\n",
3632 __func__, msm_route_ec_ref_rx);
3633 mutex_unlock(&routing_lock);
3634 snd_soc_dapm_mux_update_power(widget->dapm, kcontrol,
3635 msm_route_ec_ref_rx, e, update);
3636 return 0;
3637}
3638
3639static const char *const ec_ref_rx[] = { "None", "SLIM_RX", "I2S_RX",
3640 "PRI_MI2S_TX", "SEC_MI2S_TX",
3641 "TERT_MI2S_TX", "QUAT_MI2S_TX", "SEC_I2S_RX", "PROXY_RX",
3642 "SLIM_5_RX", "SLIM_1_TX", "QUAT_TDM_TX_1",
3643 "QUAT_TDM_RX_0", "QUAT_TDM_RX_1", "QUAT_TDM_RX_2", "SLIM_6_RX",
3644 "TERT_MI2S_RX", "QUAT_MI2S_RX", "TERT_TDM_TX_0", "USB_AUDIO_RX",
3645 "INT0_MI2S_RX", "INT4_MI2S_RX", "INT3_MI2S_TX"};
3646
3647static const struct soc_enum msm_route_ec_ref_rx_enum[] = {
3648 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(ec_ref_rx), ec_ref_rx),
3649};
3650
3651static const struct snd_kcontrol_new ext_ec_ref_mux_ul1 =
3652 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL1 MUX Mux",
3653 msm_route_ec_ref_rx_enum[0],
3654 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3655
3656static const struct snd_kcontrol_new ext_ec_ref_mux_ul2 =
3657 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL2 MUX Mux",
3658 msm_route_ec_ref_rx_enum[0],
3659 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3660
3661static const struct snd_kcontrol_new ext_ec_ref_mux_ul3 =
3662 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL3 MUX Mux",
3663 msm_route_ec_ref_rx_enum[0],
3664 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3665
3666static const struct snd_kcontrol_new ext_ec_ref_mux_ul4 =
3667 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL4 MUX Mux",
3668 msm_route_ec_ref_rx_enum[0],
3669 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3670
3671static const struct snd_kcontrol_new ext_ec_ref_mux_ul5 =
3672 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL5 MUX Mux",
3673 msm_route_ec_ref_rx_enum[0],
3674 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3675
3676static const struct snd_kcontrol_new ext_ec_ref_mux_ul6 =
3677 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL6 MUX Mux",
3678 msm_route_ec_ref_rx_enum[0],
3679 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3680
3681static const struct snd_kcontrol_new ext_ec_ref_mux_ul8 =
3682 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL8 MUX Mux",
3683 msm_route_ec_ref_rx_enum[0],
3684 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3685
3686static const struct snd_kcontrol_new ext_ec_ref_mux_ul9 =
3687 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL9 MUX Mux",
3688 msm_route_ec_ref_rx_enum[0],
3689 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3690
Asish Bhattacharya34504582017-08-08 12:55:01 +05303691static const struct snd_kcontrol_new ext_ec_ref_mux_ul16 =
3692 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL16 MUX Mux",
3693 msm_route_ec_ref_rx_enum[0],
3694 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3695
Laxminath Kasam38070be2017-08-17 18:21:59 +05303696static const struct snd_kcontrol_new ext_ec_ref_mux_ul10 =
3697 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL10 MUX Mux",
3698 msm_route_ec_ref_rx_enum[0],
3699 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3700
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303701static const struct snd_kcontrol_new ext_ec_ref_mux_ul17 =
3702 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL17 MUX Mux",
3703 msm_route_ec_ref_rx_enum[0],
3704 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3705
3706static const struct snd_kcontrol_new ext_ec_ref_mux_ul18 =
3707 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL18 MUX Mux",
3708 msm_route_ec_ref_rx_enum[0],
3709 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3710
3711static const struct snd_kcontrol_new ext_ec_ref_mux_ul19 =
3712 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL19 MUX Mux",
3713 msm_route_ec_ref_rx_enum[0],
3714 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3715
3716static int msm_routing_ext_ec_get(struct snd_kcontrol *kcontrol,
3717 struct snd_ctl_elem_value *ucontrol)
3718{
3719 pr_debug("%s: ext_ec_ref_rx = %x\n", __func__, msm_route_ext_ec_ref);
3720
3721 mutex_lock(&routing_lock);
3722 ucontrol->value.integer.value[0] = msm_route_ext_ec_ref;
3723 mutex_unlock(&routing_lock);
3724 return 0;
3725}
3726
3727static int msm_routing_ext_ec_put(struct snd_kcontrol *kcontrol,
3728 struct snd_ctl_elem_value *ucontrol)
3729{
Asish Bhattacharya34504582017-08-08 12:55:01 +05303730 struct snd_soc_dapm_widget *widget =
3731 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303732 int mux = ucontrol->value.enumerated.item[0];
3733 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
3734 int ret = 1;
3735 bool state = true;
3736 uint16_t ext_ec_ref_port_id;
3737 struct snd_soc_dapm_update *update = NULL;
3738
3739 if (mux >= e->items) {
3740 pr_err("%s: Invalid mux value %d\n", __func__, mux);
3741 return -EINVAL;
3742 }
3743
3744 mutex_lock(&routing_lock);
3745 msm_route_ext_ec_ref = ucontrol->value.integer.value[0];
3746
3747 switch (msm_route_ext_ec_ref) {
3748 case EXT_EC_REF_PRI_MI2S_TX:
3749 ext_ec_ref_port_id = AFE_PORT_ID_PRIMARY_MI2S_TX;
3750 break;
3751 case EXT_EC_REF_SEC_MI2S_TX:
3752 ext_ec_ref_port_id = AFE_PORT_ID_SECONDARY_MI2S_TX;
3753 break;
3754 case EXT_EC_REF_TERT_MI2S_TX:
3755 ext_ec_ref_port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
3756 break;
3757 case EXT_EC_REF_QUAT_MI2S_TX:
3758 ext_ec_ref_port_id = AFE_PORT_ID_QUATERNARY_MI2S_TX;
3759 break;
3760 case EXT_EC_REF_QUIN_MI2S_TX:
3761 ext_ec_ref_port_id = AFE_PORT_ID_QUINARY_MI2S_TX;
3762 break;
3763 case EXT_EC_REF_SLIM_1_TX:
3764 ext_ec_ref_port_id = SLIMBUS_1_TX;
3765 break;
3766 case EXT_EC_REF_NONE:
3767 default:
3768 ext_ec_ref_port_id = AFE_PORT_INVALID;
3769 state = false;
3770 break;
3771 }
3772
3773 pr_debug("%s: val = %d ext_ec_ref_port_id = 0x%0x state = %d\n",
3774 __func__, msm_route_ext_ec_ref, ext_ec_ref_port_id, state);
3775
3776 if (!voc_set_ext_ec_ref_port_id(ext_ec_ref_port_id, state)) {
3777 mutex_unlock(&routing_lock);
3778 snd_soc_dapm_mux_update_power(widget->dapm, kcontrol, mux, e,
3779 update);
3780 } else {
3781 ret = -EINVAL;
3782 mutex_unlock(&routing_lock);
3783 }
3784 return ret;
3785}
3786
3787static const char * const ext_ec_ref_rx[] = {"NONE", "PRI_MI2S_TX",
3788 "SEC_MI2S_TX", "TERT_MI2S_TX",
3789 "QUAT_MI2S_TX", "QUIN_MI2S_TX",
3790 "SLIM_1_TX"};
3791
3792static const struct soc_enum msm_route_ext_ec_ref_rx_enum[] = {
3793 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(ext_ec_ref_rx), ext_ec_ref_rx),
3794};
3795
3796static const struct snd_kcontrol_new voc_ext_ec_mux =
3797 SOC_DAPM_ENUM_EXT("VOC_EXT_EC MUX Mux", msm_route_ext_ec_ref_rx_enum[0],
3798 msm_routing_ext_ec_get, msm_routing_ext_ec_put);
3799
3800
3801static const struct snd_kcontrol_new pri_i2s_rx_mixer_controls[] = {
3802 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_I2S_RX,
3803 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
3804 msm_routing_put_audio_mixer),
3805 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_I2S_RX,
3806 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
3807 msm_routing_put_audio_mixer),
3808 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_I2S_RX,
3809 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
3810 msm_routing_put_audio_mixer),
3811 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_I2S_RX,
3812 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
3813 msm_routing_put_audio_mixer),
3814 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_I2S_RX,
3815 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
3816 msm_routing_put_audio_mixer),
3817 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_I2S_RX,
3818 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
3819 msm_routing_put_audio_mixer),
3820 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_I2S_RX,
3821 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
3822 msm_routing_put_audio_mixer),
3823 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_I2S_RX,
3824 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
3825 msm_routing_put_audio_mixer),
3826 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_I2S_RX,
3827 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
3828 msm_routing_put_audio_mixer),
3829 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_I2S_RX,
3830 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
3831 msm_routing_put_audio_mixer),
3832 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_I2S_RX,
3833 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
3834 msm_routing_put_audio_mixer),
3835 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_I2S_RX,
3836 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
3837 msm_routing_put_audio_mixer),
3838 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_I2S_RX,
3839 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
3840 msm_routing_put_audio_mixer),
3841 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_I2S_RX,
3842 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
3843 msm_routing_put_audio_mixer),
3844 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_I2S_RX,
3845 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
3846 msm_routing_put_audio_mixer),
3847 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_I2S_RX,
3848 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
3849 msm_routing_put_audio_mixer),
3850 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_PRI_I2S_RX,
3851 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
3852 msm_routing_put_audio_mixer),
3853 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_PRI_I2S_RX,
3854 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
3855 msm_routing_put_audio_mixer),
3856 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_PRI_I2S_RX,
3857 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
3858 msm_routing_put_audio_mixer),
3859};
3860
3861static const struct snd_kcontrol_new sec_i2s_rx_mixer_controls[] = {
3862 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_I2S_RX,
3863 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
3864 msm_routing_put_audio_mixer),
3865 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_I2S_RX,
3866 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
3867 msm_routing_put_audio_mixer),
3868 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_I2S_RX,
3869 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
3870 msm_routing_put_audio_mixer),
3871 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_I2S_RX,
3872 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
3873 msm_routing_put_audio_mixer),
3874 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_I2S_RX,
3875 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
3876 msm_routing_put_audio_mixer),
3877 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_I2S_RX,
3878 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
3879 msm_routing_put_audio_mixer),
3880 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_I2S_RX,
3881 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
3882 msm_routing_put_audio_mixer),
3883 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_I2S_RX,
3884 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
3885 msm_routing_put_audio_mixer),
3886 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_I2S_RX,
3887 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
3888 msm_routing_put_audio_mixer),
3889 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_I2S_RX,
3890 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
3891 msm_routing_put_audio_mixer),
3892 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_I2S_RX,
3893 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
3894 msm_routing_put_audio_mixer),
3895 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_I2S_RX,
3896 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
3897 msm_routing_put_audio_mixer),
3898 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_I2S_RX,
3899 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
3900 msm_routing_put_audio_mixer),
3901 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_I2S_RX,
3902 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
3903 msm_routing_put_audio_mixer),
3904 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_I2S_RX,
3905 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
3906 msm_routing_put_audio_mixer),
3907 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_I2S_RX,
3908 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
3909 msm_routing_put_audio_mixer),
3910 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SEC_I2S_RX,
3911 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
3912 msm_routing_put_audio_mixer),
3913 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SEC_I2S_RX,
3914 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
3915 msm_routing_put_audio_mixer),
3916 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SEC_I2S_RX,
3917 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
3918 msm_routing_put_audio_mixer),
3919};
3920
3921static const struct snd_kcontrol_new spdif_rx_mixer_controls[] = {
3922 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SPDIF_RX,
3923 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
3924 msm_routing_put_audio_mixer),
3925 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SPDIF_RX,
3926 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
3927 msm_routing_put_audio_mixer),
3928 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SPDIF_RX,
3929 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
3930 msm_routing_put_audio_mixer),
3931 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SPDIF_RX,
3932 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
3933 msm_routing_put_audio_mixer),
3934 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SPDIF_RX,
3935 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
3936 msm_routing_put_audio_mixer),
3937 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SPDIF_RX,
3938 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
3939 msm_routing_put_audio_mixer),
3940 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SPDIF_RX,
3941 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
3942 msm_routing_put_audio_mixer),
3943 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SPDIF_RX,
3944 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
3945 msm_routing_put_audio_mixer),
3946 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SPDIF_RX,
3947 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
3948 msm_routing_put_audio_mixer),
3949 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SPDIF_RX,
3950 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
3951 msm_routing_put_audio_mixer),
3952 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SPDIF_RX,
3953 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
3954 msm_routing_put_audio_mixer),
3955 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SPDIF_RX,
3956 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
3957 msm_routing_put_audio_mixer),
3958 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SPDIF_RX,
3959 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
3960 msm_routing_put_audio_mixer),
3961 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SPDIF_RX,
3962 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
3963 msm_routing_put_audio_mixer),
3964 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SPDIF_RX,
3965 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
3966 msm_routing_put_audio_mixer),
3967 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SPDIF_RX,
3968 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
3969 msm_routing_put_audio_mixer),
3970 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SPDIF_RX,
3971 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
3972 msm_routing_put_audio_mixer),
3973 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SPDIF_RX,
3974 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
3975 msm_routing_put_audio_mixer),
3976 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SPDIF_RX,
3977 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
3978 msm_routing_put_audio_mixer),
3979
3980};
3981
3982static const struct snd_kcontrol_new slimbus_2_rx_mixer_controls[] = {
3983 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_2_RX,
3984 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
3985 msm_routing_put_audio_mixer),
3986 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_2_RX,
3987 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
3988 msm_routing_put_audio_mixer),
3989 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SLIMBUS_2_RX,
3990 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
3991 msm_routing_put_audio_mixer),
3992 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SLIMBUS_2_RX,
3993 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
3994 msm_routing_put_audio_mixer),
3995 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_2_RX,
3996 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
3997 msm_routing_put_audio_mixer),
3998 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SLIMBUS_2_RX,
3999 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4000 msm_routing_put_audio_mixer),
4001 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4002 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4003 msm_routing_put_audio_mixer),
4004 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4005 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4006 msm_routing_put_audio_mixer),
4007 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4008 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4009 msm_routing_put_audio_mixer),
4010 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4011 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4012 msm_routing_put_audio_mixer),
4013 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4014 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4015 msm_routing_put_audio_mixer),
4016 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4017 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4018 msm_routing_put_audio_mixer),
4019 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4020 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4021 msm_routing_put_audio_mixer),
4022 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4023 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4024 msm_routing_put_audio_mixer),
4025 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4026 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4027 msm_routing_put_audio_mixer),
4028 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4029 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4030 msm_routing_put_audio_mixer),
4031};
4032
4033static const struct snd_kcontrol_new slimbus_5_rx_mixer_controls[] = {
4034 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4035 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4036 msm_routing_put_audio_mixer),
4037 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4038 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4039 msm_routing_put_audio_mixer),
4040 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4041 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4042 msm_routing_put_audio_mixer),
4043 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4044 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4045 msm_routing_put_audio_mixer),
4046 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4047 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4048 msm_routing_put_audio_mixer),
4049 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4050 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4051 msm_routing_put_audio_mixer),
4052 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4053 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4054 msm_routing_put_audio_mixer),
4055 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4056 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4057 msm_routing_put_audio_mixer),
4058 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4059 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4060 msm_routing_put_audio_mixer),
4061 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4062 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4063 msm_routing_put_audio_mixer),
4064 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4065 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4066 msm_routing_put_audio_mixer),
4067 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4068 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4069 msm_routing_put_audio_mixer),
4070 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4071 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4072 msm_routing_put_audio_mixer),
4073 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4074 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4075 msm_routing_put_audio_mixer),
4076 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4077 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4078 msm_routing_put_audio_mixer),
4079 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4080 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4081 msm_routing_put_audio_mixer),
4082 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4083 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4084 msm_routing_put_audio_mixer),
4085 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4086 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4087 msm_routing_put_audio_mixer),
4088 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4089 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4090 msm_routing_put_audio_mixer),
4091};
4092
4093static const struct snd_kcontrol_new slimbus_rx_mixer_controls[] = {
4094 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4095 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4096 msm_routing_put_audio_mixer),
4097 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4098 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4099 msm_routing_put_audio_mixer),
4100 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4101 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4102 msm_routing_put_audio_mixer),
4103 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4104 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4105 msm_routing_put_audio_mixer),
4106 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4107 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4108 msm_routing_put_audio_mixer),
4109 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4110 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4111 msm_routing_put_audio_mixer),
4112 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4113 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4114 msm_routing_put_audio_mixer),
4115 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4116 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4117 msm_routing_put_audio_mixer),
4118 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4119 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4120 msm_routing_put_audio_mixer),
4121 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4122 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4123 msm_routing_put_audio_mixer),
4124 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4125 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4126 msm_routing_put_audio_mixer),
4127 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4128 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4129 msm_routing_put_audio_mixer),
4130 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4131 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4132 msm_routing_put_audio_mixer),
4133 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4134 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4135 msm_routing_put_audio_mixer),
4136 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4137 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4138 msm_routing_put_audio_mixer),
4139 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4140 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4141 msm_routing_put_audio_mixer),
4142 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4143 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4144 msm_routing_put_audio_mixer),
4145 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4146 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4147 msm_routing_put_audio_mixer),
4148 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4149 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4150 msm_routing_put_audio_mixer),
4151};
4152
4153static const struct snd_kcontrol_new mi2s_rx_mixer_controls[] = {
4154 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_MI2S_RX,
4155 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4156 msm_routing_put_audio_mixer),
4157 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_MI2S_RX,
4158 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4159 msm_routing_put_audio_mixer),
4160 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_MI2S_RX,
4161 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4162 msm_routing_put_audio_mixer),
4163 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_MI2S_RX,
4164 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4165 msm_routing_put_audio_mixer),
4166 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_MI2S_RX,
4167 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4168 msm_routing_put_audio_mixer),
4169 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_MI2S_RX,
4170 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4171 msm_routing_put_audio_mixer),
4172 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_MI2S_RX,
4173 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4174 msm_routing_put_audio_mixer),
4175 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_MI2S_RX,
4176 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4177 msm_routing_put_audio_mixer),
4178 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_MI2S_RX,
4179 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4180 msm_routing_put_audio_mixer),
4181 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_MI2S_RX,
4182 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4183 msm_routing_put_audio_mixer),
4184 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_MI2S_RX,
4185 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4186 msm_routing_put_audio_mixer),
4187 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_MI2S_RX,
4188 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4189 msm_routing_put_audio_mixer),
4190 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_MI2S_RX,
4191 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4192 msm_routing_put_audio_mixer),
4193 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_MI2S_RX,
4194 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4195 msm_routing_put_audio_mixer),
4196 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_MI2S_RX,
4197 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4198 msm_routing_put_audio_mixer),
4199 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_MI2S_RX,
4200 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4201 msm_routing_put_audio_mixer),
4202 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_MI2S_RX,
4203 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4204 msm_routing_put_audio_mixer),
4205 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_MI2S_RX,
4206 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4207 msm_routing_put_audio_mixer),
4208 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_MI2S_RX,
4209 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4210 msm_routing_put_audio_mixer),
4211};
4212
4213static const struct snd_kcontrol_new quaternary_mi2s_rx_mixer_controls[] = {
4214 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4215 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4216 msm_routing_put_audio_mixer),
4217 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4218 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4219 msm_routing_put_audio_mixer),
4220 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4221 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4222 msm_routing_put_audio_mixer),
4223 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4224 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4225 msm_routing_put_audio_mixer),
4226 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4227 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4228 msm_routing_put_audio_mixer),
4229 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4230 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4231 msm_routing_put_audio_mixer),
4232 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4233 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4234 msm_routing_put_audio_mixer),
4235 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4236 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4237 msm_routing_put_audio_mixer),
4238 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4239 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4240 msm_routing_put_audio_mixer),
4241 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4242 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4243 msm_routing_put_audio_mixer),
4244 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4245 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4246 msm_routing_put_audio_mixer),
4247 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4248 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4249 msm_routing_put_audio_mixer),
4250 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4251 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4252 msm_routing_put_audio_mixer),
4253 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4254 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4255 msm_routing_put_audio_mixer),
4256 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4257 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4258 msm_routing_put_audio_mixer),
4259 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4260 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4261 msm_routing_put_audio_mixer),
4262 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4263 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4264 msm_routing_put_audio_mixer),
4265 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4266 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4267 msm_routing_put_audio_mixer),
4268 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4269 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4270 msm_routing_put_audio_mixer),
4271};
4272
4273static const struct snd_kcontrol_new quinary_mi2s_rx_mixer_controls[] = {
4274 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4275 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4276 msm_routing_put_audio_mixer),
4277 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4278 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4279 msm_routing_put_audio_mixer),
4280 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4281 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4282 msm_routing_put_audio_mixer),
4283 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4284 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4285 msm_routing_put_audio_mixer),
4286 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4287 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4288 msm_routing_put_audio_mixer),
4289 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4290 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4291 msm_routing_put_audio_mixer),
4292 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4293 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4294 msm_routing_put_audio_mixer),
4295 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4296 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4297 msm_routing_put_audio_mixer),
4298 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4299 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4300 msm_routing_put_audio_mixer),
4301 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4302 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4303 msm_routing_put_audio_mixer),
4304 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4305 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4306 msm_routing_put_audio_mixer),
4307 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4308 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4309 msm_routing_put_audio_mixer),
4310 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4311 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4312 msm_routing_put_audio_mixer),
4313 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4314 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4315 msm_routing_put_audio_mixer),
4316 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4317 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4318 msm_routing_put_audio_mixer),
4319 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4320 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4321 msm_routing_put_audio_mixer),
4322 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4323 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4324 msm_routing_put_audio_mixer),
4325 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4326 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4327 msm_routing_put_audio_mixer),
4328 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4329 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4330 msm_routing_put_audio_mixer),
4331};
4332
4333static const struct snd_kcontrol_new tertiary_mi2s_rx_mixer_controls[] = {
4334 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4335 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4336 msm_routing_put_audio_mixer),
4337 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4338 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4339 msm_routing_put_audio_mixer),
4340 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4341 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4342 msm_routing_put_audio_mixer),
4343 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4344 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4345 msm_routing_put_audio_mixer),
4346 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4347 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4348 msm_routing_put_audio_mixer),
4349 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4350 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4351 msm_routing_put_audio_mixer),
4352 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4353 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4354 msm_routing_put_audio_mixer),
4355 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4356 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4357 msm_routing_put_audio_mixer),
4358 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4359 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4360 msm_routing_put_audio_mixer),
4361 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4362 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4363 msm_routing_put_audio_mixer),
4364 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4365 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4366 msm_routing_put_audio_mixer),
4367 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4368 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4369 msm_routing_put_audio_mixer),
4370 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4371 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4372 msm_routing_put_audio_mixer),
4373 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4374 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4375 msm_routing_put_audio_mixer),
4376 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4377 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4378 msm_routing_put_audio_mixer),
4379 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4380 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4381 msm_routing_put_audio_mixer),
4382 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4383 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4384 msm_routing_put_audio_mixer),
4385};
4386
4387static const struct snd_kcontrol_new secondary_mi2s_rx2_mixer_controls[] = {
4388 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SECONDARY_MI2S_RX_SD1,
4389 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4390 msm_routing_put_audio_mixer),
4391};
4392
4393static const struct snd_kcontrol_new secondary_mi2s_rx_mixer_controls[] = {
4394 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4395 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4396 msm_routing_put_audio_mixer),
4397 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4398 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4399 msm_routing_put_audio_mixer),
4400 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4401 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4402 msm_routing_put_audio_mixer),
4403 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4404 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4405 msm_routing_put_audio_mixer),
4406 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4407 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4408 msm_routing_put_audio_mixer),
4409 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4410 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4411 msm_routing_put_audio_mixer),
4412 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4413 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4414 msm_routing_put_audio_mixer),
4415 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4416 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4417 msm_routing_put_audio_mixer),
4418 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4419 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4420 msm_routing_put_audio_mixer),
4421 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4422 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4423 msm_routing_put_audio_mixer),
4424 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4425 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4426 msm_routing_put_audio_mixer),
4427 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4428 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4429 msm_routing_put_audio_mixer),
4430 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4431 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4432 msm_routing_put_audio_mixer),
4433 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4434 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4435 msm_routing_put_audio_mixer),
4436 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4437 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4438 msm_routing_put_audio_mixer),
4439 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4440 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4441 msm_routing_put_audio_mixer),
4442 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4443 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4444 msm_routing_put_audio_mixer),
4445 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4446 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4447 msm_routing_put_audio_mixer),
4448 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4449 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4450 msm_routing_put_audio_mixer),
4451};
4452
4453static const struct snd_kcontrol_new primary_mi2s_rx_mixer_controls[] = {
4454 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_MI2S_RX,
4455 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4456 msm_routing_put_audio_mixer),
4457 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_MI2S_RX,
4458 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4459 msm_routing_put_audio_mixer),
4460 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_MI2S_RX,
4461 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4462 msm_routing_put_audio_mixer),
4463 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_MI2S_RX,
4464 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4465 msm_routing_put_audio_mixer),
4466 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_MI2S_RX,
4467 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4468 msm_routing_put_audio_mixer),
4469 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_MI2S_RX,
4470 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4471 msm_routing_put_audio_mixer),
4472 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_MI2S_RX,
4473 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4474 msm_routing_put_audio_mixer),
4475 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_MI2S_RX,
4476 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4477 msm_routing_put_audio_mixer),
4478 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_MI2S_RX,
4479 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4480 msm_routing_put_audio_mixer),
4481 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_MI2S_RX,
4482 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4483 msm_routing_put_audio_mixer),
4484 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_MI2S_RX,
4485 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4486 msm_routing_put_audio_mixer),
4487 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_MI2S_RX,
4488 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4489 msm_routing_put_audio_mixer),
4490 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_MI2S_RX,
4491 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4492 msm_routing_put_audio_mixer),
4493 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_MI2S_RX,
4494 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4495 msm_routing_put_audio_mixer),
4496 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_MI2S_RX,
4497 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4498 msm_routing_put_audio_mixer),
4499 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_MI2S_RX,
4500 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4501 msm_routing_put_audio_mixer),
4502 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_PRI_MI2S_RX,
4503 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4504 msm_routing_put_audio_mixer),
4505 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_PRI_MI2S_RX,
4506 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4507 msm_routing_put_audio_mixer),
4508 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_PRI_MI2S_RX,
4509 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4510 msm_routing_put_audio_mixer),
4511};
4512
4513static const struct snd_kcontrol_new int0_mi2s_rx_mixer_controls[] = {
4514 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_INT0_MI2S_RX,
4515 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4516 msm_routing_put_audio_mixer),
4517 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_INT0_MI2S_RX,
4518 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4519 msm_routing_put_audio_mixer),
4520 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_INT0_MI2S_RX,
4521 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4522 msm_routing_put_audio_mixer),
4523 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_INT0_MI2S_RX,
4524 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4525 msm_routing_put_audio_mixer),
4526 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_INT0_MI2S_RX,
4527 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4528 msm_routing_put_audio_mixer),
4529 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_INT0_MI2S_RX,
4530 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4531 msm_routing_put_audio_mixer),
4532 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_INT0_MI2S_RX,
4533 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4534 msm_routing_put_audio_mixer),
4535 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_INT0_MI2S_RX,
4536 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4537 msm_routing_put_audio_mixer),
4538 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_INT0_MI2S_RX,
4539 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4540 msm_routing_put_audio_mixer),
4541 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_INT0_MI2S_RX,
4542 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4543 msm_routing_put_audio_mixer),
4544 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_INT0_MI2S_RX,
4545 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4546 msm_routing_put_audio_mixer),
4547 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_INT0_MI2S_RX,
4548 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4549 msm_routing_put_audio_mixer),
4550 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_INT0_MI2S_RX,
4551 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4552 msm_routing_put_audio_mixer),
4553 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_INT0_MI2S_RX,
4554 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4555 msm_routing_put_audio_mixer),
4556 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_INT0_MI2S_RX,
4557 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4558 msm_routing_put_audio_mixer),
4559 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_INT0_MI2S_RX,
4560 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4561 msm_routing_put_audio_mixer),
4562};
4563
4564static const struct snd_kcontrol_new int4_mi2s_rx_mixer_controls[] = {
4565 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_INT4_MI2S_RX,
4566 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4567 msm_routing_put_audio_mixer),
4568 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_INT4_MI2S_RX,
4569 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4570 msm_routing_put_audio_mixer),
4571 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_INT4_MI2S_RX,
4572 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4573 msm_routing_put_audio_mixer),
4574 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_INT4_MI2S_RX,
4575 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4576 msm_routing_put_audio_mixer),
4577 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_INT4_MI2S_RX,
4578 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4579 msm_routing_put_audio_mixer),
4580 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_INT4_MI2S_RX,
4581 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4582 msm_routing_put_audio_mixer),
4583 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_INT4_MI2S_RX,
4584 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4585 msm_routing_put_audio_mixer),
4586 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_INT4_MI2S_RX,
4587 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4588 msm_routing_put_audio_mixer),
4589 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_INT4_MI2S_RX,
4590 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4591 msm_routing_put_audio_mixer),
4592 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_INT4_MI2S_RX,
4593 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4594 msm_routing_put_audio_mixer),
4595 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_INT4_MI2S_RX,
4596 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4597 msm_routing_put_audio_mixer),
4598 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_INT4_MI2S_RX,
4599 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4600 msm_routing_put_audio_mixer),
4601 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_INT4_MI2S_RX,
4602 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4603 msm_routing_put_audio_mixer),
4604 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_INT4_MI2S_RX,
4605 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4606 msm_routing_put_audio_mixer),
4607 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_INT4_MI2S_RX,
4608 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4609 msm_routing_put_audio_mixer),
4610 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_INT4_MI2S_RX,
4611 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4612 msm_routing_put_audio_mixer),
4613};
4614
4615static const struct snd_kcontrol_new hdmi_mixer_controls[] = {
4616 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_HDMI_RX,
4617 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4618 msm_routing_put_audio_mixer),
4619 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_HDMI_RX,
4620 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4621 msm_routing_put_audio_mixer),
4622 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_HDMI_RX,
4623 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4624 msm_routing_put_audio_mixer),
4625 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_HDMI_RX,
4626 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4627 msm_routing_put_audio_mixer),
4628 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_HDMI_RX,
4629 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4630 msm_routing_put_audio_mixer),
4631 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_HDMI_RX,
4632 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4633 msm_routing_put_audio_mixer),
4634 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_HDMI_RX,
4635 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4636 msm_routing_put_audio_mixer),
4637 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_HDMI_RX,
4638 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4639 msm_routing_put_audio_mixer),
4640 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_HDMI_RX,
4641 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4642 msm_routing_put_audio_mixer),
4643 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_HDMI_RX,
4644 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4645 msm_routing_put_audio_mixer),
4646 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_HDMI_RX,
4647 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4648 msm_routing_put_audio_mixer),
4649 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_HDMI_RX,
4650 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4651 msm_routing_put_audio_mixer),
4652 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_HDMI_RX,
4653 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4654 msm_routing_put_audio_mixer),
4655 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_HDMI_RX,
4656 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4657 msm_routing_put_audio_mixer),
4658 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_HDMI_RX,
4659 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4660 msm_routing_put_audio_mixer),
4661 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_HDMI_RX,
4662 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4663 msm_routing_put_audio_mixer),
4664 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_HDMI_RX,
4665 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4666 msm_routing_put_audio_mixer),
4667 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_HDMI_RX,
4668 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4669 msm_routing_put_audio_mixer),
4670 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_HDMI_RX,
4671 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4672 msm_routing_put_audio_mixer),
4673};
4674
4675static const struct snd_kcontrol_new display_port_mixer_controls[] = {
4676 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4677 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4678 msm_routing_put_audio_mixer),
4679 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4680 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4681 msm_routing_put_audio_mixer),
4682 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4683 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4684 msm_routing_put_audio_mixer),
4685 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4686 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4687 msm_routing_put_audio_mixer),
4688 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4689 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4690 msm_routing_put_audio_mixer),
4691 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4692 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4693 msm_routing_put_audio_mixer),
4694 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4695 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4696 msm_routing_put_audio_mixer),
4697 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4698 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4699 msm_routing_put_audio_mixer),
4700 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4701 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4702 msm_routing_put_audio_mixer),
4703 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4704 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4705 msm_routing_put_audio_mixer),
4706 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4707 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4708 msm_routing_put_audio_mixer),
4709 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4710 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4711 msm_routing_put_audio_mixer),
4712 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4713 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4714 msm_routing_put_audio_mixer),
4715 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4716 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4717 msm_routing_put_audio_mixer),
4718 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4719 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4720 msm_routing_put_audio_mixer),
4721 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4722 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4723 msm_routing_put_audio_mixer),
4724};
4725
4726 /* incall music delivery mixer */
4727static const struct snd_kcontrol_new incall_music_delivery_mixer_controls[] = {
4728 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_VOICE_PLAYBACK_TX,
4729 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4730 msm_routing_put_audio_mixer),
4731 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_VOICE_PLAYBACK_TX,
4732 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4733 msm_routing_put_audio_mixer),
4734 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_VOICE_PLAYBACK_TX,
4735 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4736 msm_routing_put_audio_mixer),
4737 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_VOICE_PLAYBACK_TX,
4738 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4739 msm_routing_put_audio_mixer),
4740};
4741
4742static const struct snd_kcontrol_new incall_music2_delivery_mixer_controls[] = {
4743 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_VOICE2_PLAYBACK_TX,
4744 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4745 msm_routing_put_audio_mixer),
4746 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_VOICE2_PLAYBACK_TX,
4747 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4748 msm_routing_put_audio_mixer),
4749 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_VOICE2_PLAYBACK_TX,
4750 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4751 msm_routing_put_audio_mixer),
4752 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_VOICE2_PLAYBACK_TX,
4753 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4754 msm_routing_put_audio_mixer),
4755};
4756
4757static const struct snd_kcontrol_new slimbus_4_rx_mixer_controls[] = {
4758 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_4_RX,
4759 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4760 msm_routing_put_audio_mixer),
4761 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_4_RX,
4762 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4763 msm_routing_put_audio_mixer),
4764 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_4_RX,
4765 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4766 msm_routing_put_audio_mixer),
4767 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_4_RX,
4768 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4769 msm_routing_put_audio_mixer),
4770};
4771
4772static const struct snd_kcontrol_new slimbus_6_rx_mixer_controls[] = {
4773 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4774 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4775 msm_routing_put_audio_mixer),
4776 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4777 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4778 msm_routing_put_audio_mixer),
4779 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4780 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4781 msm_routing_put_audio_mixer),
4782 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4783 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4784 msm_routing_put_audio_mixer),
4785 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4786 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4787 msm_routing_put_audio_mixer),
4788 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4789 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4790 msm_routing_put_audio_mixer),
4791 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4792 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4793 msm_routing_put_audio_mixer),
4794 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4795 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4796 msm_routing_put_audio_mixer),
4797 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4798 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4799 msm_routing_put_audio_mixer),
4800 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4801 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4802 msm_routing_put_audio_mixer),
4803 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4804 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4805 msm_routing_put_audio_mixer),
4806 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4807 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4808 msm_routing_put_audio_mixer),
4809 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4810 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4811 msm_routing_put_audio_mixer),
4812 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4813 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4814 msm_routing_put_audio_mixer),
4815 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4816 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4817 msm_routing_put_audio_mixer),
4818 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4819 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4820 msm_routing_put_audio_mixer),
4821};
4822
4823static const struct snd_kcontrol_new slimbus_7_rx_mixer_controls[] = {
4824 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4825 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4826 msm_routing_put_audio_mixer),
4827 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4828 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4829 msm_routing_put_audio_mixer),
4830 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4831 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4832 msm_routing_put_audio_mixer),
4833 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4834 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4835 msm_routing_put_audio_mixer),
4836 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4837 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4838 msm_routing_put_audio_mixer),
4839 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4840 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4841 msm_routing_put_audio_mixer),
4842 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4843 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4844 msm_routing_put_audio_mixer),
4845 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4846 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4847 msm_routing_put_audio_mixer),
4848 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4849 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4850 msm_routing_put_audio_mixer),
4851 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4852 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4853 msm_routing_put_audio_mixer),
4854 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4855 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4856 msm_routing_put_audio_mixer),
4857 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4858 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4859 msm_routing_put_audio_mixer),
4860 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4861 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4862 msm_routing_put_audio_mixer),
4863 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4864 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4865 msm_routing_put_audio_mixer),
4866 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4867 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4868 msm_routing_put_audio_mixer),
4869 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4870 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4871 msm_routing_put_audio_mixer),
4872};
4873
4874static const struct snd_kcontrol_new usb_audio_rx_mixer_controls[] = {
4875 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_USB_RX,
4876 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4877 msm_routing_put_audio_mixer),
4878 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_USB_RX,
4879 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4880 msm_routing_put_audio_mixer),
4881 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_USB_RX,
4882 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4883 msm_routing_put_audio_mixer),
4884 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_USB_RX,
4885 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4886 msm_routing_put_audio_mixer),
4887 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_USB_RX,
4888 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4889 msm_routing_put_audio_mixer),
4890 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_USB_RX,
4891 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4892 msm_routing_put_audio_mixer),
4893 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_USB_RX,
4894 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4895 msm_routing_put_audio_mixer),
4896 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_USB_RX,
4897 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4898 msm_routing_put_audio_mixer),
4899 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_USB_RX,
4900 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4901 msm_routing_put_audio_mixer),
4902 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_USB_RX,
4903 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4904 msm_routing_put_audio_mixer),
4905 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_USB_RX,
4906 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4907 msm_routing_put_audio_mixer),
4908 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_USB_RX,
4909 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4910 msm_routing_put_audio_mixer),
4911 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_USB_RX,
4912 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4913 msm_routing_put_audio_mixer),
4914 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_USB_RX,
4915 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4916 msm_routing_put_audio_mixer),
4917 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_USB_RX,
4918 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4919 msm_routing_put_audio_mixer),
4920 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_USB_RX,
4921 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4922 msm_routing_put_audio_mixer),
4923};
4924
4925static const struct snd_kcontrol_new int_bt_sco_rx_mixer_controls[] = {
4926 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4927 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4928 msm_routing_put_audio_mixer),
4929 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4930 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4931 msm_routing_put_audio_mixer),
4932 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4933 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4934 msm_routing_put_audio_mixer),
4935 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4936 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4937 msm_routing_put_audio_mixer),
4938 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4939 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4940 msm_routing_put_audio_mixer),
4941 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4942 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4943 msm_routing_put_audio_mixer),
4944 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4945 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4946 msm_routing_put_audio_mixer),
4947 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4948 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4949 msm_routing_put_audio_mixer),
4950 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4951 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4952 msm_routing_put_audio_mixer),
4953 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4954 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4955 msm_routing_put_audio_mixer),
4956 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4957 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4958 msm_routing_put_audio_mixer),
4959 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4960 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4961 msm_routing_put_audio_mixer),
4962 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4963 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4964 msm_routing_put_audio_mixer),
4965 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4966 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4967 msm_routing_put_audio_mixer),
4968 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4969 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4970 msm_routing_put_audio_mixer),
4971 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4972 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4973 msm_routing_put_audio_mixer),
4974 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4975 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4976 msm_routing_put_audio_mixer),
4977 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4978 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4979 msm_routing_put_audio_mixer),
4980 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4981 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4982 msm_routing_put_audio_mixer),
4983};
4984
4985static const struct snd_kcontrol_new int_bt_a2dp_rx_mixer_controls[] = {
4986 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
4987 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4988 msm_routing_put_audio_mixer),
4989 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
4990 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4991 msm_routing_put_audio_mixer),
4992 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
4993 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4994 msm_routing_put_audio_mixer),
4995 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
4996 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4997 msm_routing_put_audio_mixer),
4998 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
4999 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5000 msm_routing_put_audio_mixer),
5001 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5002 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5003 msm_routing_put_audio_mixer),
5004 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5005 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5006 msm_routing_put_audio_mixer),
5007 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5008 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5009 msm_routing_put_audio_mixer),
5010 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5011 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5012 msm_routing_put_audio_mixer),
5013 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5014 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5015 msm_routing_put_audio_mixer),
5016 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5017 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5018 msm_routing_put_audio_mixer),
5019 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5020 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5021 msm_routing_put_audio_mixer),
5022 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5023 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5024 msm_routing_put_audio_mixer),
5025 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5026 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5027 msm_routing_put_audio_mixer),
5028 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5029 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5030 msm_routing_put_audio_mixer),
5031 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5032 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5033 msm_routing_put_audio_mixer),
5034};
5035
5036static const struct snd_kcontrol_new int_fm_rx_mixer_controls[] = {
5037 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_INT_FM_RX,
5038 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5039 msm_routing_put_audio_mixer),
5040 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_INT_FM_RX,
5041 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5042 msm_routing_put_audio_mixer),
5043 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_INT_FM_RX,
5044 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5045 msm_routing_put_audio_mixer),
5046 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_INT_FM_RX,
5047 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5048 msm_routing_put_audio_mixer),
5049 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_INT_FM_RX,
5050 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5051 msm_routing_put_audio_mixer),
5052 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_INT_FM_RX,
5053 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5054 msm_routing_put_audio_mixer),
5055 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_INT_FM_RX,
5056 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5057 msm_routing_put_audio_mixer),
5058 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_INT_FM_RX,
5059 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5060 msm_routing_put_audio_mixer),
5061 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_INT_FM_RX,
5062 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5063 msm_routing_put_audio_mixer),
5064 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_INT_FM_RX,
5065 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5066 msm_routing_put_audio_mixer),
5067 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_INT_FM_RX,
5068 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5069 msm_routing_put_audio_mixer),
5070 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_INT_FM_RX,
5071 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5072 msm_routing_put_audio_mixer),
5073 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_INT_FM_RX,
5074 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5075 msm_routing_put_audio_mixer),
5076 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_INT_FM_RX,
5077 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5078 msm_routing_put_audio_mixer),
5079 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_INT_FM_RX,
5080 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5081 msm_routing_put_audio_mixer),
5082 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_INT_FM_RX,
5083 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5084 msm_routing_put_audio_mixer),
5085 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_INT_FM_RX,
5086 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
5087 msm_routing_put_audio_mixer),
5088 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_INT_FM_RX,
5089 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
5090 msm_routing_put_audio_mixer),
5091 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_INT_FM_RX,
5092 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
5093 msm_routing_put_audio_mixer),
5094};
5095
5096static const struct snd_kcontrol_new afe_pcm_rx_mixer_controls[] = {
5097 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_AFE_PCM_RX,
5098 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5099 msm_routing_put_audio_mixer),
5100 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_AFE_PCM_RX,
5101 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5102 msm_routing_put_audio_mixer),
5103 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_AFE_PCM_RX,
5104 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5105 msm_routing_put_audio_mixer),
5106 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_AFE_PCM_RX,
5107 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5108 msm_routing_put_audio_mixer),
5109 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_AFE_PCM_RX,
5110 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5111 msm_routing_put_audio_mixer),
5112 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_AFE_PCM_RX,
5113 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5114 msm_routing_put_audio_mixer),
5115 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_AFE_PCM_RX,
5116 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5117 msm_routing_put_audio_mixer),
5118 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_AFE_PCM_RX,
5119 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5120 msm_routing_put_audio_mixer),
5121 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_AFE_PCM_RX,
5122 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5123 msm_routing_put_audio_mixer),
5124 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_AFE_PCM_RX,
5125 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5126 msm_routing_put_audio_mixer),
5127 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_AFE_PCM_RX,
5128 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5129 msm_routing_put_audio_mixer),
5130 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_AFE_PCM_RX,
5131 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5132 msm_routing_put_audio_mixer),
5133 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_AFE_PCM_RX,
5134 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5135 msm_routing_put_audio_mixer),
5136 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_AFE_PCM_RX,
5137 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5138 msm_routing_put_audio_mixer),
5139 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_AFE_PCM_RX,
5140 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5141 msm_routing_put_audio_mixer),
5142 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_AFE_PCM_RX,
5143 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5144 msm_routing_put_audio_mixer),
5145 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_AFE_PCM_RX,
5146 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
5147 msm_routing_put_audio_mixer),
5148 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_AFE_PCM_RX,
5149 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
5150 msm_routing_put_audio_mixer),
5151 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_AFE_PCM_RX,
5152 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
5153 msm_routing_put_audio_mixer),
5154};
5155
5156static const struct snd_kcontrol_new auxpcm_rx_mixer_controls[] = {
5157 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_AUXPCM_RX,
5158 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5159 msm_routing_put_audio_mixer),
5160 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_AUXPCM_RX,
5161 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5162 msm_routing_put_audio_mixer),
5163 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_AUXPCM_RX,
5164 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5165 msm_routing_put_audio_mixer),
5166 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_AUXPCM_RX,
5167 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5168 msm_routing_put_audio_mixer),
5169 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_AUXPCM_RX,
5170 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5171 msm_routing_put_audio_mixer),
5172 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_AUXPCM_RX,
5173 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5174 msm_routing_put_audio_mixer),
5175 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_AUXPCM_RX,
5176 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5177 msm_routing_put_audio_mixer),
5178 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_AUXPCM_RX,
5179 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5180 msm_routing_put_audio_mixer),
5181 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_AUXPCM_RX,
5182 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5183 msm_routing_put_audio_mixer),
5184 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_AUXPCM_RX,
5185 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5186 msm_routing_put_audio_mixer),
5187 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_AUXPCM_RX,
5188 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5189 msm_routing_put_audio_mixer),
5190 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_AUXPCM_RX,
5191 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5192 msm_routing_put_audio_mixer),
5193 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_AUXPCM_RX,
5194 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5195 msm_routing_put_audio_mixer),
5196 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_AUXPCM_RX,
5197 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5198 msm_routing_put_audio_mixer),
5199 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_AUXPCM_RX,
5200 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5201 msm_routing_put_audio_mixer),
5202 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_AUXPCM_RX,
5203 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5204 msm_routing_put_audio_mixer),
5205 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_AUXPCM_RX,
5206 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
5207 msm_routing_put_audio_mixer),
5208 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_AUXPCM_RX,
5209 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
5210 msm_routing_put_audio_mixer),
5211 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_AUXPCM_RX,
5212 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
5213 msm_routing_put_audio_mixer),
5214};
5215
5216static const struct snd_kcontrol_new sec_auxpcm_rx_mixer_controls[] = {
5217 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5218 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5219 msm_routing_put_audio_mixer),
5220 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5221 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5222 msm_routing_put_audio_mixer),
5223 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5224 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5225 msm_routing_put_audio_mixer),
5226 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5227 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5228 msm_routing_put_audio_mixer),
5229 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5230 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5231 msm_routing_put_audio_mixer),
5232 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5233 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5234 msm_routing_put_audio_mixer),
5235 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5236 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5237 msm_routing_put_audio_mixer),
5238 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5239 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5240 msm_routing_put_audio_mixer),
5241 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5242 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5243 msm_routing_put_audio_mixer),
5244 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5245 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5246 msm_routing_put_audio_mixer),
5247 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5248 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5249 msm_routing_put_audio_mixer),
5250 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5251 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5252 msm_routing_put_audio_mixer),
5253 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5254 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5255 msm_routing_put_audio_mixer),
5256 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5257 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5258 msm_routing_put_audio_mixer),
5259 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5260 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5261 msm_routing_put_audio_mixer),
5262 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5263 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5264 msm_routing_put_audio_mixer),
5265 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5266 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
5267 msm_routing_put_audio_mixer),
5268 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5269 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
5270 msm_routing_put_audio_mixer),
5271 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5272 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
5273 msm_routing_put_audio_mixer),
5274};
5275
5276static const struct snd_kcontrol_new tert_auxpcm_rx_mixer_controls[] = {
5277 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5278 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5279 msm_routing_put_audio_mixer),
5280 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5281 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5282 msm_routing_put_audio_mixer),
5283 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5284 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5285 msm_routing_put_audio_mixer),
5286 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5287 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5288 msm_routing_put_audio_mixer),
5289 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5290 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5291 msm_routing_put_audio_mixer),
5292 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5293 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5294 msm_routing_put_audio_mixer),
5295 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5296 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5297 msm_routing_put_audio_mixer),
5298 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5299 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5300 msm_routing_put_audio_mixer),
5301 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5302 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5303 msm_routing_put_audio_mixer),
5304 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5305 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5306 msm_routing_put_audio_mixer),
5307 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5308 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5309 msm_routing_put_audio_mixer),
5310 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5311 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5312 msm_routing_put_audio_mixer),
5313 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5314 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5315 msm_routing_put_audio_mixer),
5316 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5317 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5318 msm_routing_put_audio_mixer),
5319 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5320 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5321 msm_routing_put_audio_mixer),
5322 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5323 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5324 msm_routing_put_audio_mixer),
5325};
5326
5327static const struct snd_kcontrol_new quat_auxpcm_rx_mixer_controls[] = {
5328 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5329 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5330 msm_routing_put_audio_mixer),
5331 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5332 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5333 msm_routing_put_audio_mixer),
5334 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5335 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5336 msm_routing_put_audio_mixer),
5337 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5338 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5339 msm_routing_put_audio_mixer),
5340 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5341 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5342 msm_routing_put_audio_mixer),
5343 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5344 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5345 msm_routing_put_audio_mixer),
5346 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5347 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5348 msm_routing_put_audio_mixer),
5349 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5350 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5351 msm_routing_put_audio_mixer),
5352 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5353 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5354 msm_routing_put_audio_mixer),
5355 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5356 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5357 msm_routing_put_audio_mixer),
5358 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5359 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5360 msm_routing_put_audio_mixer),
5361 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5362 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5363 msm_routing_put_audio_mixer),
5364 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5365 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5366 msm_routing_put_audio_mixer),
5367 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5368 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5369 msm_routing_put_audio_mixer),
5370 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5371 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5372 msm_routing_put_audio_mixer),
5373 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5374 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5375 msm_routing_put_audio_mixer),
5376};
5377
Rohit Kumara5077932017-09-10 22:05:05 +05305378static const struct snd_kcontrol_new quin_auxpcm_rx_mixer_controls[] = {
5379 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5380 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5381 msm_routing_put_audio_mixer),
5382 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5383 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5384 msm_routing_put_audio_mixer),
5385 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5386 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5387 msm_routing_put_audio_mixer),
5388 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5389 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5390 msm_routing_put_audio_mixer),
5391 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5392 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5393 msm_routing_put_audio_mixer),
5394 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5395 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5396 msm_routing_put_audio_mixer),
5397 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5398 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5399 msm_routing_put_audio_mixer),
5400 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5401 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5402 msm_routing_put_audio_mixer),
5403 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5404 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5405 msm_routing_put_audio_mixer),
5406 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5407 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5408 msm_routing_put_audio_mixer),
5409 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5410 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5411 msm_routing_put_audio_mixer),
5412 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5413 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5414 msm_routing_put_audio_mixer),
5415 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5416 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5417 msm_routing_put_audio_mixer),
5418 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5419 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5420 msm_routing_put_audio_mixer),
5421 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5422 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5423 msm_routing_put_audio_mixer),
5424 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5425 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5426 msm_routing_put_audio_mixer),
5427};
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305428static const struct snd_kcontrol_new pri_tdm_rx_0_mixer_controls[] = {
5429 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5430 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5431 msm_routing_put_audio_mixer),
5432 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5433 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5434 msm_routing_put_audio_mixer),
5435 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5436 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5437 msm_routing_put_audio_mixer),
5438 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5439 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5440 msm_routing_put_audio_mixer),
5441 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5442 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5443 msm_routing_put_audio_mixer),
5444 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5445 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5446 msm_routing_put_audio_mixer),
5447 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5448 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5449 msm_routing_put_audio_mixer),
5450 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5451 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5452 msm_routing_put_audio_mixer),
5453 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5454 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5455 msm_routing_put_audio_mixer),
5456 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5457 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5458 msm_routing_put_audio_mixer),
5459 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5460 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5461 msm_routing_put_audio_mixer),
5462 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5463 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5464 msm_routing_put_audio_mixer),
5465 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5466 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5467 msm_routing_put_audio_mixer),
5468 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5469 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5470 msm_routing_put_audio_mixer),
5471 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5472 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5473 msm_routing_put_audio_mixer),
5474 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5475 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5476 msm_routing_put_audio_mixer),
5477};
5478
5479static const struct snd_kcontrol_new pri_tdm_rx_1_mixer_controls[] = {
5480 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5481 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5482 msm_routing_put_audio_mixer),
5483 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5484 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5485 msm_routing_put_audio_mixer),
5486 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5487 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5488 msm_routing_put_audio_mixer),
5489 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5490 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5491 msm_routing_put_audio_mixer),
5492 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5493 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5494 msm_routing_put_audio_mixer),
5495 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5496 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5497 msm_routing_put_audio_mixer),
5498 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5499 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5500 msm_routing_put_audio_mixer),
5501 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5502 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5503 msm_routing_put_audio_mixer),
5504 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5505 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5506 msm_routing_put_audio_mixer),
5507 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5508 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5509 msm_routing_put_audio_mixer),
5510 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5511 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5512 msm_routing_put_audio_mixer),
5513 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5514 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5515 msm_routing_put_audio_mixer),
5516 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5517 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5518 msm_routing_put_audio_mixer),
5519 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5520 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5521 msm_routing_put_audio_mixer),
5522 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5523 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5524 msm_routing_put_audio_mixer),
5525 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5526 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5527 msm_routing_put_audio_mixer),
5528};
5529
5530static const struct snd_kcontrol_new pri_tdm_rx_2_mixer_controls[] = {
5531 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5532 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5533 msm_routing_put_audio_mixer),
5534 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5535 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5536 msm_routing_put_audio_mixer),
5537 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5538 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5539 msm_routing_put_audio_mixer),
5540 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5541 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5542 msm_routing_put_audio_mixer),
5543 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5544 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5545 msm_routing_put_audio_mixer),
5546 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5547 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5548 msm_routing_put_audio_mixer),
5549 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5550 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5551 msm_routing_put_audio_mixer),
5552 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5553 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5554 msm_routing_put_audio_mixer),
5555 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5556 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5557 msm_routing_put_audio_mixer),
5558 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5559 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5560 msm_routing_put_audio_mixer),
5561 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5562 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5563 msm_routing_put_audio_mixer),
5564 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5565 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5566 msm_routing_put_audio_mixer),
5567 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5568 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5569 msm_routing_put_audio_mixer),
5570 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5571 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5572 msm_routing_put_audio_mixer),
5573 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5574 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5575 msm_routing_put_audio_mixer),
5576 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5577 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5578 msm_routing_put_audio_mixer),
5579};
5580
5581static const struct snd_kcontrol_new pri_tdm_rx_3_mixer_controls[] = {
5582 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5583 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5584 msm_routing_put_audio_mixer),
5585 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5586 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5587 msm_routing_put_audio_mixer),
5588 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5589 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5590 msm_routing_put_audio_mixer),
5591 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5592 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5593 msm_routing_put_audio_mixer),
5594 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5595 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5596 msm_routing_put_audio_mixer),
5597 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5598 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5599 msm_routing_put_audio_mixer),
5600 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5601 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5602 msm_routing_put_audio_mixer),
5603 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5604 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5605 msm_routing_put_audio_mixer),
5606 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5607 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5608 msm_routing_put_audio_mixer),
5609 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5610 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5611 msm_routing_put_audio_mixer),
5612 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5613 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5614 msm_routing_put_audio_mixer),
5615 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5616 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5617 msm_routing_put_audio_mixer),
5618 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5619 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5620 msm_routing_put_audio_mixer),
5621 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5622 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5623 msm_routing_put_audio_mixer),
5624 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5625 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5626 msm_routing_put_audio_mixer),
5627 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5628 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5629 msm_routing_put_audio_mixer),
5630};
5631
5632static const struct snd_kcontrol_new pri_tdm_tx_0_mixer_controls[] = {
5633 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5634 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5635 msm_routing_put_audio_mixer),
5636 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5637 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5638 msm_routing_put_audio_mixer),
5639 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5640 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5641 msm_routing_put_audio_mixer),
5642 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5643 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5644 msm_routing_put_audio_mixer),
5645 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5646 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5647 msm_routing_put_audio_mixer),
5648 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5649 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5650 msm_routing_put_audio_mixer),
5651 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5652 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5653 msm_routing_put_audio_mixer),
5654 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5655 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5656 msm_routing_put_audio_mixer),
5657 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5658 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5659 msm_routing_put_audio_mixer),
5660 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5661 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5662 msm_routing_put_audio_mixer),
5663 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5664 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5665 msm_routing_put_audio_mixer),
5666 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5667 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5668 msm_routing_put_audio_mixer),
5669 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5670 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5671 msm_routing_put_audio_mixer),
5672 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5673 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5674 msm_routing_put_audio_mixer),
5675 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5676 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5677 msm_routing_put_audio_mixer),
5678 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5679 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5680 msm_routing_put_audio_mixer),
5681};
5682
5683static const struct snd_kcontrol_new sec_tdm_rx_0_mixer_controls[] = {
5684 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5685 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5686 msm_routing_put_audio_mixer),
5687 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5688 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5689 msm_routing_put_audio_mixer),
5690 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5691 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5692 msm_routing_put_audio_mixer),
5693 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5694 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5695 msm_routing_put_audio_mixer),
5696 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5697 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5698 msm_routing_put_audio_mixer),
5699 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5700 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5701 msm_routing_put_audio_mixer),
5702 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5703 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5704 msm_routing_put_audio_mixer),
5705 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5706 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5707 msm_routing_put_audio_mixer),
5708 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5709 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5710 msm_routing_put_audio_mixer),
5711 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5712 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5713 msm_routing_put_audio_mixer),
5714 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5715 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5716 msm_routing_put_audio_mixer),
5717 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5718 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5719 msm_routing_put_audio_mixer),
5720 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5721 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5722 msm_routing_put_audio_mixer),
5723 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5724 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5725 msm_routing_put_audio_mixer),
5726 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5727 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5728 msm_routing_put_audio_mixer),
5729 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5730 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5731 msm_routing_put_audio_mixer),
5732};
5733
5734static const struct snd_kcontrol_new sec_tdm_rx_1_mixer_controls[] = {
5735 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5736 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5737 msm_routing_put_audio_mixer),
5738 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5739 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5740 msm_routing_put_audio_mixer),
5741 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5742 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5743 msm_routing_put_audio_mixer),
5744 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5745 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5746 msm_routing_put_audio_mixer),
5747 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5748 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5749 msm_routing_put_audio_mixer),
5750 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5751 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5752 msm_routing_put_audio_mixer),
5753 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5754 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5755 msm_routing_put_audio_mixer),
5756 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5757 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5758 msm_routing_put_audio_mixer),
5759 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5760 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5761 msm_routing_put_audio_mixer),
5762 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5763 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5764 msm_routing_put_audio_mixer),
5765 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5766 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5767 msm_routing_put_audio_mixer),
5768 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5769 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5770 msm_routing_put_audio_mixer),
5771 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5772 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5773 msm_routing_put_audio_mixer),
5774 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5775 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5776 msm_routing_put_audio_mixer),
5777 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5778 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5779 msm_routing_put_audio_mixer),
5780 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5781 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5782 msm_routing_put_audio_mixer),
5783};
5784
5785static const struct snd_kcontrol_new sec_tdm_rx_2_mixer_controls[] = {
5786 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5787 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5788 msm_routing_put_audio_mixer),
5789 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5790 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5791 msm_routing_put_audio_mixer),
5792 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5793 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5794 msm_routing_put_audio_mixer),
5795 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5796 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5797 msm_routing_put_audio_mixer),
5798 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5799 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5800 msm_routing_put_audio_mixer),
5801 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5802 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5803 msm_routing_put_audio_mixer),
5804 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5805 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5806 msm_routing_put_audio_mixer),
5807 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5808 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5809 msm_routing_put_audio_mixer),
5810 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5811 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5812 msm_routing_put_audio_mixer),
5813 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5814 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5815 msm_routing_put_audio_mixer),
5816 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5817 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5818 msm_routing_put_audio_mixer),
5819 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5820 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5821 msm_routing_put_audio_mixer),
5822 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5823 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5824 msm_routing_put_audio_mixer),
5825 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5826 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5827 msm_routing_put_audio_mixer),
5828 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5829 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5830 msm_routing_put_audio_mixer),
5831 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5832 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5833 msm_routing_put_audio_mixer),
5834};
5835
5836static const struct snd_kcontrol_new sec_tdm_rx_3_mixer_controls[] = {
5837 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5838 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5839 msm_routing_put_audio_mixer),
5840 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5841 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5842 msm_routing_put_audio_mixer),
5843 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5844 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5845 msm_routing_put_audio_mixer),
5846 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5847 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5848 msm_routing_put_audio_mixer),
5849 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5850 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5851 msm_routing_put_audio_mixer),
5852 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5853 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5854 msm_routing_put_audio_mixer),
5855 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5856 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5857 msm_routing_put_audio_mixer),
5858 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5859 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5860 msm_routing_put_audio_mixer),
5861 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5862 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5863 msm_routing_put_audio_mixer),
5864 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5865 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5866 msm_routing_put_audio_mixer),
5867 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5868 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5869 msm_routing_put_audio_mixer),
5870 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5871 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5872 msm_routing_put_audio_mixer),
5873 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5874 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5875 msm_routing_put_audio_mixer),
5876 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5877 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5878 msm_routing_put_audio_mixer),
5879 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5880 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5881 msm_routing_put_audio_mixer),
5882 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5883 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5884 msm_routing_put_audio_mixer),
5885};
5886
5887static const struct snd_kcontrol_new sec_tdm_tx_0_mixer_controls[] = {
5888 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5889 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5890 msm_routing_put_audio_mixer),
5891 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5892 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5893 msm_routing_put_audio_mixer),
5894 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5895 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5896 msm_routing_put_audio_mixer),
5897 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5898 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5899 msm_routing_put_audio_mixer),
5900 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5901 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5902 msm_routing_put_audio_mixer),
5903 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5904 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5905 msm_routing_put_audio_mixer),
5906 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5907 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5908 msm_routing_put_audio_mixer),
5909 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5910 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5911 msm_routing_put_audio_mixer),
5912 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5913 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5914 msm_routing_put_audio_mixer),
5915 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5916 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5917 msm_routing_put_audio_mixer),
5918 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5919 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5920 msm_routing_put_audio_mixer),
5921 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5922 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5923 msm_routing_put_audio_mixer),
5924 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5925 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5926 msm_routing_put_audio_mixer),
5927 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5928 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5929 msm_routing_put_audio_mixer),
5930 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5931 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5932 msm_routing_put_audio_mixer),
5933 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5934 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5935 msm_routing_put_audio_mixer),
5936};
5937
5938static const struct snd_kcontrol_new tert_tdm_rx_0_mixer_controls[] = {
5939 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5940 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5941 msm_routing_put_audio_mixer),
5942 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5943 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5944 msm_routing_put_audio_mixer),
5945 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5946 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5947 msm_routing_put_audio_mixer),
5948 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5949 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5950 msm_routing_put_audio_mixer),
5951 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5952 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5953 msm_routing_put_audio_mixer),
5954 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5955 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5956 msm_routing_put_audio_mixer),
5957 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5958 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5959 msm_routing_put_audio_mixer),
5960 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5961 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5962 msm_routing_put_audio_mixer),
5963 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5964 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5965 msm_routing_put_audio_mixer),
5966 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5967 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5968 msm_routing_put_audio_mixer),
5969 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5970 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5971 msm_routing_put_audio_mixer),
5972 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5973 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5974 msm_routing_put_audio_mixer),
5975 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5976 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5977 msm_routing_put_audio_mixer),
5978 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5979 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5980 msm_routing_put_audio_mixer),
5981 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5982 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5983 msm_routing_put_audio_mixer),
5984 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5985 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5986 msm_routing_put_audio_mixer),
5987};
5988
5989static const struct snd_kcontrol_new tert_tdm_tx_0_mixer_controls[] = {
5990 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_TX_0,
5991 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5992 msm_routing_put_audio_mixer),
5993 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_TX_0,
5994 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5995 msm_routing_put_audio_mixer),
5996 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_TX_0,
5997 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5998 msm_routing_put_audio_mixer),
5999 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6000 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6001 msm_routing_put_audio_mixer),
6002 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6003 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6004 msm_routing_put_audio_mixer),
6005 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6006 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6007 msm_routing_put_audio_mixer),
6008 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6009 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6010 msm_routing_put_audio_mixer),
6011 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6012 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6013 msm_routing_put_audio_mixer),
6014 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6015 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6016 msm_routing_put_audio_mixer),
6017 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6018 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6019 msm_routing_put_audio_mixer),
6020 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6021 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6022 msm_routing_put_audio_mixer),
6023 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6024 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6025 msm_routing_put_audio_mixer),
6026 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6027 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6028 msm_routing_put_audio_mixer),
6029 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6030 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6031 msm_routing_put_audio_mixer),
6032 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6033 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6034 msm_routing_put_audio_mixer),
6035 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6036 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6037 msm_routing_put_audio_mixer),
6038};
6039
6040static const struct snd_kcontrol_new tert_tdm_rx_1_mixer_controls[] = {
6041 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6042 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6043 msm_routing_put_audio_mixer),
6044 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6045 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6046 msm_routing_put_audio_mixer),
6047 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6048 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6049 msm_routing_put_audio_mixer),
6050 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6051 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6052 msm_routing_put_audio_mixer),
6053 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6054 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6055 msm_routing_put_audio_mixer),
6056 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6057 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6058 msm_routing_put_audio_mixer),
6059 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6060 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6061 msm_routing_put_audio_mixer),
6062 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6063 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6064 msm_routing_put_audio_mixer),
6065 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6066 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6067 msm_routing_put_audio_mixer),
6068 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6069 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6070 msm_routing_put_audio_mixer),
6071 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6072 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6073 msm_routing_put_audio_mixer),
6074 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6075 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6076 msm_routing_put_audio_mixer),
6077 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6078 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6079 msm_routing_put_audio_mixer),
6080 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6081 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6082 msm_routing_put_audio_mixer),
6083 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6084 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6085 msm_routing_put_audio_mixer),
6086 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6087 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6088 msm_routing_put_audio_mixer),
6089};
6090
6091static const struct snd_kcontrol_new tert_tdm_rx_2_mixer_controls[] = {
6092 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6093 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6094 msm_routing_put_audio_mixer),
6095 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6096 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6097 msm_routing_put_audio_mixer),
6098 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6099 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6100 msm_routing_put_audio_mixer),
6101 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6102 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6103 msm_routing_put_audio_mixer),
6104 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6105 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6106 msm_routing_put_audio_mixer),
6107 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6108 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6109 msm_routing_put_audio_mixer),
6110 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6111 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6112 msm_routing_put_audio_mixer),
6113 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6114 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6115 msm_routing_put_audio_mixer),
6116 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6117 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6118 msm_routing_put_audio_mixer),
6119 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6120 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6121 msm_routing_put_audio_mixer),
6122 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6123 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6124 msm_routing_put_audio_mixer),
6125 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6126 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6127 msm_routing_put_audio_mixer),
6128 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6129 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6130 msm_routing_put_audio_mixer),
6131 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6132 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6133 msm_routing_put_audio_mixer),
6134 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6135 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6136 msm_routing_put_audio_mixer),
6137 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6138 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6139 msm_routing_put_audio_mixer),
6140};
6141
6142static const struct snd_kcontrol_new tert_tdm_rx_3_mixer_controls[] = {
6143 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6144 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6145 msm_routing_put_audio_mixer),
6146 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6147 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6148 msm_routing_put_audio_mixer),
6149 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6150 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6151 msm_routing_put_audio_mixer),
6152 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6153 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6154 msm_routing_put_audio_mixer),
6155 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6156 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6157 msm_routing_put_audio_mixer),
6158 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6159 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6160 msm_routing_put_audio_mixer),
6161 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6162 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6163 msm_routing_put_audio_mixer),
6164 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6165 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6166 msm_routing_put_audio_mixer),
6167 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6168 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6169 msm_routing_put_audio_mixer),
6170 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6171 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6172 msm_routing_put_audio_mixer),
6173 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6174 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6175 msm_routing_put_audio_mixer),
6176 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6177 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6178 msm_routing_put_audio_mixer),
6179 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6180 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6181 msm_routing_put_audio_mixer),
6182 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6183 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6184 msm_routing_put_audio_mixer),
6185 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6186 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6187 msm_routing_put_audio_mixer),
6188 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6189 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6190 msm_routing_put_audio_mixer),
6191};
6192
6193static const struct snd_kcontrol_new tert_tdm_rx_4_mixer_controls[] = {
6194 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6195 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6196 msm_routing_put_audio_mixer),
6197 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6198 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6199 msm_routing_put_audio_mixer),
6200 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6201 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6202 msm_routing_put_audio_mixer),
6203 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6204 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6205 msm_routing_put_audio_mixer),
6206 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6207 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6208 msm_routing_put_audio_mixer),
6209 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6210 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6211 msm_routing_put_audio_mixer),
6212 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6213 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6214 msm_routing_put_audio_mixer),
6215 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6216 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6217 msm_routing_put_audio_mixer),
6218 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6219 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6220 msm_routing_put_audio_mixer),
6221 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6222 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6223 msm_routing_put_audio_mixer),
6224 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6225 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6226 msm_routing_put_audio_mixer),
6227 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6228 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6229 msm_routing_put_audio_mixer),
6230 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6231 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6232 msm_routing_put_audio_mixer),
6233 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6234 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6235 msm_routing_put_audio_mixer),
6236 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6237 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6238 msm_routing_put_audio_mixer),
6239 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6240 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6241 msm_routing_put_audio_mixer),
6242};
6243
6244static const struct snd_kcontrol_new quat_tdm_rx_0_mixer_controls[] = {
6245 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6246 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6247 msm_routing_put_audio_mixer),
6248 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6249 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6250 msm_routing_put_audio_mixer),
6251 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6252 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6253 msm_routing_put_audio_mixer),
6254 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6255 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6256 msm_routing_put_audio_mixer),
6257 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6258 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6259 msm_routing_put_audio_mixer),
6260 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6261 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6262 msm_routing_put_audio_mixer),
6263 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6264 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6265 msm_routing_put_audio_mixer),
6266 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6267 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6268 msm_routing_put_audio_mixer),
6269 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6270 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6271 msm_routing_put_audio_mixer),
6272 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6273 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6274 msm_routing_put_audio_mixer),
6275 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6276 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6277 msm_routing_put_audio_mixer),
6278 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6279 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6280 msm_routing_put_audio_mixer),
6281 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6282 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6283 msm_routing_put_audio_mixer),
6284 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6285 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6286 msm_routing_put_audio_mixer),
6287 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6288 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6289 msm_routing_put_audio_mixer),
6290 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6291 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6292 msm_routing_put_audio_mixer),
6293 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6294 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6295 msm_routing_put_audio_mixer),
6296};
6297
6298static const struct snd_kcontrol_new quat_tdm_tx_0_mixer_controls[] = {
6299 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6300 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6301 msm_routing_put_audio_mixer),
6302 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6303 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6304 msm_routing_put_audio_mixer),
6305 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6306 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6307 msm_routing_put_audio_mixer),
6308 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6309 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6310 msm_routing_put_audio_mixer),
6311 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6312 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6313 msm_routing_put_audio_mixer),
6314 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6315 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6316 msm_routing_put_audio_mixer),
6317 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6318 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6319 msm_routing_put_audio_mixer),
6320 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6321 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6322 msm_routing_put_audio_mixer),
6323 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6324 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6325 msm_routing_put_audio_mixer),
6326 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6327 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6328 msm_routing_put_audio_mixer),
6329 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6330 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6331 msm_routing_put_audio_mixer),
6332 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6333 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6334 msm_routing_put_audio_mixer),
6335 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6336 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6337 msm_routing_put_audio_mixer),
6338 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6339 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6340 msm_routing_put_audio_mixer),
6341 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6342 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6343 msm_routing_put_audio_mixer),
6344 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6345 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6346 msm_routing_put_audio_mixer),
6347};
6348
6349static const struct snd_kcontrol_new quat_tdm_rx_1_mixer_controls[] = {
6350 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6351 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6352 msm_routing_put_audio_mixer),
6353 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6354 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6355 msm_routing_put_audio_mixer),
6356 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6357 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6358 msm_routing_put_audio_mixer),
6359 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6360 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6361 msm_routing_put_audio_mixer),
6362 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6363 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6364 msm_routing_put_audio_mixer),
6365 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6366 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6367 msm_routing_put_audio_mixer),
6368 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6369 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6370 msm_routing_put_audio_mixer),
6371 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6372 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6373 msm_routing_put_audio_mixer),
6374 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6375 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6376 msm_routing_put_audio_mixer),
6377 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6378 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6379 msm_routing_put_audio_mixer),
6380 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6381 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6382 msm_routing_put_audio_mixer),
6383 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6384 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6385 msm_routing_put_audio_mixer),
6386 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6387 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6388 msm_routing_put_audio_mixer),
6389 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6390 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6391 msm_routing_put_audio_mixer),
6392 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6393 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6394 msm_routing_put_audio_mixer),
6395 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6396 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6397 msm_routing_put_audio_mixer),
6398 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6399 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6400 msm_routing_put_audio_mixer),
6401};
6402
6403static const struct snd_kcontrol_new quat_tdm_rx_2_mixer_controls[] = {
6404 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6405 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6406 msm_routing_put_audio_mixer),
6407 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6408 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6409 msm_routing_put_audio_mixer),
6410 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6411 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6412 msm_routing_put_audio_mixer),
6413 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6414 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6415 msm_routing_put_audio_mixer),
6416 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6417 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6418 msm_routing_put_audio_mixer),
6419 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6420 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6421 msm_routing_put_audio_mixer),
6422 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6423 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6424 msm_routing_put_audio_mixer),
6425 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6426 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6427 msm_routing_put_audio_mixer),
6428 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6429 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6430 msm_routing_put_audio_mixer),
6431 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6432 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6433 msm_routing_put_audio_mixer),
6434 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6435 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6436 msm_routing_put_audio_mixer),
6437 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6438 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6439 msm_routing_put_audio_mixer),
6440 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6441 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6442 msm_routing_put_audio_mixer),
6443 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6444 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6445 msm_routing_put_audio_mixer),
6446 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6447 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6448 msm_routing_put_audio_mixer),
6449 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6450 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6451 msm_routing_put_audio_mixer),
6452 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6453 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6454 msm_routing_put_audio_mixer),
6455};
6456
6457static const struct snd_kcontrol_new quat_tdm_rx_3_mixer_controls[] = {
6458 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6459 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6460 msm_routing_put_audio_mixer),
6461 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6462 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6463 msm_routing_put_audio_mixer),
6464 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6465 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6466 msm_routing_put_audio_mixer),
6467 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6468 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6469 msm_routing_put_audio_mixer),
6470 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6471 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6472 msm_routing_put_audio_mixer),
6473 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6474 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6475 msm_routing_put_audio_mixer),
6476 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6477 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6478 msm_routing_put_audio_mixer),
6479 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6480 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6481 msm_routing_put_audio_mixer),
6482 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6483 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6484 msm_routing_put_audio_mixer),
6485 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6486 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6487 msm_routing_put_audio_mixer),
6488 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6489 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6490 msm_routing_put_audio_mixer),
6491 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6492 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6493 msm_routing_put_audio_mixer),
6494 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6495 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6496 msm_routing_put_audio_mixer),
6497 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6498 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6499 msm_routing_put_audio_mixer),
6500 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6501 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6502 msm_routing_put_audio_mixer),
6503 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6504 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6505 msm_routing_put_audio_mixer),
6506 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6507 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6508 msm_routing_put_audio_mixer),
6509};
6510
Rohit Kumara5077932017-09-10 22:05:05 +05306511static const struct snd_kcontrol_new quin_tdm_rx_0_mixer_controls[] = {
6512 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6513 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6514 msm_routing_put_audio_mixer),
6515 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6516 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6517 msm_routing_put_audio_mixer),
6518 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6519 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6520 msm_routing_put_audio_mixer),
6521 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6522 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6523 msm_routing_put_audio_mixer),
6524 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6525 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6526 msm_routing_put_audio_mixer),
6527 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6528 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6529 msm_routing_put_audio_mixer),
6530 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6531 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6532 msm_routing_put_audio_mixer),
6533 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6534 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6535 msm_routing_put_audio_mixer),
6536 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6537 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6538 msm_routing_put_audio_mixer),
6539 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6540 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6541 msm_routing_put_audio_mixer),
6542 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6543 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6544 msm_routing_put_audio_mixer),
6545 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6546 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6547 msm_routing_put_audio_mixer),
6548 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6549 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6550 msm_routing_put_audio_mixer),
6551 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6552 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6553 msm_routing_put_audio_mixer),
6554 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6555 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6556 msm_routing_put_audio_mixer),
6557 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6558 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6559 msm_routing_put_audio_mixer),
6560 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6561 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6562 msm_routing_put_audio_mixer),
6563};
6564
6565static const struct snd_kcontrol_new quin_tdm_tx_0_mixer_controls[] = {
6566 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6567 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6568 msm_routing_put_audio_mixer),
6569 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6570 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6571 msm_routing_put_audio_mixer),
6572 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6573 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6574 msm_routing_put_audio_mixer),
6575 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6576 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6577 msm_routing_put_audio_mixer),
6578 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6579 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6580 msm_routing_put_audio_mixer),
6581 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6582 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6583 msm_routing_put_audio_mixer),
6584 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6585 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6586 msm_routing_put_audio_mixer),
6587 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6588 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6589 msm_routing_put_audio_mixer),
6590 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6591 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6592 msm_routing_put_audio_mixer),
6593 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6594 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6595 msm_routing_put_audio_mixer),
6596 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6597 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6598 msm_routing_put_audio_mixer),
6599 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6600 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6601 msm_routing_put_audio_mixer),
6602 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6603 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6604 msm_routing_put_audio_mixer),
6605 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6606 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6607 msm_routing_put_audio_mixer),
6608 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6609 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6610 msm_routing_put_audio_mixer),
6611 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6612 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6613 msm_routing_put_audio_mixer),
6614};
6615
6616static const struct snd_kcontrol_new quin_tdm_rx_1_mixer_controls[] = {
6617 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6618 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6619 msm_routing_put_audio_mixer),
6620 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6621 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6622 msm_routing_put_audio_mixer),
6623 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6624 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6625 msm_routing_put_audio_mixer),
6626 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6627 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6628 msm_routing_put_audio_mixer),
6629 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6630 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6631 msm_routing_put_audio_mixer),
6632 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6633 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6634 msm_routing_put_audio_mixer),
6635 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6636 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6637 msm_routing_put_audio_mixer),
6638 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6639 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6640 msm_routing_put_audio_mixer),
6641 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6642 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6643 msm_routing_put_audio_mixer),
6644 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6645 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6646 msm_routing_put_audio_mixer),
6647 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6648 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6649 msm_routing_put_audio_mixer),
6650 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6651 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6652 msm_routing_put_audio_mixer),
6653 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6654 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6655 msm_routing_put_audio_mixer),
6656 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6657 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6658 msm_routing_put_audio_mixer),
6659 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6660 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6661 msm_routing_put_audio_mixer),
6662 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6663 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6664 msm_routing_put_audio_mixer),
6665 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6666 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6667 msm_routing_put_audio_mixer),
6668};
6669
6670static const struct snd_kcontrol_new quin_tdm_rx_2_mixer_controls[] = {
6671 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6672 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6673 msm_routing_put_audio_mixer),
6674 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6675 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6676 msm_routing_put_audio_mixer),
6677 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6678 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6679 msm_routing_put_audio_mixer),
6680 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6681 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6682 msm_routing_put_audio_mixer),
6683 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6684 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6685 msm_routing_put_audio_mixer),
6686 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6687 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6688 msm_routing_put_audio_mixer),
6689 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6690 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6691 msm_routing_put_audio_mixer),
6692 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6693 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6694 msm_routing_put_audio_mixer),
6695 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6696 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6697 msm_routing_put_audio_mixer),
6698 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6699 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6700 msm_routing_put_audio_mixer),
6701 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6702 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6703 msm_routing_put_audio_mixer),
6704 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6705 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6706 msm_routing_put_audio_mixer),
6707 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6708 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6709 msm_routing_put_audio_mixer),
6710 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6711 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6712 msm_routing_put_audio_mixer),
6713 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6714 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6715 msm_routing_put_audio_mixer),
6716 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6717 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6718 msm_routing_put_audio_mixer),
6719 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6720 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6721 msm_routing_put_audio_mixer),
6722};
6723
6724static const struct snd_kcontrol_new quin_tdm_rx_3_mixer_controls[] = {
6725 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6726 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6727 msm_routing_put_audio_mixer),
6728 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6729 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6730 msm_routing_put_audio_mixer),
6731 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6732 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6733 msm_routing_put_audio_mixer),
6734 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6735 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6736 msm_routing_put_audio_mixer),
6737 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6738 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6739 msm_routing_put_audio_mixer),
6740 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6741 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6742 msm_routing_put_audio_mixer),
6743 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6744 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6745 msm_routing_put_audio_mixer),
6746 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6747 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6748 msm_routing_put_audio_mixer),
6749 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6750 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6751 msm_routing_put_audio_mixer),
6752 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6753 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6754 msm_routing_put_audio_mixer),
6755 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6756 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6757 msm_routing_put_audio_mixer),
6758 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6759 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6760 msm_routing_put_audio_mixer),
6761 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6762 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6763 msm_routing_put_audio_mixer),
6764 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6765 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6766 msm_routing_put_audio_mixer),
6767 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6768 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6769 msm_routing_put_audio_mixer),
6770 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6771 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6772 msm_routing_put_audio_mixer),
6773 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6774 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6775 msm_routing_put_audio_mixer),
6776};
6777
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306778static const struct snd_kcontrol_new mmul1_mixer_controls[] = {
6779 SOC_SINGLE_EXT("PRI_TX", MSM_BACKEND_DAI_PRI_I2S_TX,
6780 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6781 msm_routing_put_audio_mixer),
6782 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
6783 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6784 msm_routing_put_audio_mixer),
6785 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
6786 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6787 msm_routing_put_audio_mixer),
6788 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
6789 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6790 msm_routing_put_audio_mixer),
6791 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
6792 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6793 msm_routing_put_audio_mixer),
6794 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
6795 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6796 msm_routing_put_audio_mixer),
6797 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
6798 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6799 msm_routing_put_audio_mixer),
6800 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
6801 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6802 msm_routing_put_audio_mixer),
6803 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
6804 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6805 msm_routing_put_audio_mixer),
6806 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
6807 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6808 msm_routing_put_audio_mixer),
6809 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
6810 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6811 msm_routing_put_audio_mixer),
6812 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
6813 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6814 msm_routing_put_audio_mixer),
6815 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
6816 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6817 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05306818 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
6819 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6820 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306821 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
6822 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6823 msm_routing_put_audio_mixer),
6824 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
6825 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6826 msm_routing_put_audio_mixer),
6827 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
6828 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6829 msm_routing_put_audio_mixer),
6830 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
6831 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6832 msm_routing_put_audio_mixer),
6833 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
6834 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6835 msm_routing_put_audio_mixer),
6836 SOC_SINGLE_EXT("SLIM_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
6837 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6838 msm_routing_put_audio_mixer),
6839 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
6840 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6841 msm_routing_put_audio_mixer),
6842 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_TX,
6843 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6844 msm_routing_put_audio_mixer),
6845 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
6846 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6847 msm_routing_put_audio_mixer),
6848 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
6849 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6850 msm_routing_put_audio_mixer),
6851 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
6852 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6853 msm_routing_put_audio_mixer),
6854 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
6855 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6856 msm_routing_put_audio_mixer),
6857 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6858 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6859 msm_routing_put_audio_mixer),
6860 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
6861 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6862 msm_routing_put_audio_mixer),
6863 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
6864 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6865 msm_routing_put_audio_mixer),
6866 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
6867 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6868 msm_routing_put_audio_mixer),
6869 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6870 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6871 msm_routing_put_audio_mixer),
6872 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
6873 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6874 msm_routing_put_audio_mixer),
6875 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
6876 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6877 msm_routing_put_audio_mixer),
6878 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
6879 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6880 msm_routing_put_audio_mixer),
6881 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6882 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6883 msm_routing_put_audio_mixer),
6884 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
6885 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6886 msm_routing_put_audio_mixer),
6887 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
6888 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6889 msm_routing_put_audio_mixer),
6890 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
6891 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6892 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05306893 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6894 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6895 msm_routing_put_audio_mixer),
6896 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
6897 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6898 msm_routing_put_audio_mixer),
6899 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
6900 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6901 msm_routing_put_audio_mixer),
6902 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
6903 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6904 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306905 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
6906 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6907 msm_routing_put_audio_mixer),
6908 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
6909 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6910 msm_routing_put_audio_mixer),
6911 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
6912 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6913 msm_routing_put_audio_mixer),
6914};
6915
6916static const struct snd_kcontrol_new mmul2_mixer_controls[] = {
6917 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
6918 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6919 msm_routing_put_audio_mixer),
6920 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
6921 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6922 msm_routing_put_audio_mixer),
6923 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
6924 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6925 msm_routing_put_audio_mixer),
6926 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
6927 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6928 msm_routing_put_audio_mixer),
6929 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
6930 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6931 msm_routing_put_audio_mixer),
6932 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
6933 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6934 msm_routing_put_audio_mixer),
6935 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
6936 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6937 msm_routing_put_audio_mixer),
6938 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
6939 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6940 msm_routing_put_audio_mixer),
6941 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
6942 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6943 msm_routing_put_audio_mixer),
6944 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
6945 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6946 msm_routing_put_audio_mixer),
6947 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
6948 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6949 msm_routing_put_audio_mixer),
6950 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_TX,
6951 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6952 msm_routing_put_audio_mixer),
6953 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
6954 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6955 msm_routing_put_audio_mixer),
6956 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
6957 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6958 msm_routing_put_audio_mixer),
6959 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
6960 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6961 msm_routing_put_audio_mixer),
6962 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
6963 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6964 msm_routing_put_audio_mixer),
6965 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6966 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6967 msm_routing_put_audio_mixer),
6968 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
6969 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6970 msm_routing_put_audio_mixer),
6971 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
6972 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6973 msm_routing_put_audio_mixer),
6974 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
6975 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6976 msm_routing_put_audio_mixer),
6977 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6978 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6979 msm_routing_put_audio_mixer),
6980 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
6981 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6982 msm_routing_put_audio_mixer),
6983 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
6984 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6985 msm_routing_put_audio_mixer),
6986 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
6987 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6988 msm_routing_put_audio_mixer),
6989 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6990 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6991 msm_routing_put_audio_mixer),
6992 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
6993 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6994 msm_routing_put_audio_mixer),
6995 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
6996 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6997 msm_routing_put_audio_mixer),
6998 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
6999 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7000 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307001 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7002 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7003 msm_routing_put_audio_mixer),
7004 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7005 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7006 msm_routing_put_audio_mixer),
7007 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7008 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7009 msm_routing_put_audio_mixer),
7010 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7011 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7012 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307013 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
7014 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7015 msm_routing_put_audio_mixer),
7016 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7017 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7018 msm_routing_put_audio_mixer),
7019};
7020
7021static const struct snd_kcontrol_new mmul3_mixer_controls[] = {
7022 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7023 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7024 msm_routing_put_audio_mixer),
7025 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7026 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7027 msm_routing_put_audio_mixer),
7028 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
7029 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7030 msm_routing_put_audio_mixer),
7031 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7032 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7033 msm_routing_put_audio_mixer),
7034 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7035 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7036 msm_routing_put_audio_mixer),
7037 SOC_SINGLE_EXT("AUX_PCM_TX", MSM_BACKEND_DAI_AUXPCM_TX,
7038 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7039 msm_routing_put_audio_mixer),
7040 SOC_SINGLE_EXT("SEC_AUX_PCM_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
7041 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7042 msm_routing_put_audio_mixer),
7043 SOC_SINGLE_EXT("TERT_AUX_PCM_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
7044 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7045 msm_routing_put_audio_mixer),
7046 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
7047 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7048 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307049 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
7050 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7051 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307052 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7053 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7054 msm_routing_put_audio_mixer),
7055 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7056 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7057 msm_routing_put_audio_mixer),
7058 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7059 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7060 msm_routing_put_audio_mixer),
7061 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7062 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7063 msm_routing_put_audio_mixer),
7064 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7065 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7066 msm_routing_put_audio_mixer),
7067 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7068 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7069 msm_routing_put_audio_mixer),
7070 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7071 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7072 msm_routing_put_audio_mixer),
7073 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7074 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7075 msm_routing_put_audio_mixer),
7076 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7077 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7078 msm_routing_put_audio_mixer),
7079 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7080 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7081 msm_routing_put_audio_mixer),
7082 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7083 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7084 msm_routing_put_audio_mixer),
7085 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7086 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7087 msm_routing_put_audio_mixer),
7088 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7089 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7090 msm_routing_put_audio_mixer),
7091 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7092 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7093 msm_routing_put_audio_mixer),
7094 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7095 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7096 msm_routing_put_audio_mixer),
7097 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7098 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7099 msm_routing_put_audio_mixer),
7100 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7101 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7102 msm_routing_put_audio_mixer),
7103 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7104 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7105 msm_routing_put_audio_mixer),
7106 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7107 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7108 msm_routing_put_audio_mixer),
7109 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7110 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7111 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307112 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7113 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7114 msm_routing_put_audio_mixer),
7115 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7116 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7117 msm_routing_put_audio_mixer),
7118 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7119 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7120 msm_routing_put_audio_mixer),
7121 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7122 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7123 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307124};
7125
7126static const struct snd_kcontrol_new mmul4_mixer_controls[] = {
7127 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7128 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7129 msm_routing_put_audio_mixer),
7130 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7131 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7132 msm_routing_put_audio_mixer),
7133 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7134 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7135 msm_routing_put_audio_mixer),
7136 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7137 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7138 msm_routing_put_audio_mixer),
7139 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7140 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7141 msm_routing_put_audio_mixer),
7142 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7143 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7144 msm_routing_put_audio_mixer),
7145 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7146 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7147 msm_routing_put_audio_mixer),
7148 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7149 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7150 msm_routing_put_audio_mixer),
7151 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7152 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7153 msm_routing_put_audio_mixer),
7154 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7155 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7156 msm_routing_put_audio_mixer),
7157 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7158 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7159 msm_routing_put_audio_mixer),
7160 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7161 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7162 msm_routing_put_audio_mixer),
7163 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7164 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7165 msm_routing_put_audio_mixer),
7166 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7167 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7168 msm_routing_put_audio_mixer),
7169 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7170 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7171 msm_routing_put_audio_mixer),
7172 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7173 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7174 msm_routing_put_audio_mixer),
7175 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7176 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7177 msm_routing_put_audio_mixer),
7178 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7179 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7180 msm_routing_put_audio_mixer),
7181 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7182 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7183 msm_routing_put_audio_mixer),
7184 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7185 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7186 msm_routing_put_audio_mixer),
7187 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7188 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7189 msm_routing_put_audio_mixer),
7190 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7191 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7192 msm_routing_put_audio_mixer),
7193 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7194 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7195 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307196 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7197 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7198 msm_routing_put_audio_mixer),
7199 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7200 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7201 msm_routing_put_audio_mixer),
7202 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7203 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7204 msm_routing_put_audio_mixer),
7205 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7206 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7207 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307208 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7209 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7210 msm_routing_put_audio_mixer),
7211 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7212 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7213 msm_routing_put_audio_mixer),
7214 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7215 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7216 msm_routing_put_audio_mixer),
7217 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7218 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7219 msm_routing_put_audio_mixer),
7220 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7221 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7222 msm_routing_put_audio_mixer),
7223 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7224 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7225 msm_routing_put_audio_mixer),
7226};
7227
7228static const struct snd_kcontrol_new mmul5_mixer_controls[] = {
7229 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7230 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7231 msm_routing_put_audio_mixer),
7232 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7233 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7234 msm_routing_put_audio_mixer),
7235 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
7236 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7237 msm_routing_put_audio_mixer),
7238 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7239 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7240 msm_routing_put_audio_mixer),
7241 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7242 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7243 msm_routing_put_audio_mixer),
7244 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
7245 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7246 msm_routing_put_audio_mixer),
7247 SOC_SINGLE_EXT("SEC_AUX_PCM_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
7248 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7249 msm_routing_put_audio_mixer),
7250 SOC_SINGLE_EXT("TERT_AUX_PCM_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
7251 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7252 msm_routing_put_audio_mixer),
7253 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
7254 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7255 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307256 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
7257 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7258 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307259 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7260 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7261 msm_routing_put_audio_mixer),
7262 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7263 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7264 msm_routing_put_audio_mixer),
7265 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7266 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7267 msm_routing_put_audio_mixer),
7268 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7269 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7270 msm_routing_put_audio_mixer),
7271 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7272 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7273 msm_routing_put_audio_mixer),
7274 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7275 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7276 msm_routing_put_audio_mixer),
7277 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7278 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7279 msm_routing_put_audio_mixer),
7280 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7281 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7282 msm_routing_put_audio_mixer),
7283 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7284 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7285 msm_routing_put_audio_mixer),
7286 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7287 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7288 msm_routing_put_audio_mixer),
7289 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7290 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7291 msm_routing_put_audio_mixer),
7292 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7293 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7294 msm_routing_put_audio_mixer),
7295 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7296 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7297 msm_routing_put_audio_mixer),
7298 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7299 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7300 msm_routing_put_audio_mixer),
7301 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7302 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7303 msm_routing_put_audio_mixer),
7304 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7305 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7306 msm_routing_put_audio_mixer),
7307 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7308 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7309 msm_routing_put_audio_mixer),
7310 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7311 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7312 msm_routing_put_audio_mixer),
7313 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7314 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7315 msm_routing_put_audio_mixer),
7316 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7317 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7318 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307319 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7320 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7321 msm_routing_put_audio_mixer),
7322 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7323 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7324 msm_routing_put_audio_mixer),
7325 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7326 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7327 msm_routing_put_audio_mixer),
7328 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7329 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7330 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307331 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7332 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7333 msm_routing_put_audio_mixer),
7334 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7335 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7336 msm_routing_put_audio_mixer),
7337 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
7338 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7339 msm_routing_put_audio_mixer),
7340 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
7341 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7342 msm_routing_put_audio_mixer),
7343 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7344 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7345 msm_routing_put_audio_mixer),
7346};
7347
7348static const struct snd_kcontrol_new mmul6_mixer_controls[] = {
7349 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7350 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7351 msm_routing_put_audio_mixer),
7352 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7353 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7354 msm_routing_put_audio_mixer),
7355 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7356 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7357 msm_routing_put_audio_mixer),
7358 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7359 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7360 msm_routing_put_audio_mixer),
7361 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7362 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7363 msm_routing_put_audio_mixer),
7364 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7365 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7366 msm_routing_put_audio_mixer),
7367 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7368 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7369 msm_routing_put_audio_mixer),
7370 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7371 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7372 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307373 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_TX,
7374 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7375 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307376 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
7377 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7378 msm_routing_put_audio_mixer),
7379 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
7380 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7381 msm_routing_put_audio_mixer),
7382 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
7383 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7384 msm_routing_put_audio_mixer),
7385 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
7386 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7387 msm_routing_put_audio_mixer),
7388 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7389 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7390 msm_routing_put_audio_mixer),
7391 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7392 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7393 msm_routing_put_audio_mixer),
7394 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7395 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7396 msm_routing_put_audio_mixer),
7397 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7398 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7399 msm_routing_put_audio_mixer),
7400 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7401 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7402 msm_routing_put_audio_mixer),
7403 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7404 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7405 msm_routing_put_audio_mixer),
7406 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7407 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7408 msm_routing_put_audio_mixer),
7409 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7410 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7411 msm_routing_put_audio_mixer),
7412 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7413 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7414 msm_routing_put_audio_mixer),
7415 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7416 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7417 msm_routing_put_audio_mixer),
7418 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7419 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7420 msm_routing_put_audio_mixer),
7421 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7422 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7423 msm_routing_put_audio_mixer),
7424 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7425 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7426 msm_routing_put_audio_mixer),
7427 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7428 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7429 msm_routing_put_audio_mixer),
7430 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7431 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7432 msm_routing_put_audio_mixer),
7433 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7434 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7435 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307436 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7437 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7438 msm_routing_put_audio_mixer),
7439 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7440 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7441 msm_routing_put_audio_mixer),
7442 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7443 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7444 msm_routing_put_audio_mixer),
7445 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7446 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7447 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307448 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7449 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7450 msm_routing_put_audio_mixer),
7451};
7452
7453static const struct snd_kcontrol_new mmul8_mixer_controls[] = {
7454 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7455 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7456 msm_routing_put_audio_mixer),
7457 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7458 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7459 msm_routing_put_audio_mixer),
7460 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7461 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7462 msm_routing_put_audio_mixer),
7463 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7464 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7465 msm_routing_put_audio_mixer),
7466 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7467 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7468 msm_routing_put_audio_mixer),
7469 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7470 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7471 msm_routing_put_audio_mixer),
7472 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7473 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7474 msm_routing_put_audio_mixer),
7475 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7476 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7477 msm_routing_put_audio_mixer),
7478 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7479 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7480 msm_routing_put_audio_mixer),
7481 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7482 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7483 msm_routing_put_audio_mixer),
7484 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7485 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7486 msm_routing_put_audio_mixer),
7487 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7488 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7489 msm_routing_put_audio_mixer),
7490 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
7491 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7492 msm_routing_put_audio_mixer),
7493 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7494 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7495 msm_routing_put_audio_mixer),
7496 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7497 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7498 msm_routing_put_audio_mixer),
7499 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7500 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7501 msm_routing_put_audio_mixer),
7502 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7503 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7504 msm_routing_put_audio_mixer),
7505 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7506 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7507 msm_routing_put_audio_mixer),
7508 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7509 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7510 msm_routing_put_audio_mixer),
7511 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7512 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7513 msm_routing_put_audio_mixer),
7514 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7515 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7516 msm_routing_put_audio_mixer),
7517 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7518 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7519 msm_routing_put_audio_mixer),
7520 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7521 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7522 msm_routing_put_audio_mixer),
7523 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7524 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7525 msm_routing_put_audio_mixer),
7526 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7527 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7528 msm_routing_put_audio_mixer),
7529 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7530 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7531 msm_routing_put_audio_mixer),
7532 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7533 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7534 msm_routing_put_audio_mixer),
7535 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7536 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7537 msm_routing_put_audio_mixer),
7538 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7539 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7540 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307541 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7542 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7543 msm_routing_put_audio_mixer),
7544 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7545 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7546 msm_routing_put_audio_mixer),
7547 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7548 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7549 msm_routing_put_audio_mixer),
7550 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7551 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7552 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307553 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
7554 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7555 msm_routing_put_audio_mixer),
7556 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7557 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7558 msm_routing_put_audio_mixer),
7559};
7560
Asish Bhattacharya34504582017-08-08 12:55:01 +05307561static const struct snd_kcontrol_new mmul16_mixer_controls[] = {
7562 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7563 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7564 msm_routing_put_audio_mixer),
7565 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7566 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7567 msm_routing_put_audio_mixer),
7568 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7569 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7570 msm_routing_put_audio_mixer),
7571 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7572 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7573 msm_routing_put_audio_mixer),
7574 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7575 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7576 msm_routing_put_audio_mixer),
7577 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7578 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7579 msm_routing_put_audio_mixer),
7580 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7581 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7582 msm_routing_put_audio_mixer),
7583 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7584 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7585 msm_routing_put_audio_mixer),
7586 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7587 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7588 msm_routing_put_audio_mixer),
7589 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7590 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7591 msm_routing_put_audio_mixer),
7592 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7593 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7594 msm_routing_put_audio_mixer),
7595 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7596 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7597 msm_routing_put_audio_mixer),
7598 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
7599 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7600 msm_routing_put_audio_mixer),
7601 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7602 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7603 msm_routing_put_audio_mixer),
7604 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7605 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7606 msm_routing_put_audio_mixer),
7607 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7608 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7609 msm_routing_put_audio_mixer),
7610 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7611 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7612 msm_routing_put_audio_mixer),
7613 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7614 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7615 msm_routing_put_audio_mixer),
7616 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7617 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7618 msm_routing_put_audio_mixer),
7619 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7620 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7621 msm_routing_put_audio_mixer),
7622 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7623 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7624 msm_routing_put_audio_mixer),
7625 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7626 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7627 msm_routing_put_audio_mixer),
7628 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7629 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7630 msm_routing_put_audio_mixer),
7631 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7632 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7633 msm_routing_put_audio_mixer),
7634 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7635 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7636 msm_routing_put_audio_mixer),
7637 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7638 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7639 msm_routing_put_audio_mixer),
7640 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7641 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7642 msm_routing_put_audio_mixer),
7643 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7644 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7645 msm_routing_put_audio_mixer),
7646 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7647 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7648 msm_routing_put_audio_mixer),
7649 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
7650 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7651 msm_routing_put_audio_mixer),
7652 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7653 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7654 msm_routing_put_audio_mixer),
7655 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
7656 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7657 msm_routing_put_audio_mixer),
7658 SOC_SINGLE_EXT("AUX_PCM_TX", MSM_BACKEND_DAI_AUXPCM_TX,
7659 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7660 msm_routing_put_audio_mixer),
7661 SOC_SINGLE_EXT("SEC_AUX_PCM_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
7662 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7663 msm_routing_put_audio_mixer),
7664 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
7665 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7666 msm_routing_put_audio_mixer),
7667};
7668
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307669static const struct snd_kcontrol_new mmul9_mixer_controls[] = {
7670 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7671 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7672 msm_routing_put_audio_mixer),
7673 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7674 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7675 msm_routing_put_audio_mixer),
7676 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7677 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7678 msm_routing_put_audio_mixer),
7679 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7680 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7681 msm_routing_put_audio_mixer),
7682 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7683 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7684 msm_routing_put_audio_mixer),
7685 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7686 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7687 msm_routing_put_audio_mixer),
7688 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7689 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7690 msm_routing_put_audio_mixer),
7691 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
7692 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7693 msm_routing_put_audio_mixer),
7694 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7695 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7696 msm_routing_put_audio_mixer),
7697 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7698 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7699 msm_routing_put_audio_mixer),
7700 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7701 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7702 msm_routing_put_audio_mixer),
7703 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7704 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7705 msm_routing_put_audio_mixer),
7706 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7707 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7708 msm_routing_put_audio_mixer),
7709 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7710 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7711 msm_routing_put_audio_mixer),
7712 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7713 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7714 msm_routing_put_audio_mixer),
7715 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7716 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7717 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307718 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7719 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7720 msm_routing_put_audio_mixer),
7721 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7722 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7723 msm_routing_put_audio_mixer),
7724 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7725 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7726 msm_routing_put_audio_mixer),
7727 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7728 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7729 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307730};
7731
Laxminath Kasam38070be2017-08-17 18:21:59 +05307732static const struct snd_kcontrol_new mmul10_mixer_controls[] = {
7733 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7734 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7735 msm_routing_put_audio_mixer),
7736 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7737 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7738 msm_routing_put_audio_mixer),
7739 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7740 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7741 msm_routing_put_audio_mixer),
7742 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7743 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7744 msm_routing_put_audio_mixer),
7745 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7746 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7747 msm_routing_put_audio_mixer),
7748 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7749 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7750 msm_routing_put_audio_mixer),
7751 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7752 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7753 msm_routing_put_audio_mixer),
7754 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
7755 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7756 msm_routing_put_audio_mixer),
Vikram Panduranga72863152017-09-06 15:47:35 -07007757 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
7758 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7759 msm_routing_put_audio_mixer),
Laxminath Kasam38070be2017-08-17 18:21:59 +05307760 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7761 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7762 msm_routing_put_audio_mixer),
7763 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7764 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7765 msm_routing_put_audio_mixer),
7766 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7767 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7768 msm_routing_put_audio_mixer),
7769 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7770 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7771 msm_routing_put_audio_mixer),
7772 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7773 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7774 msm_routing_put_audio_mixer),
7775 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7776 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7777 msm_routing_put_audio_mixer),
7778 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7779 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7780 msm_routing_put_audio_mixer),
7781 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7782 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7783 msm_routing_put_audio_mixer),
7784 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7785 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7786 msm_routing_put_audio_mixer),
Vikram Panduranga016c49f2017-09-11 15:15:56 -07007787 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
7788 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7789 msm_routing_put_audio_mixer),
7790 SOC_SINGLE_EXT("AUX_PCM_TX", MSM_BACKEND_DAI_AUXPCM_TX,
7791 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7792 msm_routing_put_audio_mixer),
7793 SOC_SINGLE_EXT("SEC_AUX_PCM_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
7794 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7795 msm_routing_put_audio_mixer),
7796 SOC_SINGLE_EXT("TERT_AUX_PCM_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
7797 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7798 msm_routing_put_audio_mixer),
7799 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
7800 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7801 msm_routing_put_audio_mixer),
7802 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7803 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7804 msm_routing_put_audio_mixer),
7805 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7806 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7807 msm_routing_put_audio_mixer),
7808 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7809 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7810 msm_routing_put_audio_mixer),
Laxminath Kasam38070be2017-08-17 18:21:59 +05307811};
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307812static const struct snd_kcontrol_new mmul17_mixer_controls[] = {
7813 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7814 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7815 msm_routing_put_audio_mixer),
7816 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7817 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7818 msm_routing_put_audio_mixer),
7819 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7820 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7821 msm_routing_put_audio_mixer),
7822 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7823 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7824 msm_routing_put_audio_mixer),
7825 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7826 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7827 msm_routing_put_audio_mixer),
7828 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7829 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7830 msm_routing_put_audio_mixer),
7831 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7832 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7833 msm_routing_put_audio_mixer),
7834};
7835
7836static const struct snd_kcontrol_new mmul18_mixer_controls[] = {
7837 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7838 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
7839 msm_routing_put_audio_mixer),
7840 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7841 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
7842 msm_routing_put_audio_mixer),
7843 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7844 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
7845 msm_routing_put_audio_mixer),
7846 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7847 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
7848 msm_routing_put_audio_mixer),
7849 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7850 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
7851 msm_routing_put_audio_mixer),
7852 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7853 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
7854 msm_routing_put_audio_mixer),
7855 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7856 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
7857 msm_routing_put_audio_mixer),
7858 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7859 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
7860 msm_routing_put_audio_mixer),
7861};
7862
7863static const struct snd_kcontrol_new mmul19_mixer_controls[] = {
7864 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7865 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
7866 msm_routing_put_audio_mixer),
7867 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7868 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
7869 msm_routing_put_audio_mixer),
7870 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7871 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
7872 msm_routing_put_audio_mixer),
7873 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7874 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
7875 msm_routing_put_audio_mixer),
7876 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7877 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
7878 msm_routing_put_audio_mixer),
7879 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7880 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
7881 msm_routing_put_audio_mixer),
7882 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7883 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
7884 msm_routing_put_audio_mixer),
7885};
7886
7887static const struct snd_kcontrol_new mmul20_mixer_controls[] = {
7888 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7889 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7890 msm_routing_put_audio_mixer),
7891 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7892 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7893 msm_routing_put_audio_mixer),
7894 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7895 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7896 msm_routing_put_audio_mixer),
7897 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7898 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7899 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307900 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_TX,
7901 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7902 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307903 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7904 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7905 msm_routing_put_audio_mixer),
7906 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7907 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7908 msm_routing_put_audio_mixer),
7909 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7910 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7911 msm_routing_put_audio_mixer),
7912 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7913 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7914 msm_routing_put_audio_mixer),
7915 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7916 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7917 msm_routing_put_audio_mixer),
7918 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7919 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7920 msm_routing_put_audio_mixer),
7921 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7922 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7923 msm_routing_put_audio_mixer),
7924 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7925 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7926 msm_routing_put_audio_mixer),
7927 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7928 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7929 msm_routing_put_audio_mixer),
7930 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7931 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7932 msm_routing_put_audio_mixer),
7933 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7934 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7935 msm_routing_put_audio_mixer),
7936 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7937 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7938 msm_routing_put_audio_mixer),
7939 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7940 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7941 msm_routing_put_audio_mixer),
7942 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7943 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7944 msm_routing_put_audio_mixer),
7945 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7946 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7947 msm_routing_put_audio_mixer),
7948 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7949 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7950 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307951 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7952 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7953 msm_routing_put_audio_mixer),
7954 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7955 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7956 msm_routing_put_audio_mixer),
7957 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7958 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7959 msm_routing_put_audio_mixer),
7960 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7961 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7962 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307963};
7964
7965static const struct snd_kcontrol_new pri_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307966 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_PRI_I2S_RX,
7967 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
7968 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307969 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_PRI_I2S_RX,
7970 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
7971 msm_routing_put_voice_mixer),
7972 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_PRI_I2S_RX,
7973 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
7974 msm_routing_put_voice_mixer),
7975 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_PRI_I2S_RX,
7976 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
7977 msm_routing_put_voice_mixer),
7978 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_PRI_I2S_RX,
7979 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
7980 msm_routing_put_voice_mixer),
7981};
7982
7983static const struct snd_kcontrol_new sec_i2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307984 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SEC_I2S_RX,
7985 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
7986 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307987 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SEC_I2S_RX,
7988 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
7989 msm_routing_put_voice_mixer),
7990 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SEC_I2S_RX,
7991 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
7992 msm_routing_put_voice_mixer),
7993};
7994
7995static const struct snd_kcontrol_new sec_mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307996 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
7997 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
7998 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307999 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
8000 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8001 msm_routing_put_voice_mixer),
8002 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
8003 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8004 msm_routing_put_voice_mixer),
8005 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
8006 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8007 msm_routing_put_voice_mixer),
8008 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
8009 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8010 msm_routing_put_voice_mixer),
8011};
8012
8013static const struct snd_kcontrol_new slimbus_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308014 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8015 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8016 msm_routing_put_voice_mixer),
8017 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8018 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8019 msm_routing_put_voice_stub_mixer),
8020 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8021 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8022 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308023 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8024 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8025 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308026 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8027 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8028 msm_routing_put_voice_mixer),
8029 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8030 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8031 msm_routing_put_voice_mixer),
8032 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8033 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8034 msm_routing_put_voice_mixer),
8035 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8036 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8037 msm_routing_put_voice_mixer),
8038};
8039
8040static const struct snd_kcontrol_new slimbus_6_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308041 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8042 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8043 msm_routing_put_voice_mixer),
8044 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8045 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8046 msm_routing_put_voice_stub_mixer),
8047 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8048 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8049 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308050 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8051 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8052 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308053 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8054 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8055 msm_routing_put_voice_mixer),
8056 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8057 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8058 msm_routing_put_voice_mixer),
8059 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8060 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8061 msm_routing_put_voice_mixer),
8062 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8063 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8064 msm_routing_put_voice_mixer),
8065};
8066
8067static const struct snd_kcontrol_new usb_audio_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308068 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_USB_RX,
8069 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8070 msm_routing_put_voice_mixer),
8071 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_USB_RX,
8072 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8073 msm_routing_put_voice_stub_mixer),
8074 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_USB_RX,
8075 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8076 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308077 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_USB_RX,
8078 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8079 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308080 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_USB_RX,
8081 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8082 msm_routing_put_voice_mixer),
8083 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_USB_RX,
8084 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8085 msm_routing_put_voice_mixer),
8086 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_USB_RX,
8087 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8088 msm_routing_put_voice_mixer),
8089 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_USB_RX,
8090 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8091 msm_routing_put_voice_mixer),
8092};
8093
8094static const struct snd_kcontrol_new bt_sco_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308095 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8096 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8097 msm_routing_put_voice_mixer),
8098 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8099 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8100 msm_routing_put_voice_stub_mixer),
8101 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8102 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8103 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308104 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8105 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8106 msm_routing_put_voice_mixer),
8107 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8108 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8109 msm_routing_put_voice_mixer),
8110 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8111 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8112 msm_routing_put_voice_mixer),
8113 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8114 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8115 msm_routing_put_voice_mixer),
8116};
8117
8118static const struct snd_kcontrol_new mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308119 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_MI2S_RX,
8120 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8121 msm_routing_put_voice_mixer),
8122 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_MI2S_RX,
8123 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8124 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308125 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_MI2S_RX,
8126 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8127 msm_routing_put_voice_mixer),
8128 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_MI2S_RX,
8129 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8130 msm_routing_put_voice_mixer),
8131 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_MI2S_RX,
8132 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8133 msm_routing_put_voice_mixer),
8134 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_MI2S_RX,
8135 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8136 msm_routing_put_voice_mixer),
8137};
8138
8139static const struct snd_kcontrol_new pri_mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308140 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_PRI_MI2S_RX,
8141 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8142 msm_routing_put_voice_mixer),
8143 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_PRI_MI2S_RX,
8144 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8145 msm_routing_put_voice_stub_mixer),
8146 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_PRI_MI2S_RX,
8147 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8148 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308149 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_PRI_MI2S_RX,
8150 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_mixer,
8151 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308152 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_PRI_MI2S_RX,
8153 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8154 msm_routing_put_voice_mixer),
8155 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_PRI_MI2S_RX,
8156 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8157 msm_routing_put_voice_mixer),
8158 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_PRI_MI2S_RX,
8159 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8160 msm_routing_put_voice_mixer),
8161 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_PRI_MI2S_RX,
8162 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8163 msm_routing_put_voice_mixer),
8164};
8165
8166static const struct snd_kcontrol_new int0_mi2s_rx_voice_mixer_controls[] = {
8167 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_INT0_MI2S_RX,
8168 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8169 msm_routing_put_voice_mixer),
8170 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_INT0_MI2S_RX,
8171 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8172 msm_routing_put_voice_mixer),
8173 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_INT0_MI2S_RX,
8174 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8175 msm_routing_put_voice_mixer),
8176 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_INT0_MI2S_RX,
8177 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8178 msm_routing_put_voice_mixer),
8179 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_INT0_MI2S_RX,
8180 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8181 msm_routing_put_voice_mixer),
8182};
8183
8184static const struct snd_kcontrol_new int4_mi2s_rx_voice_mixer_controls[] = {
8185 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_INT4_MI2S_RX,
8186 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8187 msm_routing_put_voice_mixer),
8188 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_INT4_MI2S_RX,
8189 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8190 msm_routing_put_voice_mixer),
8191 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_INT4_MI2S_RX,
8192 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8193 msm_routing_put_voice_mixer),
8194 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_INT4_MI2S_RX,
8195 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8196 msm_routing_put_voice_mixer),
8197 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_INT4_MI2S_RX,
8198 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8199 msm_routing_put_voice_mixer),
8200};
8201
8202static const struct snd_kcontrol_new tert_mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308203 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8204 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8205 msm_routing_put_voice_mixer),
8206 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8207 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8208 msm_routing_put_voice_stub_mixer),
8209 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8210 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8211 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308212 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8213 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_mixer,
8214 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308215 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8216 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8217 msm_routing_put_voice_mixer),
8218 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8219 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8220 msm_routing_put_voice_mixer),
8221 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8222 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8223 msm_routing_put_voice_mixer),
8224 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8225 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8226 msm_routing_put_voice_mixer),
8227};
8228
8229static const struct snd_kcontrol_new quat_mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308230 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8231 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8232 msm_routing_put_voice_mixer),
8233 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8234 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8235 msm_routing_put_voice_stub_mixer),
8236 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8237 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8238 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308239 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8240 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_mixer,
8241 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308242 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8243 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8244 msm_routing_put_voice_mixer),
8245 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8246 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8247 msm_routing_put_voice_mixer),
8248 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8249 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8250 msm_routing_put_voice_mixer),
8251 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8252 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8253 msm_routing_put_voice_mixer),
8254};
8255
8256static const struct snd_kcontrol_new quin_mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308257 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8258 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8259 msm_routing_put_voice_mixer),
8260 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8261 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8262 msm_routing_put_voice_stub_mixer),
8263 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8264 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8265 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308266 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8267 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_mixer,
8268 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308269 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8270 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8271 msm_routing_put_voice_mixer),
8272 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8273 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8274 msm_routing_put_voice_mixer),
8275 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8276 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8277 msm_routing_put_voice_mixer),
8278 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8279 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8280 msm_routing_put_voice_mixer),
8281};
8282
8283static const struct snd_kcontrol_new afe_pcm_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308284 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_AFE_PCM_RX,
8285 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8286 msm_routing_put_voice_mixer),
8287 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_AFE_PCM_RX,
8288 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8289 msm_routing_put_voice_stub_mixer),
8290 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_AFE_PCM_RX,
8291 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8292 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308293 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_AFE_PCM_RX,
8294 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8295 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308296 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_AFE_PCM_RX,
8297 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8298 msm_routing_put_voice_mixer),
8299 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_AFE_PCM_RX,
8300 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8301 msm_routing_put_voice_mixer),
8302 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_AFE_PCM_RX,
8303 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8304 msm_routing_put_voice_mixer),
8305 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_AFE_PCM_RX,
8306 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8307 msm_routing_put_voice_mixer),
8308};
8309
8310static const struct snd_kcontrol_new aux_pcm_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308311 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_AUXPCM_RX,
8312 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8313 msm_routing_put_voice_mixer),
8314 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_AUXPCM_RX,
8315 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8316 msm_routing_put_voice_stub_mixer),
8317 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_AUXPCM_RX,
8318 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8319 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308320 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_AUXPCM_RX,
8321 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8322 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308323 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_AUXPCM_RX,
8324 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8325 msm_routing_put_voice_mixer),
8326 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_AUXPCM_RX,
8327 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8328 msm_routing_put_voice_mixer),
8329 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_AUXPCM_RX,
8330 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8331 msm_routing_put_voice_mixer),
8332 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_AUXPCM_RX,
8333 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8334 msm_routing_put_voice_mixer),
8335};
8336
8337static const struct snd_kcontrol_new sec_aux_pcm_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308338 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8339 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8340 msm_routing_put_voice_mixer),
8341 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8342 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8343 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308344 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8345 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8346 msm_routing_put_voice_mixer),
8347 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8348 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8349 msm_routing_put_voice_mixer),
8350 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8351 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8352 msm_routing_put_voice_mixer),
8353 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8354 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8355 msm_routing_put_voice_mixer),
8356};
8357
8358static const struct snd_kcontrol_new tert_aux_pcm_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308359 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8360 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8361 msm_routing_put_voice_mixer),
8362 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8363 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8364 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308365 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8366 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8367 msm_routing_put_voice_mixer),
8368 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8369 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8370 msm_routing_put_voice_mixer),
8371 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8372 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8373 msm_routing_put_voice_mixer),
8374 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8375 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8376 msm_routing_put_voice_mixer),
8377};
8378
8379static const struct snd_kcontrol_new quat_aux_pcm_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308380 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8381 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8382 msm_routing_put_voice_mixer),
8383 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8384 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8385 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308386 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8387 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8388 msm_routing_put_voice_mixer),
8389 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8390 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8391 msm_routing_put_voice_mixer),
8392 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8393 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8394 msm_routing_put_voice_mixer),
8395 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8396 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8397 msm_routing_put_voice_mixer),
8398};
8399
Rohit Kumara5077932017-09-10 22:05:05 +05308400static const struct snd_kcontrol_new quin_aux_pcm_rx_voice_mixer_controls[] = {
Rohit Kumara5077932017-09-10 22:05:05 +05308401 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
8402 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8403 msm_routing_put_voice_mixer),
8404 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
8405 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8406 msm_routing_put_voice_stub_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308407 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
8408 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8409 msm_routing_put_voice_mixer),
8410 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
8411 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8412 msm_routing_put_voice_mixer),
8413 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
8414 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8415 msm_routing_put_voice_mixer),
8416 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
8417 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8418 msm_routing_put_voice_mixer),
8419};
8420
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308421static const struct snd_kcontrol_new hdmi_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308422 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_HDMI_RX,
8423 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8424 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308425 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_HDMI_RX,
8426 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8427 msm_routing_put_voice_stub_mixer),
8428 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_HDMI_RX,
8429 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8430 msm_routing_put_voice_stub_mixer),
8431 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_HDMI_RX,
8432 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8433 msm_routing_put_voice_stub_mixer),
8434 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_HDMI_RX,
8435 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8436 msm_routing_put_voice_mixer),
8437 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_HDMI_RX,
8438 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8439 msm_routing_put_voice_mixer),
8440 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_HDMI_RX,
8441 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8442 msm_routing_put_voice_mixer),
8443 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_HDMI_RX,
8444 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8445 msm_routing_put_voice_mixer),
8446};
8447
8448static const struct snd_kcontrol_new slimbus_7_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308449 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8450 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8451 msm_routing_put_voice_mixer),
8452 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8453 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8454 msm_routing_put_voice_stub_mixer),
8455 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8456 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8457 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308458 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8459 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8460 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308461 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8462 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8463 msm_routing_put_voice_mixer),
8464 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8465 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8466 msm_routing_put_voice_mixer),
8467 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8468 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8469 msm_routing_put_voice_mixer),
8470 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8471 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8472 msm_routing_put_voice_mixer),
8473};
8474
8475static const struct snd_kcontrol_new slimbus_8_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308476 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8477 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8478 msm_routing_put_voice_mixer),
8479 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8480 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8481 msm_routing_put_voice_stub_mixer),
8482 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8483 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8484 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308485 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8486 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8487 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308488 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8489 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8490 msm_routing_put_voice_mixer),
8491 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8492 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8493 msm_routing_put_voice_mixer),
8494 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8495 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8496 msm_routing_put_voice_mixer),
8497 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8498 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8499 msm_routing_put_voice_mixer),
8500};
8501
8502static const struct snd_kcontrol_new quat_tdm_rx_2_voice_mixer_controls[] = {
8503 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
8504 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8505 msm_routing_put_voice_mixer),
8506};
8507
8508static const struct snd_kcontrol_new stub_rx_mixer_controls[] = {
8509 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_EXTPROC_RX,
8510 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8511 msm_routing_put_voice_stub_mixer),
8512 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_EXTPROC_RX,
8513 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8514 msm_routing_put_voice_stub_mixer),
8515 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_EXTPROC_RX,
8516 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8517 msm_routing_put_voice_stub_mixer),
8518};
8519
8520static const struct snd_kcontrol_new slimbus_1_rx_mixer_controls[] = {
8521 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_SLIMBUS_1_RX,
8522 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8523 msm_routing_put_voice_stub_mixer),
8524 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_SLIMBUS_1_RX,
8525 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8526 msm_routing_put_voice_stub_mixer),
8527 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_SLIMBUS_1_RX,
8528 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8529 msm_routing_put_voice_stub_mixer),
8530};
8531
8532static const struct snd_kcontrol_new slimbus_3_rx_mixer_controls[] = {
8533 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_SLIMBUS_3_RX,
8534 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8535 msm_routing_put_voice_stub_mixer),
8536 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_SLIMBUS_3_RX,
8537 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8538 msm_routing_put_voice_stub_mixer),
8539 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_SLIMBUS_3_RX,
8540 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8541 msm_routing_put_voice_stub_mixer),
8542};
8543
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308544static const struct snd_kcontrol_new tx_voicemmode1_mixer_controls[] = {
8545 SOC_SINGLE_EXT("PRI_TX_MMode1", MSM_BACKEND_DAI_PRI_I2S_TX,
8546 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8547 msm_routing_put_voice_mixer),
8548 SOC_SINGLE_EXT("MI2S_TX_MMode1", MSM_BACKEND_DAI_MI2S_TX,
8549 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8550 msm_routing_put_voice_mixer),
8551 SOC_SINGLE_EXT("SLIM_0_TX_MMode1",
8552 MSM_BACKEND_DAI_SLIMBUS_0_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8553 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8554 SOC_SINGLE_EXT("INT_BT_SCO_TX_MMode1",
8555 MSM_BACKEND_DAI_INT_BT_SCO_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8556 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8557 SOC_SINGLE_EXT("AFE_PCM_TX_MMode1",
8558 MSM_BACKEND_DAI_AFE_PCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0,
8559 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8560 SOC_SINGLE_EXT("AUX_PCM_TX_MMode1",
8561 MSM_BACKEND_DAI_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0,
8562 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8563 SOC_SINGLE_EXT("SEC_AUX_PCM_TX_MMode1",
8564 MSM_BACKEND_DAI_SEC_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8565 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8566 SOC_SINGLE_EXT("TERT_AUX_PCM_TX_MMode1",
8567 MSM_BACKEND_DAI_TERT_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8568 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8569 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX_MMode1",
8570 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8571 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308572 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX_MMode1",
8573 MSM_BACKEND_DAI_QUIN_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8574 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308575 SOC_SINGLE_EXT("PRI_MI2S_TX_MMode1",
8576 MSM_BACKEND_DAI_PRI_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0,
8577 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8578 SOC_SINGLE_EXT("TERT_MI2S_TX_MMode1",
8579 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE1,
8580 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8581 SOC_SINGLE_EXT("INT3_MI2S_TX_MMode1",
8582 MSM_BACKEND_DAI_INT3_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE1,
8583 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8584 SOC_SINGLE_EXT("SLIM_7_TX_MMode1",
8585 MSM_BACKEND_DAI_SLIMBUS_7_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8586 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8587 SOC_SINGLE_EXT("SLIM_8_TX_MMode1",
8588 MSM_BACKEND_DAI_SLIMBUS_8_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8589 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8590 SOC_SINGLE_EXT("USB_AUDIO_TX_MMode1", MSM_BACKEND_DAI_USB_TX,
8591 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8592 msm_routing_put_voice_mixer),
8593 SOC_SINGLE_EXT("QUAT_TDM_TX_0_MMode1",
8594 MSM_BACKEND_DAI_QUAT_TDM_TX_0, MSM_FRONTEND_DAI_VOICEMMODE1,
8595 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8596};
8597
8598static const struct snd_kcontrol_new tx_voicemmode2_mixer_controls[] = {
8599 SOC_SINGLE_EXT("PRI_TX_MMode2", MSM_BACKEND_DAI_PRI_I2S_TX,
8600 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8601 msm_routing_put_voice_mixer),
8602 SOC_SINGLE_EXT("MI2S_TX_MMode2", MSM_BACKEND_DAI_MI2S_TX,
8603 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8604 msm_routing_put_voice_mixer),
8605 SOC_SINGLE_EXT("SLIM_0_TX_MMode2",
8606 MSM_BACKEND_DAI_SLIMBUS_0_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8607 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8608 SOC_SINGLE_EXT("INT_BT_SCO_TX_MMode2",
8609 MSM_BACKEND_DAI_INT_BT_SCO_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8610 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8611 SOC_SINGLE_EXT("AFE_PCM_TX_MMode2",
8612 MSM_BACKEND_DAI_AFE_PCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0,
8613 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8614 SOC_SINGLE_EXT("AUX_PCM_TX_MMode2",
8615 MSM_BACKEND_DAI_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0,
8616 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8617 SOC_SINGLE_EXT("SEC_AUX_PCM_TX_MMode2",
8618 MSM_BACKEND_DAI_SEC_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8619 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8620 SOC_SINGLE_EXT("TERT_AUX_PCM_TX_MMode2",
8621 MSM_BACKEND_DAI_TERT_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8622 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8623 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX_MMode2",
8624 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8625 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308626 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX_MMode2",
8627 MSM_BACKEND_DAI_QUIN_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8628 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308629 SOC_SINGLE_EXT("PRI_MI2S_TX_MMode2",
8630 MSM_BACKEND_DAI_PRI_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0,
8631 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8632 SOC_SINGLE_EXT("TERT_MI2S_TX_MMode2",
8633 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE2,
8634 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8635 SOC_SINGLE_EXT("INT3_MI2S_TX_MMode2",
8636 MSM_BACKEND_DAI_INT3_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE2,
8637 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8638 SOC_SINGLE_EXT("SLIM_7_TX_MMode2",
8639 MSM_BACKEND_DAI_SLIMBUS_7_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8640 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8641 SOC_SINGLE_EXT("SLIM_8_TX_MMode2",
8642 MSM_BACKEND_DAI_SLIMBUS_8_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8643 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8644 SOC_SINGLE_EXT("USB_AUDIO_TX_MMode2",
8645 MSM_BACKEND_DAI_USB_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8646 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8647};
8648
8649static const struct snd_kcontrol_new tx_voip_mixer_controls[] = {
8650 SOC_SINGLE_EXT("PRI_TX_Voip", MSM_BACKEND_DAI_PRI_I2S_TX,
8651 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8652 msm_routing_put_voice_mixer),
8653 SOC_SINGLE_EXT("MI2S_TX_Voip", MSM_BACKEND_DAI_MI2S_TX,
8654 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8655 msm_routing_put_voice_mixer),
8656 SOC_SINGLE_EXT("SLIM_0_TX_Voip", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8657 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8658 msm_routing_put_voice_mixer),
8659 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX_Voip", MSM_BACKEND_DAI_INT_BT_SCO_TX,
8660 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8661 msm_routing_put_voice_mixer),
8662 SOC_SINGLE_EXT("AFE_PCM_TX_Voip", MSM_BACKEND_DAI_AFE_PCM_TX,
8663 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8664 msm_routing_put_voice_mixer),
8665 SOC_SINGLE_EXT("AUX_PCM_TX_Voip", MSM_BACKEND_DAI_AUXPCM_TX,
8666 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8667 msm_routing_put_voice_mixer),
8668 SOC_SINGLE_EXT("SEC_AUX_PCM_TX_Voip", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
8669 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8670 msm_routing_put_voice_mixer),
8671 SOC_SINGLE_EXT("TERT_AUX_PCM_TX_Voip", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
8672 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8673 msm_routing_put_voice_mixer),
8674 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX_Voip", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
8675 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8676 msm_routing_put_voice_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308677 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX_Voip", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
8678 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8679 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308680 SOC_SINGLE_EXT("PRI_MI2S_TX_Voip", MSM_BACKEND_DAI_PRI_MI2S_TX,
8681 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8682 msm_routing_put_voice_mixer),
8683 SOC_SINGLE_EXT("TERT_MI2S_TX_Voip", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
8684 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8685 msm_routing_put_voice_mixer),
8686 SOC_SINGLE_EXT("INT3_MI2S_TX_Voip", MSM_BACKEND_DAI_INT3_MI2S_TX,
8687 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8688 msm_routing_put_voice_mixer),
8689 SOC_SINGLE_EXT("SLIM_7_TX_Voip", MSM_BACKEND_DAI_SLIMBUS_7_TX,
8690 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8691 msm_routing_put_voice_mixer),
8692 SOC_SINGLE_EXT("SLIM_8_TX_Voip", MSM_BACKEND_DAI_SLIMBUS_8_TX,
8693 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8694 msm_routing_put_voice_mixer),
8695 SOC_SINGLE_EXT("USB_AUDIO_TX_Voip", MSM_BACKEND_DAI_USB_TX,
8696 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8697 msm_routing_put_voice_mixer),
8698};
8699
8700static const struct snd_kcontrol_new tx_voice_stub_mixer_controls[] = {
8701 SOC_SINGLE_EXT("STUB_TX_HL", MSM_BACKEND_DAI_EXTPROC_TX,
8702 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8703 msm_routing_put_voice_stub_mixer),
8704 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
8705 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8706 msm_routing_put_voice_stub_mixer),
8707 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
8708 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8709 msm_routing_put_voice_stub_mixer),
8710 SOC_SINGLE_EXT("STUB_1_TX_HL", MSM_BACKEND_DAI_EXTPROC_EC_TX,
8711 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8712 msm_routing_put_voice_stub_mixer),
8713 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
8714 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8715 msm_routing_put_voice_stub_mixer),
8716 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
8717 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8718 msm_routing_put_voice_stub_mixer),
8719 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
8720 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8721 msm_routing_put_voice_stub_mixer),
8722 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
8723 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8724 msm_routing_put_voice_stub_mixer),
8725 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
8726 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8727 msm_routing_put_voice_stub_mixer),
8728 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
8729 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8730 msm_routing_put_voice_stub_mixer),
8731 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
8732 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8733 msm_routing_put_voice_stub_mixer),
8734 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
8735 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8736 msm_routing_put_voice_stub_mixer),
8737 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
8738 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8739 msm_routing_put_voice_stub_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308740 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
8741 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8742 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308743 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8744 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8745 msm_routing_put_voice_stub_mixer),
8746 SOC_SINGLE_EXT("SLIM_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
8747 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8748 msm_routing_put_voice_stub_mixer),
8749 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
8750 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8751 msm_routing_put_voice_stub_mixer),
8752 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
8753 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8754 msm_routing_put_voice_stub_mixer),
8755 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
8756 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8757 msm_routing_put_voice_stub_mixer),
8758};
8759
8760static const struct snd_kcontrol_new tx_voice2_stub_mixer_controls[] = {
8761 SOC_SINGLE_EXT("STUB_TX_HL", MSM_BACKEND_DAI_EXTPROC_TX,
8762 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8763 msm_routing_put_voice_stub_mixer),
8764 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
8765 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8766 msm_routing_put_voice_stub_mixer),
8767 SOC_SINGLE_EXT("STUB_1_TX_HL", MSM_BACKEND_DAI_EXTPROC_EC_TX,
8768 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8769 msm_routing_put_voice_stub_mixer),
8770 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
8771 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8772 msm_routing_put_voice_stub_mixer),
8773 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
8774 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8775 msm_routing_put_voice_stub_mixer),
8776 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
8777 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8778 msm_routing_put_voice_stub_mixer),
8779 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
8780 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8781 msm_routing_put_voice_stub_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308782 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
8783 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8784 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308785 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8786 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8787 msm_routing_put_voice_stub_mixer),
8788 SOC_SINGLE_EXT("SLIM_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
8789 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8790 msm_routing_put_voice_stub_mixer),
8791 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
8792 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8793 msm_routing_put_voice_stub_mixer),
8794 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
8795 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8796 msm_routing_put_voice_stub_mixer),
8797 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
8798 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8799 msm_routing_put_voice_stub_mixer),
8800 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
8801 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8802 msm_routing_put_voice_stub_mixer),
8803 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
8804 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8805 msm_routing_put_voice_stub_mixer),
8806};
8807
8808static const struct snd_kcontrol_new tx_volte_stub_mixer_controls[] = {
8809 SOC_SINGLE_EXT("STUB_TX_HL", MSM_BACKEND_DAI_EXTPROC_TX,
8810 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8811 msm_routing_put_voice_stub_mixer),
8812 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
8813 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8814 msm_routing_put_voice_stub_mixer),
8815 SOC_SINGLE_EXT("STUB_1_TX_HL", MSM_BACKEND_DAI_EXTPROC_EC_TX,
8816 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8817 msm_routing_put_voice_stub_mixer),
8818 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
8819 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8820 msm_routing_put_voice_stub_mixer),
8821 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
8822 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8823 msm_routing_put_voice_stub_mixer),
8824 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
8825 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8826 msm_routing_put_voice_stub_mixer),
8827 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
8828 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8829 msm_routing_put_voice_stub_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308830 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
8831 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8832 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308833 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8834 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8835 msm_routing_put_voice_stub_mixer),
8836 SOC_SINGLE_EXT("SLIM_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
8837 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8838 msm_routing_put_voice_stub_mixer),
8839 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
8840 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8841 msm_routing_put_voice_stub_mixer),
8842 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
8843 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8844 msm_routing_put_voice_stub_mixer),
8845 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
8846 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8847 msm_routing_put_voice_stub_mixer),
8848 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
8849 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8850 msm_routing_put_voice_stub_mixer),
8851 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
8852 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8853 msm_routing_put_voice_stub_mixer),
8854};
8855
8856static const struct snd_kcontrol_new tx_qchat_mixer_controls[] = {
8857 SOC_SINGLE_EXT("PRI_TX_QCHAT", MSM_BACKEND_DAI_PRI_I2S_TX,
8858 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8859 msm_routing_put_voice_mixer),
8860 SOC_SINGLE_EXT("SLIM_0_TX_QCHAT", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8861 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8862 msm_routing_put_voice_mixer),
8863 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX_QCHAT",
8864 MSM_BACKEND_DAI_INT_BT_SCO_TX, MSM_FRONTEND_DAI_QCHAT, 1, 0,
8865 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8866 SOC_SINGLE_EXT("AFE_PCM_TX_QCHAT", MSM_BACKEND_DAI_AFE_PCM_TX,
8867 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8868 msm_routing_put_voice_mixer),
8869 SOC_SINGLE_EXT("AUX_PCM_TX_QCHAT", MSM_BACKEND_DAI_AUXPCM_TX,
8870 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8871 msm_routing_put_voice_mixer),
8872 SOC_SINGLE_EXT("SEC_AUX_PCM_TX_QCHAT", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
8873 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8874 msm_routing_put_voice_mixer),
8875 SOC_SINGLE_EXT("TERT_AUX_PCM_TX_QCHAT", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
8876 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8877 msm_routing_put_voice_mixer),
8878 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX_QCHAT", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
8879 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8880 msm_routing_put_voice_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308881 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX_QCHAT", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
8882 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8883 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308884 SOC_SINGLE_EXT("MI2S_TX_QCHAT", MSM_BACKEND_DAI_MI2S_TX,
8885 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8886 msm_routing_put_voice_mixer),
8887 SOC_SINGLE_EXT("PRI_MI2S_TX_QCHAT", MSM_BACKEND_DAI_PRI_MI2S_TX,
8888 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8889 msm_routing_put_voice_mixer),
8890 SOC_SINGLE_EXT("TERT_MI2S_TX_QCHAT", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
8891 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8892 msm_routing_put_voice_mixer),
8893 SOC_SINGLE_EXT("INT3_MI2S_TX_QCHAT", MSM_BACKEND_DAI_INT3_MI2S_TX,
8894 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8895 msm_routing_put_voice_mixer),
8896 SOC_SINGLE_EXT("SLIM_7_TX_QCHAT", MSM_BACKEND_DAI_SLIMBUS_7_TX,
8897 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8898 msm_routing_put_voice_mixer),
8899 SOC_SINGLE_EXT("SLIM_8_TX_QCHAT", MSM_BACKEND_DAI_SLIMBUS_8_TX,
8900 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8901 msm_routing_put_voice_mixer),
8902 SOC_SINGLE_EXT("USB_AUDIO_TX_QCHAT", MSM_BACKEND_DAI_USB_TX,
8903 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8904 msm_routing_put_voice_mixer),
8905};
8906
8907static const struct snd_kcontrol_new int0_mi2s_rx_port_mixer_controls[] = {
8908 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
8909 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8910 msm_routing_put_port_mixer),
8911 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
8912 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8913 msm_routing_put_port_mixer),
8914 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
8915 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8916 msm_routing_put_port_mixer),
8917 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
8918 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8919 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308920 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
8921 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8922 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308923 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
8924 MSM_BACKEND_DAI_INT3_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8925 msm_routing_put_port_mixer),
8926 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
8927 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
8928 msm_routing_put_port_mixer),
8929 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
8930 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
8931 msm_routing_put_port_mixer),
8932 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
8933 MSM_BACKEND_DAI_SLIMBUS_7_TX, 1, 0, msm_routing_get_port_mixer,
8934 msm_routing_put_port_mixer),
8935 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
8936 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
8937 msm_routing_put_port_mixer),
8938};
8939
8940static const struct snd_kcontrol_new int4_mi2s_rx_port_mixer_controls[] = {
8941 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
8942 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8943 msm_routing_put_port_mixer),
8944 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
8945 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8946 msm_routing_put_port_mixer),
8947 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
8948 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8949 msm_routing_put_port_mixer),
8950 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
8951 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8952 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308953 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
8954 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8955 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308956 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
8957 MSM_BACKEND_DAI_INT3_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8958 msm_routing_put_port_mixer),
8959 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
8960 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
8961 msm_routing_put_port_mixer),
8962 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
8963 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
8964 msm_routing_put_port_mixer),
8965 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
8966 MSM_BACKEND_DAI_SLIMBUS_7_TX, 1, 0, msm_routing_get_port_mixer,
8967 msm_routing_put_port_mixer),
8968 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
8969 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
8970 msm_routing_put_port_mixer),
8971};
8972
8973static const struct snd_kcontrol_new sbus_0_rx_port_mixer_controls[] = {
8974 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8975 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
8976 msm_routing_put_port_mixer),
8977 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8978 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
8979 msm_routing_put_port_mixer),
8980 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8981 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
8982 msm_routing_put_port_mixer),
8983 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8984 MSM_BACKEND_DAI_SLIMBUS_7_TX, 1, 0, msm_routing_get_port_mixer,
8985 msm_routing_put_port_mixer),
8986 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8987 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
8988 msm_routing_put_port_mixer),
8989 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8990 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
8991 msm_routing_put_port_mixer),
8992 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8993 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
8994 msm_routing_put_port_mixer),
8995 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8996 MSM_BACKEND_DAI_TERT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
8997 msm_routing_put_port_mixer),
8998 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8999 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9000 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309001 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9002 MSM_BACKEND_DAI_QUIN_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9003 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309004 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9005 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9006 msm_routing_put_port_mixer),
9007 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9008 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9009 msm_routing_put_port_mixer),
9010 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9011 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9012 msm_routing_put_port_mixer),
9013 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9014 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9015 msm_routing_put_port_mixer),
9016 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9017 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9018 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309019 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9020 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9021 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309022 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9023 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
9024 msm_routing_put_port_mixer),
9025 SOC_SINGLE_EXT("PRI_MI2S_RX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9026 MSM_BACKEND_DAI_PRI_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
9027 msm_routing_put_port_mixer),
9028 SOC_SINGLE_EXT("SEC_MI2S_RX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9029 MSM_BACKEND_DAI_SECONDARY_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
9030 msm_routing_put_port_mixer),
9031 SOC_SINGLE_EXT("TERT_MI2S_RX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9032 MSM_BACKEND_DAI_TERTIARY_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
9033 msm_routing_put_port_mixer),
9034 SOC_SINGLE_EXT("QUAT_MI2S_RX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9035 MSM_BACKEND_DAI_QUATERNARY_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
9036 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309037 SOC_SINGLE_EXT("QUIN_MI2S_RX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9038 MSM_BACKEND_DAI_QUINARY_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
9039 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309040};
9041
9042static const struct snd_kcontrol_new aux_pcm_rx_port_mixer_controls[] = {
9043 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_RX,
9044 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9045 msm_routing_put_port_mixer),
9046 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_AUXPCM_RX,
9047 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9048 msm_routing_put_port_mixer),
9049 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_AUXPCM_RX,
9050 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9051 msm_routing_put_port_mixer),
9052 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_RX,
9053 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9054 msm_routing_put_port_mixer),
9055 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_AUXPCM_RX,
9056 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0, msm_routing_get_port_mixer,
9057 msm_routing_put_port_mixer),
9058};
9059
9060static const struct snd_kcontrol_new sec_auxpcm_rx_port_mixer_controls[] = {
9061 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
9062 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9063 msm_routing_put_port_mixer),
9064 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
9065 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9066 msm_routing_put_port_mixer),
9067 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
9068 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9069 msm_routing_put_port_mixer),
9070};
9071
9072static const struct snd_kcontrol_new tert_auxpcm_rx_port_mixer_controls[] = {
9073 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
9074 MSM_BACKEND_DAI_TERT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9075 msm_routing_put_port_mixer),
9076 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
9077 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9078 msm_routing_put_port_mixer),
9079 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
9080 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9081 msm_routing_put_port_mixer),
9082};
9083
9084static const struct snd_kcontrol_new quat_auxpcm_rx_port_mixer_controls[] = {
9085 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
9086 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9087 msm_routing_put_port_mixer),
9088 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
9089 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9090 msm_routing_put_port_mixer),
9091 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
9092 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9093 msm_routing_put_port_mixer),
9094};
9095
Rohit Kumara5077932017-09-10 22:05:05 +05309096static const struct snd_kcontrol_new quin_auxpcm_rx_port_mixer_controls[] = {
9097 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
9098 MSM_BACKEND_DAI_QUIN_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9099 msm_routing_put_port_mixer),
9100 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
9101 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9102 msm_routing_put_port_mixer),
9103 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
9104 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9105 msm_routing_put_port_mixer),
9106};
9107
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309108static const struct snd_kcontrol_new sbus_1_rx_port_mixer_controls[] = {
9109 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9110 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
9111 msm_routing_put_port_mixer),
9112 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9113 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0, msm_routing_get_port_mixer,
9114 msm_routing_put_port_mixer),
9115 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9116 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9117 msm_routing_put_port_mixer),
9118 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9119 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9120 msm_routing_put_port_mixer),
9121 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9122 MSM_BACKEND_DAI_TERT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9123 msm_routing_put_port_mixer),
9124 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9125 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9126 msm_routing_put_port_mixer),
9127};
9128
9129static const struct snd_kcontrol_new sbus_3_rx_port_mixer_controls[] = {
9130 SOC_SINGLE_EXT("INTERNAL_BT_SCO_RX", MSM_BACKEND_DAI_SLIMBUS_3_RX,
9131 MSM_BACKEND_DAI_INT_BT_SCO_RX, 1, 0, msm_routing_get_port_mixer,
9132 msm_routing_put_port_mixer),
9133 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_3_RX,
9134 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9135 msm_routing_put_port_mixer),
9136 SOC_SINGLE_EXT("AFE_PCM_RX", MSM_BACKEND_DAI_SLIMBUS_3_RX,
9137 MSM_BACKEND_DAI_AFE_PCM_RX, 1, 0, msm_routing_get_port_mixer,
9138 msm_routing_put_port_mixer),
9139 SOC_SINGLE_EXT("AUX_PCM_RX", MSM_BACKEND_DAI_SLIMBUS_3_RX,
9140 MSM_BACKEND_DAI_AUXPCM_RX, 1, 0, msm_routing_get_port_mixer,
9141 msm_routing_put_port_mixer),
9142 SOC_SINGLE_EXT("SLIM_0_RX", MSM_BACKEND_DAI_SLIMBUS_3_RX,
9143 MSM_BACKEND_DAI_SLIMBUS_0_RX, 1, 0, msm_routing_get_port_mixer,
9144 msm_routing_put_port_mixer),
9145};
9146
9147static const struct snd_kcontrol_new sbus_6_rx_port_mixer_controls[] = {
9148 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9149 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9150 msm_routing_put_port_mixer),
9151 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9152 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9153 msm_routing_put_port_mixer),
9154 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9155 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9156 msm_routing_put_port_mixer),
9157 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9158 MSM_BACKEND_DAI_SLIMBUS_7_TX, 1, 0, msm_routing_get_port_mixer,
9159 msm_routing_put_port_mixer),
9160 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9161 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9162 msm_routing_put_port_mixer),
9163 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9164 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9165 msm_routing_put_port_mixer),
9166 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9167 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9168 msm_routing_put_port_mixer),
9169 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9170 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9171 msm_routing_put_port_mixer),
9172 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9173 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9174 msm_routing_put_port_mixer),
9175 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9176 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9177 msm_routing_put_port_mixer),
9178 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9179 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9180 msm_routing_put_port_mixer),
9181 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9182 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
9183 msm_routing_put_port_mixer),
9184};
9185
9186static const struct snd_kcontrol_new bt_sco_rx_port_mixer_controls[] = {
9187 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_INT_BT_SCO_RX,
9188 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9189 msm_routing_put_port_mixer),
9190 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_INT_BT_SCO_RX,
9191 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9192 msm_routing_put_port_mixer),
9193};
9194
9195static const struct snd_kcontrol_new afe_pcm_rx_port_mixer_controls[] = {
9196 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_AFE_PCM_RX,
9197 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9198 msm_routing_put_port_mixer),
9199 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_AFE_PCM_RX,
9200 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9201 msm_routing_put_port_mixer),
9202};
9203
9204
9205static const struct snd_kcontrol_new hdmi_rx_port_mixer_controls[] = {
9206 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_HDMI_RX,
9207 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9208 msm_routing_put_port_mixer),
9209};
9210
9211static const struct snd_kcontrol_new display_port_rx_port_mixer_controls[] = {
9212 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
9213 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9214 msm_routing_put_port_mixer),
9215};
9216
9217static const struct snd_kcontrol_new sec_i2s_rx_port_mixer_controls[] = {
9218 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_SEC_I2S_RX,
9219 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9220 msm_routing_put_port_mixer),
9221};
9222
9223static const struct snd_kcontrol_new mi2s_rx_port_mixer_controls[] = {
9224 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_MI2S_RX,
9225 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9226 msm_routing_put_port_mixer),
9227 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_RX,
9228 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9229 msm_routing_put_port_mixer),
9230};
9231
9232static const struct snd_kcontrol_new primary_mi2s_rx_port_mixer_controls[] = {
9233 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9234 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9235 msm_routing_put_port_mixer),
9236 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9237 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9238 msm_routing_put_port_mixer),
9239 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9240 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9241 msm_routing_put_port_mixer),
9242 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9243 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9244 msm_routing_put_port_mixer),
9245 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9246 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
9247 msm_routing_put_port_mixer),
9248 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9249 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9250 msm_routing_put_port_mixer),
9251 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9252 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9253 msm_routing_put_port_mixer),
9254 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9255 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9256 msm_routing_put_port_mixer),
9257 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9258 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9259 msm_routing_put_port_mixer),
9260};
9261
9262static const struct snd_kcontrol_new usb_rx_port_mixer_controls[] = {
9263 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_RX,
9264 MSM_BACKEND_DAI_USB_TX, 1, 0, msm_routing_get_port_mixer,
9265 msm_routing_put_port_mixer),
9266};
9267
9268static const struct snd_kcontrol_new quat_mi2s_rx_port_mixer_controls[] = {
9269 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9270 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9271 msm_routing_put_port_mixer),
9272 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9273 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9274 msm_routing_put_port_mixer),
9275 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9276 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9277 msm_routing_put_port_mixer),
9278 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9279 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9280 msm_routing_put_port_mixer),
9281 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9282 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9283 msm_routing_put_port_mixer),
9284 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9285 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9286 msm_routing_put_port_mixer),
9287 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9288 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9289 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309290 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9291 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9292 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309293 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9294 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9295 msm_routing_put_port_mixer),
9296};
9297
Rohit Kumara5077932017-09-10 22:05:05 +05309298static const struct snd_kcontrol_new quin_mi2s_rx_port_mixer_controls[] = {
9299 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9300 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9301 msm_routing_put_port_mixer),
9302 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9303 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9304 msm_routing_put_port_mixer),
9305 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9306 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9307 msm_routing_put_port_mixer),
9308 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9309 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9310 msm_routing_put_port_mixer),
9311 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9312 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9313 msm_routing_put_port_mixer),
9314 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9315 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9316 msm_routing_put_port_mixer),
9317 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9318 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9319 msm_routing_put_port_mixer),
9320};
9321
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309322static const struct snd_kcontrol_new pri_tdm_rx_0_port_mixer_controls[] = {
9323 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9324 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9325 msm_routing_get_port_mixer,
9326 msm_routing_put_port_mixer),
9327 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9328 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9329 msm_routing_get_port_mixer,
9330 msm_routing_put_port_mixer),
9331 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9332 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9333 msm_routing_get_port_mixer,
9334 msm_routing_put_port_mixer),
9335 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9336 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9337 msm_routing_get_port_mixer,
9338 msm_routing_put_port_mixer),
9339 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9340 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9341 msm_routing_get_port_mixer,
9342 msm_routing_put_port_mixer),
9343 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9344 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9345 msm_routing_get_port_mixer,
9346 msm_routing_put_port_mixer),
9347 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9348 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9349 msm_routing_get_port_mixer,
9350 msm_routing_put_port_mixer),
9351 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9352 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9353 msm_routing_get_port_mixer,
9354 msm_routing_put_port_mixer),
9355 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9356 MSM_BACKEND_DAI_PRI_TDM_TX_0, 1, 0,
9357 msm_routing_get_port_mixer,
9358 msm_routing_put_port_mixer),
9359 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9360 MSM_BACKEND_DAI_PRI_TDM_TX_1, 1, 0,
9361 msm_routing_get_port_mixer,
9362 msm_routing_put_port_mixer),
9363 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9364 MSM_BACKEND_DAI_PRI_TDM_TX_2, 1, 0,
9365 msm_routing_get_port_mixer,
9366 msm_routing_put_port_mixer),
9367 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9368 MSM_BACKEND_DAI_PRI_TDM_TX_3, 1, 0,
9369 msm_routing_get_port_mixer,
9370 msm_routing_put_port_mixer),
9371 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9372 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9373 msm_routing_get_port_mixer,
9374 msm_routing_put_port_mixer),
9375 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9376 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9377 msm_routing_get_port_mixer,
9378 msm_routing_put_port_mixer),
9379 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9380 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9381 msm_routing_get_port_mixer,
9382 msm_routing_put_port_mixer),
9383 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9384 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9385 msm_routing_get_port_mixer,
9386 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309387 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9388 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9389 msm_routing_get_port_mixer,
9390 msm_routing_put_port_mixer),
9391 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9392 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9393 msm_routing_get_port_mixer,
9394 msm_routing_put_port_mixer),
9395 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9396 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9397 msm_routing_get_port_mixer,
9398 msm_routing_put_port_mixer),
9399 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9400 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9401 msm_routing_get_port_mixer,
9402 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309403};
9404
9405static const struct snd_kcontrol_new pri_tdm_rx_1_port_mixer_controls[] = {
9406 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9407 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9408 msm_routing_get_port_mixer,
9409 msm_routing_put_port_mixer),
9410 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9411 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9412 msm_routing_get_port_mixer,
9413 msm_routing_put_port_mixer),
9414 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9415 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9416 msm_routing_get_port_mixer,
9417 msm_routing_put_port_mixer),
9418 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9419 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9420 msm_routing_get_port_mixer,
9421 msm_routing_put_port_mixer),
9422 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9423 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9424 msm_routing_get_port_mixer,
9425 msm_routing_put_port_mixer),
9426 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9427 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9428 msm_routing_get_port_mixer,
9429 msm_routing_put_port_mixer),
9430 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9431 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9432 msm_routing_get_port_mixer,
9433 msm_routing_put_port_mixer),
9434 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9435 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9436 msm_routing_get_port_mixer,
9437 msm_routing_put_port_mixer),
9438 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9439 MSM_BACKEND_DAI_PRI_TDM_TX_0, 1, 0,
9440 msm_routing_get_port_mixer,
9441 msm_routing_put_port_mixer),
9442 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9443 MSM_BACKEND_DAI_PRI_TDM_TX_1, 1, 0,
9444 msm_routing_get_port_mixer,
9445 msm_routing_put_port_mixer),
9446 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9447 MSM_BACKEND_DAI_PRI_TDM_TX_2, 1, 0,
9448 msm_routing_get_port_mixer,
9449 msm_routing_put_port_mixer),
9450 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9451 MSM_BACKEND_DAI_PRI_TDM_TX_3, 1, 0,
9452 msm_routing_get_port_mixer,
9453 msm_routing_put_port_mixer),
9454 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9455 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9456 msm_routing_get_port_mixer,
9457 msm_routing_put_port_mixer),
9458 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9459 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9460 msm_routing_get_port_mixer,
9461 msm_routing_put_port_mixer),
9462 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9463 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9464 msm_routing_get_port_mixer,
9465 msm_routing_put_port_mixer),
9466 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9467 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9468 msm_routing_get_port_mixer,
9469 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309470 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9471 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9472 msm_routing_get_port_mixer,
9473 msm_routing_put_port_mixer),
9474 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9475 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9476 msm_routing_get_port_mixer,
9477 msm_routing_put_port_mixer),
9478 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9479 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9480 msm_routing_get_port_mixer,
9481 msm_routing_put_port_mixer),
9482 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9483 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9484 msm_routing_get_port_mixer,
9485 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309486};
9487
9488static const struct snd_kcontrol_new pri_tdm_rx_2_port_mixer_controls[] = {
9489 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9490 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9491 msm_routing_get_port_mixer,
9492 msm_routing_put_port_mixer),
9493 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9494 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9495 msm_routing_get_port_mixer,
9496 msm_routing_put_port_mixer),
9497 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9498 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9499 msm_routing_get_port_mixer,
9500 msm_routing_put_port_mixer),
9501 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9502 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9503 msm_routing_get_port_mixer,
9504 msm_routing_put_port_mixer),
9505 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9506 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9507 msm_routing_get_port_mixer,
9508 msm_routing_put_port_mixer),
9509 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9510 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9511 msm_routing_get_port_mixer,
9512 msm_routing_put_port_mixer),
9513 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9514 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9515 msm_routing_get_port_mixer,
9516 msm_routing_put_port_mixer),
9517 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9518 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9519 msm_routing_get_port_mixer,
9520 msm_routing_put_port_mixer),
9521 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9522 MSM_BACKEND_DAI_PRI_TDM_TX_0, 1, 0,
9523 msm_routing_get_port_mixer,
9524 msm_routing_put_port_mixer),
9525 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9526 MSM_BACKEND_DAI_PRI_TDM_TX_1, 1, 0,
9527 msm_routing_get_port_mixer,
9528 msm_routing_put_port_mixer),
9529 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9530 MSM_BACKEND_DAI_PRI_TDM_TX_2, 1, 0,
9531 msm_routing_get_port_mixer,
9532 msm_routing_put_port_mixer),
9533 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9534 MSM_BACKEND_DAI_PRI_TDM_TX_3, 1, 0,
9535 msm_routing_get_port_mixer,
9536 msm_routing_put_port_mixer),
9537 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9538 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9539 msm_routing_get_port_mixer,
9540 msm_routing_put_port_mixer),
9541 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9542 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9543 msm_routing_get_port_mixer,
9544 msm_routing_put_port_mixer),
9545 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9546 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9547 msm_routing_get_port_mixer,
9548 msm_routing_put_port_mixer),
9549 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9550 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9551 msm_routing_get_port_mixer,
9552 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309553 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9554 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9555 msm_routing_get_port_mixer,
9556 msm_routing_put_port_mixer),
9557 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9558 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9559 msm_routing_get_port_mixer,
9560 msm_routing_put_port_mixer),
9561 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9562 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9563 msm_routing_get_port_mixer,
9564 msm_routing_put_port_mixer),
9565 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9566 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9567 msm_routing_get_port_mixer,
9568 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309569};
9570
9571static const struct snd_kcontrol_new pri_tdm_rx_3_port_mixer_controls[] = {
9572 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9573 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9574 msm_routing_get_port_mixer,
9575 msm_routing_put_port_mixer),
9576 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9577 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9578 msm_routing_get_port_mixer,
9579 msm_routing_put_port_mixer),
9580 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9581 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9582 msm_routing_get_port_mixer,
9583 msm_routing_put_port_mixer),
9584 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9585 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9586 msm_routing_get_port_mixer,
9587 msm_routing_put_port_mixer),
9588 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9589 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9590 msm_routing_get_port_mixer,
9591 msm_routing_put_port_mixer),
9592 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9593 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9594 msm_routing_get_port_mixer,
9595 msm_routing_put_port_mixer),
9596 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9597 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9598 msm_routing_get_port_mixer,
9599 msm_routing_put_port_mixer),
9600 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9601 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9602 msm_routing_get_port_mixer,
9603 msm_routing_put_port_mixer),
9604 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9605 MSM_BACKEND_DAI_PRI_TDM_TX_0, 1, 0,
9606 msm_routing_get_port_mixer,
9607 msm_routing_put_port_mixer),
9608 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9609 MSM_BACKEND_DAI_PRI_TDM_TX_1, 1, 0,
9610 msm_routing_get_port_mixer,
9611 msm_routing_put_port_mixer),
9612 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9613 MSM_BACKEND_DAI_PRI_TDM_TX_2, 1, 0,
9614 msm_routing_get_port_mixer,
9615 msm_routing_put_port_mixer),
9616 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9617 MSM_BACKEND_DAI_PRI_TDM_TX_3, 1, 0,
9618 msm_routing_get_port_mixer,
9619 msm_routing_put_port_mixer),
9620 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9621 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9622 msm_routing_get_port_mixer,
9623 msm_routing_put_port_mixer),
9624 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9625 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9626 msm_routing_get_port_mixer,
9627 msm_routing_put_port_mixer),
9628 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9629 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9630 msm_routing_get_port_mixer,
9631 msm_routing_put_port_mixer),
9632 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9633 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9634 msm_routing_get_port_mixer,
9635 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309636 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9637 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9638 msm_routing_get_port_mixer,
9639 msm_routing_put_port_mixer),
9640 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9641 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9642 msm_routing_get_port_mixer,
9643 msm_routing_put_port_mixer),
9644 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9645 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9646 msm_routing_get_port_mixer,
9647 msm_routing_put_port_mixer),
9648 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9649 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9650 msm_routing_get_port_mixer,
9651 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309652};
9653
9654static const struct snd_kcontrol_new sec_tdm_rx_0_port_mixer_controls[] = {
9655 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9656 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9657 msm_routing_get_port_mixer,
9658 msm_routing_put_port_mixer),
9659 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9660 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9661 msm_routing_get_port_mixer,
9662 msm_routing_put_port_mixer),
9663 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9664 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9665 msm_routing_get_port_mixer,
9666 msm_routing_put_port_mixer),
9667 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9668 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9669 msm_routing_get_port_mixer,
9670 msm_routing_put_port_mixer),
9671 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9672 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9673 msm_routing_get_port_mixer,
9674 msm_routing_put_port_mixer),
9675 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9676 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9677 msm_routing_get_port_mixer,
9678 msm_routing_put_port_mixer),
9679 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9680 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9681 msm_routing_get_port_mixer,
9682 msm_routing_put_port_mixer),
9683 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9684 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9685 msm_routing_get_port_mixer,
9686 msm_routing_put_port_mixer),
9687 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9688 MSM_BACKEND_DAI_SEC_TDM_TX_0, 1, 0,
9689 msm_routing_get_port_mixer,
9690 msm_routing_put_port_mixer),
9691 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9692 MSM_BACKEND_DAI_SEC_TDM_TX_1, 1, 0,
9693 msm_routing_get_port_mixer,
9694 msm_routing_put_port_mixer),
9695 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9696 MSM_BACKEND_DAI_SEC_TDM_TX_2, 1, 0,
9697 msm_routing_get_port_mixer,
9698 msm_routing_put_port_mixer),
9699 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9700 MSM_BACKEND_DAI_SEC_TDM_TX_3, 1, 0,
9701 msm_routing_get_port_mixer,
9702 msm_routing_put_port_mixer),
9703 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9704 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9705 msm_routing_get_port_mixer,
9706 msm_routing_put_port_mixer),
9707 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9708 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9709 msm_routing_get_port_mixer,
9710 msm_routing_put_port_mixer),
9711 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9712 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9713 msm_routing_get_port_mixer,
9714 msm_routing_put_port_mixer),
9715 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9716 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9717 msm_routing_get_port_mixer,
9718 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309719 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9720 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9721 msm_routing_get_port_mixer,
9722 msm_routing_put_port_mixer),
9723 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9724 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9725 msm_routing_get_port_mixer,
9726 msm_routing_put_port_mixer),
9727 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9728 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9729 msm_routing_get_port_mixer,
9730 msm_routing_put_port_mixer),
9731 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9732 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9733 msm_routing_get_port_mixer,
9734 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309735};
9736
9737static const struct snd_kcontrol_new sec_tdm_rx_1_port_mixer_controls[] = {
9738 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9739 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9740 msm_routing_get_port_mixer,
9741 msm_routing_put_port_mixer),
9742 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9743 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9744 msm_routing_get_port_mixer,
9745 msm_routing_put_port_mixer),
9746 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9747 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9748 msm_routing_get_port_mixer,
9749 msm_routing_put_port_mixer),
9750 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9751 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9752 msm_routing_get_port_mixer,
9753 msm_routing_put_port_mixer),
9754 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9755 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9756 msm_routing_get_port_mixer,
9757 msm_routing_put_port_mixer),
9758 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9759 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9760 msm_routing_get_port_mixer,
9761 msm_routing_put_port_mixer),
9762 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9763 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9764 msm_routing_get_port_mixer,
9765 msm_routing_put_port_mixer),
9766 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9767 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9768 msm_routing_get_port_mixer,
9769 msm_routing_put_port_mixer),
9770 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9771 MSM_BACKEND_DAI_SEC_TDM_TX_0, 1, 0,
9772 msm_routing_get_port_mixer,
9773 msm_routing_put_port_mixer),
9774 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9775 MSM_BACKEND_DAI_SEC_TDM_TX_1, 1, 0,
9776 msm_routing_get_port_mixer,
9777 msm_routing_put_port_mixer),
9778 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9779 MSM_BACKEND_DAI_SEC_TDM_TX_2, 1, 0,
9780 msm_routing_get_port_mixer,
9781 msm_routing_put_port_mixer),
9782 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9783 MSM_BACKEND_DAI_SEC_TDM_TX_3, 1, 0,
9784 msm_routing_get_port_mixer,
9785 msm_routing_put_port_mixer),
9786 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9787 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9788 msm_routing_get_port_mixer,
9789 msm_routing_put_port_mixer),
9790 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9791 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9792 msm_routing_get_port_mixer,
9793 msm_routing_put_port_mixer),
9794 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9795 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9796 msm_routing_get_port_mixer,
9797 msm_routing_put_port_mixer),
9798 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9799 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9800 msm_routing_get_port_mixer,
9801 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309802 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9803 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9804 msm_routing_get_port_mixer,
9805 msm_routing_put_port_mixer),
9806 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9807 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9808 msm_routing_get_port_mixer,
9809 msm_routing_put_port_mixer),
9810 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9811 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9812 msm_routing_get_port_mixer,
9813 msm_routing_put_port_mixer),
9814 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9815 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9816 msm_routing_get_port_mixer,
9817 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309818};
9819
9820static const struct snd_kcontrol_new sec_tdm_rx_2_port_mixer_controls[] = {
9821 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9822 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9823 msm_routing_get_port_mixer,
9824 msm_routing_put_port_mixer),
9825 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9826 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9827 msm_routing_get_port_mixer,
9828 msm_routing_put_port_mixer),
9829 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9830 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9831 msm_routing_get_port_mixer,
9832 msm_routing_put_port_mixer),
9833 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9834 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9835 msm_routing_get_port_mixer,
9836 msm_routing_put_port_mixer),
9837 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9838 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9839 msm_routing_get_port_mixer,
9840 msm_routing_put_port_mixer),
9841 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9842 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9843 msm_routing_get_port_mixer,
9844 msm_routing_put_port_mixer),
9845 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9846 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9847 msm_routing_get_port_mixer,
9848 msm_routing_put_port_mixer),
9849 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9850 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9851 msm_routing_get_port_mixer,
9852 msm_routing_put_port_mixer),
9853 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9854 MSM_BACKEND_DAI_SEC_TDM_TX_0, 1, 0,
9855 msm_routing_get_port_mixer,
9856 msm_routing_put_port_mixer),
9857 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9858 MSM_BACKEND_DAI_SEC_TDM_TX_1, 1, 0,
9859 msm_routing_get_port_mixer,
9860 msm_routing_put_port_mixer),
9861 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9862 MSM_BACKEND_DAI_SEC_TDM_TX_2, 1, 0,
9863 msm_routing_get_port_mixer,
9864 msm_routing_put_port_mixer),
9865 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9866 MSM_BACKEND_DAI_SEC_TDM_TX_3, 1, 0,
9867 msm_routing_get_port_mixer,
9868 msm_routing_put_port_mixer),
9869 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9870 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9871 msm_routing_get_port_mixer,
9872 msm_routing_put_port_mixer),
9873 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9874 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9875 msm_routing_get_port_mixer,
9876 msm_routing_put_port_mixer),
9877 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9878 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9879 msm_routing_get_port_mixer,
9880 msm_routing_put_port_mixer),
9881 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9882 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9883 msm_routing_get_port_mixer,
9884 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309885 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9886 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9887 msm_routing_get_port_mixer,
9888 msm_routing_put_port_mixer),
9889 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9890 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9891 msm_routing_get_port_mixer,
9892 msm_routing_put_port_mixer),
9893 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9894 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9895 msm_routing_get_port_mixer,
9896 msm_routing_put_port_mixer),
9897 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9898 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9899 msm_routing_get_port_mixer,
9900 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309901};
9902
9903static const struct snd_kcontrol_new sec_tdm_rx_3_port_mixer_controls[] = {
9904 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9905 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9906 msm_routing_get_port_mixer,
9907 msm_routing_put_port_mixer),
9908 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9909 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9910 msm_routing_get_port_mixer,
9911 msm_routing_put_port_mixer),
9912 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9913 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9914 msm_routing_get_port_mixer,
9915 msm_routing_put_port_mixer),
9916 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9917 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9918 msm_routing_get_port_mixer,
9919 msm_routing_put_port_mixer),
9920 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9921 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9922 msm_routing_get_port_mixer,
9923 msm_routing_put_port_mixer),
9924 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9925 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9926 msm_routing_get_port_mixer,
9927 msm_routing_put_port_mixer),
9928 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9929 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9930 msm_routing_get_port_mixer,
9931 msm_routing_put_port_mixer),
9932 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9933 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9934 msm_routing_get_port_mixer,
9935 msm_routing_put_port_mixer),
9936 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9937 MSM_BACKEND_DAI_SEC_TDM_TX_0, 1, 0,
9938 msm_routing_get_port_mixer,
9939 msm_routing_put_port_mixer),
9940 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9941 MSM_BACKEND_DAI_SEC_TDM_TX_1, 1, 0,
9942 msm_routing_get_port_mixer,
9943 msm_routing_put_port_mixer),
9944 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9945 MSM_BACKEND_DAI_SEC_TDM_TX_2, 1, 0,
9946 msm_routing_get_port_mixer,
9947 msm_routing_put_port_mixer),
9948 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9949 MSM_BACKEND_DAI_SEC_TDM_TX_3, 1, 0,
9950 msm_routing_get_port_mixer,
9951 msm_routing_put_port_mixer),
9952 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9953 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9954 msm_routing_get_port_mixer,
9955 msm_routing_put_port_mixer),
9956 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9957 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9958 msm_routing_get_port_mixer,
9959 msm_routing_put_port_mixer),
9960 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9961 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9962 msm_routing_get_port_mixer,
9963 msm_routing_put_port_mixer),
9964 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9965 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9966 msm_routing_get_port_mixer,
9967 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309968 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9969 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9970 msm_routing_get_port_mixer,
9971 msm_routing_put_port_mixer),
9972 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9973 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9974 msm_routing_get_port_mixer,
9975 msm_routing_put_port_mixer),
9976 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9977 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9978 msm_routing_get_port_mixer,
9979 msm_routing_put_port_mixer),
9980 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9981 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9982 msm_routing_get_port_mixer,
9983 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309984};
9985
9986static const struct snd_kcontrol_new tert_tdm_rx_0_port_mixer_controls[] = {
9987 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
9988 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9989 msm_routing_get_port_mixer,
9990 msm_routing_put_port_mixer),
9991 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
9992 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9993 msm_routing_get_port_mixer,
9994 msm_routing_put_port_mixer),
9995 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
9996 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9997 msm_routing_get_port_mixer,
9998 msm_routing_put_port_mixer),
9999 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10000 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10001 msm_routing_get_port_mixer,
10002 msm_routing_put_port_mixer),
10003 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10004 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10005 msm_routing_get_port_mixer,
10006 msm_routing_put_port_mixer),
10007 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10008 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10009 msm_routing_get_port_mixer,
10010 msm_routing_put_port_mixer),
10011 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10012 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10013 msm_routing_get_port_mixer,
10014 msm_routing_put_port_mixer),
10015 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10016 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10017 msm_routing_get_port_mixer,
10018 msm_routing_put_port_mixer),
10019 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10020 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10021 msm_routing_get_port_mixer,
10022 msm_routing_put_port_mixer),
10023 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10024 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10025 msm_routing_get_port_mixer,
10026 msm_routing_put_port_mixer),
10027 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10028 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10029 msm_routing_get_port_mixer,
10030 msm_routing_put_port_mixer),
10031 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10032 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10033 msm_routing_get_port_mixer,
10034 msm_routing_put_port_mixer),
10035 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10036 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10037 msm_routing_get_port_mixer,
10038 msm_routing_put_port_mixer),
10039 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10040 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10041 msm_routing_get_port_mixer,
10042 msm_routing_put_port_mixer),
10043 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10044 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10045 msm_routing_get_port_mixer,
10046 msm_routing_put_port_mixer),
10047 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10048 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10049 msm_routing_get_port_mixer,
10050 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010051 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10052 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10053 msm_routing_get_port_mixer,
10054 msm_routing_put_port_mixer),
10055 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10056 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10057 msm_routing_get_port_mixer,
10058 msm_routing_put_port_mixer),
10059 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10060 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10061 msm_routing_get_port_mixer,
10062 msm_routing_put_port_mixer),
10063 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10064 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10065 msm_routing_get_port_mixer,
10066 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010067};
10068
10069static const struct snd_kcontrol_new tert_tdm_rx_1_port_mixer_controls[] = {
10070 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10071 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10072 msm_routing_get_port_mixer,
10073 msm_routing_put_port_mixer),
10074 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10075 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10076 msm_routing_get_port_mixer,
10077 msm_routing_put_port_mixer),
10078 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10079 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
10080 msm_routing_get_port_mixer,
10081 msm_routing_put_port_mixer),
10082 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10083 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10084 msm_routing_get_port_mixer,
10085 msm_routing_put_port_mixer),
10086 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10087 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10088 msm_routing_get_port_mixer,
10089 msm_routing_put_port_mixer),
10090 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10091 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10092 msm_routing_get_port_mixer,
10093 msm_routing_put_port_mixer),
10094 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10095 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10096 msm_routing_get_port_mixer,
10097 msm_routing_put_port_mixer),
10098 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10099 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10100 msm_routing_get_port_mixer,
10101 msm_routing_put_port_mixer),
10102 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10103 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10104 msm_routing_get_port_mixer,
10105 msm_routing_put_port_mixer),
10106 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10107 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10108 msm_routing_get_port_mixer,
10109 msm_routing_put_port_mixer),
10110 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10111 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10112 msm_routing_get_port_mixer,
10113 msm_routing_put_port_mixer),
10114 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10115 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10116 msm_routing_get_port_mixer,
10117 msm_routing_put_port_mixer),
10118 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10119 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10120 msm_routing_get_port_mixer,
10121 msm_routing_put_port_mixer),
10122 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10123 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10124 msm_routing_get_port_mixer,
10125 msm_routing_put_port_mixer),
10126 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10127 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10128 msm_routing_get_port_mixer,
10129 msm_routing_put_port_mixer),
10130 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10131 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10132 msm_routing_get_port_mixer,
10133 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010134 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10135 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10136 msm_routing_get_port_mixer,
10137 msm_routing_put_port_mixer),
10138 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10139 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10140 msm_routing_get_port_mixer,
10141 msm_routing_put_port_mixer),
10142 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10143 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10144 msm_routing_get_port_mixer,
10145 msm_routing_put_port_mixer),
10146 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10147 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10148 msm_routing_get_port_mixer,
10149 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010150};
10151
10152static const struct snd_kcontrol_new tert_tdm_rx_2_port_mixer_controls[] = {
10153 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10154 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10155 msm_routing_get_port_mixer,
10156 msm_routing_put_port_mixer),
10157 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10158 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10159 msm_routing_get_port_mixer,
10160 msm_routing_put_port_mixer),
10161 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10162 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
10163 msm_routing_get_port_mixer,
10164 msm_routing_put_port_mixer),
10165 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10166 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10167 msm_routing_get_port_mixer,
10168 msm_routing_put_port_mixer),
10169 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10170 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10171 msm_routing_get_port_mixer,
10172 msm_routing_put_port_mixer),
10173 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10174 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10175 msm_routing_get_port_mixer,
10176 msm_routing_put_port_mixer),
10177 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10178 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10179 msm_routing_get_port_mixer,
10180 msm_routing_put_port_mixer),
10181 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10182 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10183 msm_routing_get_port_mixer,
10184 msm_routing_put_port_mixer),
10185 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10186 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10187 msm_routing_get_port_mixer,
10188 msm_routing_put_port_mixer),
10189 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10190 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10191 msm_routing_get_port_mixer,
10192 msm_routing_put_port_mixer),
10193 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10194 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10195 msm_routing_get_port_mixer,
10196 msm_routing_put_port_mixer),
10197 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10198 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10199 msm_routing_get_port_mixer,
10200 msm_routing_put_port_mixer),
10201 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10202 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10203 msm_routing_get_port_mixer,
10204 msm_routing_put_port_mixer),
10205 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10206 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10207 msm_routing_get_port_mixer,
10208 msm_routing_put_port_mixer),
10209 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10210 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10211 msm_routing_get_port_mixer,
10212 msm_routing_put_port_mixer),
10213 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10214 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10215 msm_routing_get_port_mixer,
10216 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010217 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10218 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10219 msm_routing_get_port_mixer,
10220 msm_routing_put_port_mixer),
10221 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10222 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10223 msm_routing_get_port_mixer,
10224 msm_routing_put_port_mixer),
10225 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10226 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10227 msm_routing_get_port_mixer,
10228 msm_routing_put_port_mixer),
10229 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10230 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10231 msm_routing_get_port_mixer,
10232 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010233};
10234
10235static const struct snd_kcontrol_new tert_tdm_rx_3_port_mixer_controls[] = {
10236 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10237 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10238 msm_routing_get_port_mixer,
10239 msm_routing_put_port_mixer),
10240 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10241 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10242 msm_routing_get_port_mixer,
10243 msm_routing_put_port_mixer),
10244 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10245 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
10246 msm_routing_get_port_mixer,
10247 msm_routing_put_port_mixer),
10248 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10249 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10250 msm_routing_get_port_mixer,
10251 msm_routing_put_port_mixer),
10252 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10253 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10254 msm_routing_get_port_mixer,
10255 msm_routing_put_port_mixer),
10256 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10257 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10258 msm_routing_get_port_mixer,
10259 msm_routing_put_port_mixer),
10260 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10261 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10262 msm_routing_get_port_mixer,
10263 msm_routing_put_port_mixer),
10264 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10265 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10266 msm_routing_get_port_mixer,
10267 msm_routing_put_port_mixer),
10268 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10269 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10270 msm_routing_get_port_mixer,
10271 msm_routing_put_port_mixer),
10272 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10273 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10274 msm_routing_get_port_mixer,
10275 msm_routing_put_port_mixer),
10276 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10277 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10278 msm_routing_get_port_mixer,
10279 msm_routing_put_port_mixer),
10280 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10281 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10282 msm_routing_get_port_mixer,
10283 msm_routing_put_port_mixer),
10284 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10285 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10286 msm_routing_get_port_mixer,
10287 msm_routing_put_port_mixer),
10288 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10289 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10290 msm_routing_get_port_mixer,
10291 msm_routing_put_port_mixer),
10292 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10293 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10294 msm_routing_get_port_mixer,
10295 msm_routing_put_port_mixer),
10296 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10297 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10298 msm_routing_get_port_mixer,
10299 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010300 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10301 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10302 msm_routing_get_port_mixer,
10303 msm_routing_put_port_mixer),
10304 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10305 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10306 msm_routing_get_port_mixer,
10307 msm_routing_put_port_mixer),
10308 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10309 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10310 msm_routing_get_port_mixer,
10311 msm_routing_put_port_mixer),
10312 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10313 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10314 msm_routing_get_port_mixer,
10315 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010316};
10317
10318static const struct snd_kcontrol_new quat_tdm_rx_0_port_mixer_controls[] = {
10319 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10320 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10321 msm_routing_get_port_mixer,
10322 msm_routing_put_port_mixer),
10323 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10324 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10325 msm_routing_get_port_mixer,
10326 msm_routing_put_port_mixer),
10327 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10328 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10329 msm_routing_get_port_mixer,
10330 msm_routing_put_port_mixer),
10331 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10332 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10333 msm_routing_get_port_mixer,
10334 msm_routing_put_port_mixer),
10335 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10336 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10337 msm_routing_get_port_mixer,
10338 msm_routing_put_port_mixer),
10339 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10340 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10341 msm_routing_get_port_mixer,
10342 msm_routing_put_port_mixer),
10343 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10344 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10345 msm_routing_get_port_mixer,
10346 msm_routing_put_port_mixer),
10347 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10348 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10349 msm_routing_get_port_mixer,
10350 msm_routing_put_port_mixer),
10351 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10352 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10353 msm_routing_get_port_mixer,
10354 msm_routing_put_port_mixer),
10355 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10356 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10357 msm_routing_get_port_mixer,
10358 msm_routing_put_port_mixer),
10359 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10360 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10361 msm_routing_get_port_mixer,
10362 msm_routing_put_port_mixer),
10363 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10364 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10365 msm_routing_get_port_mixer,
10366 msm_routing_put_port_mixer),
10367 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10368 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10369 msm_routing_get_port_mixer,
10370 msm_routing_put_port_mixer),
10371 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10372 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10373 msm_routing_get_port_mixer,
10374 msm_routing_put_port_mixer),
10375 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10376 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10377 msm_routing_get_port_mixer,
10378 msm_routing_put_port_mixer),
10379 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10380 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10381 msm_routing_get_port_mixer,
10382 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010383 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10384 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10385 msm_routing_get_port_mixer,
10386 msm_routing_put_port_mixer),
10387 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10388 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10389 msm_routing_get_port_mixer,
10390 msm_routing_put_port_mixer),
10391 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10392 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10393 msm_routing_get_port_mixer,
10394 msm_routing_put_port_mixer),
10395 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10396 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10397 msm_routing_get_port_mixer,
10398 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010399};
10400
10401static const struct snd_kcontrol_new quat_tdm_rx_1_port_mixer_controls[] = {
10402 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10403 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10404 msm_routing_get_port_mixer,
10405 msm_routing_put_port_mixer),
10406 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10407 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10408 msm_routing_get_port_mixer,
10409 msm_routing_put_port_mixer),
10410 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10411 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10412 msm_routing_get_port_mixer,
10413 msm_routing_put_port_mixer),
10414 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10415 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10416 msm_routing_get_port_mixer,
10417 msm_routing_put_port_mixer),
10418 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10419 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10420 msm_routing_get_port_mixer,
10421 msm_routing_put_port_mixer),
10422 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10423 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10424 msm_routing_get_port_mixer,
10425 msm_routing_put_port_mixer),
10426 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10427 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10428 msm_routing_get_port_mixer,
10429 msm_routing_put_port_mixer),
10430 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10431 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10432 msm_routing_get_port_mixer,
10433 msm_routing_put_port_mixer),
10434 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10435 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10436 msm_routing_get_port_mixer,
10437 msm_routing_put_port_mixer),
10438 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10439 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10440 msm_routing_get_port_mixer,
10441 msm_routing_put_port_mixer),
10442 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10443 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10444 msm_routing_get_port_mixer,
10445 msm_routing_put_port_mixer),
10446 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10447 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10448 msm_routing_get_port_mixer,
10449 msm_routing_put_port_mixer),
10450 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10451 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10452 msm_routing_get_port_mixer,
10453 msm_routing_put_port_mixer),
10454 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10455 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10456 msm_routing_get_port_mixer,
10457 msm_routing_put_port_mixer),
10458 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10459 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10460 msm_routing_get_port_mixer,
10461 msm_routing_put_port_mixer),
10462 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10463 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10464 msm_routing_get_port_mixer,
10465 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010466 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10467 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10468 msm_routing_get_port_mixer,
10469 msm_routing_put_port_mixer),
10470 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10471 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10472 msm_routing_get_port_mixer,
10473 msm_routing_put_port_mixer),
10474 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10475 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10476 msm_routing_get_port_mixer,
10477 msm_routing_put_port_mixer),
10478 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10479 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10480 msm_routing_get_port_mixer,
10481 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010482};
10483
10484static const struct snd_kcontrol_new quat_tdm_rx_2_port_mixer_controls[] = {
10485 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10486 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10487 msm_routing_get_port_mixer,
10488 msm_routing_put_port_mixer),
10489 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10490 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10491 msm_routing_get_port_mixer,
10492 msm_routing_put_port_mixer),
10493 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10494 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10495 msm_routing_get_port_mixer,
10496 msm_routing_put_port_mixer),
10497 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10498 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10499 msm_routing_get_port_mixer,
10500 msm_routing_put_port_mixer),
10501 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10502 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10503 msm_routing_get_port_mixer,
10504 msm_routing_put_port_mixer),
10505 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10506 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10507 msm_routing_get_port_mixer,
10508 msm_routing_put_port_mixer),
10509 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10510 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10511 msm_routing_get_port_mixer,
10512 msm_routing_put_port_mixer),
10513 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10514 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10515 msm_routing_get_port_mixer,
10516 msm_routing_put_port_mixer),
10517 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10518 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10519 msm_routing_get_port_mixer,
10520 msm_routing_put_port_mixer),
10521 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10522 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10523 msm_routing_get_port_mixer,
10524 msm_routing_put_port_mixer),
10525 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10526 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10527 msm_routing_get_port_mixer,
10528 msm_routing_put_port_mixer),
10529 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10530 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10531 msm_routing_get_port_mixer,
10532 msm_routing_put_port_mixer),
10533 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10534 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10535 msm_routing_get_port_mixer,
10536 msm_routing_put_port_mixer),
10537 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10538 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10539 msm_routing_get_port_mixer,
10540 msm_routing_put_port_mixer),
10541 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10542 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10543 msm_routing_get_port_mixer,
10544 msm_routing_put_port_mixer),
10545 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10546 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10547 msm_routing_get_port_mixer,
10548 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010549 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10550 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10551 msm_routing_get_port_mixer,
10552 msm_routing_put_port_mixer),
10553 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10554 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10555 msm_routing_get_port_mixer,
10556 msm_routing_put_port_mixer),
10557 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10558 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10559 msm_routing_get_port_mixer,
10560 msm_routing_put_port_mixer),
10561 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10562 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10563 msm_routing_get_port_mixer,
10564 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010565};
10566
10567static const struct snd_kcontrol_new quat_tdm_rx_3_port_mixer_controls[] = {
10568 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10569 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10570 msm_routing_get_port_mixer,
10571 msm_routing_put_port_mixer),
10572 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10573 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10574 msm_routing_get_port_mixer,
10575 msm_routing_put_port_mixer),
10576 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10577 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10578 msm_routing_get_port_mixer,
10579 msm_routing_put_port_mixer),
10580 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10581 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10582 msm_routing_get_port_mixer,
10583 msm_routing_put_port_mixer),
10584 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10585 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10586 msm_routing_get_port_mixer,
10587 msm_routing_put_port_mixer),
10588 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10589 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10590 msm_routing_get_port_mixer,
10591 msm_routing_put_port_mixer),
10592 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10593 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10594 msm_routing_get_port_mixer,
10595 msm_routing_put_port_mixer),
10596 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10597 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10598 msm_routing_get_port_mixer,
10599 msm_routing_put_port_mixer),
10600 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10601 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10602 msm_routing_get_port_mixer,
10603 msm_routing_put_port_mixer),
10604 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10605 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10606 msm_routing_get_port_mixer,
10607 msm_routing_put_port_mixer),
10608 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10609 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10610 msm_routing_get_port_mixer,
10611 msm_routing_put_port_mixer),
10612 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10613 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10614 msm_routing_get_port_mixer,
10615 msm_routing_put_port_mixer),
10616 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10617 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10618 msm_routing_get_port_mixer,
10619 msm_routing_put_port_mixer),
10620 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10621 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10622 msm_routing_get_port_mixer,
10623 msm_routing_put_port_mixer),
10624 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10625 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10626 msm_routing_get_port_mixer,
10627 msm_routing_put_port_mixer),
10628 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10629 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10630 msm_routing_get_port_mixer,
10631 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010632 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10633 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10634 msm_routing_get_port_mixer,
10635 msm_routing_put_port_mixer),
10636 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10637 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10638 msm_routing_get_port_mixer,
10639 msm_routing_put_port_mixer),
10640 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10641 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10642 msm_routing_get_port_mixer,
10643 msm_routing_put_port_mixer),
10644 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10645 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10646 msm_routing_get_port_mixer,
10647 msm_routing_put_port_mixer),
10648};
10649
10650static const struct snd_kcontrol_new quin_tdm_rx_0_port_mixer_controls[] = {
10651 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10652 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10653 msm_routing_get_port_mixer,
10654 msm_routing_put_port_mixer),
10655 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10656 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10657 msm_routing_get_port_mixer,
10658 msm_routing_put_port_mixer),
10659 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10660 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10661 msm_routing_get_port_mixer,
10662 msm_routing_put_port_mixer),
10663 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10664 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10665 msm_routing_get_port_mixer,
10666 msm_routing_put_port_mixer),
10667 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10668 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10669 msm_routing_get_port_mixer,
10670 msm_routing_put_port_mixer),
10671 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10672 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10673 msm_routing_get_port_mixer,
10674 msm_routing_put_port_mixer),
10675 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10676 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10677 msm_routing_get_port_mixer,
10678 msm_routing_put_port_mixer),
10679 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10680 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10681 msm_routing_get_port_mixer,
10682 msm_routing_put_port_mixer),
10683 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10684 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10685 msm_routing_get_port_mixer,
10686 msm_routing_put_port_mixer),
10687 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10688 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10689 msm_routing_get_port_mixer,
10690 msm_routing_put_port_mixer),
10691 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10692 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10693 msm_routing_get_port_mixer,
10694 msm_routing_put_port_mixer),
10695 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10696 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10697 msm_routing_get_port_mixer,
10698 msm_routing_put_port_mixer),
10699 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10700 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10701 msm_routing_get_port_mixer,
10702 msm_routing_put_port_mixer),
10703 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10704 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10705 msm_routing_get_port_mixer,
10706 msm_routing_put_port_mixer),
10707 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10708 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10709 msm_routing_get_port_mixer,
10710 msm_routing_put_port_mixer),
10711 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10712 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10713 msm_routing_get_port_mixer,
10714 msm_routing_put_port_mixer),
10715 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10716 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10717 msm_routing_get_port_mixer,
10718 msm_routing_put_port_mixer),
10719 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10720 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10721 msm_routing_get_port_mixer,
10722 msm_routing_put_port_mixer),
10723 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10724 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10725 msm_routing_get_port_mixer,
10726 msm_routing_put_port_mixer),
10727 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10728 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10729 msm_routing_get_port_mixer,
10730 msm_routing_put_port_mixer),
10731};
10732
10733static const struct snd_kcontrol_new quin_tdm_rx_1_port_mixer_controls[] = {
10734 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10735 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10736 msm_routing_get_port_mixer,
10737 msm_routing_put_port_mixer),
10738 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10739 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10740 msm_routing_get_port_mixer,
10741 msm_routing_put_port_mixer),
10742 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10743 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10744 msm_routing_get_port_mixer,
10745 msm_routing_put_port_mixer),
10746 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10747 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10748 msm_routing_get_port_mixer,
10749 msm_routing_put_port_mixer),
10750 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10751 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10752 msm_routing_get_port_mixer,
10753 msm_routing_put_port_mixer),
10754 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10755 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10756 msm_routing_get_port_mixer,
10757 msm_routing_put_port_mixer),
10758 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10759 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10760 msm_routing_get_port_mixer,
10761 msm_routing_put_port_mixer),
10762 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10763 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10764 msm_routing_get_port_mixer,
10765 msm_routing_put_port_mixer),
10766 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10767 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10768 msm_routing_get_port_mixer,
10769 msm_routing_put_port_mixer),
10770 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10771 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10772 msm_routing_get_port_mixer,
10773 msm_routing_put_port_mixer),
10774 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10775 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10776 msm_routing_get_port_mixer,
10777 msm_routing_put_port_mixer),
10778 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10779 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10780 msm_routing_get_port_mixer,
10781 msm_routing_put_port_mixer),
10782 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10783 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10784 msm_routing_get_port_mixer,
10785 msm_routing_put_port_mixer),
10786 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10787 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10788 msm_routing_get_port_mixer,
10789 msm_routing_put_port_mixer),
10790 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10791 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10792 msm_routing_get_port_mixer,
10793 msm_routing_put_port_mixer),
10794 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10795 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10796 msm_routing_get_port_mixer,
10797 msm_routing_put_port_mixer),
10798 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10799 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10800 msm_routing_get_port_mixer,
10801 msm_routing_put_port_mixer),
10802 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10803 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10804 msm_routing_get_port_mixer,
10805 msm_routing_put_port_mixer),
10806 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10807 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10808 msm_routing_get_port_mixer,
10809 msm_routing_put_port_mixer),
10810 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10811 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10812 msm_routing_get_port_mixer,
10813 msm_routing_put_port_mixer),
10814};
10815
10816static const struct snd_kcontrol_new quin_tdm_rx_2_port_mixer_controls[] = {
10817 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10818 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10819 msm_routing_get_port_mixer,
10820 msm_routing_put_port_mixer),
10821 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10822 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10823 msm_routing_get_port_mixer,
10824 msm_routing_put_port_mixer),
10825 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10826 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10827 msm_routing_get_port_mixer,
10828 msm_routing_put_port_mixer),
10829 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10830 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10831 msm_routing_get_port_mixer,
10832 msm_routing_put_port_mixer),
10833 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10834 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10835 msm_routing_get_port_mixer,
10836 msm_routing_put_port_mixer),
10837 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10838 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10839 msm_routing_get_port_mixer,
10840 msm_routing_put_port_mixer),
10841 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10842 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10843 msm_routing_get_port_mixer,
10844 msm_routing_put_port_mixer),
10845 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10846 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10847 msm_routing_get_port_mixer,
10848 msm_routing_put_port_mixer),
10849 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10850 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10851 msm_routing_get_port_mixer,
10852 msm_routing_put_port_mixer),
10853 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10854 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10855 msm_routing_get_port_mixer,
10856 msm_routing_put_port_mixer),
10857 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10858 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10859 msm_routing_get_port_mixer,
10860 msm_routing_put_port_mixer),
10861 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10862 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10863 msm_routing_get_port_mixer,
10864 msm_routing_put_port_mixer),
10865 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10866 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10867 msm_routing_get_port_mixer,
10868 msm_routing_put_port_mixer),
10869 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10870 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10871 msm_routing_get_port_mixer,
10872 msm_routing_put_port_mixer),
10873 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10874 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10875 msm_routing_get_port_mixer,
10876 msm_routing_put_port_mixer),
10877 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10878 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10879 msm_routing_get_port_mixer,
10880 msm_routing_put_port_mixer),
10881 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10882 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10883 msm_routing_get_port_mixer,
10884 msm_routing_put_port_mixer),
10885 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10886 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10887 msm_routing_get_port_mixer,
10888 msm_routing_put_port_mixer),
10889 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10890 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10891 msm_routing_get_port_mixer,
10892 msm_routing_put_port_mixer),
10893 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10894 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10895 msm_routing_get_port_mixer,
10896 msm_routing_put_port_mixer),
10897};
10898
10899static const struct snd_kcontrol_new quin_tdm_rx_3_port_mixer_controls[] = {
10900 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10901 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10902 msm_routing_get_port_mixer,
10903 msm_routing_put_port_mixer),
10904 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10905 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10906 msm_routing_get_port_mixer,
10907 msm_routing_put_port_mixer),
10908 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10909 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10910 msm_routing_get_port_mixer,
10911 msm_routing_put_port_mixer),
10912 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10913 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10914 msm_routing_get_port_mixer,
10915 msm_routing_put_port_mixer),
10916 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10917 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10918 msm_routing_get_port_mixer,
10919 msm_routing_put_port_mixer),
10920 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10921 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10922 msm_routing_get_port_mixer,
10923 msm_routing_put_port_mixer),
10924 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10925 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10926 msm_routing_get_port_mixer,
10927 msm_routing_put_port_mixer),
10928 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10929 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10930 msm_routing_get_port_mixer,
10931 msm_routing_put_port_mixer),
10932 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10933 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10934 msm_routing_get_port_mixer,
10935 msm_routing_put_port_mixer),
10936 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10937 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10938 msm_routing_get_port_mixer,
10939 msm_routing_put_port_mixer),
10940 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10941 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10942 msm_routing_get_port_mixer,
10943 msm_routing_put_port_mixer),
10944 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10945 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10946 msm_routing_get_port_mixer,
10947 msm_routing_put_port_mixer),
10948 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10949 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10950 msm_routing_get_port_mixer,
10951 msm_routing_put_port_mixer),
10952 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10953 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10954 msm_routing_get_port_mixer,
10955 msm_routing_put_port_mixer),
10956 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10957 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10958 msm_routing_get_port_mixer,
10959 msm_routing_put_port_mixer),
10960 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10961 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10962 msm_routing_get_port_mixer,
10963 msm_routing_put_port_mixer),
10964 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10965 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10966 msm_routing_get_port_mixer,
10967 msm_routing_put_port_mixer),
10968 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10969 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10970 msm_routing_get_port_mixer,
10971 msm_routing_put_port_mixer),
10972 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10973 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10974 msm_routing_get_port_mixer,
10975 msm_routing_put_port_mixer),
10976 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10977 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10978 msm_routing_get_port_mixer,
10979 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010980};
10981
10982static const struct snd_kcontrol_new tert_mi2s_rx_port_mixer_controls[] = {
10983 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
10984 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
10985 msm_routing_put_port_mixer),
10986 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
10987 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
10988 msm_routing_put_port_mixer),
10989 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
10990 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
10991 msm_routing_put_port_mixer),
10992 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
10993 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
10994 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010995 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
10996 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
10997 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010998 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
10999 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11000 msm_routing_put_port_mixer),
11001 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
11002 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
11003 msm_routing_put_port_mixer),
11004};
11005
11006static const struct snd_kcontrol_new sec_mi2s_rx_port_mixer_controls[] = {
11007 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11008 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11009 msm_routing_put_port_mixer),
11010 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11011 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11012 msm_routing_put_port_mixer),
11013 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11014 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11015 msm_routing_put_port_mixer),
11016 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11017 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11018 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053011019 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11020 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11021 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011022 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11023 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
11024 msm_routing_put_port_mixer),
11025 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11026 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
11027 msm_routing_put_port_mixer),
11028 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11029 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
11030 msm_routing_put_port_mixer),
11031};
11032
11033static const struct snd_kcontrol_new lsm1_mixer_controls[] = {
11034 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11035 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11036 msm_routing_put_listen_mixer),
11037 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11038 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11039 msm_routing_put_listen_mixer),
11040 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11041 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11042 msm_routing_put_listen_mixer),
11043 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11044 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11045 msm_routing_put_listen_mixer),
11046 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11047 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11048 msm_routing_put_listen_mixer),
11049 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11050 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11051 msm_routing_put_listen_mixer),
11052 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11053 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11054 msm_routing_put_listen_mixer),
11055 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11056 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11057 msm_routing_put_listen_mixer),
11058};
11059
11060static const struct snd_kcontrol_new lsm2_mixer_controls[] = {
11061 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11062 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11063 msm_routing_put_listen_mixer),
11064 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11065 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11066 msm_routing_put_listen_mixer),
11067 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11068 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11069 msm_routing_put_listen_mixer),
11070 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11071 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11072 msm_routing_put_listen_mixer),
11073 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11074 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11075 msm_routing_put_listen_mixer),
11076 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11077 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11078 msm_routing_put_listen_mixer),
11079 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11080 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11081 msm_routing_put_listen_mixer),
11082 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11083 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11084 msm_routing_put_listen_mixer),
11085};
11086
11087static const struct snd_kcontrol_new lsm3_mixer_controls[] = {
11088 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11089 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11090 msm_routing_put_listen_mixer),
11091 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11092 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11093 msm_routing_put_listen_mixer),
11094 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11095 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11096 msm_routing_put_listen_mixer),
11097 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11098 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11099 msm_routing_put_listen_mixer),
11100 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11101 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11102 msm_routing_put_listen_mixer),
11103 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11104 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11105 msm_routing_put_listen_mixer),
11106 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11107 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11108 msm_routing_put_listen_mixer),
11109 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11110 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11111 msm_routing_put_listen_mixer),
11112};
11113
11114static const struct snd_kcontrol_new lsm4_mixer_controls[] = {
11115 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11116 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11117 msm_routing_put_listen_mixer),
11118 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11119 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11120 msm_routing_put_listen_mixer),
11121 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11122 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11123 msm_routing_put_listen_mixer),
11124 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11125 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11126 msm_routing_put_listen_mixer),
11127 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11128 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11129 msm_routing_put_listen_mixer),
11130 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11131 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11132 msm_routing_put_listen_mixer),
11133 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11134 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11135 msm_routing_put_listen_mixer),
11136 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11137 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11138 msm_routing_put_listen_mixer),
11139};
11140
11141static const struct snd_kcontrol_new lsm5_mixer_controls[] = {
11142 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11143 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11144 msm_routing_put_listen_mixer),
11145 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11146 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11147 msm_routing_put_listen_mixer),
11148 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11149 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11150 msm_routing_put_listen_mixer),
11151 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11152 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11153 msm_routing_put_listen_mixer),
11154 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11155 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11156 msm_routing_put_listen_mixer),
11157 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11158 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11159 msm_routing_put_listen_mixer),
11160 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11161 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11162 msm_routing_put_listen_mixer),
11163 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11164 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11165 msm_routing_put_listen_mixer),
11166};
11167
11168static const struct snd_kcontrol_new lsm6_mixer_controls[] = {
11169 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11170 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11171 msm_routing_put_listen_mixer),
11172 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11173 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11174 msm_routing_put_listen_mixer),
11175 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11176 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11177 msm_routing_put_listen_mixer),
11178 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11179 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11180 msm_routing_put_listen_mixer),
11181 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11182 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11183 msm_routing_put_listen_mixer),
11184 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11185 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11186 msm_routing_put_listen_mixer),
11187 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11188 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11189 msm_routing_put_listen_mixer),
11190 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11191 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11192 msm_routing_put_listen_mixer),
11193};
11194
11195static const struct snd_kcontrol_new lsm7_mixer_controls[] = {
11196 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11197 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11198 msm_routing_put_listen_mixer),
11199 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11200 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11201 msm_routing_put_listen_mixer),
11202 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11203 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11204 msm_routing_put_listen_mixer),
11205 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11206 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11207 msm_routing_put_listen_mixer),
11208 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11209 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11210 msm_routing_put_listen_mixer),
11211 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11212 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11213 msm_routing_put_listen_mixer),
11214 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11215 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11216 msm_routing_put_listen_mixer),
11217 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11218 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11219 msm_routing_put_listen_mixer),
11220};
11221
11222static const struct snd_kcontrol_new lsm8_mixer_controls[] = {
11223 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11224 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11225 msm_routing_put_listen_mixer),
11226 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11227 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11228 msm_routing_put_listen_mixer),
11229 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11230 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11231 msm_routing_put_listen_mixer),
11232 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11233 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11234 msm_routing_put_listen_mixer),
11235 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11236 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11237 msm_routing_put_listen_mixer),
11238 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11239 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11240 msm_routing_put_listen_mixer),
11241 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11242 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11243 msm_routing_put_listen_mixer),
11244 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11245 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11246 msm_routing_put_listen_mixer),
11247};
11248
11249static const struct snd_kcontrol_new slim_fm_switch_mixer_controls =
11250 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11251 0, 1, 0, msm_routing_get_switch_mixer,
11252 msm_routing_put_switch_mixer);
11253
11254static const struct snd_kcontrol_new slim1_fm_switch_mixer_controls =
11255 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11256 0, 1, 0, msm_routing_get_switch_mixer,
11257 msm_routing_put_switch_mixer);
11258
11259static const struct snd_kcontrol_new slim3_fm_switch_mixer_controls =
11260 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11261 0, 1, 0, msm_routing_get_switch_mixer,
11262 msm_routing_put_switch_mixer);
11263
11264static const struct snd_kcontrol_new slim4_fm_switch_mixer_controls =
11265 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11266 0, 1, 0, msm_routing_get_switch_mixer,
11267 msm_routing_put_switch_mixer);
11268
11269static const struct snd_kcontrol_new slim6_fm_switch_mixer_controls =
11270 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11271 0, 1, 0, msm_routing_get_switch_mixer,
11272 msm_routing_put_switch_mixer);
11273
11274static const struct snd_kcontrol_new pcm_rx_switch_mixer_controls =
11275 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11276 0, 1, 0, msm_routing_get_fm_pcmrx_switch_mixer,
11277 msm_routing_put_fm_pcmrx_switch_mixer);
11278
11279static const struct snd_kcontrol_new int0_mi2s_rx_switch_mixer_controls =
11280 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11281 0, 1, 0, msm_routing_get_int0_mi2s_switch_mixer,
11282 msm_routing_put_int0_mi2s_switch_mixer);
11283
11284static const struct snd_kcontrol_new int4_mi2s_rx_switch_mixer_controls =
11285 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11286 0, 1, 0, msm_routing_get_int4_mi2s_switch_mixer,
11287 msm_routing_put_int4_mi2s_switch_mixer);
11288
11289static const struct snd_kcontrol_new pri_mi2s_rx_switch_mixer_controls =
11290 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11291 0, 1, 0, msm_routing_get_pri_mi2s_switch_mixer,
11292 msm_routing_put_pri_mi2s_switch_mixer);
11293
11294static const struct snd_kcontrol_new sec_mi2s_rx_switch_mixer_controls =
11295 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11296 0, 1, 0, msm_routing_get_sec_mi2s_switch_mixer,
11297 msm_routing_put_sec_mi2s_switch_mixer);
11298
11299static const struct snd_kcontrol_new tert_mi2s_rx_switch_mixer_controls =
11300 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11301 0, 1, 0, msm_routing_get_tert_mi2s_switch_mixer,
11302 msm_routing_put_tert_mi2s_switch_mixer);
11303
11304static const struct snd_kcontrol_new quat_mi2s_rx_switch_mixer_controls =
11305 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11306 0, 1, 0, msm_routing_get_quat_mi2s_switch_mixer,
11307 msm_routing_put_quat_mi2s_switch_mixer);
11308
Rohit Kumara5077932017-09-10 22:05:05 +053011309static const struct snd_kcontrol_new quin_mi2s_rx_switch_mixer_controls =
11310 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11311 0, 1, 0, msm_routing_get_quin_mi2s_switch_mixer,
11312 msm_routing_put_quin_mi2s_switch_mixer);
11313
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011314static const struct snd_kcontrol_new hfp_pri_aux_switch_mixer_controls =
11315 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11316 0, 1, 0, msm_routing_get_hfp_switch_mixer,
11317 msm_routing_put_hfp_switch_mixer);
11318
11319static const struct snd_kcontrol_new hfp_aux_switch_mixer_controls =
11320 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11321 0, 1, 0, msm_routing_get_hfp_switch_mixer,
11322 msm_routing_put_hfp_switch_mixer);
11323
11324static const struct snd_kcontrol_new hfp_int_switch_mixer_controls =
11325 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11326 0, 1, 0, msm_routing_get_hfp_switch_mixer,
11327 msm_routing_put_hfp_switch_mixer);
11328
11329static const struct snd_kcontrol_new hfp_slim7_switch_mixer_controls =
11330 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11331 0, 1, 0, msm_routing_get_hfp_switch_mixer,
11332 msm_routing_put_hfp_switch_mixer);
11333
11334static const struct snd_kcontrol_new usb_switch_mixer_controls =
11335 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11336 0, 1, 0, msm_routing_get_usb_switch_mixer,
11337 msm_routing_put_usb_switch_mixer);
11338
11339static const struct soc_enum lsm_port_enum =
11340 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(lsm_port_text), lsm_port_text);
11341
11342static const char * const lsm_func_text[] = {
11343 "None", "AUDIO", "BEACON", "ULTRASOUND", "SWAUDIO",
11344};
11345static const struct soc_enum lsm_func_enum =
11346 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(lsm_func_text), lsm_func_text);
11347
11348static const struct snd_kcontrol_new lsm_controls[] = {
11349 /* kcontrol of lsm_function */
11350 SOC_ENUM_EXT(SLIMBUS_0_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11351 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11352 SOC_ENUM_EXT(SLIMBUS_1_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11353 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11354 SOC_ENUM_EXT(SLIMBUS_2_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11355 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11356 SOC_ENUM_EXT(SLIMBUS_3_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11357 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11358 SOC_ENUM_EXT(SLIMBUS_4_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11359 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11360 SOC_ENUM_EXT(SLIMBUS_5_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11361 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11362 SOC_ENUM_EXT(TERT_MI2S_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11363 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11364 SOC_ENUM_EXT(QUAT_MI2S_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11365 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11366 SOC_ENUM_EXT(INT3_MI2S_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11367 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11368 /* kcontrol of lsm_port */
11369 SOC_ENUM_EXT("LSM1 Port", lsm_port_enum,
11370 msm_routing_lsm_port_get,
11371 msm_routing_lsm_port_put),
11372 SOC_ENUM_EXT("LSM2 Port", lsm_port_enum,
11373 msm_routing_lsm_port_get,
11374 msm_routing_lsm_port_put),
11375 SOC_ENUM_EXT("LSM3 Port", lsm_port_enum,
11376 msm_routing_lsm_port_get,
11377 msm_routing_lsm_port_put),
11378 SOC_ENUM_EXT("LSM4 Port", lsm_port_enum,
11379 msm_routing_lsm_port_get,
11380 msm_routing_lsm_port_put),
11381 SOC_ENUM_EXT("LSM5 Port", lsm_port_enum,
11382 msm_routing_lsm_port_get,
11383 msm_routing_lsm_port_put),
11384 SOC_ENUM_EXT("LSM6 Port", lsm_port_enum,
11385 msm_routing_lsm_port_get,
11386 msm_routing_lsm_port_put),
11387 SOC_ENUM_EXT("LSM7 Port", lsm_port_enum,
11388 msm_routing_lsm_port_get,
11389 msm_routing_lsm_port_put),
11390 SOC_ENUM_EXT("LSM8 Port", lsm_port_enum,
11391 msm_routing_lsm_port_get,
11392 msm_routing_lsm_port_put),
11393};
11394
11395static const char * const aanc_slim_0_rx_text[] = {
11396 "ZERO", "SLIMBUS_0_TX", "SLIMBUS_1_TX", "SLIMBUS_2_TX", "SLIMBUS_3_TX",
11397 "SLIMBUS_4_TX", "SLIMBUS_5_TX", "SLIMBUS_6_TX"
11398};
11399
11400static const struct soc_enum aanc_slim_0_rx_enum =
11401 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(aanc_slim_0_rx_text),
11402 aanc_slim_0_rx_text);
11403
11404static const struct snd_kcontrol_new aanc_slim_0_rx_mux[] = {
11405 SOC_ENUM_EXT("AANC_SLIM_0_RX MUX", aanc_slim_0_rx_enum,
11406 msm_routing_slim_0_rx_aanc_mux_get,
11407 msm_routing_slim_0_rx_aanc_mux_put)
11408};
11409
11410static int msm_routing_get_stereo_to_custom_stereo_control(
11411 struct snd_kcontrol *kcontrol,
11412 struct snd_ctl_elem_value *ucontrol)
11413{
11414 ucontrol->value.integer.value[0] = is_custom_stereo_on;
11415 return 0;
11416}
11417
11418static int msm_routing_put_stereo_to_custom_stereo_control(
11419 struct snd_kcontrol *kcontrol,
11420 struct snd_ctl_elem_value *ucontrol)
11421{
11422 int flag = 0, i = 0, rc = 0, idx = 0;
11423 int be_index = 0, port_id, topo_id;
11424 unsigned int session_id = 0;
11425 uint16_t op_FL_ip_FL_weight = 0;
11426 uint16_t op_FL_ip_FR_weight = 0;
11427 uint16_t op_FR_ip_FL_weight = 0;
11428 uint16_t op_FR_ip_FR_weight = 0;
11429
11430 flag = ucontrol->value.integer.value[0];
11431 pr_debug("%s E flag %d\n", __func__, flag);
11432
11433 if ((is_custom_stereo_on && flag) || (!is_custom_stereo_on && !flag)) {
11434 pr_err("%s: is_custom_stereo_on %d, flag %d\n",
11435 __func__, is_custom_stereo_on, flag);
11436 return 0;
11437 }
11438 is_custom_stereo_on = flag ? true : false;
11439 pr_debug("%s:is_custom_stereo_on %d\n", __func__, is_custom_stereo_on);
11440 for (be_index = 0; be_index < MSM_BACKEND_DAI_MAX; be_index++) {
11441 port_id = msm_bedais[be_index].port_id;
11442 if (!msm_bedais[be_index].active)
11443 continue;
11444 if ((port_id != SLIMBUS_0_RX) &&
11445 (port_id != RT_PROXY_PORT_001_RX) &&
11446 (port_id != AFE_PORT_ID_PRIMARY_MI2S_RX) &&
11447 (port_id != AFE_PORT_ID_INT4_MI2S_RX))
11448 continue;
11449
11450 for_each_set_bit(i, &msm_bedais[be_index].fe_sessions[0],
11451 MSM_FRONTEND_DAI_MM_SIZE) {
11452 if (fe_dai_map[i][SESSION_TYPE_RX].perf_mode !=
11453 LEGACY_PCM_MODE)
11454 goto skip_send_custom_stereo;
11455 session_id =
11456 fe_dai_map[i][SESSION_TYPE_RX].strm_id;
11457 if (is_custom_stereo_on) {
11458 op_FL_ip_FL_weight =
11459 Q14_GAIN_ZERO_POINT_FIVE;
11460 op_FL_ip_FR_weight =
11461 Q14_GAIN_ZERO_POINT_FIVE;
11462 op_FR_ip_FL_weight =
11463 Q14_GAIN_ZERO_POINT_FIVE;
11464 op_FR_ip_FR_weight =
11465 Q14_GAIN_ZERO_POINT_FIVE;
11466 } else {
11467 op_FL_ip_FL_weight = Q14_GAIN_UNITY;
11468 op_FL_ip_FR_weight = 0;
11469 op_FR_ip_FL_weight = 0;
11470 op_FR_ip_FR_weight = Q14_GAIN_UNITY;
11471 }
11472 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++) {
11473 unsigned long copp =
11474 session_copp_map[i]
11475 [SESSION_TYPE_RX][be_index];
11476 if (!test_bit(idx, &copp))
11477 goto skip_send_custom_stereo;
11478 topo_id = adm_get_topology_for_port_copp_idx(
11479 msm_bedais[be_index].port_id, idx);
11480 if (topo_id < 0)
11481 pr_debug("%s:Err:custom stereo topo %d",
11482 __func__, topo_id);
11483 pr_debug("idx %d\n", idx);
11484 if (topo_id == DS2_ADM_COPP_TOPOLOGY_ID)
11485 rc = msm_ds2_dap_set_custom_stereo_onoff
11486 (msm_bedais[be_index].port_id,
11487 idx, is_custom_stereo_on);
11488 else if (topo_id == DOLBY_ADM_COPP_TOPOLOGY_ID)
11489 rc = dolby_dap_set_custom_stereo_onoff(
11490 msm_bedais[be_index].port_id,
11491 idx, is_custom_stereo_on);
11492 else
11493 rc = msm_qti_pp_send_stereo_to_custom_stereo_cmd
11494 (msm_bedais[be_index].port_id,
11495 idx, session_id,
11496 op_FL_ip_FL_weight,
11497 op_FL_ip_FR_weight,
11498 op_FR_ip_FL_weight,
11499 op_FR_ip_FR_weight);
11500 if (rc < 0)
11501skip_send_custom_stereo:
11502 pr_err("%s: err setting custom stereo\n",
11503 __func__);
11504 }
11505
11506 }
11507 }
11508 return 0;
11509}
11510
11511static const struct snd_kcontrol_new stereo_to_custom_stereo_controls[] = {
11512 SOC_SINGLE_EXT("Set Custom Stereo OnOff", SND_SOC_NOPM, 0,
11513 1, 0, msm_routing_get_stereo_to_custom_stereo_control,
11514 msm_routing_put_stereo_to_custom_stereo_control),
11515};
11516
11517static int msm_routing_get_app_type_cfg_control(struct snd_kcontrol *kcontrol,
11518 struct snd_ctl_elem_value *ucontrol)
11519{
11520 return 0;
11521}
11522
11523static int msm_routing_put_app_type_cfg_control(struct snd_kcontrol *kcontrol,
11524 struct snd_ctl_elem_value *ucontrol)
11525{
11526 int i = 0, j;
11527 int num_app_types = ucontrol->value.integer.value[i++];
11528
11529 pr_debug("%s\n", __func__);
11530
11531 memset(app_type_cfg, 0, MAX_APP_TYPES*
11532 sizeof(struct msm_pcm_routing_app_type_data));
11533 if (num_app_types > MAX_APP_TYPES) {
11534 pr_err("%s: number of app types exceed the max supported\n",
11535 __func__);
11536 return -EINVAL;
11537 }
11538 for (j = 0; j < num_app_types; j++) {
11539 app_type_cfg[j].app_type =
11540 ucontrol->value.integer.value[i++];
11541 app_type_cfg[j].sample_rate =
11542 ucontrol->value.integer.value[i++];
11543 app_type_cfg[j].bit_width =
11544 ucontrol->value.integer.value[i++];
11545 }
11546
11547 return 0;
11548}
11549
11550static int msm_routing_put_app_type_gain_control(struct snd_kcontrol *kcontrol,
11551 struct snd_ctl_elem_value *ucontrol)
11552{
11553 int j, fe_id, be_id, port_type;
11554 int ret = 0;
11555 unsigned long copp;
11556 struct msm_pcm_routing_bdai_data *bedai;
11557 int dir = ucontrol->value.integer.value[0] ? SESSION_TYPE_TX :
11558 SESSION_TYPE_RX;
11559 int app_type = ucontrol->value.integer.value[1];
11560 int gain = (ucontrol->value.integer.value[2] +
11561 ucontrol->value.integer.value[3])/2;
11562
11563 port_type = (dir == SESSION_TYPE_RX) ? MSM_AFE_PORT_TYPE_RX :
11564 MSM_AFE_PORT_TYPE_TX;
11565
11566 mutex_lock(&routing_lock);
11567 for (be_id = 0; be_id < MSM_BACKEND_DAI_MAX; be_id++) {
11568 if (is_be_dai_extproc(be_id))
11569 continue;
11570
11571 bedai = &msm_bedais[be_id];
11572 if (afe_get_port_type(bedai->port_id) != port_type)
11573 continue;
11574
11575 if (!bedai->active)
11576 continue;
11577
11578 for (fe_id = 0; fe_id < MSM_FRONTEND_DAI_MAX; fe_id++) {
11579 if (!test_bit(fe_id, &bedai->fe_sessions[0]))
11580 continue;
11581
11582 if (app_type !=
11583 fe_dai_app_type_cfg[fe_id][dir][be_id].app_type)
11584 continue;
11585
11586 copp = session_copp_map[fe_id][dir][be_id];
11587 for (j = 0; j < MAX_COPPS_PER_PORT; j++) {
11588 if (!test_bit(j, &copp))
11589 continue;
11590 ret |= adm_set_volume(bedai->port_id, j, gain);
11591 }
11592 }
11593 }
11594 mutex_unlock(&routing_lock);
11595 return ret ? -EINVAL : 0;
11596}
11597
11598static const struct snd_kcontrol_new app_type_cfg_controls[] = {
11599 SOC_SINGLE_MULTI_EXT("App Type Config", SND_SOC_NOPM, 0,
11600 0xFFFFFFFF, 0, 128, msm_routing_get_app_type_cfg_control,
11601 msm_routing_put_app_type_cfg_control),
11602 SOC_SINGLE_MULTI_EXT("App Type Gain", SND_SOC_NOPM, 0,
11603 0x2000, 0, 4, NULL, msm_routing_put_app_type_gain_control)
11604};
11605
Vikram Pandurangaee9c03a2017-09-07 15:06:17 -070011606static int msm_routing_put_module_cfg_control(struct snd_kcontrol *kcontrol,
11607 struct snd_ctl_elem_value *ucontrol)
11608{
11609 int copp_idx, fe_id, be_id, port_type;
11610 int ret = 0;
11611 unsigned long copp;
11612 struct msm_pcm_routing_bdai_data *bedai;
11613 char *param_data = NULL;
11614 uint32_t *update_param_data = NULL;
11615 uint32_t param_size = sizeof(uint32_t) +
11616 sizeof(struct adm_param_data_v5);
11617 int dir = ucontrol->value.integer.value[0] ? SESSION_TYPE_TX :
11618 SESSION_TYPE_RX;
11619 int app_type = ucontrol->value.integer.value[1];
11620 int module_id = ucontrol->value.integer.value[2];
11621 int instance_id = ucontrol->value.integer.value[3];
11622 int param_id = ucontrol->value.integer.value[4];
11623 int param_value = ucontrol->value.integer.value[5];
11624
11625 port_type = (dir == SESSION_TYPE_RX) ? MSM_AFE_PORT_TYPE_RX :
11626 MSM_AFE_PORT_TYPE_TX;
11627 pr_debug("%s app_type:%d mod_id:%d instance_id:%d param_id:%d value:%d\n",
11628 __func__, app_type, module_id,
11629 instance_id, param_id, param_value);
11630
11631 param_data = kzalloc(param_size, GFP_KERNEL);
11632 if (!param_data)
11633 return -ENOMEM;
11634
11635 update_param_data = (uint32_t *)param_data;
11636 *update_param_data++ = module_id;
11637 *update_param_data++ = param_id;
11638 *update_param_data++ = sizeof(uint32_t);
11639 *update_param_data++ = param_value;
11640
11641 mutex_lock(&routing_lock);
11642 for (be_id = 0; be_id < MSM_BACKEND_DAI_MAX; be_id++) {
11643 if (is_be_dai_extproc(be_id))
11644 continue;
11645
11646 bedai = &msm_bedais[be_id];
11647 if (afe_get_port_type(bedai->port_id) != port_type)
11648 continue;
11649
11650 if (!bedai->active)
11651 continue;
11652
11653 for (fe_id = 0; fe_id < MSM_FRONTEND_DAI_MAX; fe_id++) {
11654 if (!test_bit(fe_id, &bedai->fe_sessions[0]))
11655 continue;
11656
11657 if (app_type !=
11658 fe_dai_app_type_cfg[fe_id][dir][be_id].app_type)
11659 continue;
11660
11661 copp = session_copp_map[fe_id][dir][be_id];
11662 for (copp_idx = 0; copp_idx < MAX_COPPS_PER_PORT;
11663 copp_idx++) {
11664 if (!test_bit(copp_idx, &copp))
11665 continue;
11666
11667 ret = adm_send_params_v5(bedai->port_id,
11668 copp_idx,
11669 param_data,
11670 param_size);
11671 if (ret) {
11672 pr_err("%s: Setting param failed with err=%d\n",
11673 __func__, ret);
11674 ret = -EINVAL;
11675 goto done;
11676 }
11677 }
11678 }
11679 }
11680done:
11681 mutex_unlock(&routing_lock);
11682 kfree(param_data);
11683 return ret;
11684}
11685
11686static const struct snd_kcontrol_new module_cfg_controls[] = {
11687 SOC_SINGLE_MULTI_EXT("Audio Effect", SND_SOC_NOPM, 0,
11688 0x2000, 0, 6, NULL, msm_routing_put_module_cfg_control)
11689};
11690
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011691static int msm_routing_get_lsm_app_type_cfg_control(
11692 struct snd_kcontrol *kcontrol,
11693 struct snd_ctl_elem_value *ucontrol)
11694{
11695 return 0;
11696}
11697
11698static int msm_routing_put_lsm_app_type_cfg_control(
11699 struct snd_kcontrol *kcontrol,
11700 struct snd_ctl_elem_value *ucontrol)
11701{
11702 int i = 0, j;
11703 int num_app_types = ucontrol->value.integer.value[i++];
11704
11705 memset(lsm_app_type_cfg, 0, MAX_APP_TYPES*
11706 sizeof(struct msm_pcm_routing_app_type_data));
11707 if (num_app_types > MAX_APP_TYPES) {
11708 pr_err("%s: number of app types exceed the max supported\n",
11709 __func__);
11710 return -EINVAL;
11711 }
11712 for (j = 0; j < num_app_types; j++) {
11713 lsm_app_type_cfg[j].app_type =
11714 ucontrol->value.integer.value[i++];
11715 lsm_app_type_cfg[j].sample_rate =
11716 ucontrol->value.integer.value[i++];
11717 lsm_app_type_cfg[j].bit_width =
11718 ucontrol->value.integer.value[i++];
11719 }
11720
11721 return 0;
11722}
11723
11724static const struct snd_kcontrol_new lsm_app_type_cfg_controls[] = {
11725 SOC_SINGLE_MULTI_EXT("Listen App Type Config", SND_SOC_NOPM, 0,
11726 0xFFFFFFFF, 0, 128, msm_routing_get_lsm_app_type_cfg_control,
11727 msm_routing_put_lsm_app_type_cfg_control),
11728};
11729
11730static int msm_routing_get_use_ds1_or_ds2_control(
11731 struct snd_kcontrol *kcontrol,
11732 struct snd_ctl_elem_value *ucontrol)
11733{
11734 ucontrol->value.integer.value[0] = is_ds2_on;
11735 return 0;
11736}
11737
11738static int msm_routing_put_use_ds1_or_ds2_control(
11739 struct snd_kcontrol *kcontrol,
11740 struct snd_ctl_elem_value *ucontrol)
11741{
11742 is_ds2_on = ucontrol->value.integer.value[0];
11743 return 0;
11744}
11745
11746static const struct snd_kcontrol_new use_ds1_or_ds2_controls[] = {
11747 SOC_SINGLE_EXT("DS2 OnOff", SND_SOC_NOPM, 0,
11748 1, 0, msm_routing_get_use_ds1_or_ds2_control,
11749 msm_routing_put_use_ds1_or_ds2_control),
11750};
11751
11752int msm_routing_get_rms_value_control(struct snd_kcontrol *kcontrol,
11753 struct snd_ctl_elem_value *ucontrol) {
11754 int rc = 0;
11755 int be_idx = 0;
11756 char *param_value;
11757 int *update_param_value;
11758 uint32_t param_length = sizeof(uint32_t);
11759 uint32_t param_payload_len = RMS_PAYLOAD_LEN * sizeof(uint32_t);
11760
11761 param_value = kzalloc(param_length + param_payload_len, GFP_KERNEL);
11762 if (!param_value)
11763 return -ENOMEM;
11764
11765 for (be_idx = 0; be_idx < MSM_BACKEND_DAI_MAX; be_idx++)
11766 if (msm_bedais[be_idx].port_id == SLIMBUS_0_TX)
11767 break;
11768 if ((be_idx < MSM_BACKEND_DAI_MAX) && msm_bedais[be_idx].active) {
11769 rc = adm_get_params(SLIMBUS_0_TX, 0,
11770 RMS_MODULEID_APPI_PASSTHRU,
11771 RMS_PARAM_FIRST_SAMPLE,
11772 param_length + param_payload_len,
11773 param_value);
11774 if (rc) {
11775 pr_err("%s: get parameters failed:%d\n", __func__, rc);
11776 kfree(param_value);
11777 return -EINVAL;
11778 }
11779 update_param_value = (int *)param_value;
11780 ucontrol->value.integer.value[0] = update_param_value[0];
11781
11782 pr_debug("%s: FROM DSP value[0] 0x%x\n",
11783 __func__, update_param_value[0]);
11784 }
11785 kfree(param_value);
11786 return 0;
11787}
11788
11789static int msm_voc_session_id_put(struct snd_kcontrol *kcontrol,
11790 struct snd_ctl_elem_value *ucontrol)
11791{
11792 voc_session_id = ucontrol->value.integer.value[0];
11793
11794 pr_debug("%s: voc_session_id=%u\n", __func__, voc_session_id);
11795
11796 return 0;
11797}
11798
11799static int msm_voc_session_id_get(struct snd_kcontrol *kcontrol,
11800 struct snd_ctl_elem_value *ucontrol)
11801{
11802 ucontrol->value.integer.value[0] = voc_session_id;
11803
11804 return 0;
11805}
11806
11807static struct snd_kcontrol_new msm_voc_session_controls[] = {
11808 SOC_SINGLE_MULTI_EXT("Voc VSID", SND_SOC_NOPM, 0,
11809 0xFFFFFFFF, 0, 1, msm_voc_session_id_get,
11810 msm_voc_session_id_put),
11811};
11812
11813static int msm_sound_focus_info(struct snd_kcontrol *kcontrol,
11814 struct snd_ctl_elem_info *uinfo)
11815{
11816 uinfo->type = SNDRV_CTL_ELEM_TYPE_BYTES;
11817 uinfo->count = sizeof(struct sound_focus_param);
11818
11819 return 0;
11820}
11821
11822static int msm_voice_sound_focus_put(struct snd_kcontrol *kcontrol,
11823 struct snd_ctl_elem_value *ucontrol)
11824{
11825 int ret = 0;
11826 struct sound_focus_param soundFocusData;
11827
11828 memcpy((void *)&soundFocusData, ucontrol->value.bytes.data,
11829 sizeof(struct sound_focus_param));
11830 ret = voc_set_sound_focus(soundFocusData);
11831 if (ret) {
11832 pr_err("%s: Error setting Sound Focus Params, err=%d\n",
11833 __func__, ret);
11834
11835 ret = -EINVAL;
11836 }
11837
11838 return ret;
11839}
11840
11841static int msm_voice_sound_focus_get(struct snd_kcontrol *kcontrol,
11842 struct snd_ctl_elem_value *ucontrol)
11843{
11844 int ret = 0;
11845 struct sound_focus_param soundFocusData;
11846
11847 memset(&soundFocusData, 0, sizeof(struct sound_focus_param));
11848
11849 ret = voc_get_sound_focus(&soundFocusData);
11850 if (ret) {
11851 pr_err("%s: Error getting Sound Focus Params, err=%d\n",
11852 __func__, ret);
11853
11854 ret = -EINVAL;
11855 goto done;
11856 }
11857 memcpy(ucontrol->value.bytes.data, (void *)&soundFocusData,
11858 sizeof(struct sound_focus_param));
11859
11860done:
11861 return ret;
11862}
11863
11864static int msm_source_tracking_info(struct snd_kcontrol *kcontrol,
11865 struct snd_ctl_elem_info *uinfo)
11866{
11867 uinfo->type = SNDRV_CTL_ELEM_TYPE_BYTES;
11868 uinfo->count = sizeof(struct source_tracking_param);
11869
11870 return 0;
11871}
11872
11873static int msm_voice_source_tracking_get(struct snd_kcontrol *kcontrol,
11874 struct snd_ctl_elem_value *ucontrol)
11875{
11876 int ret = 0;
11877 struct source_tracking_param sourceTrackingData;
11878
11879 memset(&sourceTrackingData, 0, sizeof(struct source_tracking_param));
11880
11881 ret = voc_get_source_tracking(&sourceTrackingData);
11882 if (ret) {
11883 pr_err("%s: Error getting Source Tracking Params, err=%d\n",
11884 __func__, ret);
11885
11886 ret = -EINVAL;
11887 goto done;
11888 }
11889 memcpy(ucontrol->value.bytes.data, (void *)&sourceTrackingData,
11890 sizeof(struct source_tracking_param));
11891
11892done:
11893 return ret;
11894}
11895
11896static int msm_audio_get_copp_idx_from_port_id(int port_id, int session_type,
11897 int *copp_idx)
11898{
11899 int i, idx, be_idx;
11900 int ret = 0;
11901 unsigned long copp;
11902
11903 pr_debug("%s: Enter, port_id=%d\n", __func__, port_id);
11904
11905 ret = q6audio_validate_port(port_id);
11906 if (ret < 0) {
11907 pr_err("%s: port validation failed id 0x%x ret %d\n",
11908 __func__, port_id, ret);
11909
11910 ret = -EINVAL;
11911 goto done;
11912 }
11913
11914 for (be_idx = 0; be_idx < MSM_BACKEND_DAI_MAX; be_idx++) {
11915 if (msm_bedais[be_idx].port_id == port_id)
11916 break;
11917 }
11918 if (be_idx >= MSM_BACKEND_DAI_MAX) {
11919 pr_err("%s: Invalid be id %d\n", __func__, be_idx);
11920
11921 ret = -EINVAL;
11922 goto done;
11923 }
11924
11925 for_each_set_bit(i, &msm_bedais[be_idx].fe_sessions[0],
11926 MSM_FRONTEND_DAI_MM_SIZE) {
11927 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++) {
11928 copp = session_copp_map[i]
11929 [session_type][be_idx];
11930 if (test_bit(idx, &copp))
11931 break;
11932 }
11933 if (idx >= MAX_COPPS_PER_PORT)
11934 continue;
11935 else
11936 break;
11937 }
11938 if (i >= MSM_FRONTEND_DAI_MM_SIZE) {
11939 pr_err("%s: Invalid FE, exiting\n", __func__);
11940
11941 ret = -EINVAL;
11942 goto done;
11943 }
11944 *copp_idx = idx;
11945 pr_debug("%s: copp_idx=%d\n", __func__, *copp_idx);
11946
11947done:
11948 return ret;
11949}
11950
11951static int msm_audio_sound_focus_derive_port_id(struct snd_kcontrol *kcontrol,
11952 const char *prefix, int *port_id)
11953{
11954 int ret = 0;
11955
11956 pr_debug("%s: Enter, prefix:%s\n", __func__, prefix);
11957
11958 /*
11959 * Mixer control name will be like "Sound Focus Audio Tx SLIMBUS_0"
11960 * where the prefix is "Sound Focus Audio Tx ". Skip the prefix
11961 * and compare the string with the backend name to derive the port id.
11962 */
11963 if (!strcmp(kcontrol->id.name + strlen(prefix),
11964 "SLIMBUS_0")) {
11965 *port_id = SLIMBUS_0_TX;
11966 } else if (!strcmp(kcontrol->id.name + strlen(prefix),
11967 "TERT_MI2S")) {
11968 *port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
11969 } else if (!strcmp(kcontrol->id.name + strlen(prefix),
11970 "INT3_MI2S")) {
11971 *port_id = AFE_PORT_ID_INT3_MI2S_TX;
11972 } else {
11973 pr_err("%s: mixer ctl name=%s, could not derive valid port id\n",
11974 __func__, kcontrol->id.name);
11975
11976 ret = -EINVAL;
11977 goto done;
11978 }
11979 pr_debug("%s: mixer ctl name=%s, derived port_id=%d\n",
11980 __func__, kcontrol->id.name, *port_id);
11981
11982done:
11983 return ret;
11984}
11985
11986static int msm_audio_sound_focus_put(struct snd_kcontrol *kcontrol,
11987 struct snd_ctl_elem_value *ucontrol)
11988{
11989 int ret = 0;
11990 struct sound_focus_param soundFocusData;
11991 int port_id, copp_idx;
11992
11993 ret = msm_audio_sound_focus_derive_port_id(kcontrol,
11994 "Sound Focus Audio Tx ", &port_id);
11995 if (ret != 0) {
11996 pr_err("%s: Error in deriving port id, err=%d\n",
11997 __func__, ret);
11998
11999 ret = -EINVAL;
12000 goto done;
12001 }
12002
12003 ret = msm_audio_get_copp_idx_from_port_id(port_id, SESSION_TYPE_TX,
12004 &copp_idx);
12005 if (ret) {
12006 pr_err("%s: Could not get copp idx for port_id=%d\n",
12007 __func__, port_id);
12008
12009 ret = -EINVAL;
12010 goto done;
12011 }
12012
12013 memcpy((void *)&soundFocusData, ucontrol->value.bytes.data,
12014 sizeof(struct sound_focus_param));
12015
12016 ret = adm_set_sound_focus(port_id, copp_idx, soundFocusData);
12017 if (ret) {
12018 pr_err("%s: Error setting Sound Focus Params, err=%d\n",
12019 __func__, ret);
12020
12021 ret = -EINVAL;
12022 goto done;
12023 }
12024
12025done:
12026 return ret;
12027}
12028
12029static int msm_audio_sound_focus_get(struct snd_kcontrol *kcontrol,
12030 struct snd_ctl_elem_value *ucontrol)
12031{
12032 int ret = 0;
12033 struct sound_focus_param soundFocusData;
12034 int port_id, copp_idx;
12035
12036 ret = msm_audio_sound_focus_derive_port_id(kcontrol,
12037 "Sound Focus Audio Tx ", &port_id);
12038 if (ret) {
12039 pr_err("%s: Error in deriving port id, err=%d\n",
12040 __func__, ret);
12041
12042 ret = -EINVAL;
12043 goto done;
12044 }
12045
12046 ret = msm_audio_get_copp_idx_from_port_id(port_id, SESSION_TYPE_TX,
12047 &copp_idx);
12048 if (ret) {
12049 pr_err("%s: Could not get copp idx for port_id=%d\n",
12050 __func__, port_id);
12051
12052 ret = -EINVAL;
12053 goto done;
12054 }
12055
12056 ret = adm_get_sound_focus(port_id, copp_idx, &soundFocusData);
12057 if (ret) {
12058 pr_err("%s: Error getting Sound Focus Params, err=%d\n",
12059 __func__, ret);
12060
12061 ret = -EINVAL;
12062 goto done;
12063 }
12064
12065 memcpy(ucontrol->value.bytes.data, (void *)&soundFocusData,
12066 sizeof(struct sound_focus_param));
12067
12068done:
12069 return ret;
12070}
12071
12072static int msm_audio_source_tracking_get(struct snd_kcontrol *kcontrol,
12073 struct snd_ctl_elem_value *ucontrol)
12074{
12075 int ret = 0;
12076 struct source_tracking_param sourceTrackingData;
12077 int port_id, copp_idx;
12078
12079 ret = msm_audio_sound_focus_derive_port_id(kcontrol,
12080 "Source Tracking Audio Tx ", &port_id);
12081 if (ret) {
12082 pr_err("%s: Error in deriving port id, err=%d\n",
12083 __func__, ret);
12084
12085 ret = -EINVAL;
12086 goto done;
12087 }
12088
12089 ret = msm_audio_get_copp_idx_from_port_id(port_id, SESSION_TYPE_TX,
12090 &copp_idx);
12091 if (ret) {
12092 pr_err("%s: Could not get copp idx for port_id=%d\n",
12093 __func__, port_id);
12094
12095 ret = -EINVAL;
12096 goto done;
12097 }
12098
12099 ret = adm_get_source_tracking(port_id, copp_idx, &sourceTrackingData);
12100 if (ret) {
12101 pr_err("%s: Error getting Source Tracking Params, err=%d\n",
12102 __func__, ret);
12103
12104 ret = -EINVAL;
12105 goto done;
12106 }
12107
12108 memcpy(ucontrol->value.bytes.data, (void *)&sourceTrackingData,
12109 sizeof(struct source_tracking_param));
12110
12111done:
12112 return ret;
12113}
12114
12115static const struct snd_kcontrol_new msm_source_tracking_controls[] = {
12116 {
12117 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12118 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12119 .name = "Sound Focus Voice Tx SLIMBUS_0",
12120 .info = msm_sound_focus_info,
12121 .get = msm_voice_sound_focus_get,
12122 .put = msm_voice_sound_focus_put,
12123 },
12124 {
12125 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12126 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12127 .name = "Source Tracking Voice Tx SLIMBUS_0",
12128 .info = msm_source_tracking_info,
12129 .get = msm_voice_source_tracking_get,
12130 },
12131 {
12132 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12133 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12134 .name = "Sound Focus Audio Tx SLIMBUS_0",
12135 .info = msm_sound_focus_info,
12136 .get = msm_audio_sound_focus_get,
12137 .put = msm_audio_sound_focus_put,
12138 },
12139 {
12140 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12141 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12142 .name = "Source Tracking Audio Tx SLIMBUS_0",
12143 .info = msm_source_tracking_info,
12144 .get = msm_audio_source_tracking_get,
12145 },
12146 {
12147 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12148 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12149 .name = "Sound Focus Voice Tx TERT_MI2S",
12150 .info = msm_sound_focus_info,
12151 .get = msm_voice_sound_focus_get,
12152 .put = msm_voice_sound_focus_put,
12153 },
12154 {
12155 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12156 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12157 .name = "Source Tracking Voice Tx TERT_MI2S",
12158 .info = msm_source_tracking_info,
12159 .get = msm_voice_source_tracking_get,
12160 },
12161 {
12162 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12163 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12164 .name = "Sound Focus Audio Tx TERT_MI2S",
12165 .info = msm_sound_focus_info,
12166 .get = msm_audio_sound_focus_get,
12167 .put = msm_audio_sound_focus_put,
12168 },
12169 {
12170 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12171 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12172 .name = "Source Tracking Audio Tx TERT_MI2S",
12173 .info = msm_source_tracking_info,
12174 .get = msm_audio_source_tracking_get,
12175 },
12176 {
12177 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12178 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12179 .name = "Sound Focus Voice Tx INT3_MI2S",
12180 .info = msm_sound_focus_info,
12181 .get = msm_voice_sound_focus_get,
12182 .put = msm_voice_sound_focus_put,
12183 },
12184 {
12185 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12186 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12187 .name = "Source Tracking Voice Tx INT3_MI2S",
12188 .info = msm_source_tracking_info,
12189 .get = msm_voice_source_tracking_get,
12190 },
12191 {
12192 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12193 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12194 .name = "Sound Focus Audio Tx INT3_MI2S",
12195 .info = msm_sound_focus_info,
12196 .get = msm_audio_sound_focus_get,
12197 .put = msm_audio_sound_focus_put,
12198 },
12199 {
12200 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12201 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12202 .name = "Source Tracking Audio Tx INT3_MI2S",
12203 .info = msm_source_tracking_info,
12204 .get = msm_audio_source_tracking_get,
12205 },
12206};
12207
12208static int spkr_prot_put_vi_lch_port(struct snd_kcontrol *kcontrol,
12209 struct snd_ctl_elem_value *ucontrol)
12210{
12211 int ret = 0;
12212 int item;
12213 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
12214
12215 pr_debug("%s item is %d\n", __func__,
12216 ucontrol->value.enumerated.item[0]);
12217 mutex_lock(&routing_lock);
12218 item = ucontrol->value.enumerated.item[0];
12219 if (item < e->items) {
12220 pr_debug("%s RX DAI ID %d TX DAI id %d\n",
12221 __func__, e->shift_l, e->values[item]);
12222 if (e->shift_l < MSM_BACKEND_DAI_MAX &&
12223 e->values[item] < MSM_BACKEND_DAI_MAX)
12224 /* Enable feedback TX path */
12225 ret = afe_spk_prot_feed_back_cfg(
12226 msm_bedais[e->values[item]].port_id,
12227 msm_bedais[e->shift_l].port_id, 1, 0, 1);
12228 else {
12229 pr_debug("%s values are out of range item %d\n",
12230 __func__, e->values[item]);
12231 /* Disable feedback TX path */
12232 if (e->values[item] == MSM_BACKEND_DAI_MAX)
12233 ret = afe_spk_prot_feed_back_cfg(0, 0, 0, 0, 0);
12234 else
12235 ret = -EINVAL;
12236 }
12237 } else {
12238 pr_err("%s item value is out of range item\n", __func__);
12239 ret = -EINVAL;
12240 }
12241 mutex_unlock(&routing_lock);
12242 return ret;
12243}
12244
12245static int spkr_prot_put_vi_rch_port(struct snd_kcontrol *kcontrol,
12246 struct snd_ctl_elem_value *ucontrol)
12247{
12248 int ret = 0;
12249 int item;
12250 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
12251
12252 pr_debug("%s item is %d\n", __func__,
12253 ucontrol->value.enumerated.item[0]);
12254 mutex_lock(&routing_lock);
12255 item = ucontrol->value.enumerated.item[0];
12256 if (item < e->items) {
12257 pr_debug("%s RX DAI ID %d TX DAI id %d\n",
12258 __func__, e->shift_l, e->values[item]);
12259 if (e->shift_l < MSM_BACKEND_DAI_MAX &&
12260 e->values[item] < MSM_BACKEND_DAI_MAX)
12261 /* Enable feedback TX path */
12262 ret = afe_spk_prot_feed_back_cfg(
12263 msm_bedais[e->values[item]].port_id,
12264 msm_bedais[e->shift_l].port_id,
12265 1, 1, 1);
12266 else {
12267 pr_debug("%s values are out of range item %d\n",
12268 __func__, e->values[item]);
12269 /* Disable feedback TX path */
12270 if (e->values[item] == MSM_BACKEND_DAI_MAX)
12271 ret = afe_spk_prot_feed_back_cfg(0,
12272 0, 0, 0, 0);
12273 else
12274 ret = -EINVAL;
12275 }
12276 } else {
12277 pr_err("%s item value is out of range item\n", __func__);
12278 ret = -EINVAL;
12279 }
12280 mutex_unlock(&routing_lock);
12281 return ret;
12282}
12283
12284static int spkr_prot_get_vi_lch_port(struct snd_kcontrol *kcontrol,
12285 struct snd_ctl_elem_value *ucontrol)
12286{
12287 pr_debug("%s\n", __func__);
12288 return 0;
12289}
12290
12291static int spkr_prot_get_vi_rch_port(struct snd_kcontrol *kcontrol,
12292 struct snd_ctl_elem_value *ucontrol)
12293{
12294 pr_debug("%s\n", __func__);
12295 ucontrol->value.enumerated.item[0] = 0;
12296 return 0;
12297}
12298
12299static const char * const slim0_rx_vi_fb_tx_lch_mux_text[] = {
12300 "ZERO", "SLIM4_TX"
12301};
12302
12303static const char * const slim0_rx_vi_fb_tx_rch_mux_text[] = {
12304 "ZERO", "SLIM4_TX"
12305};
12306
12307static const char * const mi2s_rx_vi_fb_tx_mux_text[] = {
12308 "ZERO", "SENARY_TX"
12309};
12310
12311static const char * const int4_mi2s_rx_vi_fb_tx_mono_mux_text[] = {
12312 "ZERO", "INT5_MI2S_TX"
12313};
12314
12315static const char * const int4_mi2s_rx_vi_fb_tx_stereo_mux_text[] = {
12316 "ZERO", "INT5_MI2S_TX"
12317};
12318
12319static const int const slim0_rx_vi_fb_tx_lch_value[] = {
12320 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_SLIMBUS_4_TX
12321};
12322
12323static const int const slim0_rx_vi_fb_tx_rch_value[] = {
12324 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_SLIMBUS_4_TX
12325};
12326
12327static const int const mi2s_rx_vi_fb_tx_value[] = {
12328 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_SENARY_MI2S_TX
12329};
12330
12331static const int const int4_mi2s_rx_vi_fb_tx_mono_ch_value[] = {
12332 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_INT5_MI2S_TX
12333};
12334
12335static const int const int4_mi2s_rx_vi_fb_tx_stereo_ch_value[] = {
12336 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_INT5_MI2S_TX
12337};
12338
12339static const struct soc_enum slim0_rx_vi_fb_lch_mux_enum =
12340 SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_SLIMBUS_0_RX, 0, 0,
12341 ARRAY_SIZE(slim0_rx_vi_fb_tx_lch_mux_text),
12342 slim0_rx_vi_fb_tx_lch_mux_text, slim0_rx_vi_fb_tx_lch_value);
12343
12344static const struct soc_enum slim0_rx_vi_fb_rch_mux_enum =
12345 SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_SLIMBUS_0_RX, 0, 0,
12346 ARRAY_SIZE(slim0_rx_vi_fb_tx_rch_mux_text),
12347 slim0_rx_vi_fb_tx_rch_mux_text, slim0_rx_vi_fb_tx_rch_value);
12348
12349static const struct soc_enum mi2s_rx_vi_fb_mux_enum =
12350 SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_PRI_MI2S_RX, 0, 0,
12351 ARRAY_SIZE(mi2s_rx_vi_fb_tx_mux_text),
12352 mi2s_rx_vi_fb_tx_mux_text, mi2s_rx_vi_fb_tx_value);
12353
12354static const struct soc_enum int4_mi2s_rx_vi_fb_mono_ch_mux_enum =
12355 SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_INT4_MI2S_RX, 0, 0,
12356 ARRAY_SIZE(int4_mi2s_rx_vi_fb_tx_mono_mux_text),
12357 int4_mi2s_rx_vi_fb_tx_mono_mux_text,
12358 int4_mi2s_rx_vi_fb_tx_mono_ch_value);
12359
12360static const struct soc_enum int4_mi2s_rx_vi_fb_stereo_ch_mux_enum =
12361 SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_INT4_MI2S_RX, 0, 0,
12362 ARRAY_SIZE(int4_mi2s_rx_vi_fb_tx_stereo_mux_text),
12363 int4_mi2s_rx_vi_fb_tx_stereo_mux_text,
12364 int4_mi2s_rx_vi_fb_tx_stereo_ch_value);
12365
12366static const struct snd_kcontrol_new slim0_rx_vi_fb_lch_mux =
12367 SOC_DAPM_ENUM_EXT("SLIM0_RX_VI_FB_LCH_MUX",
12368 slim0_rx_vi_fb_lch_mux_enum, spkr_prot_get_vi_lch_port,
12369 spkr_prot_put_vi_lch_port);
12370
12371static const struct snd_kcontrol_new slim0_rx_vi_fb_rch_mux =
12372 SOC_DAPM_ENUM_EXT("SLIM0_RX_VI_FB_RCH_MUX",
12373 slim0_rx_vi_fb_rch_mux_enum, spkr_prot_get_vi_rch_port,
12374 spkr_prot_put_vi_rch_port);
12375
12376static const struct snd_kcontrol_new mi2s_rx_vi_fb_mux =
12377 SOC_DAPM_ENUM_EXT("PRI_MI2S_RX_VI_FB_MUX",
12378 mi2s_rx_vi_fb_mux_enum, spkr_prot_get_vi_lch_port,
12379 spkr_prot_put_vi_lch_port);
12380
12381static const struct snd_kcontrol_new int4_mi2s_rx_vi_fb_mono_ch_mux =
12382 SOC_DAPM_ENUM_EXT("INT4_MI2S_RX_VI_FB_MONO_CH_MUX",
12383 int4_mi2s_rx_vi_fb_mono_ch_mux_enum, spkr_prot_get_vi_lch_port,
12384 spkr_prot_put_vi_lch_port);
12385
12386static const struct snd_kcontrol_new int4_mi2s_rx_vi_fb_stereo_ch_mux =
12387 SOC_DAPM_ENUM_EXT("INT4_MI2S_RX_VI_FB_STEREO_CH_MUX",
12388 int4_mi2s_rx_vi_fb_stereo_ch_mux_enum, spkr_prot_get_vi_rch_port,
12389 spkr_prot_put_vi_rch_port);
12390
12391static const struct snd_soc_dapm_widget msm_qdsp6_widgets[] = {
12392 /* Frontend AIF */
12393 /* Widget name equals to Front-End DAI name<Need confirmation>,
12394 * Stream name must contains substring of front-end dai name
12395 */
12396 SND_SOC_DAPM_AIF_IN("MM_DL1", "MultiMedia1 Playback", 0, 0, 0, 0),
12397 SND_SOC_DAPM_AIF_IN("MM_DL2", "MultiMedia2 Playback", 0, 0, 0, 0),
12398 SND_SOC_DAPM_AIF_IN("MM_DL3", "MultiMedia3 Playback", 0, 0, 0, 0),
12399 SND_SOC_DAPM_AIF_IN("MM_DL4", "MultiMedia4 Playback", 0, 0, 0, 0),
12400 SND_SOC_DAPM_AIF_IN("MM_DL5", "MultiMedia5 Playback", 0, 0, 0, 0),
12401 SND_SOC_DAPM_AIF_IN("MM_DL6", "MultiMedia6 Playback", 0, 0, 0, 0),
12402 SND_SOC_DAPM_AIF_IN("MM_DL7", "MultiMedia7 Playback", 0, 0, 0, 0),
12403 SND_SOC_DAPM_AIF_IN("MM_DL8", "MultiMedia8 Playback", 0, 0, 0, 0),
12404 SND_SOC_DAPM_AIF_IN("MM_DL9", "MultiMedia9 Playback", 0, 0, 0, 0),
12405 SND_SOC_DAPM_AIF_IN("MM_DL10", "MultiMedia10 Playback", 0, 0, 0, 0),
12406 SND_SOC_DAPM_AIF_IN("MM_DL11", "MultiMedia11 Playback", 0, 0, 0, 0),
12407 SND_SOC_DAPM_AIF_IN("MM_DL12", "MultiMedia12 Playback", 0, 0, 0, 0),
12408 SND_SOC_DAPM_AIF_IN("MM_DL13", "MultiMedia13 Playback", 0, 0, 0, 0),
12409 SND_SOC_DAPM_AIF_IN("MM_DL14", "MultiMedia14 Playback", 0, 0, 0, 0),
12410 SND_SOC_DAPM_AIF_IN("MM_DL15", "MultiMedia15 Playback", 0, 0, 0, 0),
12411 SND_SOC_DAPM_AIF_IN("MM_DL16", "MultiMedia16 Playback", 0, 0, 0, 0),
12412 SND_SOC_DAPM_AIF_IN("MM_DL20", "MultiMedia20 Playback", 0, 0, 0, 0),
12413 SND_SOC_DAPM_AIF_IN("VOIP_DL", "VoIP Playback", 0, 0, 0, 0),
12414 SND_SOC_DAPM_AIF_OUT("MM_UL1", "MultiMedia1 Capture", 0, 0, 0, 0),
12415 SND_SOC_DAPM_AIF_OUT("MM_UL2", "MultiMedia2 Capture", 0, 0, 0, 0),
12416 SND_SOC_DAPM_AIF_OUT("MM_UL3", "MultiMedia3 Capture", 0, 0, 0, 0),
12417 SND_SOC_DAPM_AIF_OUT("MM_UL4", "MultiMedia4 Capture", 0, 0, 0, 0),
12418 SND_SOC_DAPM_AIF_OUT("MM_UL5", "MultiMedia5 Capture", 0, 0, 0, 0),
12419 SND_SOC_DAPM_AIF_OUT("MM_UL6", "MultiMedia6 Capture", 0, 0, 0, 0),
12420 SND_SOC_DAPM_AIF_OUT("MM_UL8", "MultiMedia8 Capture", 0, 0, 0, 0),
12421 SND_SOC_DAPM_AIF_OUT("MM_UL9", "MultiMedia9 Capture", 0, 0, 0, 0),
Laxminath Kasam38070be2017-08-17 18:21:59 +053012422 SND_SOC_DAPM_AIF_OUT("MM_UL10", "MultiMedia10 Capture", 0, 0, 0, 0),
Asish Bhattacharya34504582017-08-08 12:55:01 +053012423 SND_SOC_DAPM_AIF_OUT("MM_UL16", "MultiMedia16 Capture", 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012424 SND_SOC_DAPM_AIF_OUT("MM_UL17", "MultiMedia17 Capture", 0, 0, 0, 0),
12425 SND_SOC_DAPM_AIF_OUT("MM_UL18", "MultiMedia18 Capture", 0, 0, 0, 0),
12426 SND_SOC_DAPM_AIF_OUT("MM_UL19", "MultiMedia19 Capture", 0, 0, 0, 0),
12427 SND_SOC_DAPM_AIF_OUT("MM_UL20", "MultiMedia20 Capture", 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012428 SND_SOC_DAPM_AIF_OUT("VOIP_UL", "VoIP Capture", 0, 0, 0, 0),
12429 SND_SOC_DAPM_AIF_IN("VOICEMMODE1_DL",
12430 "VoiceMMode1 Playback", 0, 0, 0, 0),
12431 SND_SOC_DAPM_AIF_OUT("VOICEMMODE1_UL",
12432 "VoiceMMode1 Capture", 0, 0, 0, 0),
12433 SND_SOC_DAPM_AIF_IN("VOICEMMODE2_DL",
12434 "VoiceMMode2 Playback", 0, 0, 0, 0),
12435 SND_SOC_DAPM_AIF_OUT("VOICEMMODE2_UL",
12436 "VoiceMMode2 Capture", 0, 0, 0, 0),
12437 SND_SOC_DAPM_AIF_IN("SLIM0_DL_HL", "SLIMBUS0_HOSTLESS Playback",
12438 0, 0, 0, 0),
12439 SND_SOC_DAPM_AIF_OUT("SLIM0_UL_HL", "SLIMBUS0_HOSTLESS Capture",
12440 0, 0, 0, 0),
12441 SND_SOC_DAPM_AIF_OUT("CPE_LSM_UL_HL", "CPE LSM capture",
12442 0, 0, 0, 0),
12443 SND_SOC_DAPM_AIF_IN("SLIM1_DL_HL", "SLIMBUS1_HOSTLESS Playback",
12444 0, 0, 0, 0),
12445 SND_SOC_DAPM_AIF_OUT("SLIM1_UL_HL", "SLIMBUS1_HOSTLESS Capture",
12446 0, 0, 0, 0),
12447 SND_SOC_DAPM_AIF_IN("SLIM3_DL_HL", "SLIMBUS3_HOSTLESS Playback",
12448 0, 0, 0, 0),
12449 SND_SOC_DAPM_AIF_OUT("SLIM3_UL_HL", "SLIMBUS3_HOSTLESS Capture",
12450 0, 0, 0, 0),
12451 SND_SOC_DAPM_AIF_IN("SLIM4_DL_HL", "SLIMBUS4_HOSTLESS Playback",
12452 0, 0, 0, 0),
12453 SND_SOC_DAPM_AIF_OUT("SLIM4_UL_HL", "SLIMBUS4_HOSTLESS Capture",
12454 0, 0, 0, 0),
12455 SND_SOC_DAPM_AIF_IN("SLIM6_DL_HL", "SLIMBUS6_HOSTLESS Playback",
12456 0, 0, 0, 0),
12457 SND_SOC_DAPM_AIF_OUT("SLIM6_UL_HL", "SLIMBUS6_HOSTLESS Capture",
12458 0, 0, 0, 0),
12459 SND_SOC_DAPM_AIF_IN("SLIM7_DL_HL", "SLIMBUS7_HOSTLESS Playback",
12460 0, 0, 0, 0),
12461 SND_SOC_DAPM_AIF_OUT("SLIM7_UL_HL", "SLIMBUS7_HOSTLESS Capture",
12462 0, 0, 0, 0),
12463 SND_SOC_DAPM_AIF_IN("SLIM8_DL_HL", "SLIMBUS8_HOSTLESS Playback",
12464 0, 0, 0, 0),
12465 SND_SOC_DAPM_AIF_OUT("SLIM8_UL_HL", "SLIMBUS8_HOSTLESS Capture",
12466 0, 0, 0, 0),
12467 SND_SOC_DAPM_AIF_IN("INTFM_DL_HL", "INT_FM_HOSTLESS Playback",
12468 0, 0, 0, 0),
12469 SND_SOC_DAPM_AIF_OUT("INTFM_UL_HL", "INT_FM_HOSTLESS Capture",
12470 0, 0, 0, 0),
12471 SND_SOC_DAPM_AIF_IN("INTHFP_DL_HL", "INT_HFP_BT_HOSTLESS Playback",
12472 0, 0, 0, 0),
12473 SND_SOC_DAPM_AIF_OUT("INTHFP_UL_HL", "INT_HFP_BT_HOSTLESS Capture",
12474 0, 0, 0, 0),
12475 SND_SOC_DAPM_AIF_IN("USBAUDIO_DL_HL", "USBAUDIO_HOSTLESS Playback",
12476 0, 0, 0, 0),
12477 SND_SOC_DAPM_AIF_OUT("USBAUDIO_UL_HL", "USBAUDIO_HOSTLESS Capture",
12478 0, 0, 0, 0),
12479 SND_SOC_DAPM_AIF_IN("HDMI_DL_HL", "HDMI_HOSTLESS Playback", 0, 0, 0, 0),
12480 SND_SOC_DAPM_AIF_IN("SEC_I2S_DL_HL", "SEC_I2S_RX_HOSTLESS Playback",
12481 0, 0, 0, 0),
12482 SND_SOC_DAPM_AIF_IN("INT0_MI2S_DL_HL",
12483 "INT0 MI2S_RX Hostless Playback",
12484 0, 0, 0, 0),
12485 SND_SOC_DAPM_AIF_IN("INT4_MI2S_DL_HL",
12486 "INT4 MI2S_RX Hostless Playback",
12487 0, 0, 0, 0),
12488 SND_SOC_DAPM_AIF_IN("PRI_MI2S_DL_HL",
12489 "Primary MI2S_RX Hostless Playback",
12490 0, 0, 0, 0),
12491 SND_SOC_DAPM_AIF_IN("SEC_MI2S_DL_HL",
12492 "Secondary MI2S_RX Hostless Playback",
12493 0, 0, 0, 0),
12494 SND_SOC_DAPM_AIF_IN("TERT_MI2S_DL_HL",
12495 "Tertiary MI2S_RX Hostless Playback",
12496 0, 0, 0, 0),
12497 SND_SOC_DAPM_AIF_IN("QUAT_MI2S_DL_HL",
12498 "Quaternary MI2S_RX Hostless Playback",
12499 0, 0, 0, 0),
Rohit Kumara5077932017-09-10 22:05:05 +053012500 SND_SOC_DAPM_AIF_IN("QUIN_MI2S_DL_HL",
12501 "Quinary MI2S_RX Hostless Playback",
12502 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012503
12504 SND_SOC_DAPM_AIF_IN("AUXPCM_DL_HL", "AUXPCM_HOSTLESS Playback",
12505 0, 0, 0, 0),
12506 SND_SOC_DAPM_AIF_OUT("AUXPCM_UL_HL", "AUXPCM_HOSTLESS Capture",
12507 0, 0, 0, 0),
12508 SND_SOC_DAPM_AIF_OUT("MI2S_UL_HL", "MI2S_TX_HOSTLESS Capture",
12509 0, 0, 0, 0),
12510 SND_SOC_DAPM_AIF_OUT("INT3_MI2S_UL_HL",
12511 "INT3 MI2S_TX Hostless Capture",
12512 0, 0, 0, 0),
12513 SND_SOC_DAPM_AIF_OUT("TERT_MI2S_UL_HL",
12514 "Tertiary MI2S_TX Hostless Capture",
12515 0, 0, 0, 0),
12516 SND_SOC_DAPM_AIF_OUT("SEC_MI2S_UL_HL",
12517 "Secondary MI2S_TX Hostless Capture",
12518 0, 0, 0, 0),
12519 SND_SOC_DAPM_AIF_OUT("PRI_MI2S_UL_HL",
12520 "Primary MI2S_TX Hostless Capture",
12521 0, 0, 0, 0),
12522 SND_SOC_DAPM_AIF_OUT("MI2S_DL_HL", "MI2S_RX_HOSTLESS Playback",
12523 0, 0, 0, 0),
12524 SND_SOC_DAPM_AIF_IN("DTMF_DL_HL", "DTMF_RX_HOSTLESS Playback",
12525 0, 0, 0, 0),
12526 SND_SOC_DAPM_AIF_OUT("QUAT_MI2S_UL_HL",
12527 "Quaternary MI2S_TX Hostless Capture",
12528 0, 0, 0, 0),
Rohit Kumara5077932017-09-10 22:05:05 +053012529 SND_SOC_DAPM_AIF_OUT("QUIN_MI2S_UL_HL",
12530 "Quinary MI2S_TX Hostless Capture",
12531 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012532
12533 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_0_DL_HL",
12534 "Primary TDM0 Hostless Playback",
12535 0, 0, 0, 0),
12536 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_0_UL_HL",
12537 "Primary TDM0 Hostless Capture",
12538 0, 0, 0, 0),
12539 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_1_DL_HL",
12540 "Primary TDM1 Hostless Playback",
12541 0, 0, 0, 0),
12542 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_1_UL_HL",
12543 "Primary TDM1 Hostless Capture",
12544 0, 0, 0, 0),
12545 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_2_DL_HL",
12546 "Primary TDM2 Hostless Playback",
12547 0, 0, 0, 0),
12548 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_2_UL_HL",
12549 "Primary TDM2 Hostless Capture",
12550 0, 0, 0, 0),
12551 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_3_DL_HL",
12552 "Primary TDM3 Hostless Playback",
12553 0, 0, 0, 0),
12554 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_3_UL_HL",
12555 "Primary TDM3 Hostless Capture",
12556 0, 0, 0, 0),
12557 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_4_DL_HL",
12558 "Primary TDM4 Hostless Playback",
12559 0, 0, 0, 0),
12560 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_4_UL_HL",
12561 "Primary TDM4 Hostless Capture",
12562 0, 0, 0, 0),
12563 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_5_DL_HL",
12564 "Primary TDM5 Hostless Playback",
12565 0, 0, 0, 0),
12566 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_5_UL_HL",
12567 "Primary TDM5 Hostless Capture",
12568 0, 0, 0, 0),
12569 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_6_DL_HL",
12570 "Primary TDM6 Hostless Playback",
12571 0, 0, 0, 0),
12572 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_6_UL_HL",
12573 "Primary TDM6 Hostless Capture",
12574 0, 0, 0, 0),
12575 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_7_DL_HL",
12576 "Primary TDM7 Hostless Playback",
12577 0, 0, 0, 0),
12578 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_7_UL_HL",
12579 "Primary TDM7 Hostless Capture",
12580 0, 0, 0, 0),
12581 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_0_DL_HL",
12582 "Secondary TDM0 Hostless Playback",
12583 0, 0, 0, 0),
12584 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_0_UL_HL",
12585 "Secondary TDM0 Hostless Capture",
12586 0, 0, 0, 0),
12587 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_1_DL_HL",
12588 "Secondary TDM1 Hostless Playback",
12589 0, 0, 0, 0),
12590 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_1_UL_HL",
12591 "Secondary TDM1 Hostless Capture",
12592 0, 0, 0, 0),
12593 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_2_DL_HL",
12594 "Secondary TDM2 Hostless Playback",
12595 0, 0, 0, 0),
12596 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_2_UL_HL",
12597 "Secondary TDM2 Hostless Capture",
12598 0, 0, 0, 0),
12599 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_3_DL_HL",
12600 "Secondary TDM3 Hostless Playback",
12601 0, 0, 0, 0),
12602 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_3_UL_HL",
12603 "Secondary TDM3 Hostless Capture",
12604 0, 0, 0, 0),
12605 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_4_DL_HL",
12606 "Secondary TDM4 Hostless Playback",
12607 0, 0, 0, 0),
12608 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_4_UL_HL",
12609 "Secondary TDM4 Hostless Capture",
12610 0, 0, 0, 0),
12611 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_5_DL_HL",
12612 "Secondary TDM5 Hostless Playback",
12613 0, 0, 0, 0),
12614 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_5_UL_HL",
12615 "Secondary TDM5 Hostless Capture",
12616 0, 0, 0, 0),
12617 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_6_DL_HL",
12618 "Secondary TDM6 Hostless Playback",
12619 0, 0, 0, 0),
12620 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_6_UL_HL",
12621 "Secondary TDM6 Hostless Capture",
12622 0, 0, 0, 0),
12623 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_7_DL_HL",
12624 "Secondary TDM7 Hostless Playback",
12625 0, 0, 0, 0),
12626 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_7_UL_HL",
12627 "Secondary TDM7 Hostless Capture",
12628 0, 0, 0, 0),
12629 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_0_DL_HL",
12630 "Tertiary TDM0 Hostless Playback",
12631 0, 0, 0, 0),
12632 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_0_UL_HL",
12633 "Tertiary TDM0 Hostless Capture",
12634 0, 0, 0, 0),
12635 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_1_DL_HL",
12636 "Tertiary TDM1 Hostless Playback",
12637 0, 0, 0, 0),
12638 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_1_UL_HL",
12639 "Tertiary TDM1 Hostless Capture",
12640 0, 0, 0, 0),
12641 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_2_DL_HL",
12642 "Tertiary TDM2 Hostless Playback",
12643 0, 0, 0, 0),
12644 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_2_UL_HL",
12645 "Tertiary TDM2 Hostless Capture",
12646 0, 0, 0, 0),
12647 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_3_DL_HL",
12648 "Tertiary TDM3 Hostless Playback",
12649 0, 0, 0, 0),
12650 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_3_UL_HL",
12651 "Tertiary TDM3 Hostless Capture",
12652 0, 0, 0, 0),
12653 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_4_DL_HL",
12654 "Tertiary TDM4 Hostless Playback",
12655 0, 0, 0, 0),
12656 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_4_UL_HL",
12657 "Tertiary TDM4 Hostless Capture",
12658 0, 0, 0, 0),
12659 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_5_DL_HL",
12660 "Tertiary TDM5 Hostless Playback",
12661 0, 0, 0, 0),
12662 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_5_UL_HL",
12663 "Tertiary TDM5 Hostless Capture",
12664 0, 0, 0, 0),
12665 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_6_DL_HL",
12666 "Tertiary TDM6 Hostless Playback",
12667 0, 0, 0, 0),
12668 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_6_UL_HL",
12669 "Tertiary TDM6 Hostless Capture",
12670 0, 0, 0, 0),
12671 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_7_DL_HL",
12672 "Tertiary TDM7 Hostless Playback",
12673 0, 0, 0, 0),
12674 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_7_UL_HL",
12675 "Tertiary TDM7 Hostless Capture",
12676 0, 0, 0, 0),
12677 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_0_DL_HL",
12678 "Quaternary TDM0 Hostless Playback",
12679 0, 0, 0, 0),
12680 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_0_UL_HL",
12681 "Quaternary TDM0 Hostless Capture",
12682 0, 0, 0, 0),
12683 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_1_DL_HL",
12684 "Quaternary TDM1 Hostless Playback",
12685 0, 0, 0, 0),
12686 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_1_UL_HL",
12687 "Quaternary TDM1 Hostless Capture",
12688 0, 0, 0, 0),
12689 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_2_DL_HL",
12690 "Quaternary TDM2 Hostless Playback",
12691 0, 0, 0, 0),
12692 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_2_UL_HL",
12693 "Quaternary TDM2 Hostless Capture",
12694 0, 0, 0, 0),
12695 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_3_DL_HL",
12696 "Quaternary TDM3 Hostless Playback",
12697 0, 0, 0, 0),
12698 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_3_UL_HL",
12699 "Quaternary TDM3 Hostless Capture",
12700 0, 0, 0, 0),
12701 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_4_DL_HL",
12702 "Quaternary TDM4 Hostless Playback",
12703 0, 0, 0, 0),
12704 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_4_UL_HL",
12705 "Quaternary TDM4 Hostless Capture",
12706 0, 0, 0, 0),
12707 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_5_DL_HL",
12708 "Quaternary TDM5 Hostless Playback",
12709 0, 0, 0, 0),
12710 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_5_UL_HL",
12711 "Quaternary TDM5 Hostless Capture",
12712 0, 0, 0, 0),
12713 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_6_DL_HL",
12714 "Quaternary TDM6 Hostless Playback",
12715 0, 0, 0, 0),
12716 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_6_UL_HL",
12717 "Quaternary TDM6 Hostless Capture",
12718 0, 0, 0, 0),
12719 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_7_DL_HL",
12720 "Quaternary TDM7 Hostless Playback",
12721 0, 0, 0, 0),
12722 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_7_UL_HL",
12723 "Quaternary TDM7 Hostless Capture",
12724 0, 0, 0, 0),
Rohit Kumara5077932017-09-10 22:05:05 +053012725 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_0_DL_HL",
12726 "Quinary TDM0 Hostless Playback",
12727 0, 0, 0, 0),
12728 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_0_UL_HL",
12729 "Quinary TDM0 Hostless Capture",
12730 0, 0, 0, 0),
12731 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_1_DL_HL",
12732 "Quinary TDM1 Hostless Playback",
12733 0, 0, 0, 0),
12734 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_1_UL_HL",
12735 "Quinary TDM1 Hostless Capture",
12736 0, 0, 0, 0),
12737 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_2_DL_HL",
12738 "Quinary TDM2 Hostless Playback",
12739 0, 0, 0, 0),
12740 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_2_UL_HL",
12741 "Quinary TDM2 Hostless Capture",
12742 0, 0, 0, 0),
12743 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_3_DL_HL",
12744 "Quinary TDM3 Hostless Playback",
12745 0, 0, 0, 0),
12746 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_3_UL_HL",
12747 "Quinary TDM3 Hostless Capture",
12748 0, 0, 0, 0),
12749 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_4_DL_HL",
12750 "Quinary TDM4 Hostless Playback",
12751 0, 0, 0, 0),
12752 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_4_UL_HL",
12753 "Quinary TDM4 Hostless Capture",
12754 0, 0, 0, 0),
12755 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_5_DL_HL",
12756 "Quinary TDM5 Hostless Playback",
12757 0, 0, 0, 0),
12758 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_5_UL_HL",
12759 "Quinary TDM5 Hostless Capture",
12760 0, 0, 0, 0),
12761 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_6_DL_HL",
12762 "Quinary TDM6 Hostless Playback",
12763 0, 0, 0, 0),
12764 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_6_UL_HL",
12765 "Quinary TDM6 Hostless Capture",
12766 0, 0, 0, 0),
12767 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_7_DL_HL",
12768 "Quinary TDM7 Hostless Playback",
12769 0, 0, 0, 0),
12770 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_7_UL_HL",
12771 "Quinary TDM7 Hostless Capture",
12772 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012773
12774 /* LSM */
12775 SND_SOC_DAPM_AIF_OUT("LSM1_UL_HL", "Listen 1 Audio Service Capture",
12776 0, 0, 0, 0),
12777 SND_SOC_DAPM_AIF_OUT("LSM2_UL_HL", "Listen 2 Audio Service Capture",
12778 0, 0, 0, 0),
12779 SND_SOC_DAPM_AIF_OUT("LSM3_UL_HL", "Listen 3 Audio Service Capture",
12780 0, 0, 0, 0),
12781 SND_SOC_DAPM_AIF_OUT("LSM4_UL_HL", "Listen 4 Audio Service Capture",
12782 0, 0, 0, 0),
12783 SND_SOC_DAPM_AIF_OUT("LSM5_UL_HL", "Listen 5 Audio Service Capture",
12784 0, 0, 0, 0),
12785 SND_SOC_DAPM_AIF_OUT("LSM6_UL_HL", "Listen 6 Audio Service Capture",
12786 0, 0, 0, 0),
12787 SND_SOC_DAPM_AIF_OUT("LSM7_UL_HL", "Listen 7 Audio Service Capture",
12788 0, 0, 0, 0),
12789 SND_SOC_DAPM_AIF_OUT("LSM8_UL_HL", "Listen 8 Audio Service Capture",
12790 0, 0, 0, 0),
12791 SND_SOC_DAPM_AIF_IN("QCHAT_DL", "QCHAT Playback", 0, 0, 0, 0),
12792 SND_SOC_DAPM_AIF_OUT("QCHAT_UL", "QCHAT Capture", 0, 0, 0, 0),
12793 /* Backend AIF */
12794 /* Stream name equals to backend dai link stream name */
12795 SND_SOC_DAPM_AIF_OUT("PRI_I2S_RX", "Primary I2S Playback", 0, 0, 0, 0),
12796 SND_SOC_DAPM_AIF_OUT("SEC_I2S_RX", "Secondary I2S Playback",
12797 0, 0, 0, 0),
12798 SND_SOC_DAPM_AIF_OUT("SPDIF_RX", "SPDIF Playback", 0, 0, 0, 0),
12799 SND_SOC_DAPM_AIF_OUT("SLIMBUS_0_RX", "Slimbus Playback", 0, 0, 0, 0),
12800 SND_SOC_DAPM_AIF_OUT("SLIMBUS_2_RX", "Slimbus2 Playback", 0, 0, 0, 0),
12801 SND_SOC_DAPM_AIF_OUT("SLIMBUS_5_RX", "Slimbus5 Playback", 0, 0, 0, 0),
12802 SND_SOC_DAPM_AIF_OUT("HDMI", "HDMI Playback", 0, 0, 0, 0),
12803 SND_SOC_DAPM_AIF_OUT("DISPLAY_PORT", "Display Port Playback",
12804 0, 0, 0, 0),
12805 SND_SOC_DAPM_AIF_OUT("MI2S_RX", "MI2S Playback", 0, 0, 0, 0),
12806 SND_SOC_DAPM_AIF_OUT("QUAT_MI2S_RX", "Quaternary MI2S Playback",
12807 0, 0, 0, 0),
12808 SND_SOC_DAPM_AIF_OUT("TERT_MI2S_RX", "Tertiary MI2S Playback",
12809 0, 0, 0, 0),
12810 SND_SOC_DAPM_AIF_OUT("SEC_MI2S_RX", "Secondary MI2S Playback",
12811 0, 0, 0, 0),
12812 SND_SOC_DAPM_AIF_OUT("SEC_MI2S_RX_SD1",
12813 "Secondary MI2S Playback SD1",
12814 0, 0, 0, 0),
12815 SND_SOC_DAPM_AIF_OUT("PRI_MI2S_RX", "Primary MI2S Playback",
12816 0, 0, 0, 0),
12817 SND_SOC_DAPM_AIF_OUT("INT0_MI2S_RX", "INT0 MI2S Playback",
12818 0, 0, 0, 0),
Laxminath Kasam52697fe2017-11-29 15:44:14 +053012819 SND_SOC_DAPM_AIF_OUT("INT2_MI2S_RX", "INT2 MI2S Playback",
12820 0, 0, 0, 0),
12821 SND_SOC_DAPM_AIF_OUT("INT3_MI2S_RX", "INT3 MI2S Playback",
12822 0, 0, 0, 0),
12823 SND_SOC_DAPM_AIF_OUT("INT5_MI2S_RX", "INT5 MI2S Playback",
12824 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012825 SND_SOC_DAPM_AIF_OUT("INT4_MI2S_RX", "INT4 MI2S Playback",
12826 0, 0, 0, 0),
Laxminath Kasam52697fe2017-11-29 15:44:14 +053012827 SND_SOC_DAPM_AIF_OUT("INT4_MI2S_TX", "INT4 MI2S Capture",
12828 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012829 SND_SOC_DAPM_AIF_OUT("QUIN_MI2S_RX", "Quinary MI2S Playback",
12830 0, 0, 0, 0),
12831 SND_SOC_DAPM_AIF_IN("PRI_I2S_TX", "Primary I2S Capture", 0, 0, 0, 0),
12832 SND_SOC_DAPM_AIF_IN("MI2S_TX", "MI2S Capture", 0, 0, 0, 0),
12833 SND_SOC_DAPM_AIF_IN("QUAT_MI2S_TX", "Quaternary MI2S Capture",
12834 0, 0, 0, 0),
12835 SND_SOC_DAPM_AIF_IN("PRI_MI2S_TX", "Primary MI2S Capture",
12836 0, 0, 0, 0),
12837 SND_SOC_DAPM_AIF_IN("TERT_MI2S_TX", "Tertiary MI2S Capture",
12838 0, 0, 0, 0),
Laxminath Kasam52697fe2017-11-29 15:44:14 +053012839 SND_SOC_DAPM_AIF_OUT("INT0_MI2S_TX", "INT0 MI2S Capture",
12840 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012841 SND_SOC_DAPM_AIF_IN("INT2_MI2S_TX", "INT2 MI2S Capture",
12842 0, 0, 0, 0),
12843 SND_SOC_DAPM_AIF_IN("INT3_MI2S_TX", "INT3 MI2S Capture",
12844 0, 0, 0, 0),
12845 SND_SOC_DAPM_AIF_IN("SEC_MI2S_TX", "Secondary MI2S Capture",
12846 0, 0, 0, 0),
12847 SND_SOC_DAPM_AIF_IN("SLIMBUS_0_TX", "Slimbus Capture", 0, 0, 0, 0),
12848 SND_SOC_DAPM_AIF_IN("SLIMBUS_2_TX", "Slimbus2 Capture", 0, 0, 0, 0),
12849 SND_SOC_DAPM_AIF_IN("QUIN_MI2S_TX", "Quinary MI2S Capture",
12850 0, 0, 0, 0),
12851 SND_SOC_DAPM_AIF_IN("SENARY_MI2S_TX", "Senary MI2S Capture",
12852 0, 0, 0, 0),
12853 SND_SOC_DAPM_AIF_OUT("INT_BT_SCO_RX", "Internal BT-SCO Playback",
12854 0, 0, 0, 0),
12855 SND_SOC_DAPM_AIF_IN("INT_BT_SCO_TX", "Internal BT-SCO Capture",
12856 0, 0, 0, 0),
12857 SND_SOC_DAPM_AIF_OUT("INT_BT_A2DP_RX", "Internal BT-A2DP Playback",
12858 0, 0, 0, 0),
12859 SND_SOC_DAPM_AIF_OUT("INT_FM_RX", "Internal FM Playback",
12860 0, 0, 0, 0),
12861 SND_SOC_DAPM_AIF_IN("INT_FM_TX", "Internal FM Capture",
12862 0, 0, 0, 0),
12863 SND_SOC_DAPM_AIF_OUT("PCM_RX", "AFE Playback",
12864 0, 0, 0, 0),
12865 SND_SOC_DAPM_AIF_IN("PCM_TX", "AFE Capture",
12866 0, 0, 0, 0),
12867 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_0", "Primary TDM0 Playback",
12868 0, 0, 0, 0),
12869 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_0", "Primary TDM0 Capture",
12870 0, 0, 0, 0),
12871 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_1", "Primary TDM1 Playback",
12872 0, 0, 0, 0),
12873 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_1", "Primary TDM1 Capture",
12874 0, 0, 0, 0),
12875 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_2", "Primary TDM2 Playback",
12876 0, 0, 0, 0),
12877 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_2", "Primary TDM2 Capture",
12878 0, 0, 0, 0),
12879 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_3", "Primary TDM3 Playback",
12880 0, 0, 0, 0),
12881 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_3", "Primary TDM3 Capture",
12882 0, 0, 0, 0),
12883 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_4", "Primary TDM4 Playback",
12884 0, 0, 0, 0),
12885 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_4", "Primary TDM4 Capture",
12886 0, 0, 0, 0),
12887 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_5", "Primary TDM5 Playback",
12888 0, 0, 0, 0),
12889 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_5", "Primary TDM5 Capture",
12890 0, 0, 0, 0),
12891 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_6", "Primary TDM6 Playback",
12892 0, 0, 0, 0),
12893 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_6", "Primary TDM6 Capture",
12894 0, 0, 0, 0),
12895 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_7", "Primary TDM7 Playback",
12896 0, 0, 0, 0),
12897 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_7", "Primary TDM7 Capture",
12898 0, 0, 0, 0),
12899 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_0", "Secondary TDM0 Playback",
12900 0, 0, 0, 0),
12901 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_0", "Secondary TDM0 Capture",
12902 0, 0, 0, 0),
12903 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_1", "Secondary TDM1 Playback",
12904 0, 0, 0, 0),
12905 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_1", "Secondary TDM1 Capture",
12906 0, 0, 0, 0),
12907 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_2", "Secondary TDM2 Playback",
12908 0, 0, 0, 0),
12909 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_2", "Secondary TDM2 Capture",
12910 0, 0, 0, 0),
12911 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_3", "Secondary TDM3 Playback",
12912 0, 0, 0, 0),
12913 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_3", "Secondary TDM3 Capture",
12914 0, 0, 0, 0),
12915 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_4", "Secondary TDM4 Playback",
12916 0, 0, 0, 0),
12917 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_4", "Secondary TDM4 Capture",
12918 0, 0, 0, 0),
12919 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_5", "Secondary TDM5 Playback",
12920 0, 0, 0, 0),
12921 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_5", "Secondary TDM5 Capture",
12922 0, 0, 0, 0),
12923 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_6", "Secondary TDM6 Playback",
12924 0, 0, 0, 0),
12925 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_6", "Secondary TDM6 Capture",
12926 0, 0, 0, 0),
12927 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_7", "Secondary TDM7 Playback",
12928 0, 0, 0, 0),
12929 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_7", "Secondary TDM7 Capture",
12930 0, 0, 0, 0),
12931 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_0", "Tertiary TDM0 Playback",
12932 0, 0, 0, 0),
12933 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_0", "Tertiary TDM0 Capture",
12934 0, 0, 0, 0),
12935 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_1", "Tertiary TDM1 Playback",
12936 0, 0, 0, 0),
12937 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_1", "Tertiary TDM1 Capture",
12938 0, 0, 0, 0),
12939 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_2", "Tertiary TDM2 Playback",
12940 0, 0, 0, 0),
12941 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_2", "Tertiary TDM2 Capture",
12942 0, 0, 0, 0),
12943 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_3", "Tertiary TDM3 Playback",
12944 0, 0, 0, 0),
12945 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_3", "Tertiary TDM3 Capture",
12946 0, 0, 0, 0),
12947 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_4", "Tertiary TDM4 Playback",
12948 0, 0, 0, 0),
12949 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_4", "Tertiary TDM4 Capture",
12950 0, 0, 0, 0),
12951 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_5", "Tertiary TDM5 Playback",
12952 0, 0, 0, 0),
12953 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_5", "Tertiary TDM5 Capture",
12954 0, 0, 0, 0),
12955 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_6", "Tertiary TDM6 Playback",
12956 0, 0, 0, 0),
12957 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_6", "Tertiary TDM6 Capture",
12958 0, 0, 0, 0),
12959 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_7", "Tertiary TDM7 Playback",
12960 0, 0, 0, 0),
12961 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_7", "Tertiary TDM7 Capture",
12962 0, 0, 0, 0),
12963 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_0", "Quaternary TDM0 Playback",
12964 0, 0, 0, 0),
12965 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_0", "Quaternary TDM0 Capture",
12966 0, 0, 0, 0),
12967 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_1", "Quaternary TDM1 Playback",
12968 0, 0, 0, 0),
12969 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_1", "Quaternary TDM1 Capture",
12970 0, 0, 0, 0),
12971 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_2", "Quaternary TDM2 Playback",
12972 0, 0, 0, 0),
12973 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_2", "Quaternary TDM2 Capture",
12974 0, 0, 0, 0),
12975 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_3", "Quaternary TDM3 Playback",
12976 0, 0, 0, 0),
12977 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_3", "Quaternary TDM3 Capture",
12978 0, 0, 0, 0),
12979 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_4", "Quaternary TDM4 Playback",
12980 0, 0, 0, 0),
12981 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_4", "Quaternary TDM4 Capture",
12982 0, 0, 0, 0),
12983 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_5", "Quaternary TDM5 Playback",
12984 0, 0, 0, 0),
12985 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_5", "Quaternary TDM5 Capture",
12986 0, 0, 0, 0),
12987 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_6", "Quaternary TDM6 Playback",
12988 0, 0, 0, 0),
12989 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_6", "Quaternary TDM6 Capture",
12990 0, 0, 0, 0),
12991 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_7", "Quaternary TDM7 Playback",
12992 0, 0, 0, 0),
12993 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_7", "Quaternary TDM7 Capture",
12994 0, 0, 0, 0),
Rohit Kumara5077932017-09-10 22:05:05 +053012995 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_0", "Quinary TDM0 Playback",
12996 0, 0, 0, 0),
12997 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_0", "Quinary TDM0 Capture",
12998 0, 0, 0, 0),
12999 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_1", "Quinary TDM1 Playback",
13000 0, 0, 0, 0),
13001 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_1", "Quinary TDM1 Capture",
13002 0, 0, 0, 0),
13003 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_2", "Quinary TDM2 Playback",
13004 0, 0, 0, 0),
13005 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_2", "Quinary TDM2 Capture",
13006 0, 0, 0, 0),
13007 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_3", "Quinary TDM3 Playback",
13008 0, 0, 0, 0),
13009 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_3", "Quinary TDM3 Capture",
13010 0, 0, 0, 0),
13011 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_4", "Quinary TDM4 Playback",
13012 0, 0, 0, 0),
13013 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_4", "Quinary TDM4 Capture",
13014 0, 0, 0, 0),
13015 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_5", "Quinary TDM5 Playback",
13016 0, 0, 0, 0),
13017 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_5", "Quinary TDM5 Capture",
13018 0, 0, 0, 0),
13019 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_6", "Quinary TDM6 Playback",
13020 0, 0, 0, 0),
13021 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_6", "Quinary TDM6 Capture",
13022 0, 0, 0, 0),
13023 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_7", "Quinary TDM7 Playback",
13024 0, 0, 0, 0),
13025 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_7", "Quinary TDM7 Capture",
13026 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013027 /* incall */
13028 SND_SOC_DAPM_AIF_OUT("VOICE_PLAYBACK_TX", "Voice Farend Playback",
13029 0, 0, 0, 0),
13030 SND_SOC_DAPM_AIF_OUT("VOICE2_PLAYBACK_TX", "Voice2 Farend Playback",
13031 0, 0, 0, 0),
13032 SND_SOC_DAPM_AIF_OUT("SLIMBUS_4_RX", "Slimbus4 Playback",
13033 0, 0, 0, 0),
13034 SND_SOC_DAPM_AIF_IN("INCALL_RECORD_TX", "Voice Uplink Capture",
13035 0, 0, 0, 0),
13036 SND_SOC_DAPM_AIF_IN("INCALL_RECORD_RX", "Voice Downlink Capture",
13037 0, 0, 0, 0),
13038 SND_SOC_DAPM_AIF_IN("SLIMBUS_4_TX", "Slimbus4 Capture",
13039 0, 0, 0, 0),
13040 SND_SOC_DAPM_AIF_IN("SENARY_TX", "Senary_mi2s Capture",
13041 0, 0, 0, 0),
13042 SND_SOC_DAPM_AIF_IN("INT5_MI2S_TX", "INT5 MI2S Capture",
13043 0, 0, 0, 0),
13044 SND_SOC_DAPM_AIF_IN("SLIMBUS_5_TX", "Slimbus5 Capture", 0, 0, 0, 0),
13045
13046 SND_SOC_DAPM_AIF_OUT("AUX_PCM_RX", "AUX PCM Playback", 0, 0, 0, 0),
13047 SND_SOC_DAPM_AIF_IN("AUX_PCM_TX", "AUX PCM Capture", 0, 0, 0, 0),
13048 SND_SOC_DAPM_AIF_OUT("SEC_AUX_PCM_RX", "Sec AUX PCM Playback",
13049 0, 0, 0, 0),
13050 SND_SOC_DAPM_AIF_IN("SEC_AUX_PCM_TX", "Sec AUX PCM Capture",
13051 0, 0, 0, 0),
13052 SND_SOC_DAPM_AIF_OUT("TERT_AUX_PCM_RX", "Tert AUX PCM Playback",
13053 0, 0, 0, 0),
13054 SND_SOC_DAPM_AIF_IN("TERT_AUX_PCM_TX", "Tert AUX PCM Capture",
13055 0, 0, 0, 0),
13056 SND_SOC_DAPM_AIF_OUT("QUAT_AUX_PCM_RX", "Quat AUX PCM Playback",
13057 0, 0, 0, 0),
13058 SND_SOC_DAPM_AIF_IN("QUAT_AUX_PCM_TX", "Quat AUX PCM Capture",
13059 0, 0, 0, 0),
Rohit Kumara5077932017-09-10 22:05:05 +053013060 SND_SOC_DAPM_AIF_OUT("QUIN_AUX_PCM_RX", "Quin AUX PCM Playback",
13061 0, 0, 0, 0),
13062 SND_SOC_DAPM_AIF_IN("QUIN_AUX_PCM_TX", "Quin AUX PCM Capture",
13063 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013064 SND_SOC_DAPM_AIF_IN("VOICE_STUB_DL", "VOICE_STUB Playback", 0, 0, 0, 0),
13065 SND_SOC_DAPM_AIF_OUT("VOICE_STUB_UL", "VOICE_STUB Capture", 0, 0, 0, 0),
13066 SND_SOC_DAPM_AIF_IN("VOICE2_STUB_DL", "VOICE2_STUB Playback",
13067 0, 0, 0, 0),
13068 SND_SOC_DAPM_AIF_OUT("VOICE2_STUB_UL", "VOICE2_STUB Capture",
13069 0, 0, 0, 0),
13070 SND_SOC_DAPM_AIF_IN("VOLTE_STUB_DL", "VOLTE_STUB Playback", 0, 0, 0, 0),
13071 SND_SOC_DAPM_AIF_OUT("VOLTE_STUB_UL", "VOLTE_STUB Capture", 0, 0, 0, 0),
13072 SND_SOC_DAPM_AIF_OUT("STUB_RX", "Stub Playback", 0, 0, 0, 0),
13073 SND_SOC_DAPM_AIF_IN("STUB_TX", "Stub Capture", 0, 0, 0, 0),
13074 SND_SOC_DAPM_AIF_OUT("SLIMBUS_1_RX", "Slimbus1 Playback", 0, 0, 0, 0),
13075 SND_SOC_DAPM_AIF_IN("SLIMBUS_1_TX", "Slimbus1 Capture", 0, 0, 0, 0),
13076 SND_SOC_DAPM_AIF_IN("STUB_1_TX", "Stub1 Capture", 0, 0, 0, 0),
13077 SND_SOC_DAPM_AIF_OUT("SLIMBUS_3_RX", "Slimbus3 Playback", 0, 0, 0, 0),
13078 SND_SOC_DAPM_AIF_IN("SLIMBUS_3_TX", "Slimbus3 Capture", 0, 0, 0, 0),
13079 /* In- call recording */
13080 SND_SOC_DAPM_AIF_OUT("SLIMBUS_6_RX", "Slimbus6 Playback", 0, 0, 0, 0),
13081 SND_SOC_DAPM_AIF_IN("SLIMBUS_6_TX", "Slimbus6 Capture", 0, 0, 0, 0),
13082
13083 SND_SOC_DAPM_AIF_OUT("SLIMBUS_7_RX", "Slimbus7 Playback", 0, 0, 0, 0),
13084 SND_SOC_DAPM_AIF_IN("SLIMBUS_7_TX", "Slimbus7 Capture", 0, 0, 0, 0),
13085
13086 SND_SOC_DAPM_AIF_OUT("SLIMBUS_8_RX", "Slimbus8 Playback", 0, 0, 0, 0),
13087 SND_SOC_DAPM_AIF_IN("SLIMBUS_8_TX", "Slimbus8 Capture", 0, 0, 0, 0),
13088 SND_SOC_DAPM_AIF_OUT("USB_AUDIO_RX", "USB Audio Playback", 0, 0, 0, 0),
13089 SND_SOC_DAPM_AIF_IN("USB_AUDIO_TX", "USB Audio Capture", 0, 0, 0, 0),
13090
13091 /* Switch Definitions */
13092 SND_SOC_DAPM_SWITCH("SLIMBUS_DL_HL", SND_SOC_NOPM, 0, 0,
13093 &slim_fm_switch_mixer_controls),
13094 SND_SOC_DAPM_SWITCH("SLIMBUS1_DL_HL", SND_SOC_NOPM, 0, 0,
13095 &slim1_fm_switch_mixer_controls),
13096 SND_SOC_DAPM_SWITCH("SLIMBUS3_DL_HL", SND_SOC_NOPM, 0, 0,
13097 &slim3_fm_switch_mixer_controls),
13098 SND_SOC_DAPM_SWITCH("SLIMBUS4_DL_HL", SND_SOC_NOPM, 0, 0,
13099 &slim4_fm_switch_mixer_controls),
13100 SND_SOC_DAPM_SWITCH("SLIMBUS6_DL_HL", SND_SOC_NOPM, 0, 0,
13101 &slim6_fm_switch_mixer_controls),
13102 SND_SOC_DAPM_SWITCH("PCM_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13103 &pcm_rx_switch_mixer_controls),
13104 SND_SOC_DAPM_SWITCH("INT0_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13105 &int0_mi2s_rx_switch_mixer_controls),
13106 SND_SOC_DAPM_SWITCH("INT4_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13107 &int4_mi2s_rx_switch_mixer_controls),
13108 SND_SOC_DAPM_SWITCH("PRI_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13109 &pri_mi2s_rx_switch_mixer_controls),
13110 SND_SOC_DAPM_SWITCH("SEC_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13111 &sec_mi2s_rx_switch_mixer_controls),
13112 SND_SOC_DAPM_SWITCH("TERT_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13113 &tert_mi2s_rx_switch_mixer_controls),
13114 SND_SOC_DAPM_SWITCH("QUAT_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13115 &quat_mi2s_rx_switch_mixer_controls),
Rohit Kumara5077932017-09-10 22:05:05 +053013116 SND_SOC_DAPM_SWITCH("QUIN_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13117 &quin_mi2s_rx_switch_mixer_controls),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013118 SND_SOC_DAPM_SWITCH("HFP_PRI_AUX_UL_HL", SND_SOC_NOPM, 0, 0,
13119 &hfp_pri_aux_switch_mixer_controls),
13120 SND_SOC_DAPM_SWITCH("HFP_AUX_UL_HL", SND_SOC_NOPM, 0, 0,
13121 &hfp_aux_switch_mixer_controls),
13122 SND_SOC_DAPM_SWITCH("HFP_INT_UL_HL", SND_SOC_NOPM, 0, 0,
13123 &hfp_int_switch_mixer_controls),
13124 SND_SOC_DAPM_SWITCH("HFP_SLIM7_UL_HL", SND_SOC_NOPM, 0, 0,
13125 &hfp_slim7_switch_mixer_controls),
13126 SND_SOC_DAPM_SWITCH("USB_DL_HL", SND_SOC_NOPM, 0, 0,
13127 &usb_switch_mixer_controls),
13128
13129 /* Mixer definitions */
13130 SND_SOC_DAPM_MIXER("PRI_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13131 pri_i2s_rx_mixer_controls, ARRAY_SIZE(pri_i2s_rx_mixer_controls)),
13132 SND_SOC_DAPM_MIXER("SEC_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13133 sec_i2s_rx_mixer_controls, ARRAY_SIZE(sec_i2s_rx_mixer_controls)),
13134 SND_SOC_DAPM_MIXER("SLIMBUS_0_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13135 slimbus_rx_mixer_controls, ARRAY_SIZE(slimbus_rx_mixer_controls)),
13136 SND_SOC_DAPM_MIXER("SLIMBUS_2_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13137 slimbus_2_rx_mixer_controls, ARRAY_SIZE(slimbus_2_rx_mixer_controls)),
13138 SND_SOC_DAPM_MIXER("SLIMBUS_5_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13139 slimbus_5_rx_mixer_controls, ARRAY_SIZE(slimbus_5_rx_mixer_controls)),
13140 SND_SOC_DAPM_MIXER("SLIMBUS_7_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13141 slimbus_7_rx_mixer_controls, ARRAY_SIZE(slimbus_7_rx_mixer_controls)),
13142 SND_SOC_DAPM_MIXER("HDMI Mixer", SND_SOC_NOPM, 0, 0,
13143 hdmi_mixer_controls, ARRAY_SIZE(hdmi_mixer_controls)),
13144 SND_SOC_DAPM_MIXER("DISPLAY_PORT Mixer", SND_SOC_NOPM, 0, 0,
13145 display_port_mixer_controls, ARRAY_SIZE(display_port_mixer_controls)),
13146 SND_SOC_DAPM_MIXER("SPDIF_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13147 spdif_rx_mixer_controls, ARRAY_SIZE(spdif_rx_mixer_controls)),
13148 SND_SOC_DAPM_MIXER("MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13149 mi2s_rx_mixer_controls, ARRAY_SIZE(mi2s_rx_mixer_controls)),
13150 SND_SOC_DAPM_MIXER("QUAT_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13151 quaternary_mi2s_rx_mixer_controls,
13152 ARRAY_SIZE(quaternary_mi2s_rx_mixer_controls)),
13153 SND_SOC_DAPM_MIXER("TERT_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13154 tertiary_mi2s_rx_mixer_controls,
13155 ARRAY_SIZE(tertiary_mi2s_rx_mixer_controls)),
13156 SND_SOC_DAPM_MIXER("SEC_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13157 secondary_mi2s_rx_mixer_controls,
13158 ARRAY_SIZE(secondary_mi2s_rx_mixer_controls)),
13159 SND_SOC_DAPM_MIXER("SEC_MI2S_RX_SD1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13160 secondary_mi2s_rx2_mixer_controls,
13161 ARRAY_SIZE(secondary_mi2s_rx2_mixer_controls)),
13162 SND_SOC_DAPM_MIXER("PRI_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13163 primary_mi2s_rx_mixer_controls,
13164 ARRAY_SIZE(primary_mi2s_rx_mixer_controls)),
13165 SND_SOC_DAPM_MIXER("INT0_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13166 int0_mi2s_rx_mixer_controls,
13167 ARRAY_SIZE(int0_mi2s_rx_mixer_controls)),
13168 SND_SOC_DAPM_MIXER("INT4_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13169 int4_mi2s_rx_mixer_controls,
13170 ARRAY_SIZE(int4_mi2s_rx_mixer_controls)),
13171 SND_SOC_DAPM_MIXER("QUIN_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13172 quinary_mi2s_rx_mixer_controls,
13173 ARRAY_SIZE(quinary_mi2s_rx_mixer_controls)),
13174 SND_SOC_DAPM_MIXER("PRI_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13175 pri_tdm_rx_0_mixer_controls,
13176 ARRAY_SIZE(pri_tdm_rx_0_mixer_controls)),
13177 SND_SOC_DAPM_MIXER("PRI_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13178 pri_tdm_rx_1_mixer_controls,
13179 ARRAY_SIZE(pri_tdm_rx_1_mixer_controls)),
13180 SND_SOC_DAPM_MIXER("PRI_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13181 pri_tdm_rx_2_mixer_controls,
13182 ARRAY_SIZE(pri_tdm_rx_2_mixer_controls)),
13183 SND_SOC_DAPM_MIXER("PRI_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
13184 pri_tdm_rx_3_mixer_controls,
13185 ARRAY_SIZE(pri_tdm_rx_3_mixer_controls)),
13186 SND_SOC_DAPM_MIXER("PRI_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13187 pri_tdm_tx_0_mixer_controls,
13188 ARRAY_SIZE(pri_tdm_tx_0_mixer_controls)),
13189 SND_SOC_DAPM_MIXER("SEC_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13190 sec_tdm_rx_0_mixer_controls,
13191 ARRAY_SIZE(sec_tdm_rx_0_mixer_controls)),
13192 SND_SOC_DAPM_MIXER("SEC_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13193 sec_tdm_rx_1_mixer_controls,
13194 ARRAY_SIZE(sec_tdm_rx_1_mixer_controls)),
13195 SND_SOC_DAPM_MIXER("SEC_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13196 sec_tdm_rx_2_mixer_controls,
13197 ARRAY_SIZE(sec_tdm_rx_2_mixer_controls)),
13198 SND_SOC_DAPM_MIXER("SEC_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
13199 sec_tdm_rx_3_mixer_controls,
13200 ARRAY_SIZE(sec_tdm_rx_3_mixer_controls)),
13201 SND_SOC_DAPM_MIXER("SEC_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13202 sec_tdm_tx_0_mixer_controls,
13203 ARRAY_SIZE(sec_tdm_tx_0_mixer_controls)),
13204 SND_SOC_DAPM_MIXER("TERT_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13205 tert_tdm_rx_0_mixer_controls,
13206 ARRAY_SIZE(tert_tdm_rx_0_mixer_controls)),
13207 SND_SOC_DAPM_MIXER("TERT_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13208 tert_tdm_tx_0_mixer_controls,
13209 ARRAY_SIZE(tert_tdm_tx_0_mixer_controls)),
13210 SND_SOC_DAPM_MIXER("TERT_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13211 tert_tdm_rx_1_mixer_controls,
13212 ARRAY_SIZE(tert_tdm_rx_1_mixer_controls)),
13213 SND_SOC_DAPM_MIXER("TERT_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13214 tert_tdm_rx_2_mixer_controls,
13215 ARRAY_SIZE(tert_tdm_rx_2_mixer_controls)),
13216 SND_SOC_DAPM_MIXER("TERT_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
13217 tert_tdm_rx_3_mixer_controls,
13218 ARRAY_SIZE(tert_tdm_rx_3_mixer_controls)),
13219 SND_SOC_DAPM_MIXER("TERT_TDM_RX_4 Audio Mixer", SND_SOC_NOPM, 0, 0,
13220 tert_tdm_rx_4_mixer_controls,
13221 ARRAY_SIZE(tert_tdm_rx_4_mixer_controls)),
13222 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13223 quat_tdm_rx_0_mixer_controls,
13224 ARRAY_SIZE(quat_tdm_rx_0_mixer_controls)),
13225 SND_SOC_DAPM_MIXER("QUAT_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13226 quat_tdm_tx_0_mixer_controls,
13227 ARRAY_SIZE(quat_tdm_tx_0_mixer_controls)),
13228 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13229 quat_tdm_rx_1_mixer_controls,
13230 ARRAY_SIZE(quat_tdm_rx_1_mixer_controls)),
13231 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13232 quat_tdm_rx_2_mixer_controls,
13233 ARRAY_SIZE(quat_tdm_rx_2_mixer_controls)),
13234 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
13235 quat_tdm_rx_3_mixer_controls,
13236 ARRAY_SIZE(quat_tdm_rx_3_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013237 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13238 quin_tdm_rx_0_mixer_controls,
13239 ARRAY_SIZE(quin_tdm_rx_0_mixer_controls)),
13240 SND_SOC_DAPM_MIXER("QUIN_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13241 quin_tdm_tx_0_mixer_controls,
13242 ARRAY_SIZE(quin_tdm_tx_0_mixer_controls)),
13243 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13244 quin_tdm_rx_1_mixer_controls,
13245 ARRAY_SIZE(quin_tdm_rx_1_mixer_controls)),
13246 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13247 quin_tdm_rx_2_mixer_controls,
13248 ARRAY_SIZE(quin_tdm_rx_2_mixer_controls)),
13249 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
13250 quin_tdm_rx_3_mixer_controls,
13251 ARRAY_SIZE(quin_tdm_rx_3_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013252 SND_SOC_DAPM_MIXER("MultiMedia1 Mixer", SND_SOC_NOPM, 0, 0,
13253 mmul1_mixer_controls, ARRAY_SIZE(mmul1_mixer_controls)),
13254 SND_SOC_DAPM_MIXER("MultiMedia2 Mixer", SND_SOC_NOPM, 0, 0,
13255 mmul2_mixer_controls, ARRAY_SIZE(mmul2_mixer_controls)),
13256 SND_SOC_DAPM_MIXER("MultiMedia3 Mixer", SND_SOC_NOPM, 0, 0,
13257 mmul3_mixer_controls, ARRAY_SIZE(mmul3_mixer_controls)),
13258 SND_SOC_DAPM_MIXER("MultiMedia4 Mixer", SND_SOC_NOPM, 0, 0,
13259 mmul4_mixer_controls, ARRAY_SIZE(mmul4_mixer_controls)),
13260 SND_SOC_DAPM_MIXER("MultiMedia5 Mixer", SND_SOC_NOPM, 0, 0,
13261 mmul5_mixer_controls, ARRAY_SIZE(mmul5_mixer_controls)),
13262 SND_SOC_DAPM_MIXER("MultiMedia6 Mixer", SND_SOC_NOPM, 0, 0,
13263 mmul6_mixer_controls, ARRAY_SIZE(mmul6_mixer_controls)),
13264 SND_SOC_DAPM_MIXER("MultiMedia8 Mixer", SND_SOC_NOPM, 0, 0,
13265 mmul8_mixer_controls, ARRAY_SIZE(mmul8_mixer_controls)),
13266 SND_SOC_DAPM_MIXER("MultiMedia9 Mixer", SND_SOC_NOPM, 0, 0,
13267 mmul9_mixer_controls, ARRAY_SIZE(mmul9_mixer_controls)),
Laxminath Kasam38070be2017-08-17 18:21:59 +053013268 SND_SOC_DAPM_MIXER("MultiMedia10 Mixer", SND_SOC_NOPM, 0, 0,
13269 mmul10_mixer_controls, ARRAY_SIZE(mmul10_mixer_controls)),
Asish Bhattacharya34504582017-08-08 12:55:01 +053013270 SND_SOC_DAPM_MIXER("MultiMedia16 Mixer", SND_SOC_NOPM, 0, 0,
13271 mmul16_mixer_controls, ARRAY_SIZE(mmul16_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013272 SND_SOC_DAPM_MIXER("MultiMedia17 Mixer", SND_SOC_NOPM, 0, 0,
13273 mmul17_mixer_controls, ARRAY_SIZE(mmul17_mixer_controls)),
13274 SND_SOC_DAPM_MIXER("MultiMedia18 Mixer", SND_SOC_NOPM, 0, 0,
13275 mmul18_mixer_controls, ARRAY_SIZE(mmul18_mixer_controls)),
13276 SND_SOC_DAPM_MIXER("MultiMedia19 Mixer", SND_SOC_NOPM, 0, 0,
13277 mmul19_mixer_controls, ARRAY_SIZE(mmul19_mixer_controls)),
13278 SND_SOC_DAPM_MIXER("MultiMedia20 Mixer", SND_SOC_NOPM, 0, 0,
13279 mmul20_mixer_controls, ARRAY_SIZE(mmul20_mixer_controls)),
13280 SND_SOC_DAPM_MIXER("AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13281 auxpcm_rx_mixer_controls, ARRAY_SIZE(auxpcm_rx_mixer_controls)),
13282 SND_SOC_DAPM_MIXER("SEC_AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13283 sec_auxpcm_rx_mixer_controls, ARRAY_SIZE(sec_auxpcm_rx_mixer_controls)),
13284 SND_SOC_DAPM_MIXER("TERT_AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13285 tert_auxpcm_rx_mixer_controls,
13286 ARRAY_SIZE(tert_auxpcm_rx_mixer_controls)),
13287 SND_SOC_DAPM_MIXER("QUAT_AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13288 quat_auxpcm_rx_mixer_controls,
13289 ARRAY_SIZE(quat_auxpcm_rx_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013290 SND_SOC_DAPM_MIXER("QUIN_AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13291 quin_auxpcm_rx_mixer_controls,
13292 ARRAY_SIZE(quin_auxpcm_rx_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013293 /* incall */
13294 SND_SOC_DAPM_MIXER("Incall_Music Audio Mixer", SND_SOC_NOPM, 0, 0,
13295 incall_music_delivery_mixer_controls,
13296 ARRAY_SIZE(incall_music_delivery_mixer_controls)),
13297 SND_SOC_DAPM_MIXER("Incall_Music_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13298 incall_music2_delivery_mixer_controls,
13299 ARRAY_SIZE(incall_music2_delivery_mixer_controls)),
13300 SND_SOC_DAPM_MIXER("SLIMBUS_4_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13301 slimbus_4_rx_mixer_controls,
13302 ARRAY_SIZE(slimbus_4_rx_mixer_controls)),
13303 SND_SOC_DAPM_MIXER("SLIMBUS_6_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13304 slimbus_6_rx_mixer_controls,
13305 ARRAY_SIZE(slimbus_6_rx_mixer_controls)),
13306 SND_SOC_DAPM_MIXER("USB_AUDIO_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13307 usb_audio_rx_mixer_controls,
13308 ARRAY_SIZE(usb_audio_rx_mixer_controls)),
13309 /* Voice Mixer */
13310 SND_SOC_DAPM_MIXER("PRI_RX_Voice Mixer",
13311 SND_SOC_NOPM, 0, 0, pri_rx_voice_mixer_controls,
13312 ARRAY_SIZE(pri_rx_voice_mixer_controls)),
13313 SND_SOC_DAPM_MIXER("SEC_RX_Voice Mixer",
13314 SND_SOC_NOPM, 0, 0,
13315 sec_i2s_rx_voice_mixer_controls,
13316 ARRAY_SIZE(sec_i2s_rx_voice_mixer_controls)),
13317 SND_SOC_DAPM_MIXER("SEC_MI2S_RX_Voice Mixer",
13318 SND_SOC_NOPM, 0, 0,
13319 sec_mi2s_rx_voice_mixer_controls,
13320 ARRAY_SIZE(sec_mi2s_rx_voice_mixer_controls)),
13321 SND_SOC_DAPM_MIXER("SLIM_0_RX_Voice Mixer",
13322 SND_SOC_NOPM, 0, 0,
13323 slimbus_rx_voice_mixer_controls,
13324 ARRAY_SIZE(slimbus_rx_voice_mixer_controls)),
13325 SND_SOC_DAPM_MIXER("INTERNAL_BT_SCO_RX_Voice Mixer",
13326 SND_SOC_NOPM, 0, 0,
13327 bt_sco_rx_voice_mixer_controls,
13328 ARRAY_SIZE(bt_sco_rx_voice_mixer_controls)),
13329 SND_SOC_DAPM_MIXER("AFE_PCM_RX_Voice Mixer",
13330 SND_SOC_NOPM, 0, 0,
13331 afe_pcm_rx_voice_mixer_controls,
13332 ARRAY_SIZE(afe_pcm_rx_voice_mixer_controls)),
13333 SND_SOC_DAPM_MIXER("AUX_PCM_RX_Voice Mixer",
13334 SND_SOC_NOPM, 0, 0,
13335 aux_pcm_rx_voice_mixer_controls,
13336 ARRAY_SIZE(aux_pcm_rx_voice_mixer_controls)),
13337 SND_SOC_DAPM_MIXER("SEC_AUX_PCM_RX_Voice Mixer",
13338 SND_SOC_NOPM, 0, 0,
13339 sec_aux_pcm_rx_voice_mixer_controls,
13340 ARRAY_SIZE(sec_aux_pcm_rx_voice_mixer_controls)),
13341 SND_SOC_DAPM_MIXER("TERT_AUX_PCM_RX_Voice Mixer",
13342 SND_SOC_NOPM, 0, 0,
13343 tert_aux_pcm_rx_voice_mixer_controls,
13344 ARRAY_SIZE(tert_aux_pcm_rx_voice_mixer_controls)),
13345 SND_SOC_DAPM_MIXER("QUAT_AUX_PCM_RX_Voice Mixer",
13346 SND_SOC_NOPM, 0, 0,
13347 quat_aux_pcm_rx_voice_mixer_controls,
13348 ARRAY_SIZE(quat_aux_pcm_rx_voice_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013349 SND_SOC_DAPM_MIXER("QUIN_AUX_PCM_RX_Voice Mixer",
13350 SND_SOC_NOPM, 0, 0,
13351 quin_aux_pcm_rx_voice_mixer_controls,
13352 ARRAY_SIZE(quin_aux_pcm_rx_voice_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013353 SND_SOC_DAPM_MIXER("HDMI_RX_Voice Mixer",
13354 SND_SOC_NOPM, 0, 0,
13355 hdmi_rx_voice_mixer_controls,
13356 ARRAY_SIZE(hdmi_rx_voice_mixer_controls)),
13357 SND_SOC_DAPM_MIXER("MI2S_RX_Voice Mixer",
13358 SND_SOC_NOPM, 0, 0,
13359 mi2s_rx_voice_mixer_controls,
13360 ARRAY_SIZE(mi2s_rx_voice_mixer_controls)),
13361 SND_SOC_DAPM_MIXER("PRI_MI2S_RX_Voice Mixer",
13362 SND_SOC_NOPM, 0, 0,
13363 pri_mi2s_rx_voice_mixer_controls,
13364 ARRAY_SIZE(pri_mi2s_rx_voice_mixer_controls)),
13365 SND_SOC_DAPM_MIXER("INT0_MI2S_RX_Voice Mixer",
13366 SND_SOC_NOPM, 0, 0,
13367 int0_mi2s_rx_voice_mixer_controls,
13368 ARRAY_SIZE(int0_mi2s_rx_voice_mixer_controls)),
13369 SND_SOC_DAPM_MIXER("INT4_MI2S_RX_Voice Mixer",
13370 SND_SOC_NOPM, 0, 0,
13371 int4_mi2s_rx_voice_mixer_controls,
13372 ARRAY_SIZE(int4_mi2s_rx_voice_mixer_controls)),
13373 SND_SOC_DAPM_MIXER("TERT_MI2S_RX_Voice Mixer",
13374 SND_SOC_NOPM, 0, 0,
13375 tert_mi2s_rx_voice_mixer_controls,
13376 ARRAY_SIZE(tert_mi2s_rx_voice_mixer_controls)),
13377 SND_SOC_DAPM_MIXER("QUAT_MI2S_RX_Voice Mixer",
13378 SND_SOC_NOPM, 0, 0,
13379 quat_mi2s_rx_voice_mixer_controls,
13380 ARRAY_SIZE(quat_mi2s_rx_voice_mixer_controls)),
13381 SND_SOC_DAPM_MIXER("QUIN_MI2S_RX_Voice Mixer",
13382 SND_SOC_NOPM, 0, 0,
13383 quin_mi2s_rx_voice_mixer_controls,
13384 ARRAY_SIZE(quin_mi2s_rx_voice_mixer_controls)),
13385 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_2_Voice Mixer",
13386 SND_SOC_NOPM, 0, 0,
13387 quat_tdm_rx_2_voice_mixer_controls,
13388 ARRAY_SIZE(quat_tdm_rx_2_voice_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013389 SND_SOC_DAPM_MIXER("Voip_Tx Mixer",
13390 SND_SOC_NOPM, 0, 0, tx_voip_mixer_controls,
13391 ARRAY_SIZE(tx_voip_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013392 SND_SOC_DAPM_MIXER("VoiceMMode1_Tx Mixer",
13393 SND_SOC_NOPM, 0, 0, tx_voicemmode1_mixer_controls,
13394 ARRAY_SIZE(tx_voicemmode1_mixer_controls)),
13395 SND_SOC_DAPM_MIXER("VoiceMMode2_Tx Mixer",
13396 SND_SOC_NOPM, 0, 0, tx_voicemmode2_mixer_controls,
13397 ARRAY_SIZE(tx_voicemmode2_mixer_controls)),
13398 SND_SOC_DAPM_MIXER("INTERNAL_BT_SCO_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13399 int_bt_sco_rx_mixer_controls, ARRAY_SIZE(int_bt_sco_rx_mixer_controls)),
13400 SND_SOC_DAPM_MIXER("INTERNAL_A2DP_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13401 int_bt_a2dp_rx_mixer_controls,
13402 ARRAY_SIZE(int_bt_a2dp_rx_mixer_controls)),
13403 SND_SOC_DAPM_MIXER("INTERNAL_FM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13404 int_fm_rx_mixer_controls, ARRAY_SIZE(int_fm_rx_mixer_controls)),
13405 SND_SOC_DAPM_MIXER("AFE_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13406 afe_pcm_rx_mixer_controls, ARRAY_SIZE(afe_pcm_rx_mixer_controls)),
13407 SND_SOC_DAPM_MIXER("Voice Stub Tx Mixer", SND_SOC_NOPM, 0, 0,
13408 tx_voice_stub_mixer_controls, ARRAY_SIZE(tx_voice_stub_mixer_controls)),
13409 SND_SOC_DAPM_MIXER("Voice2 Stub Tx Mixer", SND_SOC_NOPM, 0, 0,
13410 tx_voice2_stub_mixer_controls,
13411 ARRAY_SIZE(tx_voice2_stub_mixer_controls)),
13412 SND_SOC_DAPM_MIXER("VoLTE Stub Tx Mixer", SND_SOC_NOPM, 0, 0,
13413 tx_volte_stub_mixer_controls, ARRAY_SIZE(tx_volte_stub_mixer_controls)),
13414 SND_SOC_DAPM_MIXER("STUB_RX Mixer", SND_SOC_NOPM, 0, 0,
13415 stub_rx_mixer_controls, ARRAY_SIZE(stub_rx_mixer_controls)),
13416 SND_SOC_DAPM_MIXER("SLIMBUS_1_RX Mixer", SND_SOC_NOPM, 0, 0,
13417 slimbus_1_rx_mixer_controls, ARRAY_SIZE(slimbus_1_rx_mixer_controls)),
13418 SND_SOC_DAPM_MIXER("SLIMBUS_3_RX_Voice Mixer", SND_SOC_NOPM, 0, 0,
13419 slimbus_3_rx_mixer_controls, ARRAY_SIZE(slimbus_3_rx_mixer_controls)),
13420 SND_SOC_DAPM_MIXER("SLIM_6_RX_Voice Mixer",
13421 SND_SOC_NOPM, 0, 0,
13422 slimbus_6_rx_voice_mixer_controls,
13423 ARRAY_SIZE(slimbus_6_rx_voice_mixer_controls)),
13424 SND_SOC_DAPM_MIXER("SLIM_7_RX_Voice Mixer", SND_SOC_NOPM, 0, 0,
13425 slimbus_7_rx_voice_mixer_controls,
13426 ARRAY_SIZE(slimbus_7_rx_voice_mixer_controls)),
13427 SND_SOC_DAPM_MIXER("SLIM_8_RX_Voice Mixer", SND_SOC_NOPM, 0, 0,
13428 slimbus_8_rx_voice_mixer_controls,
13429 ARRAY_SIZE(slimbus_8_rx_voice_mixer_controls)),
13430 /* port mixer */
13431 SND_SOC_DAPM_MIXER("SLIMBUS_0_RX Port Mixer",
13432 SND_SOC_NOPM, 0, 0, sbus_0_rx_port_mixer_controls,
13433 ARRAY_SIZE(sbus_0_rx_port_mixer_controls)),
13434 SND_SOC_DAPM_MIXER("AUX_PCM_RX Port Mixer",
13435 SND_SOC_NOPM, 0, 0, aux_pcm_rx_port_mixer_controls,
13436 ARRAY_SIZE(aux_pcm_rx_port_mixer_controls)),
13437 SND_SOC_DAPM_MIXER("SEC_AUXPCM_RX Port Mixer",
13438 SND_SOC_NOPM, 0, 0, sec_auxpcm_rx_port_mixer_controls,
13439 ARRAY_SIZE(sec_auxpcm_rx_port_mixer_controls)),
13440 SND_SOC_DAPM_MIXER("TERT_AUXPCM_RX Port Mixer",
13441 SND_SOC_NOPM, 0, 0, tert_auxpcm_rx_port_mixer_controls,
13442 ARRAY_SIZE(tert_auxpcm_rx_port_mixer_controls)),
13443 SND_SOC_DAPM_MIXER("QUAT_AUXPCM_RX Port Mixer",
13444 SND_SOC_NOPM, 0, 0, quat_auxpcm_rx_port_mixer_controls,
13445 ARRAY_SIZE(quat_auxpcm_rx_port_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013446 SND_SOC_DAPM_MIXER("QUIN_AUXPCM_RX Port Mixer",
13447 SND_SOC_NOPM, 0, 0, quin_auxpcm_rx_port_mixer_controls,
13448 ARRAY_SIZE(quin_auxpcm_rx_port_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013449 SND_SOC_DAPM_MIXER("SLIMBUS_1_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13450 sbus_1_rx_port_mixer_controls,
13451 ARRAY_SIZE(sbus_1_rx_port_mixer_controls)),
13452 SND_SOC_DAPM_MIXER("INTERNAL_BT_SCO_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13453 bt_sco_rx_port_mixer_controls,
13454 ARRAY_SIZE(bt_sco_rx_port_mixer_controls)),
13455 SND_SOC_DAPM_MIXER("AFE_PCM_RX Port Mixer",
13456 SND_SOC_NOPM, 0, 0, afe_pcm_rx_port_mixer_controls,
13457 ARRAY_SIZE(afe_pcm_rx_port_mixer_controls)),
13458 SND_SOC_DAPM_MIXER("HDMI_RX Port Mixer",
13459 SND_SOC_NOPM, 0, 0, hdmi_rx_port_mixer_controls,
13460 ARRAY_SIZE(hdmi_rx_port_mixer_controls)),
13461 SND_SOC_DAPM_MIXER("DISPLAY_PORT_RX Port Mixer",
13462 SND_SOC_NOPM, 0, 0, display_port_rx_port_mixer_controls,
13463 ARRAY_SIZE(display_port_rx_port_mixer_controls)),
13464 SND_SOC_DAPM_MIXER("SEC_I2S_RX Port Mixer",
13465 SND_SOC_NOPM, 0, 0, sec_i2s_rx_port_mixer_controls,
13466 ARRAY_SIZE(sec_i2s_rx_port_mixer_controls)),
13467 SND_SOC_DAPM_MIXER("SLIMBUS_3_RX Port Mixer",
13468 SND_SOC_NOPM, 0, 0, sbus_3_rx_port_mixer_controls,
13469 ARRAY_SIZE(sbus_3_rx_port_mixer_controls)),
13470 SND_SOC_DAPM_MIXER("SLIMBUS_6_RX Port Mixer",
13471 SND_SOC_NOPM, 0, 0, sbus_6_rx_port_mixer_controls,
13472 ARRAY_SIZE(sbus_6_rx_port_mixer_controls)),
13473 SND_SOC_DAPM_MIXER("MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13474 mi2s_rx_port_mixer_controls, ARRAY_SIZE(mi2s_rx_port_mixer_controls)),
13475 SND_SOC_DAPM_MIXER("PRI_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13476 primary_mi2s_rx_port_mixer_controls,
13477 ARRAY_SIZE(primary_mi2s_rx_port_mixer_controls)),
13478 SND_SOC_DAPM_MIXER("SEC_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13479 sec_mi2s_rx_port_mixer_controls,
13480 ARRAY_SIZE(sec_mi2s_rx_port_mixer_controls)),
13481 SND_SOC_DAPM_MIXER("TERT_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13482 tert_mi2s_rx_port_mixer_controls,
13483 ARRAY_SIZE(tert_mi2s_rx_port_mixer_controls)),
13484 SND_SOC_DAPM_MIXER("QUAT_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13485 quat_mi2s_rx_port_mixer_controls,
13486 ARRAY_SIZE(quat_mi2s_rx_port_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013487 SND_SOC_DAPM_MIXER("QUIN_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13488 quin_mi2s_rx_port_mixer_controls,
13489 ARRAY_SIZE(quin_mi2s_rx_port_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013490 SND_SOC_DAPM_MIXER("PRI_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
13491 pri_tdm_rx_0_port_mixer_controls,
13492 ARRAY_SIZE(pri_tdm_rx_0_port_mixer_controls)),
13493 SND_SOC_DAPM_MIXER("PRI_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
13494 pri_tdm_rx_1_port_mixer_controls,
13495 ARRAY_SIZE(pri_tdm_rx_1_port_mixer_controls)),
13496 SND_SOC_DAPM_MIXER("PRI_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
13497 pri_tdm_rx_2_port_mixer_controls,
13498 ARRAY_SIZE(pri_tdm_rx_2_port_mixer_controls)),
13499 SND_SOC_DAPM_MIXER("PRI_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
13500 pri_tdm_rx_3_port_mixer_controls,
13501 ARRAY_SIZE(pri_tdm_rx_3_port_mixer_controls)),
13502 SND_SOC_DAPM_MIXER("SEC_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
13503 sec_tdm_rx_0_port_mixer_controls,
13504 ARRAY_SIZE(sec_tdm_rx_0_port_mixer_controls)),
13505 SND_SOC_DAPM_MIXER("SEC_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
13506 sec_tdm_rx_1_port_mixer_controls,
13507 ARRAY_SIZE(sec_tdm_rx_1_port_mixer_controls)),
13508 SND_SOC_DAPM_MIXER("SEC_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
13509 sec_tdm_rx_2_port_mixer_controls,
13510 ARRAY_SIZE(sec_tdm_rx_2_port_mixer_controls)),
13511 SND_SOC_DAPM_MIXER("SEC_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
13512 sec_tdm_rx_3_port_mixer_controls,
13513 ARRAY_SIZE(sec_tdm_rx_3_port_mixer_controls)),
13514 SND_SOC_DAPM_MIXER("TERT_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
13515 tert_tdm_rx_0_port_mixer_controls,
13516 ARRAY_SIZE(tert_tdm_rx_0_port_mixer_controls)),
13517 SND_SOC_DAPM_MIXER("TERT_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
13518 tert_tdm_rx_1_port_mixer_controls,
13519 ARRAY_SIZE(tert_tdm_rx_1_port_mixer_controls)),
13520 SND_SOC_DAPM_MIXER("TERT_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
13521 tert_tdm_rx_2_port_mixer_controls,
13522 ARRAY_SIZE(tert_tdm_rx_2_port_mixer_controls)),
13523 SND_SOC_DAPM_MIXER("TERT_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
13524 tert_tdm_rx_3_port_mixer_controls,
13525 ARRAY_SIZE(tert_tdm_rx_3_port_mixer_controls)),
13526 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
13527 quat_tdm_rx_0_port_mixer_controls,
13528 ARRAY_SIZE(quat_tdm_rx_0_port_mixer_controls)),
13529 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
13530 quat_tdm_rx_1_port_mixer_controls,
13531 ARRAY_SIZE(quat_tdm_rx_1_port_mixer_controls)),
13532 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
13533 quat_tdm_rx_2_port_mixer_controls,
13534 ARRAY_SIZE(quat_tdm_rx_2_port_mixer_controls)),
13535 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
13536 quat_tdm_rx_3_port_mixer_controls,
13537 ARRAY_SIZE(quat_tdm_rx_3_port_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013538 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
13539 quin_tdm_rx_0_port_mixer_controls,
13540 ARRAY_SIZE(quin_tdm_rx_0_port_mixer_controls)),
13541 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
13542 quin_tdm_rx_1_port_mixer_controls,
13543 ARRAY_SIZE(quin_tdm_rx_1_port_mixer_controls)),
13544 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
13545 quin_tdm_rx_2_port_mixer_controls,
13546 ARRAY_SIZE(quin_tdm_rx_2_port_mixer_controls)),
13547 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
13548 quin_tdm_rx_3_port_mixer_controls,
13549 ARRAY_SIZE(quin_tdm_rx_3_port_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013550 SND_SOC_DAPM_MIXER("INT0_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13551 int0_mi2s_rx_port_mixer_controls,
13552 ARRAY_SIZE(int0_mi2s_rx_port_mixer_controls)),
13553 SND_SOC_DAPM_MIXER("INT4_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13554 int4_mi2s_rx_port_mixer_controls,
13555 ARRAY_SIZE(int4_mi2s_rx_port_mixer_controls)),
13556 SND_SOC_DAPM_MIXER("QCHAT_Tx Mixer",
13557 SND_SOC_NOPM, 0, 0, tx_qchat_mixer_controls,
13558 ARRAY_SIZE(tx_qchat_mixer_controls)),
13559 SND_SOC_DAPM_MIXER("USB_AUDIO_RX_Voice Mixer",
13560 SND_SOC_NOPM, 0, 0, usb_audio_rx_voice_mixer_controls,
13561 ARRAY_SIZE(usb_audio_rx_voice_mixer_controls)),
13562 SND_SOC_DAPM_MIXER("USB_AUDIO_RX Port Mixer",
13563 SND_SOC_NOPM, 0, 0, usb_rx_port_mixer_controls,
13564 ARRAY_SIZE(usb_rx_port_mixer_controls)),
13565 /* lsm mixer definitions */
13566 SND_SOC_DAPM_MIXER("LSM1 Mixer", SND_SOC_NOPM, 0, 0,
13567 lsm1_mixer_controls, ARRAY_SIZE(lsm1_mixer_controls)),
13568 SND_SOC_DAPM_MIXER("LSM2 Mixer", SND_SOC_NOPM, 0, 0,
13569 lsm2_mixer_controls, ARRAY_SIZE(lsm2_mixer_controls)),
13570 SND_SOC_DAPM_MIXER("LSM3 Mixer", SND_SOC_NOPM, 0, 0,
13571 lsm3_mixer_controls, ARRAY_SIZE(lsm3_mixer_controls)),
13572 SND_SOC_DAPM_MIXER("LSM4 Mixer", SND_SOC_NOPM, 0, 0,
13573 lsm4_mixer_controls, ARRAY_SIZE(lsm4_mixer_controls)),
13574 SND_SOC_DAPM_MIXER("LSM5 Mixer", SND_SOC_NOPM, 0, 0,
13575 lsm5_mixer_controls, ARRAY_SIZE(lsm5_mixer_controls)),
13576 SND_SOC_DAPM_MIXER("LSM6 Mixer", SND_SOC_NOPM, 0, 0,
13577 lsm6_mixer_controls, ARRAY_SIZE(lsm6_mixer_controls)),
13578 SND_SOC_DAPM_MIXER("LSM7 Mixer", SND_SOC_NOPM, 0, 0,
13579 lsm7_mixer_controls, ARRAY_SIZE(lsm7_mixer_controls)),
13580 SND_SOC_DAPM_MIXER("LSM8 Mixer", SND_SOC_NOPM, 0, 0,
13581 lsm8_mixer_controls, ARRAY_SIZE(lsm8_mixer_controls)),
13582 /* Virtual Pins to force backends ON atm */
13583 SND_SOC_DAPM_OUTPUT("BE_OUT"),
13584 SND_SOC_DAPM_INPUT("BE_IN"),
13585
13586 SND_SOC_DAPM_MUX("SLIM0_RX_VI_FB_LCH_MUX", SND_SOC_NOPM, 0, 0,
13587 &slim0_rx_vi_fb_lch_mux),
13588 SND_SOC_DAPM_MUX("SLIM0_RX_VI_FB_RCH_MUX", SND_SOC_NOPM, 0, 0,
13589 &slim0_rx_vi_fb_rch_mux),
13590 SND_SOC_DAPM_MUX("PRI_MI2S_RX_VI_FB_MUX", SND_SOC_NOPM, 0, 0,
13591 &mi2s_rx_vi_fb_mux),
13592 SND_SOC_DAPM_MUX("INT4_MI2S_RX_VI_FB_MONO_CH_MUX", SND_SOC_NOPM, 0, 0,
13593 &int4_mi2s_rx_vi_fb_mono_ch_mux),
13594 SND_SOC_DAPM_MUX("INT4_MI2S_RX_VI_FB_STEREO_CH_MUX", SND_SOC_NOPM, 0, 0,
13595 &int4_mi2s_rx_vi_fb_stereo_ch_mux),
13596
13597 SND_SOC_DAPM_MUX("VOC_EXT_EC MUX", SND_SOC_NOPM, 0, 0,
13598 &voc_ext_ec_mux),
13599 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL1 MUX", SND_SOC_NOPM, 0, 0,
13600 &ext_ec_ref_mux_ul1),
13601 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL2 MUX", SND_SOC_NOPM, 0, 0,
13602 &ext_ec_ref_mux_ul2),
13603 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL3 MUX", SND_SOC_NOPM, 0, 0,
13604 &ext_ec_ref_mux_ul3),
13605 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL4 MUX", SND_SOC_NOPM, 0, 0,
13606 &ext_ec_ref_mux_ul4),
13607 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL5 MUX", SND_SOC_NOPM, 0, 0,
13608 &ext_ec_ref_mux_ul5),
13609 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL6 MUX", SND_SOC_NOPM, 0, 0,
13610 &ext_ec_ref_mux_ul6),
13611 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL8 MUX", SND_SOC_NOPM, 0, 0,
13612 &ext_ec_ref_mux_ul8),
13613 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL9 MUX", SND_SOC_NOPM, 0, 0,
13614 &ext_ec_ref_mux_ul9),
Laxminath Kasam38070be2017-08-17 18:21:59 +053013615 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL10 MUX", SND_SOC_NOPM, 0, 0,
13616 &ext_ec_ref_mux_ul10),
Asish Bhattacharya34504582017-08-08 12:55:01 +053013617 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL16 MUX", SND_SOC_NOPM, 0, 0,
13618 &ext_ec_ref_mux_ul16),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013619 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL17 MUX", SND_SOC_NOPM, 0, 0,
13620 &ext_ec_ref_mux_ul17),
13621 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL18 MUX", SND_SOC_NOPM, 0, 0,
13622 &ext_ec_ref_mux_ul18),
13623 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL19 MUX", SND_SOC_NOPM, 0, 0,
13624 &ext_ec_ref_mux_ul19),
13625};
13626
13627static const struct snd_soc_dapm_route intercon[] = {
13628 {"PRI_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13629 {"PRI_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13630 {"PRI_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13631 {"PRI_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13632 {"PRI_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13633 {"PRI_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13634 {"PRI_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13635 {"PRI_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13636 {"PRI_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
13637 {"PRI_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13638 {"PRI_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13639 {"PRI_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13640 {"PRI_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13641 {"PRI_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13642 {"PRI_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13643 {"PRI_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13644 {"PRI_I2S_RX", NULL, "PRI_RX Audio Mixer"},
13645
13646 {"SEC_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13647 {"SEC_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13648 {"SEC_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13649 {"SEC_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13650 {"SEC_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13651 {"SEC_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13652 {"SEC_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13653 {"SEC_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13654 {"SEC_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
13655 {"SEC_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13656 {"SEC_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13657 {"SEC_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13658 {"SEC_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13659 {"SEC_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13660 {"SEC_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13661 {"SEC_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13662 {"SEC_I2S_RX", NULL, "SEC_RX Audio Mixer"},
13663
13664 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13665 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13666 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13667 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13668 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13669 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13670 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13671 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13672 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
13673 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13674 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13675 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13676 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13677 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13678 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13679 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13680 {"SLIMBUS_0_RX", NULL, "SLIMBUS_0_RX Audio Mixer"},
13681
13682 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13683 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13684 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13685 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13686 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13687 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13688 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13689 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13690 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
13691 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13692 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13693 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13694 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13695 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13696 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13697 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13698 {"SLIMBUS_2_RX", NULL, "SLIMBUS_2_RX Audio Mixer"},
13699
13700 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13701 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13702 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13703 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13704 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13705 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13706 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13707 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13708 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
13709 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13710 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13711 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13712 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13713 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13714 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13715 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13716 {"SLIMBUS_5_RX", NULL, "SLIMBUS_5_RX Audio Mixer"},
13717
13718 {"HDMI Mixer", "MultiMedia1", "MM_DL1"},
13719 {"HDMI Mixer", "MultiMedia2", "MM_DL2"},
13720 {"HDMI Mixer", "MultiMedia3", "MM_DL3"},
13721 {"HDMI Mixer", "MultiMedia4", "MM_DL4"},
13722 {"HDMI Mixer", "MultiMedia5", "MM_DL5"},
13723 {"HDMI Mixer", "MultiMedia6", "MM_DL6"},
13724 {"HDMI Mixer", "MultiMedia7", "MM_DL7"},
13725 {"HDMI Mixer", "MultiMedia8", "MM_DL8"},
13726 {"HDMI Mixer", "MultiMedia9", "MM_DL9"},
13727 {"HDMI Mixer", "MultiMedia10", "MM_DL10"},
13728 {"HDMI Mixer", "MultiMedia11", "MM_DL11"},
13729 {"HDMI Mixer", "MultiMedia12", "MM_DL12"},
13730 {"HDMI Mixer", "MultiMedia13", "MM_DL13"},
13731 {"HDMI Mixer", "MultiMedia14", "MM_DL14"},
13732 {"HDMI Mixer", "MultiMedia15", "MM_DL15"},
13733 {"HDMI Mixer", "MultiMedia16", "MM_DL16"},
13734 {"HDMI", NULL, "HDMI Mixer"},
13735
13736 {"DISPLAY_PORT Mixer", "MultiMedia1", "MM_DL1"},
13737 {"DISPLAY_PORT Mixer", "MultiMedia2", "MM_DL2"},
13738 {"DISPLAY_PORT Mixer", "MultiMedia3", "MM_DL3"},
13739 {"DISPLAY_PORT Mixer", "MultiMedia4", "MM_DL4"},
13740 {"DISPLAY_PORT Mixer", "MultiMedia5", "MM_DL5"},
13741 {"DISPLAY_PORT Mixer", "MultiMedia6", "MM_DL6"},
13742 {"DISPLAY_PORT Mixer", "MultiMedia7", "MM_DL7"},
13743 {"DISPLAY_PORT Mixer", "MultiMedia8", "MM_DL8"},
13744 {"DISPLAY_PORT Mixer", "MultiMedia9", "MM_DL9"},
13745 {"DISPLAY_PORT Mixer", "MultiMedia10", "MM_DL10"},
13746 {"DISPLAY_PORT Mixer", "MultiMedia11", "MM_DL11"},
13747 {"DISPLAY_PORT Mixer", "MultiMedia12", "MM_DL12"},
13748 {"DISPLAY_PORT Mixer", "MultiMedia13", "MM_DL13"},
13749 {"DISPLAY_PORT Mixer", "MultiMedia14", "MM_DL14"},
13750 {"DISPLAY_PORT Mixer", "MultiMedia15", "MM_DL15"},
13751 {"DISPLAY_PORT Mixer", "MultiMedia16", "MM_DL16"},
13752 {"DISPLAY_PORT", NULL, "DISPLAY_PORT Mixer"},
13753
13754 {"SPDIF_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13755 {"SPDIF_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13756 {"SPDIF_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13757 {"SPDIF_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13758 {"SPDIF_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13759 {"SPDIF_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13760 {"SPDIF_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13761 {"SPDIF_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13762 {"SPDIF_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
13763 {"SPDIF_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13764 {"SPDIF_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13765 {"SPDIF_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13766 {"SPDIF_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13767 {"SPDIF_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13768 {"SPDIF_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13769 {"SPDIF_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13770 {"SPDIF_RX", NULL, "SPDIF_RX Audio Mixer"},
13771
13772 /* incall */
13773 {"Incall_Music Audio Mixer", "MultiMedia1", "MM_DL1"},
13774 {"Incall_Music Audio Mixer", "MultiMedia2", "MM_DL2"},
13775 {"Incall_Music Audio Mixer", "MultiMedia5", "MM_DL5"},
13776 {"Incall_Music Audio Mixer", "MultiMedia9", "MM_DL9"},
13777 {"VOICE_PLAYBACK_TX", NULL, "Incall_Music Audio Mixer"},
13778 {"Incall_Music_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
13779 {"Incall_Music_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
13780 {"Incall_Music_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
13781 {"Incall_Music_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
13782 {"VOICE2_PLAYBACK_TX", NULL, "Incall_Music_2 Audio Mixer"},
13783 {"SLIMBUS_4_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13784 {"SLIMBUS_4_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13785 {"SLIMBUS_4_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13786 {"SLIMBUS_4_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
13787 {"SLIMBUS_4_RX", NULL, "SLIMBUS_4_RX Audio Mixer"},
13788
13789 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13790 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13791 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13792 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13793 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13794 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13795 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13796 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13797 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
13798 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13799 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13800 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13801 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13802 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13803 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13804 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13805 {"SLIMBUS_6_RX", NULL, "SLIMBUS_6_RX Audio Mixer"},
13806
13807 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13808 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13809 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13810 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13811 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13812 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13813 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13814 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13815 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
13816 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13817 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13818 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13819 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13820 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13821 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13822 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13823 {"SLIMBUS_7_RX", NULL, "SLIMBUS_7_RX Audio Mixer"},
13824
13825 {"USB_AUDIO_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13826 {"USB_AUDIO_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13827 {"USB_AUDIO_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13828 {"USB_AUDIO_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13829 {"USB_AUDIO_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13830 {"USB_AUDIO_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13831 {"USB_AUDIO_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13832 {"USB_AUDIO_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13833 {"USB_AUDIO_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
13834 {"USB_AUDIO_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13835 {"USB_AUDIO_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13836 {"USB_AUDIO_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13837 {"USB_AUDIO_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13838 {"USB_AUDIO_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13839 {"USB_AUDIO_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13840 {"USB_AUDIO_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13841 {"USB_AUDIO_RX", NULL, "USB_AUDIO_RX Audio Mixer"},
13842
13843 {"MultiMedia1 Mixer", "VOC_REC_UL", "INCALL_RECORD_TX"},
13844 {"MultiMedia4 Mixer", "VOC_REC_UL", "INCALL_RECORD_TX"},
13845 {"MultiMedia8 Mixer", "VOC_REC_UL", "INCALL_RECORD_TX"},
13846 {"MultiMedia1 Mixer", "VOC_REC_DL", "INCALL_RECORD_RX"},
13847 {"MultiMedia4 Mixer", "VOC_REC_DL", "INCALL_RECORD_RX"},
13848 {"MultiMedia8 Mixer", "VOC_REC_DL", "INCALL_RECORD_RX"},
13849 {"MultiMedia1 Mixer", "SLIM_4_TX", "SLIMBUS_4_TX"},
13850 {"MultiMedia1 Mixer", "SLIM_6_TX", "SLIMBUS_6_TX"},
13851 {"MultiMedia1 Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
13852 {"MultiMedia1 Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
13853 {"MultiMedia8 Mixer", "SLIM_6_TX", "SLIMBUS_6_TX"},
13854 {"MultiMedia8 Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
13855 {"MultiMedia4 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
13856 {"MultiMedia17 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
13857 {"MultiMedia18 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
13858 {"MultiMedia19 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
13859 {"MultiMedia8 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
13860 {"MultiMedia2 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
13861 {"MultiMedia4 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
13862 {"MultiMedia17 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
13863 {"MultiMedia18 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
13864 {"MultiMedia19 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
13865 {"MultiMedia8 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
13866 {"MultiMedia18 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
13867 {"MultiMedia8 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
13868 {"MultiMedia3 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
13869 {"MultiMedia5 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053013870 {"MultiMedia10 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053013871 {"MultiMedia16 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013872 {"MultiMedia5 Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
13873 {"MultiMedia5 Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053013874 {"MultiMedia10 Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013875 {"MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13876 {"MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13877 {"MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13878 {"MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13879 {"MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13880 {"MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13881 {"MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13882 {"MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13883 {"MI2S_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
13884 {"MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13885 {"MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13886 {"MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13887 {"MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13888 {"MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13889 {"MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13890 {"MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13891 {"MI2S_RX", NULL, "MI2S_RX Audio Mixer"},
13892
13893 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13894 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13895 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13896 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13897 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13898 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13899 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13900 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13901 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13902 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13903 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13904 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13905 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13906 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13907 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13908 {"QUAT_MI2S_RX", NULL, "QUAT_MI2S_RX Audio Mixer"},
13909
13910 {"TERT_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13911 {"TERT_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13912 {"TERT_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13913 {"TERT_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13914 {"TERT_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13915 {"TERT_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13916 {"TERT_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13917 {"TERT_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13918 {"TERT_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13919 {"TERT_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13920 {"TERT_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13921 {"TERT_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13922 {"TERT_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13923 {"TERT_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13924 {"TERT_MI2S_RX", NULL, "TERT_MI2S_RX Audio Mixer"},
13925
13926 {"SEC_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13927 {"SEC_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13928 {"SEC_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13929 {"SEC_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13930 {"SEC_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13931 {"SEC_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13932 {"SEC_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13933 {"SEC_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13934 {"SEC_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13935 {"SEC_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13936 {"SEC_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13937 {"SEC_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13938 {"SEC_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13939 {"SEC_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13940 {"SEC_MI2S_RX", NULL, "SEC_MI2S_RX Audio Mixer"},
13941
13942 {"SEC_MI2S_RX_SD1 Audio Mixer", "MultiMedia6", "MM_DL6"},
13943 {"SEC_MI2S_RX_SD1", NULL, "SEC_MI2S_RX_SD1 Audio Mixer"},
13944
13945 {"SEC_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
13946 {"SEC_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
13947
13948 {"PRI_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13949 {"PRI_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13950 {"PRI_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13951 {"PRI_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13952 {"PRI_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13953 {"PRI_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13954 {"PRI_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13955 {"PRI_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13956 {"PRI_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13957 {"PRI_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13958 {"PRI_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13959 {"PRI_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13960 {"PRI_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13961 {"PRI_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13962 {"PRI_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13963 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX Audio Mixer"},
13964
13965 {"INT0_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13966 {"INT0_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13967 {"INT0_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13968 {"INT0_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13969 {"INT0_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13970 {"INT0_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13971 {"INT0_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13972 {"INT0_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13973 {"INT0_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13974 {"INT0_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13975 {"INT0_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13976 {"INT0_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13977 {"INT0_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13978 {"INT0_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13979 {"INT0_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13980 {"INT0_MI2S_RX", NULL, "INT0_MI2S_RX Audio Mixer"},
13981
13982 {"INT4_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13983 {"INT4_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13984 {"INT4_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13985 {"INT4_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13986 {"INT4_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13987 {"INT4_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13988 {"INT4_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13989 {"INT4_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13990 {"INT4_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13991 {"INT4_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13992 {"INT4_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13993 {"INT4_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13994 {"INT4_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13995 {"INT4_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13996 {"INT4_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13997 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX Audio Mixer"},
13998
13999 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14000 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14001 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14002 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14003 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14004 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14005 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14006 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14007 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14008 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14009 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14010 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14011 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14012 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14013 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14014 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14015 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14016 {"QUIN_MI2S_RX", NULL, "QUIN_MI2S_RX Audio Mixer"},
14017
14018 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14019 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14020 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14021 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14022 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14023 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14024 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14025 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14026 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14027 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14028 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14029 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14030 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14031 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14032 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14033 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14034 {"PRI_TDM_RX_0", NULL, "PRI_TDM_RX_0 Audio Mixer"},
14035
14036 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
14037 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
14038 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
14039 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
14040 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
14041 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
14042 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
14043 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
14044 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
14045 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
14046 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
14047 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
14048 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
14049 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
14050 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
14051 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
14052 {"PRI_TDM_RX_1", NULL, "PRI_TDM_RX_1 Audio Mixer"},
14053
14054 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
14055 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
14056 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
14057 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
14058 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
14059 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
14060 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
14061 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
14062 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
14063 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
14064 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
14065 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
14066 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
14067 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
14068 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
14069 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
14070 {"PRI_TDM_RX_2", NULL, "PRI_TDM_RX_2 Audio Mixer"},
14071
14072 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
14073 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
14074 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
14075 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
14076 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
14077 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
14078 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
14079 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
14080 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
14081 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
14082 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
14083 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
14084 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
14085 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
14086 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
14087 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
14088 {"PRI_TDM_RX_3", NULL, "PRI_TDM_RX_3 Audio Mixer"},
14089
14090 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14091 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14092 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14093 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14094 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14095 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14096 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14097 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14098 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14099 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14100 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14101 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14102 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14103 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14104 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14105 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14106 {"PRI_TDM_TX_0", NULL, "PRI_TDM_TX_0 Audio Mixer"},
14107
14108 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14109 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14110 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14111 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14112 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14113 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14114 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14115 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14116 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14117 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14118 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14119 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14120 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14121 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14122 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14123 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14124 {"SEC_TDM_RX_0", NULL, "SEC_TDM_RX_0 Audio Mixer"},
14125
14126 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
14127 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
14128 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
14129 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
14130 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
14131 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
14132 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
14133 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
14134 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
14135 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
14136 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
14137 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
14138 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
14139 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
14140 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
14141 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
14142 {"SEC_TDM_RX_1", NULL, "SEC_TDM_RX_1 Audio Mixer"},
14143
14144 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
14145 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
14146 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
14147 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
14148 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
14149 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
14150 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
14151 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
14152 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
14153 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
14154 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
14155 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
14156 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
14157 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
14158 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
14159 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
14160 {"SEC_TDM_RX_2", NULL, "SEC_TDM_RX_2 Audio Mixer"},
14161
14162 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
14163 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
14164 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
14165 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
14166 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
14167 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
14168 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
14169 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
14170 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
14171 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
14172 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
14173 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
14174 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
14175 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
14176 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
14177 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
14178 {"SEC_TDM_RX_3", NULL, "SEC_TDM_RX_3 Audio Mixer"},
14179
14180 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14181 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14182 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14183 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14184 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14185 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14186 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14187 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14188 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14189 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14190 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14191 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14192 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14193 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14194 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14195 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14196 {"SEC_TDM_TX_0", NULL, "SEC_TDM_TX_0 Audio Mixer"},
14197
14198 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14199 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14200 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14201 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14202 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14203 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14204 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14205 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14206 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14207 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14208 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14209 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14210 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14211 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14212 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14213 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14214 {"TERT_TDM_RX_0", NULL, "TERT_TDM_RX_0 Audio Mixer"},
14215
14216 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14217 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14218 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14219 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14220 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14221 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14222 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14223 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14224 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14225 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14226 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14227 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14228 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14229 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14230 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14231 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14232 {"TERT_TDM_TX_0", NULL, "TERT_TDM_TX_0 Audio Mixer"},
14233
14234 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
14235 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
14236 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
14237 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
14238 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
14239 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
14240 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
14241 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
14242 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
14243 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
14244 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
14245 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
14246 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
14247 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
14248 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
14249 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
14250 {"TERT_TDM_RX_1", NULL, "TERT_TDM_RX_1 Audio Mixer"},
14251
14252 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
14253 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
14254 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
14255 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
14256 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
14257 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
14258 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
14259 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
14260 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
14261 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
14262 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
14263 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
14264 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
14265 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
14266 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
14267 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
14268 {"TERT_TDM_RX_2", NULL, "TERT_TDM_RX_2 Audio Mixer"},
14269
14270 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
14271 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
14272 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
14273 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
14274 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
14275 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
14276 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
14277 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
14278 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
14279 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
14280 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
14281 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
14282 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
14283 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
14284 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
14285 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
14286 {"TERT_TDM_RX_3", NULL, "TERT_TDM_RX_3 Audio Mixer"},
14287
14288 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia1", "MM_DL1"},
14289 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia2", "MM_DL2"},
14290 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia3", "MM_DL3"},
14291 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia4", "MM_DL4"},
14292 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia5", "MM_DL5"},
14293 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia6", "MM_DL6"},
14294 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia7", "MM_DL7"},
14295 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia8", "MM_DL8"},
14296 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia9", "MM_DL9"},
14297 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia10", "MM_DL10"},
14298 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia11", "MM_DL11"},
14299 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia12", "MM_DL12"},
14300 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia13", "MM_DL13"},
14301 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia14", "MM_DL14"},
14302 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia15", "MM_DL15"},
14303 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia16", "MM_DL16"},
14304 {"TERT_TDM_RX_4", NULL, "TERT_TDM_RX_4 Audio Mixer"},
14305
14306 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14307 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14308 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14309 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14310 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14311 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14312 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14313 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14314 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14315 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14316 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14317 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14318 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14319 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14320 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14321 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14322 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia20", "MM_DL20"},
14323 {"QUAT_TDM_RX_0", NULL, "QUAT_TDM_RX_0 Audio Mixer"},
14324
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014325 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14326 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14327 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14328 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14329 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14330 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14331 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14332 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14333 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14334 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14335 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14336 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14337 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14338 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14339 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14340 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14341 {"QUAT_TDM_TX_0", NULL, "QUAT_TDM_TX_0 Audio Mixer"},
14342
14343 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
14344 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
14345 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
14346 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
14347 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
14348 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
14349 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
14350 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
14351 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
14352 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
14353 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
14354 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
14355 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
14356 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
14357 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
14358 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
14359 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia20", "MM_DL20"},
14360 {"QUAT_TDM_RX_1", NULL, "QUAT_TDM_RX_1 Audio Mixer"},
14361
14362 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
14363 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
14364 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
14365 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
14366 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
14367 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
14368 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
14369 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
14370 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
14371 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
14372 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
14373 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
14374 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
14375 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
14376 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
14377 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
14378 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia20", "MM_DL20"},
14379 {"QUAT_TDM_RX_2", NULL, "QUAT_TDM_RX_2 Audio Mixer"},
14380
14381 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
14382 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
14383 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
14384 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
14385 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
14386 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
14387 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
14388 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
14389 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
14390 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
14391 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
14392 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
14393 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
14394 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
14395 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
14396 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
14397 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia20", "MM_DL20"},
14398 {"QUAT_TDM_RX_3", NULL, "QUAT_TDM_RX_3 Audio Mixer"},
14399
Rohit Kumara5077932017-09-10 22:05:05 +053014400 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14401 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14402 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14403 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14404 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14405 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14406 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14407 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14408 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14409 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14410 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14411 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14412 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14413 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14414 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14415 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14416 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia20", "MM_DL20"},
14417 {"QUIN_TDM_RX_0", NULL, "QUIN_TDM_RX_0 Audio Mixer"},
14418
14419 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14420 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14421 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14422 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14423 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14424 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14425 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14426 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14427 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14428 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14429 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14430 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14431 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14432 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14433 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14434 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14435 {"QUIN_TDM_TX_0", NULL, "QUIN_TDM_TX_0 Audio Mixer"},
14436
14437 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
14438 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
14439 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
14440 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
14441 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
14442 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
14443 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
14444 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
14445 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
14446 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
14447 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
14448 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
14449 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
14450 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
14451 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
14452 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
14453 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia20", "MM_DL20"},
14454 {"QUIN_TDM_RX_1", NULL, "QUIN_TDM_RX_1 Audio Mixer"},
14455
14456 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
14457 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
14458 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
14459 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
14460 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
14461 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
14462 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
14463 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
14464 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
14465 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
14466 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
14467 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
14468 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
14469 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
14470 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
14471 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
14472 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia20", "MM_DL20"},
14473 {"QUIN_TDM_RX_2", NULL, "QUIN_TDM_RX_2 Audio Mixer"},
14474
14475 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
14476 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
14477 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
14478 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
14479 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
14480 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
14481 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
14482 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
14483 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
14484 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
14485 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
14486 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
14487 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
14488 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
14489 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
14490 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
14491 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia20", "MM_DL20"},
14492 {"QUIN_TDM_RX_3", NULL, "QUIN_TDM_RX_3 Audio Mixer"},
14493
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014494 {"MultiMedia1 Mixer", "PRI_TX", "PRI_I2S_TX"},
14495 {"MultiMedia1 Mixer", "MI2S_TX", "MI2S_TX"},
14496 {"MultiMedia2 Mixer", "MI2S_TX", "MI2S_TX"},
14497 {"MultiMedia3 Mixer", "MI2S_TX", "MI2S_TX"},
14498 {"MultiMedia5 Mixer", "MI2S_TX", "MI2S_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014499 {"MultiMedia10 Mixer", "MI2S_TX", "MI2S_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014500 {"MultiMedia16 Mixer", "MI2S_TX", "MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014501 {"MultiMedia1 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14502 {"MultiMedia2 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14503 {"MultiMedia6 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14504 {"MultiMedia1 Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
14505 {"MultiMedia2 Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
14506 {"MultiMedia1 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14507 {"MultiMedia2 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14508 {"MultiMedia1 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
14509 {"MultiMedia2 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
14510 {"MultiMedia1 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14511 {"MultiMedia2 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14512 {"MultiMedia1 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14513 {"MultiMedia1 Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
14514 {"MultiMedia3 Mixer", "AUX_PCM_TX", "AUX_PCM_TX"},
14515 {"MultiMedia5 Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014516 {"MultiMedia10 Mixer", "AUX_PCM_TX", "AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014517 {"MultiMedia1 Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
14518 {"MultiMedia3 Mixer", "SEC_AUX_PCM_TX", "SEC_AUX_PCM_TX"},
14519 {"MultiMedia5 Mixer", "SEC_AUX_PCM_TX", "SEC_AUX_PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014520 {"MultiMedia10 Mixer", "SEC_AUX_PCM_TX", "SEC_AUX_PCM_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014521 {"MultiMedia16 Mixer", "AUX_PCM_TX", "AUX_PCM_TX"},
14522 {"MultiMedia16 Mixer", "SEC_AUX_PCM_TX", "SEC_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014523 {"MultiMedia1 Mixer", "TERT_AUXPCM_UL_TX", "TERT_AUX_PCM_TX"},
14524 {"MultiMedia3 Mixer", "TERT_AUX_PCM_TX", "TERT_AUX_PCM_TX"},
14525 {"MultiMedia5 Mixer", "TERT_AUX_PCM_TX", "TERT_AUX_PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014526 {"MultiMedia10 Mixer", "TERT_AUX_PCM_TX", "TERT_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014527 {"MultiMedia1 Mixer", "QUAT_AUXPCM_UL_TX", "QUAT_AUX_PCM_TX"},
14528 {"MultiMedia3 Mixer", "QUAT_AUX_PCM_TX", "QUAT_AUX_PCM_TX"},
14529 {"MultiMedia5 Mixer", "QUAT_AUX_PCM_TX", "QUAT_AUX_PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014530 {"MultiMedia10 Mixer", "QUAT_AUX_PCM_TX", "QUAT_AUX_PCM_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014531 {"MultiMedia16 Mixer", "QUAT_AUX_PCM_TX", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053014532 {"MultiMedia1 Mixer", "QUIN_AUXPCM_UL_TX", "QUIN_AUX_PCM_TX"},
14533 {"MultiMedia3 Mixer", "QUIN_AUX_PCM_TX", "QUIN_AUX_PCM_TX"},
14534 {"MultiMedia5 Mixer", "QUIN_AUX_PCM_TX", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014535 {"MultiMedia2 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14536 {"MultiMedia2 Mixer", "SLIM_6_TX", "SLIMBUS_6_TX"},
14537 {"MultiMedia2 Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
14538 {"MultiMedia2 Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
14539 {"MultiMedia1 Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
14540 {"MultiMedia1 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14541 {"MultiMedia2 Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
14542 {"MultiMedia6 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14543 {"MultiMedia6 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14544 {"MultiMedia3 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14545 {"MultiMedia5 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014546 {"MultiMedia10 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014547 {"MultiMedia6 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
14548 {"MultiMedia3 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
14549 {"MultiMedia5 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014550 {"MultiMedia10 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014551 {"MultiMedia16 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014552 {"MultiMedia6 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14553 {"MultiMedia3 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14554 {"MultiMedia5 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014555 {"MultiMedia10 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014556 {"MultiMedia16 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014557 {"MultiMedia6 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14558 {"MultiMedia6 Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
14559 {"MultiMedia6 Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
14560 {"MultiMedia6 Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053014561 {"MultiMedia6 Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014562
14563 {"MultiMedia1 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
14564 {"MultiMedia1 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
14565 {"MultiMedia1 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
14566 {"MultiMedia1 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
14567 {"MultiMedia1 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
14568 {"MultiMedia1 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
14569 {"MultiMedia1 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
14570 {"MultiMedia1 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
14571 {"MultiMedia1 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14572 {"MultiMedia1 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14573 {"MultiMedia1 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14574 {"MultiMedia1 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14575 {"MultiMedia1 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14576 {"MultiMedia1 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14577 {"MultiMedia1 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14578 {"MultiMedia1 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053014579 {"MultiMedia1 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
14580 {"MultiMedia1 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
14581 {"MultiMedia1 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
14582 {"MultiMedia1 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014583
14584 {"MultiMedia2 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
14585 {"MultiMedia2 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
14586 {"MultiMedia2 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
14587 {"MultiMedia2 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
14588 {"MultiMedia2 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
14589 {"MultiMedia2 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
14590 {"MultiMedia2 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
14591 {"MultiMedia2 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
14592 {"MultiMedia2 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14593 {"MultiMedia2 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14594 {"MultiMedia2 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14595 {"MultiMedia2 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14596 {"MultiMedia2 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14597 {"MultiMedia2 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14598 {"MultiMedia2 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14599 {"MultiMedia2 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053014600 {"MultiMedia2 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
14601 {"MultiMedia2 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
14602 {"MultiMedia2 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
14603 {"MultiMedia2 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014604
14605 {"MultiMedia3 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
14606 {"MultiMedia3 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
14607 {"MultiMedia3 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
14608 {"MultiMedia3 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
14609 {"MultiMedia3 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
14610 {"MultiMedia3 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
14611 {"MultiMedia3 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
14612 {"MultiMedia3 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
14613 {"MultiMedia3 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14614 {"MultiMedia3 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14615 {"MultiMedia3 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14616 {"MultiMedia3 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14617 {"MultiMedia3 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14618 {"MultiMedia3 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14619 {"MultiMedia3 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14620 {"MultiMedia3 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053014621 {"MultiMedia3 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
14622 {"MultiMedia3 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
14623 {"MultiMedia3 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
14624 {"MultiMedia3 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014625
14626 {"MultiMedia4 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
14627 {"MultiMedia4 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
14628 {"MultiMedia4 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
14629 {"MultiMedia4 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
14630 {"MultiMedia4 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
14631 {"MultiMedia4 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
14632 {"MultiMedia4 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
14633 {"MultiMedia4 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
14634 {"MultiMedia4 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14635 {"MultiMedia4 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14636 {"MultiMedia4 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14637 {"MultiMedia4 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14638 {"MultiMedia4 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14639 {"MultiMedia4 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14640 {"MultiMedia4 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14641 {"MultiMedia4 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053014642 {"MultiMedia4 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
14643 {"MultiMedia4 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
14644 {"MultiMedia4 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
14645 {"MultiMedia4 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014646
14647 {"MultiMedia5 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
14648 {"MultiMedia5 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
14649 {"MultiMedia5 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
14650 {"MultiMedia5 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
14651 {"MultiMedia5 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
14652 {"MultiMedia5 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
14653 {"MultiMedia5 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
14654 {"MultiMedia5 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
14655 {"MultiMedia5 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14656 {"MultiMedia5 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14657 {"MultiMedia5 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14658 {"MultiMedia5 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14659 {"MultiMedia5 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14660 {"MultiMedia5 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14661 {"MultiMedia5 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14662 {"MultiMedia5 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053014663 {"MultiMedia5 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
14664 {"MultiMedia5 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
14665 {"MultiMedia5 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
14666 {"MultiMedia5 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014667
14668 {"MultiMedia6 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
14669 {"MultiMedia6 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
14670 {"MultiMedia6 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
14671 {"MultiMedia6 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
14672 {"MultiMedia6 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
14673 {"MultiMedia6 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
14674 {"MultiMedia6 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
14675 {"MultiMedia6 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
14676 {"MultiMedia6 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14677 {"MultiMedia6 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14678 {"MultiMedia6 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14679 {"MultiMedia6 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14680 {"MultiMedia6 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14681 {"MultiMedia6 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14682 {"MultiMedia6 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14683 {"MultiMedia6 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053014684 {"MultiMedia6 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
14685 {"MultiMedia6 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
14686 {"MultiMedia6 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
14687 {"MultiMedia6 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014688
14689 {"MultiMedia8 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
14690 {"MultiMedia8 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
14691 {"MultiMedia8 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
14692 {"MultiMedia8 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
14693 {"MultiMedia8 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
14694 {"MultiMedia8 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
14695 {"MultiMedia8 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
14696 {"MultiMedia8 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
14697 {"MultiMedia8 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14698 {"MultiMedia8 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14699 {"MultiMedia8 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14700 {"MultiMedia8 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14701 {"MultiMedia8 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14702 {"MultiMedia8 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14703 {"MultiMedia8 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14704 {"MultiMedia8 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053014705 {"MultiMedia8 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
14706 {"MultiMedia8 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
14707 {"MultiMedia8 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
14708 {"MultiMedia8 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014709
14710 {"MultiMedia9 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14711 {"MultiMedia9 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14712 {"MultiMedia9 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14713 {"MultiMedia9 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14714 {"MultiMedia9 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14715 {"MultiMedia9 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14716 {"MultiMedia9 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14717 {"MultiMedia9 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053014718 {"MultiMedia9 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
14719 {"MultiMedia9 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
14720 {"MultiMedia9 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
14721 {"MultiMedia9 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014722
Laxminath Kasam38070be2017-08-17 18:21:59 +053014723 {"MultiMedia10 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14724 {"MultiMedia10 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14725 {"MultiMedia10 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14726 {"MultiMedia10 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14727 {"MultiMedia10 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14728 {"MultiMedia10 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14729 {"MultiMedia10 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14730 {"MultiMedia10 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014731 {"MultiMedia20 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14732 {"MultiMedia20 Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
14733 {"MultiMedia20 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14734 {"MultiMedia20 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053014735 {"MultiMedia20 Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014736 {"MultiMedia20 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
14737 {"MultiMedia20 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
14738 {"MultiMedia20 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
14739 {"MultiMedia20 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
14740 {"MultiMedia20 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
14741 {"MultiMedia20 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
14742 {"MultiMedia20 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
14743 {"MultiMedia20 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
14744 {"MultiMedia20 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14745 {"MultiMedia20 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14746 {"MultiMedia20 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14747 {"MultiMedia20 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14748 {"MultiMedia20 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14749 {"MultiMedia20 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14750 {"MultiMedia20 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14751 {"MultiMedia20 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053014752 {"MultiMedia20 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
14753 {"MultiMedia20 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
14754 {"MultiMedia20 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
14755 {"MultiMedia20 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014756
14757 {"MultiMedia1 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
14758 {"MultiMedia2 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
14759 {"MultiMedia4 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
14760 {"MultiMedia5 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
14761 {"MultiMedia6 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
14762 {"MultiMedia8 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014763 {"MultiMedia10 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014764
Asish Bhattacharya34504582017-08-08 12:55:01 +053014765 {"MultiMedia16 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
14766 {"MultiMedia16 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
14767 {"MultiMedia16 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
14768 {"MultiMedia16 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
14769 {"MultiMedia16 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
14770 {"MultiMedia16 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
14771 {"MultiMedia16 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
14772 {"MultiMedia16 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
14773 {"MultiMedia16 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14774 {"MultiMedia16 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14775 {"MultiMedia16 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14776 {"MultiMedia16 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14777 {"MultiMedia16 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14778 {"MultiMedia16 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14779 {"MultiMedia16 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14780 {"MultiMedia16 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
14781 {"MultiMedia16 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
14782
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014783 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14784 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14785 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14786 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14787 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14788 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14789 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14790 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14791 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14792 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14793 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14794 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14795 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14796 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14797 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14798 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14799 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia6", "MM_UL6"},
14800 {"INT_BT_SCO_RX", NULL, "INTERNAL_BT_SCO_RX Audio Mixer"},
14801
14802 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14803 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14804 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14805 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14806 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14807 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14808 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14809 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14810 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14811 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14812 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14813 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14814 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14815 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14816 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14817 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14818 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia6", "MM_UL6"},
14819 {"INT_BT_A2DP_RX", NULL, "INTERNAL_A2DP_RX Audio Mixer"},
14820
14821 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14822 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14823 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14824 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14825 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14826 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14827 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14828 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14829 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14830 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14831 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14832 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14833 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14834 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14835 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14836 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14837 {"INT_FM_RX", NULL, "INTERNAL_FM_RX Audio Mixer"},
14838
14839 {"AFE_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14840 {"AFE_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14841 {"AFE_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14842 {"AFE_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14843 {"AFE_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14844 {"AFE_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14845 {"AFE_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14846 {"AFE_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14847 {"AFE_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14848 {"AFE_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14849 {"AFE_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14850 {"AFE_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14851 {"AFE_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14852 {"AFE_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14853 {"AFE_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14854 {"AFE_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14855 {"PCM_RX", NULL, "AFE_PCM_RX Audio Mixer"},
14856
14857 {"MultiMedia1 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
14858 {"MultiMedia3 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
14859 {"MultiMedia4 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014860 {"MultiMedia10 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014861 {"MultiMedia17 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
14862 {"MultiMedia18 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
14863 {"MultiMedia19 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
14864 {"MultiMedia5 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
14865 {"MultiMedia8 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014866 {"MultiMedia16 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014867 {"MultiMedia1 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
14868 {"MultiMedia4 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014869 {"MultiMedia16 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014870 {"MultiMedia17 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
14871 {"MultiMedia18 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
14872 {"MultiMedia19 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
14873 {"MultiMedia5 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
14874 {"MultiMedia6 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
14875 {"MultiMedia8 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
14876
14877 {"MultiMedia1 Mixer", "AFE_PCM_TX", "PCM_TX"},
14878 {"MultiMedia3 Mixer", "AFE_PCM_TX", "PCM_TX"},
14879 {"MultiMedia4 Mixer", "AFE_PCM_TX", "PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014880 {"MultiMedia10 Mixer", "AFE_PCM_TX", "PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014881 {"MultiMedia17 Mixer", "AFE_PCM_TX", "PCM_TX"},
14882 {"MultiMedia18 Mixer", "AFE_PCM_TX", "PCM_TX"},
14883 {"MultiMedia19 Mixer", "AFE_PCM_TX", "PCM_TX"},
14884 {"MultiMedia5 Mixer", "AFE_PCM_TX", "PCM_TX"},
14885 {"MultiMedia8 Mixer", "AFE_PCM_TX", "PCM_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014886 {"MultiMedia16 Mixer", "AFE_PCM_TX", "PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014887 {"MM_UL1", NULL, "MultiMedia1 Mixer"},
14888 {"MultiMedia2 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
14889 {"MM_UL2", NULL, "MultiMedia2 Mixer"},
14890 {"MM_UL3", NULL, "MultiMedia3 Mixer"},
14891 {"MM_UL4", NULL, "MultiMedia4 Mixer"},
14892 {"MM_UL5", NULL, "MultiMedia5 Mixer"},
14893 {"MM_UL6", NULL, "MultiMedia6 Mixer"},
14894 {"MM_UL8", NULL, "MultiMedia8 Mixer"},
14895 {"MM_UL9", NULL, "MultiMedia9 Mixer"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014896 {"MM_UL10", NULL, "MultiMedia10 Mixer"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014897 {"MM_UL16", NULL, "MultiMedia16 Mixer"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014898 {"MM_UL17", NULL, "MultiMedia17 Mixer"},
14899 {"MM_UL18", NULL, "MultiMedia18 Mixer"},
14900 {"MM_UL19", NULL, "MultiMedia19 Mixer"},
14901 {"MM_UL20", NULL, "MultiMedia20 Mixer"},
14902
14903 {"AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14904 {"AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14905 {"AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14906 {"AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14907 {"AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14908 {"AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14909 {"AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14910 {"AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14911 {"AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14912 {"AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14913 {"AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14914 {"AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14915 {"AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14916 {"AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14917 {"AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14918 {"AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14919 {"AUX_PCM_RX", NULL, "AUX_PCM_RX Audio Mixer"},
14920
14921 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14922 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14923 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14924 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14925 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14926 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14927 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14928 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14929 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14930 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14931 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14932 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14933 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14934 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14935 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14936 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14937 {"SEC_AUX_PCM_RX", NULL, "SEC_AUX_PCM_RX Audio Mixer"},
14938
14939 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14940 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14941 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14942 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14943 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14944 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14945 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14946 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14947 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14948 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14949 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14950 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14951 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14952 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14953 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14954 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14955 {"TERT_AUX_PCM_RX", NULL, "TERT_AUX_PCM_RX Audio Mixer"},
14956
14957 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14958 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14959 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14960 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14961 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14962 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14963 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14964 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14965 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14966 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14967 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14968 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14969 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14970 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14971 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14972 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14973 {"QUAT_AUX_PCM_RX", NULL, "QUAT_AUX_PCM_RX Audio Mixer"},
14974
Rohit Kumara5077932017-09-10 22:05:05 +053014975 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14976 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14977 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14978 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14979 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14980 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14981 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14982 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14983 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14984 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14985 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14986 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14987 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14988 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14989 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14990 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14991 {"QUIN_AUX_PCM_RX", NULL, "QUIN_AUX_PCM_RX Audio Mixer"},
14992
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014993 {"PRI_RX_Voice Mixer", "Voip", "VOIP_DL"},
14994 {"PRI_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
14995 {"PRI_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
14996 {"PRI_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
14997 {"PRI_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
14998 {"PRI_I2S_RX", NULL, "PRI_RX_Voice Mixer"},
14999
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015000 {"SEC_RX_Voice Mixer", "Voip", "VOIP_DL"},
15001 {"SEC_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15002 {"SEC_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15003 {"SEC_I2S_RX", NULL, "SEC_RX_Voice Mixer"},
15004
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015005 {"SEC_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
15006 {"SEC_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15007 {"SEC_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15008 {"SEC_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15009 {"SEC_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15010 {"SEC_MI2S_RX", NULL, "SEC_MI2S_RX_Voice Mixer"},
15011
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015012 {"SLIM_0_RX_Voice Mixer", "Voip", "VOIP_DL"},
15013 {"SLIM_0_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15014 {"SLIM_0_RX_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
15015 {"SLIM_0_RX_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
15016 {"SLIM_0_RX_Voice Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
15017 {"SLIM_0_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15018 {"SLIM_0_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15019 {"SLIM_0_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15020 {"SLIMBUS_0_RX", NULL, "SLIM_0_RX_Voice Mixer"},
15021
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015022 {"SLIM_6_RX_Voice Mixer", "Voip", "VOIP_DL"},
15023 {"SLIM_6_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15024 {"SLIM_6_RX_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
15025 {"SLIM_6_RX_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
15026 {"SLIM_6_RX_Voice Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
15027 {"SLIM_6_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15028 {"SLIM_6_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15029 {"SLIM_6_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15030 {"SLIMBUS_6_RX", NULL, "SLIM_6_RX_Voice Mixer"},
15031
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015032 {"USB_AUDIO_RX_Voice Mixer", "Voip", "VOIP_DL"},
15033 {"USB_AUDIO_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15034 {"USB_AUDIO_RX_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
15035 {"USB_AUDIO_RX_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
15036 {"USB_AUDIO_RX_Voice Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
15037 {"USB_AUDIO_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15038 {"USB_AUDIO_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15039 {"USB_AUDIO_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15040 {"USB_AUDIO_RX", NULL, "USB_AUDIO_RX_Voice Mixer"},
15041
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015042 {"INTERNAL_BT_SCO_RX_Voice Mixer", "Voip", "VOIP_DL"},
15043 {"INTERNAL_BT_SCO_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15044 {"INTERNAL_BT_SCO_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15045 {"INTERNAL_BT_SCO_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15046 {"INTERNAL_BT_SCO_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15047 {"INTERNAL_BT_SCO_RX_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
15048 {"INTERNAL_BT_SCO_RX_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
15049 {"INT_BT_SCO_RX", NULL, "INTERNAL_BT_SCO_RX_Voice Mixer"},
15050
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015051 {"AFE_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
15052 {"AFE_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15053 {"AFE_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15054 {"AFE_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15055 {"AFE_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15056 {"PCM_RX", NULL, "AFE_PCM_RX_Voice Mixer"},
15057
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015058 {"AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
15059 {"AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15060 {"AUX_PCM_RX_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
15061 {"AUX_PCM_RX_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
15062 {"AUX_PCM_RX_Voice Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
15063 {"AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15064 {"AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15065 {"AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15066 {"AUX_PCM_RX", NULL, "AUX_PCM_RX_Voice Mixer"},
15067
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015068 {"SEC_AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
15069 {"SEC_AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15070 {"SEC_AUX_PCM_RX_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
15071 {"SEC_AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15072 {"SEC_AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15073 {"SEC_AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15074 {"SEC_AUX_PCM_RX", NULL, "SEC_AUX_PCM_RX_Voice Mixer"},
15075
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015076 {"TERT_AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
15077 {"TERT_AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15078 {"TERT_AUX_PCM_RX_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
15079 {"TERT_AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15080 {"TERT_AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15081 {"TERT_AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15082 {"TERT_AUX_PCM_RX", NULL, "TERT_AUX_PCM_RX_Voice Mixer"},
15083
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015084 {"QUAT_AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
15085 {"QUAT_AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15086 {"QUAT_AUX_PCM_RX_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
15087 {"QUAT_AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15088 {"QUAT_AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15089 {"QUAT_AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15090 {"QUAT_AUX_PCM_RX", NULL, "QUAT_AUX_PCM_RX_Voice Mixer"},
15091
Rohit Kumara5077932017-09-10 22:05:05 +053015092 {"QUIN_AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
15093 {"QUIN_AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15094 {"QUIN_AUX_PCM_RX_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
15095 {"QUIN_AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15096 {"QUIN_AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15097 {"QUIN_AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15098 {"QUIN_AUX_PCM_RX", NULL, "QUIN_AUX_PCM_RX_Voice Mixer"},
15099
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015100 {"HDMI_RX_Voice Mixer", "Voip", "VOIP_DL"},
15101 {"HDMI_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15102 {"HDMI_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15103 {"HDMI_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15104 {"HDMI_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15105 {"HDMI", NULL, "HDMI_RX_Voice Mixer"},
15106 {"HDMI", NULL, "HDMI_DL_HL"},
15107
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015108 {"MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015109 {"MI2S_RX_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
15110 {"MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15111 {"MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15112 {"MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
kunleiz8a60b822017-10-11 15:04:02 +080015113 {"MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015114 {"MI2S_RX", NULL, "MI2S_RX_Voice Mixer"},
15115
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015116 {"PRI_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015117 {"PRI_MI2S_RX_Voice Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
15118 {"PRI_MI2S_RX_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
15119 {"PRI_MI2S_RX_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
15120 {"PRI_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15121 {"PRI_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15122 {"PRI_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15123 {"PRI_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15124 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX_Voice Mixer"},
15125
15126 {"INT0_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
15127 {"INT0_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15128 {"INT0_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15129 {"INT0_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15130 {"INT0_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15131 {"INT0_MI2S_RX", NULL, "INT0_MI2S_RX_Voice Mixer"},
15132
15133 {"INT4_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
15134 {"INT4_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15135 {"INT4_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15136 {"INT4_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15137 {"INT4_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15138 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX_Voice Mixer"},
15139
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015140 {"TERT_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015141 {"TERT_MI2S_RX_Voice Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
15142 {"TERT_MI2S_RX_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
15143 {"TERT_MI2S_RX_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
15144 {"TERT_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15145 {"TERT_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15146 {"TERT_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15147 {"TERT_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15148 {"TERT_MI2S_RX", NULL, "TERT_MI2S_RX_Voice Mixer"},
15149
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015150 {"QUAT_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015151 {"QUAT_MI2S_RX_Voice Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
15152 {"QUAT_MI2S_RX_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
15153 {"QUAT_MI2S_RX_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
15154 {"QUAT_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15155 {"QUAT_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15156 {"QUAT_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15157 {"QUAT_MI2S_RX", NULL, "QUAT_MI2S_RX_Voice Mixer"},
15158
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015159 {"QUIN_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015160 {"QUIN_MI2S_RX_Voice Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
15161 {"QUIN_MI2S_RX_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
15162 {"QUIN_MI2S_RX_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
15163 {"QUIN_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15164 {"QUIN_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15165 {"QUIN_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15166 {"QUIN_MI2S_RX", NULL, "QUIN_MI2S_RX_Voice Mixer"},
15167
15168 {"QUAT_TDM_RX_2_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15169 {"QUAT_TDM_RX_2", NULL, "QUAT_TDM_RX_2_Voice Mixer"},
15170
15171 {"VOC_EXT_EC MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15172 {"VOC_EXT_EC MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15173 {"VOC_EXT_EC MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15174 {"VOC_EXT_EC MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015175 {"VOC_EXT_EC MUX", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015176 {"VOC_EXT_EC MUX", "SLIM_1_TX", "SLIMBUS_1_TX"},
15177 {"CS-VOICE_UL1", NULL, "VOC_EXT_EC MUX"},
15178 {"VOIP_UL", NULL, "VOC_EXT_EC MUX"},
15179 {"VoLTE_UL", NULL, "VOC_EXT_EC MUX"},
15180 {"VOICE2_UL", NULL, "VOC_EXT_EC MUX"},
15181 {"VoWLAN_UL", NULL, "VOC_EXT_EC MUX"},
15182 {"VOICEMMODE1_UL", NULL, "VOC_EXT_EC MUX"},
15183 {"VOICEMMODE2_UL", NULL, "VOC_EXT_EC MUX"},
15184
15185 {"AUDIO_REF_EC_UL1 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15186 {"AUDIO_REF_EC_UL1 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15187 {"AUDIO_REF_EC_UL1 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15188 {"AUDIO_REF_EC_UL1 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15189 {"AUDIO_REF_EC_UL1 MUX", "SLIM_1_TX", "SLIMBUS_1_TX"},
15190 {"AUDIO_REF_EC_UL1 MUX", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15191 {"AUDIO_REF_EC_UL1 MUX", "QUAT_TDM_RX_0", "QUAT_TDM_RX_0"},
15192 {"AUDIO_REF_EC_UL1 MUX", "QUAT_TDM_RX_1", "QUAT_TDM_RX_1"},
15193 {"AUDIO_REF_EC_UL1 MUX", "QUAT_TDM_RX_2", "QUAT_TDM_RX_2"},
15194 {"AUDIO_REF_EC_UL1 MUX", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15195
15196 {"AUDIO_REF_EC_UL2 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15197 {"AUDIO_REF_EC_UL2 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15198 {"AUDIO_REF_EC_UL2 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15199 {"AUDIO_REF_EC_UL2 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15200
15201 {"AUDIO_REF_EC_UL3 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15202 {"AUDIO_REF_EC_UL3 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15203 {"AUDIO_REF_EC_UL3 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15204 {"AUDIO_REF_EC_UL3 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15205
15206 {"AUDIO_REF_EC_UL4 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15207 {"AUDIO_REF_EC_UL4 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15208 {"AUDIO_REF_EC_UL4 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15209 {"AUDIO_REF_EC_UL4 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15210
15211 {"AUDIO_REF_EC_UL5 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15212 {"AUDIO_REF_EC_UL5 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15213 {"AUDIO_REF_EC_UL5 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15214 {"AUDIO_REF_EC_UL5 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15215
15216 {"AUDIO_REF_EC_UL6 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15217 {"AUDIO_REF_EC_UL6 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15218 {"AUDIO_REF_EC_UL6 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15219 {"AUDIO_REF_EC_UL6 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15220
15221 {"AUDIO_REF_EC_UL8 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15222 {"AUDIO_REF_EC_UL8 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15223 {"AUDIO_REF_EC_UL8 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15224 {"AUDIO_REF_EC_UL8 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15225
15226 {"AUDIO_REF_EC_UL9 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15227 {"AUDIO_REF_EC_UL9 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15228 {"AUDIO_REF_EC_UL9 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15229 {"AUDIO_REF_EC_UL9 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15230
Laxminath Kasam38070be2017-08-17 18:21:59 +053015231 {"AUDIO_REF_EC_UL10 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15232 {"AUDIO_REF_EC_UL10 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15233 {"AUDIO_REF_EC_UL10 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15234 {"AUDIO_REF_EC_UL10 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15235 {"AUDIO_REF_EC_UL10 MUX", "SLIM_1_TX", "SLIMBUS_1_TX"},
15236 {"AUDIO_REF_EC_UL10 MUX", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15237 {"AUDIO_REF_EC_UL10 MUX", "QUAT_TDM_RX_0", "QUAT_TDM_RX_0"},
15238 {"AUDIO_REF_EC_UL10 MUX", "QUAT_TDM_RX_1", "QUAT_TDM_RX_1"},
15239 {"AUDIO_REF_EC_UL10 MUX", "QUAT_TDM_RX_2", "QUAT_TDM_RX_2"},
15240 {"AUDIO_REF_EC_UL10 MUX", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
Vikram Panduranga016c49f2017-09-11 15:15:56 -070015241
15242 {"AUDIO_REF_EC_UL16 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15243 {"AUDIO_REF_EC_UL16 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15244 {"AUDIO_REF_EC_UL16 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15245 {"AUDIO_REF_EC_UL16 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15246
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015247 {"AUDIO_REF_EC_UL17 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15248 {"AUDIO_REF_EC_UL17 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15249 {"AUDIO_REF_EC_UL17 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15250 {"AUDIO_REF_EC_UL17 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15251
15252 {"AUDIO_REF_EC_UL18 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15253 {"AUDIO_REF_EC_UL18 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15254 {"AUDIO_REF_EC_UL18 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15255 {"AUDIO_REF_EC_UL18 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15256
15257 {"AUDIO_REF_EC_UL19 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15258 {"AUDIO_REF_EC_UL19 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15259 {"AUDIO_REF_EC_UL19 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15260 {"AUDIO_REF_EC_UL19 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15261
15262 {"MM_UL1", NULL, "AUDIO_REF_EC_UL1 MUX"},
15263 {"MM_UL2", NULL, "AUDIO_REF_EC_UL2 MUX"},
15264 {"MM_UL3", NULL, "AUDIO_REF_EC_UL3 MUX"},
15265 {"MM_UL4", NULL, "AUDIO_REF_EC_UL4 MUX"},
15266 {"MM_UL5", NULL, "AUDIO_REF_EC_UL5 MUX"},
15267 {"MM_UL6", NULL, "AUDIO_REF_EC_UL6 MUX"},
15268 {"MM_UL8", NULL, "AUDIO_REF_EC_UL8 MUX"},
15269 {"MM_UL9", NULL, "AUDIO_REF_EC_UL9 MUX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053015270 {"MM_UL10", NULL, "AUDIO_REF_EC_UL10 MUX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053015271 {"MM_UL16", NULL, "AUDIO_REF_EC_UL16 MUX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015272 {"MM_UL17", NULL, "AUDIO_REF_EC_UL17 MUX"},
15273 {"MM_UL18", NULL, "AUDIO_REF_EC_UL18 MUX"},
15274 {"MM_UL19", NULL, "AUDIO_REF_EC_UL19 MUX"},
15275
15276 {"Voice_Tx Mixer", "PRI_TX_Voice", "PRI_I2S_TX"},
15277 {"Voice_Tx Mixer", "PRI_MI2S_TX_Voice", "PRI_MI2S_TX"},
15278 {"Voice_Tx Mixer", "MI2S_TX_Voice", "MI2S_TX"},
15279 {"Voice_Tx Mixer", "TERT_MI2S_TX_Voice", "TERT_MI2S_TX"},
15280 {"Voice_Tx Mixer", "SLIM_0_TX_Voice", "SLIMBUS_0_TX"},
15281 {"Voice_Tx Mixer", "SLIM_7_TX_Voice", "SLIMBUS_7_TX"},
15282 {"Voice_Tx Mixer", "SLIM_8_TX_Voice", "SLIMBUS_8_TX"},
15283 {"Voice_Tx Mixer", "USB_AUDIO_TX_Voice", "USB_AUDIO_TX"},
15284 {"Voice_Tx Mixer", "INTERNAL_BT_SCO_TX_Voice", "INT_BT_SCO_TX"},
15285 {"Voice_Tx Mixer", "AFE_PCM_TX_Voice", "PCM_TX"},
15286 {"Voice_Tx Mixer", "AUX_PCM_TX_Voice", "AUX_PCM_TX"},
15287 {"Voice_Tx Mixer", "SEC_AUX_PCM_TX_Voice", "SEC_AUX_PCM_TX"},
15288 {"Voice_Tx Mixer", "TERT_AUX_PCM_TX_Voice", "TERT_AUX_PCM_TX"},
15289 {"Voice_Tx Mixer", "QUAT_AUX_PCM_TX_Voice", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015290 {"Voice_Tx Mixer", "QUIN_AUX_PCM_TX_Voice", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015291 {"Voice_Tx Mixer", "SEC_MI2S_TX_Voice", "SEC_MI2S_TX"},
15292 {"CS-VOICE_UL1", NULL, "Voice_Tx Mixer"},
15293
15294 {"Voice2_Tx Mixer", "PRI_TX_Voice2", "PRI_I2S_TX"},
15295 {"Voice2_Tx Mixer", "PRI_MI2S_TX_Voice2", "PRI_MI2S_TX"},
15296 {"Voice2_Tx Mixer", "MI2S_TX_Voice2", "MI2S_TX"},
15297 {"Voice2_Tx Mixer", "TERT_MI2S_TX_Voice2", "TERT_MI2S_TX"},
15298 {"Voice2_Tx Mixer", "SLIM_0_TX_Voice2", "SLIMBUS_0_TX"},
15299 {"Voice2_Tx Mixer", "SLIM_7_TX_Voice2", "SLIMBUS_7_TX"},
15300 {"Voice2_Tx Mixer", "SLIM_8_TX_Voice2", "SLIMBUS_8_TX"},
15301 {"Voice2_Tx Mixer", "USB_AUDIO_TX_Voice2", "USB_AUDIO_TX"},
15302 {"Voice2_Tx Mixer", "INTERNAL_BT_SCO_TX_Voice2", "INT_BT_SCO_TX"},
15303 {"Voice2_Tx Mixer", "AFE_PCM_TX_Voice2", "PCM_TX"},
15304 {"Voice2_Tx Mixer", "AUX_PCM_TX_Voice2", "AUX_PCM_TX"},
15305 {"Voice2_Tx Mixer", "SEC_AUX_PCM_TX_Voice2", "SEC_AUX_PCM_TX"},
15306 {"Voice2_Tx Mixer", "TERT_AUX_PCM_TX_Voice2", "TERT_AUX_PCM_TX"},
15307 {"Voice2_Tx Mixer", "QUAT_AUX_PCM_TX_Voice2", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015308 {"Voice2_Tx Mixer", "QUIN_AUX_PCM_TX_Voice2", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015309 {"VOICE2_UL", NULL, "Voice2_Tx Mixer"},
15310
15311 {"VoLTE_Tx Mixer", "PRI_TX_VoLTE", "PRI_I2S_TX"},
15312 {"VoLTE_Tx Mixer", "SLIM_0_TX_VoLTE", "SLIMBUS_0_TX"},
15313 {"VoLTE_Tx Mixer", "SLIM_7_TX_VoLTE", "SLIMBUS_7_TX"},
15314 {"VoLTE_Tx Mixer", "SLIM_8_TX_VoLTE", "SLIMBUS_8_TX"},
15315 {"VoLTE_Tx Mixer", "USB_AUDIO_TX_VoLTE", "USB_AUDIO_TX"},
15316 {"VoLTE_Tx Mixer", "INTERNAL_BT_SCO_TX_VoLTE", "INT_BT_SCO_TX"},
15317 {"VoLTE_Tx Mixer", "AFE_PCM_TX_VoLTE", "PCM_TX"},
15318 {"VoLTE_Tx Mixer", "AUX_PCM_TX_VoLTE", "AUX_PCM_TX"},
15319 {"VoLTE_Tx Mixer", "SEC_AUX_PCM_TX_VoLTE", "SEC_AUX_PCM_TX"},
15320 {"VoLTE_Tx Mixer", "TERT_AUX_PCM_TX_VoLTE", "TERT_AUX_PCM_TX"},
15321 {"VoLTE_Tx Mixer", "QUAT_AUX_PCM_TX_VoLTE", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015322 {"VoLTE_Tx Mixer", "QUIN_AUX_PCM_TX_VoLTE", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015323 {"VoLTE_Tx Mixer", "MI2S_TX_VoLTE", "MI2S_TX"},
15324 {"VoLTE_Tx Mixer", "PRI_MI2S_TX_VoLTE", "PRI_MI2S_TX"},
15325 {"VoLTE_Tx Mixer", "TERT_MI2S_TX_VoLTE", "TERT_MI2S_TX"},
15326 {"VoLTE_UL", NULL, "VoLTE_Tx Mixer"},
15327
15328 {"VoWLAN_Tx Mixer", "PRI_TX_VoWLAN", "PRI_I2S_TX"},
15329 {"VoWLAN_Tx Mixer", "SLIM_0_TX_VoWLAN", "SLIMBUS_0_TX"},
15330 {"VoWLAN_Tx Mixer", "SLIM_7_TX_VoWLAN", "SLIMBUS_7_TX"},
15331 {"VoWLAN_Tx Mixer", "SLIM_8_TX_VoWLAN", "SLIMBUS_8_TX"},
15332 {"VoWLAN_Tx Mixer", "USB_AUDIO_TX_VoWLAN", "USB_AUDIO_TX"},
15333 {"VoWLAN_Tx Mixer", "INTERNAL_BT_SCO_TX_VoWLAN", "INT_BT_SCO_TX"},
15334 {"VoWLAN_Tx Mixer", "AFE_PCM_TX_VoWLAN", "PCM_TX"},
15335 {"VoWLAN_Tx Mixer", "AUX_PCM_TX_VoWLAN", "AUX_PCM_TX"},
15336 {"VoWLAN_Tx Mixer", "SEC_AUX_PCM_TX_VoWLAN", "SEC_AUX_PCM_TX"},
15337 {"VoWLAN_Tx Mixer", "TERT_AUX_PCM_TX_VoWLAN", "TERT_AUX_PCM_TX"},
15338 {"VoWLAN_Tx Mixer", "QUAT_AUX_PCM_TX_VoWLAN", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015339 {"VoWLAN_Tx Mixer", "QUIN_AUX_PCM_TX_VoWLAN", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015340 {"VoWLAN_Tx Mixer", "MI2S_TX_VoWLAN", "MI2S_TX"},
15341 {"VoWLAN_Tx Mixer", "PRI_MI2S_TX_VoWLAN", "PRI_MI2S_TX"},
15342 {"VoWLAN_Tx Mixer", "TERT_MI2S_TX_VoWLAN", "TERT_MI2S_TX"},
15343 {"VoWLAN_UL", NULL, "VoWLAN_Tx Mixer"},
15344
15345 {"VoiceMMode1_Tx Mixer", "PRI_TX_MMode1", "PRI_I2S_TX"},
15346 {"VoiceMMode1_Tx Mixer", "PRI_MI2S_TX_MMode1", "PRI_MI2S_TX"},
15347 {"VoiceMMode1_Tx Mixer", "MI2S_TX_MMode1", "MI2S_TX"},
15348 {"VoiceMMode1_Tx Mixer", "TERT_MI2S_TX_MMode1", "TERT_MI2S_TX"},
15349 {"VoiceMMode1_Tx Mixer", "INT3_MI2S_TX_MMode1", "INT3_MI2S_TX"},
15350 {"VoiceMMode1_Tx Mixer", "SLIM_0_TX_MMode1", "SLIMBUS_0_TX"},
15351 {"VoiceMMode1_Tx Mixer", "SLIM_7_TX_MMode1", "SLIMBUS_7_TX"},
15352 {"VoiceMMode1_Tx Mixer", "SLIM_8_TX_MMode1", "SLIMBUS_8_TX"},
15353 {"VoiceMMode1_Tx Mixer", "USB_AUDIO_TX_MMode1", "USB_AUDIO_TX"},
15354 {"VoiceMMode1_Tx Mixer", "INT_BT_SCO_TX_MMode1", "INT_BT_SCO_TX"},
15355 {"VoiceMMode1_Tx Mixer", "AFE_PCM_TX_MMode1", "PCM_TX"},
15356 {"VoiceMMode1_Tx Mixer", "AUX_PCM_TX_MMode1", "AUX_PCM_TX"},
15357 {"VoiceMMode1_Tx Mixer", "SEC_AUX_PCM_TX_MMode1", "SEC_AUX_PCM_TX"},
15358 {"VoiceMMode1_Tx Mixer", "TERT_AUX_PCM_TX_MMode1", "TERT_AUX_PCM_TX"},
15359 {"VoiceMMode1_Tx Mixer", "QUAT_AUX_PCM_TX_MMode1", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015360 {"VoiceMMode1_Tx Mixer", "QUIN_AUX_PCM_TX_MMode1", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015361 {"VoiceMMode1_Tx Mixer", "QUAT_TDM_TX_0_MMode1", "QUAT_TDM_TX_0"},
15362 {"VOICEMMODE1_UL", NULL, "VoiceMMode1_Tx Mixer"},
15363
15364 {"VoiceMMode2_Tx Mixer", "PRI_TX_MMode2", "PRI_I2S_TX"},
15365 {"VoiceMMode2_Tx Mixer", "PRI_MI2S_TX_MMode2", "PRI_MI2S_TX"},
15366 {"VoiceMMode2_Tx Mixer", "MI2S_TX_MMode2", "MI2S_TX"},
15367 {"VoiceMMode2_Tx Mixer", "TERT_MI2S_TX_MMode2", "TERT_MI2S_TX"},
15368 {"VoiceMMode2_Tx Mixer", "INT3_MI2S_TX_MMode2", "INT3_MI2S_TX"},
15369 {"VoiceMMode2_Tx Mixer", "SLIM_0_TX_MMode2", "SLIMBUS_0_TX"},
15370 {"VoiceMMode2_Tx Mixer", "SLIM_7_TX_MMode2", "SLIMBUS_7_TX"},
15371 {"VoiceMMode2_Tx Mixer", "SLIM_8_TX_MMode2", "SLIMBUS_8_TX"},
15372 {"VoiceMMode2_Tx Mixer", "USB_AUDIO_TX_MMode2", "USB_AUDIO_TX"},
15373 {"VoiceMMode2_Tx Mixer", "INT_BT_SCO_TX_MMode2", "INT_BT_SCO_TX"},
15374 {"VoiceMMode2_Tx Mixer", "AFE_PCM_TX_MMode2", "PCM_TX"},
15375 {"VoiceMMode2_Tx Mixer", "AUX_PCM_TX_MMode2", "AUX_PCM_TX"},
15376 {"VoiceMMode2_Tx Mixer", "SEC_AUX_PCM_TX_MMode2", "SEC_AUX_PCM_TX"},
15377 {"VoiceMMode2_Tx Mixer", "TERT_AUX_PCM_TX_MMode2", "TERT_AUX_PCM_TX"},
15378 {"VoiceMMode2_Tx Mixer", "QUAT_AUX_PCM_TX_MMode2", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015379 {"VoiceMMode2_Tx Mixer", "QUIN_AUX_PCM_TX_MMode2", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015380 {"VOICEMMODE2_UL", NULL, "VoiceMMode2_Tx Mixer"},
15381
15382 {"Voip_Tx Mixer", "PRI_TX_Voip", "PRI_I2S_TX"},
15383 {"Voip_Tx Mixer", "MI2S_TX_Voip", "MI2S_TX"},
15384 {"Voip_Tx Mixer", "TERT_MI2S_TX_Voip", "TERT_MI2S_TX"},
15385 {"Voip_Tx Mixer", "INT3_MI2S_TX_Voip", "INT3_MI2S_TX"},
15386 {"Voip_Tx Mixer", "SLIM_0_TX_Voip", "SLIMBUS_0_TX"},
15387 {"Voip_Tx Mixer", "SLIM_7_TX_Voip", "SLIMBUS_7_TX"},
15388 {"Voip_Tx Mixer", "SLIM_8_TX_Voip", "SLIMBUS_8_TX"},
15389 {"Voip_Tx Mixer", "USB_AUDIO_TX_Voip", "USB_AUDIO_TX"},
15390 {"Voip_Tx Mixer", "INTERNAL_BT_SCO_TX_Voip", "INT_BT_SCO_TX"},
15391 {"Voip_Tx Mixer", "AFE_PCM_TX_Voip", "PCM_TX"},
15392 {"Voip_Tx Mixer", "AUX_PCM_TX_Voip", "AUX_PCM_TX"},
15393 {"Voip_Tx Mixer", "SEC_AUX_PCM_TX_Voip", "SEC_AUX_PCM_TX"},
15394 {"Voip_Tx Mixer", "TERT_AUX_PCM_TX_Voip", "TERT_AUX_PCM_TX"},
15395 {"Voip_Tx Mixer", "QUAT_AUX_PCM_TX_Voip", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015396 {"Voip_Tx Mixer", "QUIN_AUX_PCM_TX_Voip", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015397 {"Voip_Tx Mixer", "PRI_MI2S_TX_Voip", "PRI_MI2S_TX"},
15398 {"VOIP_UL", NULL, "Voip_Tx Mixer"},
15399
15400 {"SLIMBUS_DL_HL", "Switch", "SLIM0_DL_HL"},
15401 {"SLIMBUS_0_RX", NULL, "SLIMBUS_DL_HL"},
15402 {"SLIMBUS1_DL_HL", "Switch", "SLIM1_DL_HL"},
15403 {"SLIMBUS_1_RX", NULL, "SLIMBUS1_DL_HL"},
15404 {"SLIMBUS3_DL_HL", "Switch", "SLIM3_DL_HL"},
15405 {"SLIMBUS_3_RX", NULL, "SLIMBUS3_DL_HL"},
15406 {"SLIMBUS4_DL_HL", "Switch", "SLIM4_DL_HL"},
15407 {"SLIMBUS_4_RX", NULL, "SLIMBUS4_DL_HL"},
15408 {"SLIMBUS6_DL_HL", "Switch", "SLIM0_DL_HL"},
15409 {"SLIMBUS_6_RX", NULL, "SLIMBUS6_DL_HL"},
15410 {"SLIM0_UL_HL", NULL, "SLIMBUS_0_TX"},
15411 {"SLIM1_UL_HL", NULL, "SLIMBUS_1_TX"},
15412 {"SLIM3_UL_HL", NULL, "SLIMBUS_3_TX"},
15413 {"SLIM4_UL_HL", NULL, "SLIMBUS_4_TX"},
15414 {"SLIM8_UL_HL", NULL, "SLIMBUS_8_TX"},
15415
15416 {"LSM1 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15417 {"LSM1 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15418 {"LSM1 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15419 {"LSM1 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15420 {"LSM1 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15421 {"LSM1 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15422 {"LSM1 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15423 {"LSM1 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
15424 {"LSM1_UL_HL", NULL, "LSM1 Mixer"},
15425
15426 {"LSM2 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15427 {"LSM2 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15428 {"LSM2 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15429 {"LSM2 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15430 {"LSM2 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15431 {"LSM2 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15432 {"LSM2 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15433 {"LSM2 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
15434 {"LSM2_UL_HL", NULL, "LSM2 Mixer"},
15435
15436
15437 {"LSM3 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15438 {"LSM3 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15439 {"LSM3 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15440 {"LSM3 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15441 {"LSM3 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15442 {"LSM3 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15443 {"LSM3 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15444 {"LSM3 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
15445 {"LSM3_UL_HL", NULL, "LSM3 Mixer"},
15446
15447
15448 {"LSM4 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15449 {"LSM4 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15450 {"LSM4 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15451 {"LSM4 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15452 {"LSM4 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15453 {"LSM4 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15454 {"LSM4 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15455 {"LSM4 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
15456 {"LSM4_UL_HL", NULL, "LSM4 Mixer"},
15457
15458 {"LSM5 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15459 {"LSM5 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15460 {"LSM5 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15461 {"LSM5 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15462 {"LSM5 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15463 {"LSM5 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15464 {"LSM5 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15465 {"LSM5 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
15466 {"LSM5_UL_HL", NULL, "LSM5 Mixer"},
15467
15468 {"LSM6 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15469 {"LSM6 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15470 {"LSM6 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15471 {"LSM6 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15472 {"LSM6 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15473 {"LSM6 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15474 {"LSM6_UL_HL", NULL, "LSM6 Mixer"},
15475
15476 {"LSM7 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15477 {"LSM7 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15478 {"LSM7 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15479 {"LSM7 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15480 {"LSM7 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15481 {"LSM7 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15482 {"LSM7_UL_HL", NULL, "LSM7 Mixer"},
15483
15484 {"LSM8 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15485 {"LSM8 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15486 {"LSM8 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15487 {"LSM8 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15488 {"LSM8 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15489 {"LSM8 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15490 {"LSM8_UL_HL", NULL, "LSM8 Mixer"},
15491
15492
15493 {"CPE_LSM_UL_HL", NULL, "BE_IN"},
15494 {"QCHAT_Tx Mixer", "PRI_TX_QCHAT", "PRI_I2S_TX"},
15495 {"QCHAT_Tx Mixer", "SLIM_0_TX_QCHAT", "SLIMBUS_0_TX"},
15496 {"QCHAT_Tx Mixer", "SLIM_7_TX_QCHAT", "SLIMBUS_7_TX"},
15497 {"QCHAT_Tx Mixer", "SLIM_8_TX_QCHAT", "SLIMBUS_8_TX"},
15498 {"QCHAT_Tx Mixer", "INTERNAL_BT_SCO_TX_QCHAT", "INT_BT_SCO_TX"},
15499 {"QCHAT_Tx Mixer", "AFE_PCM_TX_QCHAT", "PCM_TX"},
15500 {"QCHAT_Tx Mixer", "AUX_PCM_TX_QCHAT", "AUX_PCM_TX"},
15501 {"QCHAT_Tx Mixer", "SEC_AUX_PCM_TX_QCHAT", "SEC_AUX_PCM_TX"},
15502 {"QCHAT_Tx Mixer", "TERT_AUX_PCM_TX_QCHAT", "TERT_AUX_PCM_TX"},
15503 {"QCHAT_Tx Mixer", "QUAT_AUX_PCM_TX_QCHAT", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015504 {"QCHAT_Tx Mixer", "QUIN_AUX_PCM_TX_QCHAT", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015505 {"QCHAT_Tx Mixer", "MI2S_TX_QCHAT", "MI2S_TX"},
15506 {"QCHAT_Tx Mixer", "PRI_MI2S_TX_QCHAT", "PRI_MI2S_TX"},
15507 {"QCHAT_Tx Mixer", "TERT_MI2S_TX_QCHAT", "TERT_MI2S_TX"},
15508 {"QCHAT_Tx Mixer", "INT3_MI2S_TX_QCHAT", "INT3_MI2S_TX"},
15509 {"QCHAT_Tx Mixer", "USB_AUDIO_TX_QCHAT", "USB_AUDIO_TX"},
15510 {"QCHAT_UL", NULL, "QCHAT_Tx Mixer"},
15511
15512 {"INT_FM_RX", NULL, "INTFM_DL_HL"},
15513 {"INTFM_UL_HL", NULL, "INT_FM_TX"},
15514 {"INTHFP_UL_HL", NULL, "HFP_PRI_AUX_UL_HL"},
15515 {"HFP_PRI_AUX_UL_HL", "Switch", "AUX_PCM_TX"},
15516 {"INTHFP_UL_HL", NULL, "HFP_AUX_UL_HL"},
15517 {"HFP_AUX_UL_HL", "Switch", "SEC_AUX_PCM_TX"},
15518 {"INTHFP_UL_HL", NULL, "HFP_INT_UL_HL"},
15519 {"HFP_INT_UL_HL", "Switch", "INT_BT_SCO_TX"},
15520 {"SLIM7_UL_HL", NULL, "HFP_SLIM7_UL_HL"},
15521 {"HFP_SLIM7_UL_HL", "Switch", "SLIMBUS_7_TX"},
15522 {"AUX_PCM_RX", NULL, "AUXPCM_DL_HL"},
15523 {"AUX_PCM_RX", NULL, "INTHFP_DL_HL"},
15524 {"AUXPCM_UL_HL", NULL, "AUX_PCM_TX"},
15525 {"MI2S_RX", NULL, "MI2S_DL_HL"},
15526 {"MI2S_UL_HL", NULL, "MI2S_TX"},
15527 {"PCM_RX_DL_HL", "Switch", "SLIM0_DL_HL"},
15528 {"PCM_RX", NULL, "PCM_RX_DL_HL"},
15529
15530 /* connect to INT4_MI2S_DL_HL since same pcm_id */
15531 {"INT0_MI2S_RX_DL_HL", "Switch", "INT4_MI2S_DL_HL"},
15532 {"INT0_MI2S_RX", NULL, "INT0_MI2S_RX_DL_HL"},
15533 {"INT4_MI2S_RX_DL_HL", "Switch", "INT4_MI2S_DL_HL"},
15534 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX_DL_HL"},
15535 {"PRI_MI2S_RX_DL_HL", "Switch", "PRI_MI2S_DL_HL"},
15536 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX_DL_HL"},
15537 {"SEC_MI2S_RX_DL_HL", "Switch", "SEC_MI2S_DL_HL"},
15538 {"SEC_MI2S_RX", NULL, "SEC_MI2S_RX_DL_HL"},
15539 {"TERT_MI2S_RX_DL_HL", "Switch", "TERT_MI2S_DL_HL"},
15540 {"TERT_MI2S_RX", NULL, "TERT_MI2S_RX_DL_HL"},
15541
15542 {"QUAT_MI2S_RX_DL_HL", "Switch", "QUAT_MI2S_DL_HL"},
15543 {"QUAT_MI2S_RX", NULL, "QUAT_MI2S_RX_DL_HL"},
Rohit Kumara5077932017-09-10 22:05:05 +053015544 {"QUIN_MI2S_RX_DL_HL", "Switch", "QUIN_MI2S_DL_HL"},
15545 {"QUIN_MI2S_RX", NULL, "QUIN_MI2S_RX_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015546 {"MI2S_UL_HL", NULL, "TERT_MI2S_TX"},
15547 {"INT3_MI2S_UL_HL", NULL, "INT3_MI2S_TX"},
15548 {"TERT_MI2S_UL_HL", NULL, "TERT_MI2S_TX"},
15549 {"SEC_I2S_RX", NULL, "SEC_I2S_DL_HL"},
15550 {"PRI_MI2S_UL_HL", NULL, "PRI_MI2S_TX"},
15551 {"SEC_MI2S_UL_HL", NULL, "SEC_MI2S_TX"},
15552 {"SEC_MI2S_RX", NULL, "SEC_MI2S_DL_HL"},
15553 {"PRI_MI2S_RX", NULL, "PRI_MI2S_DL_HL"},
15554 {"TERT_MI2S_RX", NULL, "TERT_MI2S_DL_HL"},
15555 {"QUAT_MI2S_UL_HL", NULL, "QUAT_MI2S_TX"},
15556
15557 {"PRI_TDM_TX_0_UL_HL", NULL, "PRI_TDM_TX_0"},
15558 {"PRI_TDM_TX_1_UL_HL", NULL, "PRI_TDM_TX_1"},
15559 {"PRI_TDM_TX_2_UL_HL", NULL, "PRI_TDM_TX_2"},
15560 {"PRI_TDM_TX_3_UL_HL", NULL, "PRI_TDM_TX_3"},
15561 {"PRI_TDM_RX_0", NULL, "PRI_TDM_RX_0_DL_HL"},
15562 {"PRI_TDM_RX_1", NULL, "PRI_TDM_RX_1_DL_HL"},
15563 {"PRI_TDM_RX_2", NULL, "PRI_TDM_RX_2_DL_HL"},
15564 {"PRI_TDM_RX_3", NULL, "PRI_TDM_RX_3_DL_HL"},
15565 {"SEC_TDM_TX_0_UL_HL", NULL, "SEC_TDM_TX_0"},
15566 {"SEC_TDM_TX_1_UL_HL", NULL, "SEC_TDM_TX_1"},
15567 {"SEC_TDM_TX_2_UL_HL", NULL, "SEC_TDM_TX_2"},
15568 {"SEC_TDM_TX_3_UL_HL", NULL, "SEC_TDM_TX_3"},
15569 {"SEC_TDM_RX_0", NULL, "SEC_TDM_RX_0_DL_HL"},
15570 {"SEC_TDM_RX_1", NULL, "SEC_TDM_RX_1_DL_HL"},
15571 {"SEC_TDM_RX_2", NULL, "SEC_TDM_RX_2_DL_HL"},
15572 {"SEC_TDM_RX_3", NULL, "SEC_TDM_RX_3_DL_HL"},
15573 {"TERT_TDM_TX_0_UL_HL", NULL, "TERT_TDM_TX_0"},
15574 {"TERT_TDM_TX_1_UL_HL", NULL, "TERT_TDM_TX_1"},
15575 {"TERT_TDM_TX_2_UL_HL", NULL, "TERT_TDM_TX_2"},
15576 {"TERT_TDM_TX_3_UL_HL", NULL, "TERT_TDM_TX_3"},
15577 {"TERT_TDM_RX_0", NULL, "TERT_TDM_RX_0_DL_HL"},
15578 {"TERT_TDM_RX_1", NULL, "TERT_TDM_RX_1_DL_HL"},
15579 {"TERT_TDM_RX_2", NULL, "TERT_TDM_RX_2_DL_HL"},
15580 {"TERT_TDM_RX_3", NULL, "TERT_TDM_RX_3_DL_HL"},
15581 {"QUAT_TDM_TX_0_UL_HL", NULL, "QUAT_TDM_TX_0"},
15582 {"QUAT_TDM_TX_1_UL_HL", NULL, "QUAT_TDM_TX_1"},
15583 {"QUAT_TDM_TX_2_UL_HL", NULL, "QUAT_TDM_TX_2"},
15584 {"QUAT_TDM_TX_3_UL_HL", NULL, "QUAT_TDM_TX_3"},
15585 {"QUAT_TDM_RX_0", NULL, "QUAT_TDM_RX_0_DL_HL"},
15586 {"QUAT_TDM_RX_1", NULL, "QUAT_TDM_RX_1_DL_HL"},
15587 {"QUAT_TDM_RX_2", NULL, "QUAT_TDM_RX_2_DL_HL"},
15588 {"QUAT_TDM_RX_3", NULL, "QUAT_TDM_RX_3_DL_HL"},
Rohit Kumara5077932017-09-10 22:05:05 +053015589 {"QUIN_TDM_TX_0_UL_HL", NULL, "QUIN_TDM_TX_0"},
15590 {"QUIN_TDM_TX_1_UL_HL", NULL, "QUIN_TDM_TX_1"},
15591 {"QUIN_TDM_TX_2_UL_HL", NULL, "QUIN_TDM_TX_2"},
15592 {"QUIN_TDM_TX_3_UL_HL", NULL, "QUIN_TDM_TX_3"},
15593 {"QUIN_TDM_RX_0", NULL, "QUIN_TDM_RX_0_DL_HL"},
15594 {"QUIN_TDM_RX_1", NULL, "QUIN_TDM_RX_1_DL_HL"},
15595 {"QUIN_TDM_RX_2", NULL, "QUIN_TDM_RX_2_DL_HL"},
15596 {"QUIN_TDM_RX_3", NULL, "QUIN_TDM_RX_3_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015597
15598 {"PRI_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15599 {"PRI_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15600 {"PRI_TDM_RX_0 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15601 {"PRI_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15602 {"PRI_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15603 {"PRI_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15604 {"PRI_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15605 {"PRI_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15606 {"PRI_TDM_RX_0 Port Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15607 {"PRI_TDM_RX_0 Port Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15608 {"PRI_TDM_RX_0 Port Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15609 {"PRI_TDM_RX_0 Port Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15610 {"PRI_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15611 {"PRI_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15612 {"PRI_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15613 {"PRI_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015614 {"PRI_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15615 {"PRI_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15616 {"PRI_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15617 {"PRI_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015618 {"PRI_TDM_RX_0", NULL, "PRI_TDM_RX_0 Port Mixer"},
15619
15620 {"PRI_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15621 {"PRI_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15622 {"PRI_TDM_RX_1 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15623 {"PRI_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15624 {"PRI_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15625 {"PRI_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15626 {"PRI_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15627 {"PRI_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15628 {"PRI_TDM_RX_1 Port Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15629 {"PRI_TDM_RX_1 Port Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15630 {"PRI_TDM_RX_1 Port Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15631 {"PRI_TDM_RX_1 Port Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15632 {"PRI_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15633 {"PRI_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15634 {"PRI_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15635 {"PRI_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015636 {"PRI_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15637 {"PRI_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15638 {"PRI_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15639 {"PRI_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015640 {"PRI_TDM_RX_1", NULL, "PRI_TDM_RX_1 Port Mixer"},
15641
15642 {"PRI_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15643 {"PRI_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15644 {"PRI_TDM_RX_2 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15645 {"PRI_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15646 {"PRI_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15647 {"PRI_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15648 {"PRI_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15649 {"PRI_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15650 {"PRI_TDM_RX_2 Port Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15651 {"PRI_TDM_RX_2 Port Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15652 {"PRI_TDM_RX_2 Port Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15653 {"PRI_TDM_RX_2 Port Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15654 {"PRI_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15655 {"PRI_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15656 {"PRI_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15657 {"PRI_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015658 {"PRI_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15659 {"PRI_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15660 {"PRI_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15661 {"PRI_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015662 {"PRI_TDM_RX_2", NULL, "PRI_TDM_RX_2 Port Mixer"},
15663
15664 {"PRI_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15665 {"PRI_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15666 {"PRI_TDM_RX_3 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15667 {"PRI_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15668 {"PRI_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15669 {"PRI_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15670 {"PRI_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15671 {"PRI_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15672 {"PRI_TDM_RX_3 Port Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15673 {"PRI_TDM_RX_3 Port Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15674 {"PRI_TDM_RX_3 Port Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15675 {"PRI_TDM_RX_3 Port Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15676 {"PRI_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15677 {"PRI_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15678 {"PRI_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15679 {"PRI_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015680 {"PRI_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15681 {"PRI_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15682 {"PRI_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15683 {"PRI_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015684 {"PRI_TDM_RX_3", NULL, "PRI_TDM_RX_3 Port Mixer"},
15685
15686 {"SEC_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15687 {"SEC_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15688 {"SEC_TDM_RX_0 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15689 {"SEC_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15690 {"SEC_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15691 {"SEC_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15692 {"SEC_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15693 {"SEC_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15694 {"SEC_TDM_RX_0 Port Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15695 {"SEC_TDM_RX_0 Port Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15696 {"SEC_TDM_RX_0 Port Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15697 {"SEC_TDM_RX_0 Port Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15698 {"SEC_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15699 {"SEC_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15700 {"SEC_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15701 {"SEC_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015702 {"SEC_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15703 {"SEC_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15704 {"SEC_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15705 {"SEC_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015706 {"SEC_TDM_RX_0", NULL, "SEC_TDM_RX_0 Port Mixer"},
15707
15708 {"SEC_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15709 {"SEC_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15710 {"SEC_TDM_RX_1 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15711 {"SEC_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15712 {"SEC_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15713 {"SEC_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15714 {"SEC_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15715 {"SEC_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15716 {"SEC_TDM_RX_1 Port Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15717 {"SEC_TDM_RX_1 Port Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15718 {"SEC_TDM_RX_1 Port Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15719 {"SEC_TDM_RX_1 Port Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15720 {"SEC_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15721 {"SEC_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15722 {"SEC_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15723 {"SEC_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015724 {"SEC_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15725 {"SEC_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15726 {"SEC_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15727 {"SEC_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015728 {"SEC_TDM_RX_1", NULL, "SEC_TDM_RX_1 Port Mixer"},
15729
15730 {"SEC_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15731 {"SEC_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15732 {"SEC_TDM_RX_2 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15733 {"SEC_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15734 {"SEC_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15735 {"SEC_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15736 {"SEC_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15737 {"SEC_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15738 {"SEC_TDM_RX_2 Port Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15739 {"SEC_TDM_RX_2 Port Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15740 {"SEC_TDM_RX_2 Port Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15741 {"SEC_TDM_RX_2 Port Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15742 {"SEC_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15743 {"SEC_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15744 {"SEC_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15745 {"SEC_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015746 {"SEC_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15747 {"SEC_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15748 {"SEC_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15749 {"SEC_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015750 {"SEC_TDM_RX_2", NULL, "SEC_TDM_RX_2 Port Mixer"},
15751
15752 {"SEC_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15753 {"SEC_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15754 {"SEC_TDM_RX_3 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15755 {"SEC_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15756 {"SEC_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15757 {"SEC_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15758 {"SEC_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15759 {"SEC_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15760 {"SEC_TDM_RX_3 Port Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15761 {"SEC_TDM_RX_3 Port Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15762 {"SEC_TDM_RX_3 Port Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15763 {"SEC_TDM_RX_3 Port Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15764 {"SEC_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15765 {"SEC_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15766 {"SEC_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15767 {"SEC_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015768 {"SEC_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15769 {"SEC_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15770 {"SEC_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15771 {"SEC_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015772 {"SEC_TDM_RX_3", NULL, "SEC_TDM_RX_3 Port Mixer"},
15773
15774 {"TERT_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15775 {"TERT_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15776 {"TERT_TDM_RX_0 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15777 {"TERT_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15778 {"TERT_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15779 {"TERT_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15780 {"TERT_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15781 {"TERT_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15782 {"TERT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15783 {"TERT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15784 {"TERT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15785 {"TERT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15786 {"TERT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15787 {"TERT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15788 {"TERT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15789 {"TERT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015790 {"TERT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15791 {"TERT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15792 {"TERT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15793 {"TERT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015794 {"TERT_TDM_RX_0", NULL, "TERT_TDM_RX_0 Port Mixer"},
15795
15796 {"TERT_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15797 {"TERT_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15798 {"TERT_TDM_RX_1 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15799 {"TERT_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15800 {"TERT_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15801 {"TERT_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15802 {"TERT_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15803 {"TERT_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15804 {"TERT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15805 {"TERT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15806 {"TERT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15807 {"TERT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15808 {"TERT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15809 {"TERT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15810 {"TERT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15811 {"TERT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015812 {"TERT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15813 {"TERT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15814 {"TERT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15815 {"TERT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015816 {"TERT_TDM_RX_1", NULL, "TERT_TDM_RX_1 Port Mixer"},
15817
15818 {"TERT_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15819 {"TERT_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15820 {"TERT_TDM_RX_2 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15821 {"TERT_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15822 {"TERT_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15823 {"TERT_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15824 {"TERT_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15825 {"TERT_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15826 {"TERT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15827 {"TERT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15828 {"TERT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15829 {"TERT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15830 {"TERT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15831 {"TERT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15832 {"TERT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15833 {"TERT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015834 {"TERT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15835 {"TERT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15836 {"TERT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15837 {"TERT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015838 {"TERT_TDM_RX_2", NULL, "TERT_TDM_RX_2 Port Mixer"},
15839
15840 {"TERT_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15841 {"TERT_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15842 {"TERT_TDM_RX_3 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15843 {"TERT_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15844 {"TERT_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15845 {"TERT_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15846 {"TERT_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15847 {"TERT_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15848 {"TERT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15849 {"TERT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15850 {"TERT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15851 {"TERT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15852 {"TERT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15853 {"TERT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15854 {"TERT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15855 {"TERT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015856 {"TERT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15857 {"TERT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15858 {"TERT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15859 {"TERT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015860 {"TERT_TDM_RX_3", NULL, "TERT_TDM_RX_3 Port Mixer"},
15861
15862 {"QUAT_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15863 {"QUAT_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15864 {"QUAT_TDM_RX_0 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15865 {"QUAT_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15866 {"QUAT_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15867 {"QUAT_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15868 {"QUAT_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15869 {"QUAT_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15870 {"QUAT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15871 {"QUAT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15872 {"QUAT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15873 {"QUAT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15874 {"QUAT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15875 {"QUAT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15876 {"QUAT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15877 {"QUAT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015878 {"QUAT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15879 {"QUAT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15880 {"QUAT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15881 {"QUAT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015882 {"QUAT_TDM_RX_0", NULL, "QUAT_TDM_RX_0 Port Mixer"},
15883
15884 {"QUAT_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15885 {"QUAT_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15886 {"QUAT_TDM_RX_1 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15887 {"QUAT_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15888 {"QUAT_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15889 {"QUAT_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15890 {"QUAT_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15891 {"QUAT_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15892 {"QUAT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15893 {"QUAT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15894 {"QUAT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15895 {"QUAT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15896 {"QUAT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15897 {"QUAT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15898 {"QUAT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15899 {"QUAT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015900 {"QUAT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15901 {"QUAT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15902 {"QUAT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15903 {"QUAT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015904 {"QUAT_TDM_RX_1", NULL, "QUAT_TDM_RX_1 Port Mixer"},
15905
15906 {"QUAT_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15907 {"QUAT_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15908 {"QUAT_TDM_RX_2 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15909 {"QUAT_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15910 {"QUAT_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15911 {"QUAT_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15912 {"QUAT_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15913 {"QUAT_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15914 {"QUAT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15915 {"QUAT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15916 {"QUAT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15917 {"QUAT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15918 {"QUAT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15919 {"QUAT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15920 {"QUAT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15921 {"QUAT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015922 {"QUAT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15923 {"QUAT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15924 {"QUAT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15925 {"QUAT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015926 {"QUAT_TDM_RX_2", NULL, "QUAT_TDM_RX_2 Port Mixer"},
15927
15928 {"QUAT_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15929 {"QUAT_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15930 {"QUAT_TDM_RX_3 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15931 {"QUAT_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15932 {"QUAT_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15933 {"QUAT_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15934 {"QUAT_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15935 {"QUAT_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15936 {"QUAT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15937 {"QUAT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15938 {"QUAT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15939 {"QUAT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15940 {"QUAT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15941 {"QUAT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15942 {"QUAT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15943 {"QUAT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015944 {"QUAT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15945 {"QUAT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15946 {"QUAT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15947 {"QUAT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015948 {"QUAT_TDM_RX_3", NULL, "QUAT_TDM_RX_3 Port Mixer"},
15949
Rohit Kumara5077932017-09-10 22:05:05 +053015950 {"QUIN_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15951 {"QUIN_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15952 {"QUIN_TDM_RX_0 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15953 {"QUIN_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15954 {"QUIN_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15955 {"QUIN_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15956 {"QUIN_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15957 {"QUIN_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15958 {"QUIN_TDM_RX_0 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15959 {"QUIN_TDM_RX_0 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15960 {"QUIN_TDM_RX_0 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15961 {"QUIN_TDM_RX_0 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15962 {"QUIN_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15963 {"QUIN_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15964 {"QUIN_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15965 {"QUIN_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
15966 {"QUIN_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15967 {"QUIN_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15968 {"QUIN_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15969 {"QUIN_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Rohit Kumarc08b14f2017-10-06 10:52:17 +053015970 {"QUIN_TDM_RX_0", NULL, "QUIN_TDM_RX_0 Port Mixer"},
Rohit Kumara5077932017-09-10 22:05:05 +053015971
15972 {"QUIN_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15973 {"QUIN_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15974 {"QUIN_TDM_RX_1 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15975 {"QUIN_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15976 {"QUIN_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15977 {"QUIN_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15978 {"QUIN_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15979 {"QUIN_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15980 {"QUIN_TDM_RX_1 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15981 {"QUIN_TDM_RX_1 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15982 {"QUIN_TDM_RX_1 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15983 {"QUIN_TDM_RX_1 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15984 {"QUIN_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15985 {"QUIN_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15986 {"QUIN_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15987 {"QUIN_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
15988 {"QUIN_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15989 {"QUIN_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15990 {"QUIN_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15991 {"QUIN_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Rohit Kumarc08b14f2017-10-06 10:52:17 +053015992 {"QUIN_TDM_RX_1", NULL, "QUIN_TDM_RX_1 Port Mixer"},
Rohit Kumara5077932017-09-10 22:05:05 +053015993
15994 {"QUIN_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15995 {"QUIN_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15996 {"QUIN_TDM_RX_2 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15997 {"QUIN_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15998 {"QUIN_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15999 {"QUIN_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16000 {"QUIN_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16001 {"QUIN_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16002 {"QUIN_TDM_RX_2 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16003 {"QUIN_TDM_RX_2 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16004 {"QUIN_TDM_RX_2 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16005 {"QUIN_TDM_RX_2 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16006 {"QUIN_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16007 {"QUIN_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16008 {"QUIN_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16009 {"QUIN_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
16010 {"QUIN_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16011 {"QUIN_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16012 {"QUIN_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16013 {"QUIN_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Rohit Kumarc08b14f2017-10-06 10:52:17 +053016014 {"QUIN_TDM_RX_2", NULL, "QUIN_TDM_RX_2 Port Mixer"},
Rohit Kumara5077932017-09-10 22:05:05 +053016015
16016 {"QUIN_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16017 {"QUIN_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16018 {"QUIN_TDM_RX_3 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16019 {"QUIN_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16020 {"QUIN_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16021 {"QUIN_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16022 {"QUIN_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16023 {"QUIN_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16024 {"QUIN_TDM_RX_3 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16025 {"QUIN_TDM_RX_3 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16026 {"QUIN_TDM_RX_3 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16027 {"QUIN_TDM_RX_3 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16028 {"QUIN_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16029 {"QUIN_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16030 {"QUIN_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16031 {"QUIN_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
16032 {"QUIN_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16033 {"QUIN_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16034 {"QUIN_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16035 {"QUIN_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Rohit Kumarc08b14f2017-10-06 10:52:17 +053016036 {"QUIN_TDM_RX_3", NULL, "QUIN_TDM_RX_3 Port Mixer"},
Rohit Kumara5077932017-09-10 22:05:05 +053016037
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016038 {"INT0_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16039 {"INT0_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16040 {"INT0_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16041 {"INT0_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016042 {"INT0_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016043 {"INT0_MI2S_RX Port Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
16044 {"INT0_MI2S_RX Port Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16045 {"INT0_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16046 {"INT0_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16047 {"INT0_MI2S_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16048 {"INT0_MI2S_RX", NULL, "INT0_MI2S_RX Port Mixer"},
16049
16050 {"INT4_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16051 {"INT4_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16052 {"INT4_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16053 {"INT4_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016054 {"INT4_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016055 {"INT4_MI2S_RX Port Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
16056 {"INT4_MI2S_RX Port Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16057 {"INT4_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16058 {"INT4_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16059 {"INT4_MI2S_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16060 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX Port Mixer"},
16061
16062 {"SLIMBUS_0_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16063 {"SLIMBUS_0_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16064 {"SLIMBUS_0_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16065 {"SLIMBUS_0_RX Port Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16066 {"SLIMBUS_0_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16067 {"SLIMBUS_0_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16068 {"SLIMBUS_0_RX Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16069 {"SLIMBUS_0_RX Port Mixer", "TERT_AUXPCM_UL_TX", "TERT_AUX_PCM_TX"},
16070 {"SLIMBUS_0_RX Port Mixer", "QUAT_AUXPCM_UL_TX", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016071 {"SLIMBUS_0_RX Port Mixer", "QUIN_AUXPCM_UL_TX", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016072 {"SLIMBUS_0_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16073 {"SLIMBUS_0_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16074 {"SLIMBUS_0_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16075 {"SLIMBUS_0_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16076 {"SLIMBUS_0_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016077 {"SLIMBUS_0_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016078 {"SLIMBUS_0_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16079 {"SLIMBUS_0_RX", NULL, "SLIMBUS_0_RX Port Mixer"},
16080 {"AFE_PCM_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16081 {"AFE_PCM_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16082 {"PCM_RX", NULL, "AFE_PCM_RX Port Mixer"},
16083 {"USB_AUDIO_RX Port Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
16084 {"USB_AUDIO_RX", NULL, "USB_AUDIO_RX Port Mixer"},
16085 {"USB_DL_HL", "Switch", "USBAUDIO_DL_HL"},
16086 {"USB_AUDIO_RX", NULL, "USB_DL_HL"},
16087 {"USBAUDIO_UL_HL", NULL, "USB_AUDIO_TX"},
16088
16089
16090 {"AUX_PCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16091 {"AUX_PCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16092 {"AUX_PCM_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16093 {"AUX_PCM_RX Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16094 {"AUX_PCM_RX Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16095 {"AUX_PCM_RX", NULL, "AUX_PCM_RX Port Mixer"},
16096
16097 {"SEC_AUXPCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16098 {"SEC_AUXPCM_RX Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16099 {"SEC_AUXPCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16100 {"SEC_AUX_PCM_RX", NULL, "SEC_AUXPCM_RX Port Mixer"},
16101
16102 {"TERT_AUXPCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16103 {"TERT_AUXPCM_RX Port Mixer", "TERT_AUXPCM_UL_TX", "TERT_AUX_PCM_TX"},
16104 {"TERT_AUXPCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16105 {"TERT_AUX_PCM_RX", NULL, "TERT_AUXPCM_RX Port Mixer"},
16106
16107 {"QUAT_AUXPCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16108 {"QUAT_AUXPCM_RX Port Mixer", "QUAT_AUXPCM_UL_TX", "QUAT_AUX_PCM_TX"},
16109 {"QUAT_AUXPCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16110 {"QUAT_AUX_PCM_RX", NULL, "QUAT_AUXPCM_RX Port Mixer"},
16111
Rohit Kumara5077932017-09-10 22:05:05 +053016112 {"QUIN_AUXPCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16113 {"QUIN_AUXPCM_RX Port Mixer", "QUIN_AUXPCM_UL_TX", "QUIN_AUX_PCM_TX"},
16114 {"QUIN_AUXPCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16115 {"QUIN_AUX_PCM_RX", NULL, "QUIN_AUXPCM_RX Port Mixer"},
16116
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016117 {"Voice Stub Tx Mixer", "STUB_TX_HL", "STUB_TX"},
16118 {"Voice Stub Tx Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16119 {"Voice Stub Tx Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16120 {"Voice Stub Tx Mixer", "STUB_1_TX_HL", "STUB_1_TX"},
16121 {"Voice Stub Tx Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16122 {"Voice Stub Tx Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16123 {"Voice Stub Tx Mixer", "TERT_AUXPCM_UL_TX", "TERT_AUX_PCM_TX"},
16124 {"Voice Stub Tx Mixer", "QUAT_AUXPCM_UL_TX", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016125 {"Voice Stub Tx Mixer", "QUIN_AUXPCM_UL_TX", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016126 {"Voice Stub Tx Mixer", "MI2S_TX", "MI2S_TX"},
16127 {"Voice Stub Tx Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16128 {"Voice Stub Tx Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16129 {"Voice Stub Tx Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
16130 {"Voice Stub Tx Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16131 {"Voice Stub Tx Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16132 {"Voice Stub Tx Mixer", "SLIM_3_TX", "SLIMBUS_3_TX"},
16133 {"Voice Stub Tx Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16134 {"Voice Stub Tx Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16135 {"Voice Stub Tx Mixer", "AFE_PCM_TX", "PCM_TX"},
16136 {"VOICE_STUB_UL", NULL, "Voice Stub Tx Mixer"},
16137
16138 {"VoLTE Stub Tx Mixer", "STUB_TX_HL", "STUB_TX"},
16139 {"VoLTE Stub Tx Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16140 {"VoLTE Stub Tx Mixer", "STUB_1_TX_HL", "STUB_1_TX"},
16141 {"VoLTE Stub Tx Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16142 {"VoLTE Stub Tx Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16143 {"VoLTE Stub Tx Mixer", "SLIM_3_TX", "SLIMBUS_3_TX"},
16144 {"VoLTE Stub Tx Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16145 {"VoLTE Stub Tx Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16146 {"VoLTE Stub Tx Mixer", "AFE_PCM_TX", "PCM_TX"},
16147 {"VoLTE Stub Tx Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16148 {"VoLTE Stub Tx Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16149 {"VOLTE_STUB_UL", NULL, "VoLTE Stub Tx Mixer"},
16150
16151 {"Voice2 Stub Tx Mixer", "STUB_TX_HL", "STUB_TX"},
16152 {"Voice2 Stub Tx Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16153 {"Voice2 Stub Tx Mixer", "STUB_1_TX_HL", "STUB_1_TX"},
16154 {"Voice2 Stub Tx Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16155 {"Voice2 Stub Tx Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16156 {"Voice2 Stub Tx Mixer", "SLIM_3_TX", "SLIMBUS_3_TX"},
16157 {"Voice2 Stub Tx Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16158 {"Voice2 Stub Tx Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16159 {"Voice2 Stub Tx Mixer", "AFE_PCM_TX", "PCM_TX"},
16160 {"Voice2 Stub Tx Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16161 {"Voice2 Stub Tx Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16162 {"VOICE2_STUB_UL", NULL, "Voice2 Stub Tx Mixer"},
16163
16164 {"STUB_RX Mixer", "Voice Stub", "VOICE_STUB_DL"},
16165 {"STUB_RX Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
16166 {"STUB_RX Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
16167 {"STUB_RX", NULL, "STUB_RX Mixer"},
16168 {"SLIMBUS_1_RX Mixer", "Voice Stub", "VOICE_STUB_DL"},
16169 {"SLIMBUS_1_RX Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
16170 {"SLIMBUS_1_RX Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
16171 {"SLIMBUS_1_RX", NULL, "SLIMBUS_1_RX Mixer"},
16172 {"AFE_PCM_RX_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
16173 {"AFE_PCM_RX_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
16174 {"AFE_PCM_RX_Voice Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
16175 {"SLIMBUS_3_RX_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
16176 {"SLIMBUS_3_RX_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
16177 {"SLIMBUS_3_RX_Voice Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
16178 {"SLIMBUS_3_RX", NULL, "SLIMBUS_3_RX_Voice Mixer"},
16179
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016180 {"SLIM_7_RX_Voice Mixer", "Voip", "VOIP_DL"},
16181 {"SLIM_7_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
16182 {"SLIM_7_RX_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
16183 {"SLIM_7_RX_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
16184 {"SLIM_7_RX_Voice Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
16185 {"SLIM_7_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
16186 {"SLIM_7_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
16187 {"SLIM_7_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
16188 {"SLIMBUS_7_RX", NULL, "SLIM_7_RX_Voice Mixer"},
16189
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016190 {"SLIM_8_RX_Voice Mixer", "Voip", "VOIP_DL"},
16191 {"SLIM_8_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
16192 {"SLIM_8_RX_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
16193 {"SLIM_8_RX_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
16194 {"SLIM_8_RX_Voice Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
16195 {"SLIM_8_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
16196 {"SLIM_8_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
16197 {"SLIM_8_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
16198 {"SLIMBUS_8_RX", NULL, "SLIM_8_RX_Voice Mixer"},
16199
16200 {"SLIMBUS_1_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16201 {"SLIMBUS_1_RX Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16202 {"SLIMBUS_1_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16203 {"SLIMBUS_1_RX", NULL, "SLIMBUS_1_RX Port Mixer"},
16204 {"INTERNAL_BT_SCO_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16205 {"INTERNAL_BT_SCO_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16206 {"INT_BT_SCO_RX", NULL, "INTERNAL_BT_SCO_RX Port Mixer"},
16207 {"SLIMBUS_3_RX Port Mixer", "INTERNAL_BT_SCO_RX", "INT_BT_SCO_RX"},
16208 {"SLIMBUS_3_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16209 {"SLIMBUS_3_RX Port Mixer", "AFE_PCM_RX", "PCM_RX"},
16210 {"SLIMBUS_3_RX Port Mixer", "AUX_PCM_RX", "AUX_PCM_RX"},
16211 {"SLIMBUS_3_RX Port Mixer", "SLIM_0_RX", "SLIMBUS_0_RX"},
16212 {"SLIMBUS_3_RX", NULL, "SLIMBUS_3_RX Port Mixer"},
16213
16214 {"SLIMBUS_6_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16215 {"SLIMBUS_6_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16216 {"SLIMBUS_6_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16217 {"SLIMBUS_6_RX Port Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16218 {"SLIMBUS_6_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16219 {"SLIMBUS_6_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16220 {"SLIMBUS_6_RX Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16221 {"SLIMBUS_6_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16222 {"SLIMBUS_6_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16223 {"SLIMBUS_6_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16224 {"SLIMBUS_6_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16225 {"SLIMBUS_6_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16226 {"SLIMBUS_6_RX", NULL, "SLIMBUS_6_RX Port Mixer"},
16227
16228 {"HDMI_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16229 {"HDMI", NULL, "HDMI_RX Port Mixer"},
16230
16231 {"DISPLAY_PORT_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16232 {"DISPLAY_PORT", NULL, "DISPLAY_PORT_RX Port Mixer"},
16233
16234 {"SEC_I2S_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16235 {"SEC_I2S_RX", NULL, "SEC_I2S_RX Port Mixer"},
16236
16237 {"MI2S_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16238 {"MI2S_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16239 {"MI2S_RX", NULL, "MI2S_RX Port Mixer"},
16240
16241 {"PRI_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16242 {"PRI_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16243 {"PRI_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16244 {"PRI_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016245 {"PRI_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016246 {"PRI_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16247 {"PRI_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16248 {"PRI_MI2S_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16249 {"PRI_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16250 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX Port Mixer"},
16251
16252 {"SEC_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16253 {"SEC_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16254 {"SEC_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16255 {"SEC_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016256 {"SEC_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016257 {"SEC_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16258 {"SEC_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16259 {"SEC_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16260 {"SEC_MI2S_RX", NULL, "SEC_MI2S_RX Port Mixer"},
16261
16262 {"TERT_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16263 {"TERT_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16264 {"TERT_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16265 {"TERT_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016266 {"TERT_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016267 {"TERT_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16268 {"TERT_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16269 {"TERT_MI2S_RX", NULL, "TERT_MI2S_RX Port Mixer"},
16270
16271 {"QUAT_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16272 {"QUAT_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16273 {"QUAT_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16274 {"QUAT_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016275 {"QUAT_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016276 {"QUAT_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16277 {"QUAT_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16278 {"QUAT_MI2S_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16279 {"QUAT_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16280 {"QUAT_MI2S_RX", NULL, "QUAT_MI2S_RX Port Mixer"},
16281
Rohit Kumara5077932017-09-10 22:05:05 +053016282 {"QUIN_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16283 {"QUIN_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16284 {"QUIN_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16285 {"QUIN_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16286 {"QUIN_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
16287 {"QUIN_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16288 {"QUIN_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16289 {"QUIN_MI2S_RX", NULL, "QUIN_MI2S_RX Port Mixer"},
16290
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016291 /* Backend Enablement */
16292
16293 {"BE_OUT", NULL, "PRI_I2S_RX"},
16294 {"BE_OUT", NULL, "SEC_I2S_RX"},
16295 {"BE_OUT", NULL, "SLIMBUS_0_RX"},
16296 {"BE_OUT", NULL, "SLIMBUS_1_RX"},
16297 {"BE_OUT", NULL, "SLIMBUS_2_RX"},
16298 {"BE_OUT", NULL, "SLIMBUS_3_RX"},
16299 {"BE_OUT", NULL, "SLIMBUS_4_RX"},
16300 {"BE_OUT", NULL, "SLIMBUS_5_RX"},
16301 {"BE_OUT", NULL, "SLIMBUS_6_RX"},
16302 {"BE_OUT", NULL, "SLIMBUS_7_RX"},
16303 {"BE_OUT", NULL, "SLIMBUS_8_RX"},
16304 {"BE_OUT", NULL, "USB_AUDIO_RX"},
16305 {"BE_OUT", NULL, "HDMI"},
16306 {"BE_OUT", NULL, "DISPLAY_PORT"},
16307 {"BE_OUT", NULL, "SPDIF_RX"},
16308 {"BE_OUT", NULL, "MI2S_RX"},
16309 {"BE_OUT", NULL, "QUAT_MI2S_RX"},
16310 {"BE_OUT", NULL, "QUIN_MI2S_RX"},
16311 {"BE_OUT", NULL, "TERT_MI2S_RX"},
16312 {"BE_OUT", NULL, "SEC_MI2S_RX"},
16313 {"BE_OUT", NULL, "SEC_MI2S_RX_SD1"},
16314 {"BE_OUT", NULL, "PRI_MI2S_RX"},
16315 {"BE_OUT", NULL, "INT0_MI2S_RX"},
16316 {"BE_OUT", NULL, "INT4_MI2S_RX"},
Laxminath Kasam52697fe2017-11-29 15:44:14 +053016317 {"BE_OUT", NULL, "INT2_MI2S_RX"},
16318 {"BE_OUT", NULL, "INT3_MI2S_RX"},
16319 {"BE_OUT", NULL, "INT5_MI2S_RX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016320 {"BE_OUT", NULL, "INT_BT_SCO_RX"},
16321 {"BE_OUT", NULL, "INT_BT_A2DP_RX"},
16322 {"BE_OUT", NULL, "INT_FM_RX"},
16323 {"BE_OUT", NULL, "PCM_RX"},
16324 {"BE_OUT", NULL, "SLIMBUS_3_RX"},
16325 {"BE_OUT", NULL, "AUX_PCM_RX"},
16326 {"BE_OUT", NULL, "SEC_AUX_PCM_RX"},
16327 {"BE_OUT", NULL, "TERT_AUX_PCM_RX"},
16328 {"BE_OUT", NULL, "QUAT_AUX_PCM_RX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016329 {"BE_OUT", NULL, "QUIN_AUX_PCM_RX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016330 {"BE_OUT", NULL, "INT_BT_SCO_RX"},
16331 {"BE_OUT", NULL, "INT_FM_RX"},
16332 {"BE_OUT", NULL, "PCM_RX"},
16333 {"BE_OUT", NULL, "SLIMBUS_3_RX"},
16334 {"BE_OUT", NULL, "VOICE_PLAYBACK_TX"},
16335 {"BE_OUT", NULL, "VOICE2_PLAYBACK_TX"},
16336 {"BE_OUT", NULL, "PRI_TDM_RX_0"},
16337 {"BE_OUT", NULL, "PRI_TDM_RX_1"},
16338 {"BE_OUT", NULL, "PRI_TDM_RX_2"},
16339 {"BE_OUT", NULL, "PRI_TDM_RX_3"},
16340 {"BE_OUT", NULL, "SEC_TDM_RX_0"},
16341 {"BE_OUT", NULL, "SEC_TDM_RX_1"},
16342 {"BE_OUT", NULL, "SEC_TDM_RX_2"},
16343 {"BE_OUT", NULL, "SEC_TDM_RX_3"},
16344 {"BE_OUT", NULL, "TERT_TDM_RX_0"},
16345 {"BE_OUT", NULL, "TERT_TDM_RX_1"},
16346 {"BE_OUT", NULL, "TERT_TDM_RX_2"},
16347 {"BE_OUT", NULL, "TERT_TDM_RX_3"},
16348 {"BE_OUT", NULL, "TERT_TDM_RX_4"},
16349 {"BE_OUT", NULL, "QUAT_TDM_RX_0"},
16350 {"BE_OUT", NULL, "QUAT_TDM_RX_1"},
16351 {"BE_OUT", NULL, "QUAT_TDM_RX_2"},
16352 {"BE_OUT", NULL, "QUAT_TDM_RX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016353 {"BE_OUT", NULL, "QUIN_TDM_RX_0"},
16354 {"BE_OUT", NULL, "QUIN_TDM_RX_1"},
16355 {"BE_OUT", NULL, "QUIN_TDM_RX_2"},
16356 {"BE_OUT", NULL, "QUIN_TDM_RX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016357
16358 {"PRI_I2S_TX", NULL, "BE_IN"},
16359 {"MI2S_TX", NULL, "BE_IN"},
16360 {"QUAT_MI2S_TX", NULL, "BE_IN"},
16361 {"QUIN_MI2S_TX", NULL, "BE_IN"},
16362 {"PRI_MI2S_TX", NULL, "BE_IN"},
16363 {"TERT_MI2S_TX", NULL, "BE_IN"},
Laxminath Kasam52697fe2017-11-29 15:44:14 +053016364 {"INT0_MI2S_TX", NULL, "BE_IN"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016365 {"INT2_MI2S_TX", NULL, "BE_IN"},
16366 {"INT3_MI2S_TX", NULL, "BE_IN"},
Laxminath Kasam52697fe2017-11-29 15:44:14 +053016367 {"INT4_MI2S_TX", NULL, "BE_IN"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016368 {"INT5_MI2S_TX", NULL, "BE_IN"},
16369 {"SEC_MI2S_TX", NULL, "BE_IN"},
16370 {"SENARY_MI2S_TX", NULL, "BE_IN" },
16371 {"SLIMBUS_0_TX", NULL, "BE_IN" },
16372 {"SLIMBUS_1_TX", NULL, "BE_IN" },
16373 {"SLIMBUS_3_TX", NULL, "BE_IN" },
16374 {"SLIMBUS_4_TX", NULL, "BE_IN" },
16375 {"SLIMBUS_5_TX", NULL, "BE_IN" },
16376 {"SLIMBUS_6_TX", NULL, "BE_IN" },
16377 {"SLIMBUS_7_TX", NULL, "BE_IN" },
16378 {"SLIMBUS_8_TX", NULL, "BE_IN" },
16379 {"USB_AUDIO_TX", NULL, "BE_IN" },
16380 {"INT_BT_SCO_TX", NULL, "BE_IN"},
16381 {"INT_FM_TX", NULL, "BE_IN"},
16382 {"PCM_TX", NULL, "BE_IN"},
16383 {"BE_OUT", NULL, "SLIMBUS_3_RX"},
16384 {"BE_OUT", NULL, "STUB_RX"},
16385 {"STUB_TX", NULL, "BE_IN"},
16386 {"STUB_1_TX", NULL, "BE_IN"},
16387 {"BE_OUT", NULL, "AUX_PCM_RX"},
16388 {"AUX_PCM_TX", NULL, "BE_IN"},
16389 {"SEC_AUX_PCM_TX", NULL, "BE_IN"},
16390 {"TERT_AUX_PCM_TX", NULL, "BE_IN"},
16391 {"QUAT_AUX_PCM_TX", NULL, "BE_IN"},
Rohit Kumara5077932017-09-10 22:05:05 +053016392 {"QUIN_AUX_PCM_TX", NULL, "BE_IN"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016393 {"INCALL_RECORD_TX", NULL, "BE_IN"},
16394 {"INCALL_RECORD_RX", NULL, "BE_IN"},
16395 {"SLIM0_RX_VI_FB_LCH_MUX", "SLIM4_TX", "SLIMBUS_4_TX"},
16396 {"SLIM0_RX_VI_FB_RCH_MUX", "SLIM4_TX", "SLIMBUS_4_TX"},
16397 {"PRI_MI2S_RX_VI_FB_MUX", "SENARY_TX", "SENARY_TX"},
16398 {"INT4_MI2S_RX_VI_FB_MONO_CH_MUX", "INT5_MI2S_TX", "INT5_MI2S_TX"},
16399 {"INT4_MI2S_RX_VI_FB_STEREO_CH_MUX", "INT5_MI2S_TX", "INT5_MI2S_TX"},
16400 {"SLIMBUS_0_RX", NULL, "SLIM0_RX_VI_FB_LCH_MUX"},
16401 {"SLIMBUS_0_RX", NULL, "SLIM0_RX_VI_FB_RCH_MUX"},
16402 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX_VI_FB_MUX"},
16403 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX_VI_FB_MONO_CH_MUX"},
16404 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX_VI_FB_STEREO_CH_MUX"},
16405 {"PRI_TDM_TX_0", NULL, "BE_IN"},
16406 {"PRI_TDM_TX_1", NULL, "BE_IN"},
16407 {"PRI_TDM_TX_2", NULL, "BE_IN"},
16408 {"PRI_TDM_TX_3", NULL, "BE_IN"},
16409 {"SEC_TDM_TX_0", NULL, "BE_IN"},
16410 {"SEC_TDM_TX_1", NULL, "BE_IN"},
16411 {"SEC_TDM_TX_2", NULL, "BE_IN"},
16412 {"SEC_TDM_TX_3", NULL, "BE_IN"},
16413 {"TERT_TDM_TX_0", NULL, "BE_IN"},
16414 {"TERT_TDM_TX_1", NULL, "BE_IN"},
16415 {"TERT_TDM_TX_2", NULL, "BE_IN"},
16416 {"TERT_TDM_TX_3", NULL, "BE_IN"},
16417 {"QUAT_TDM_TX_0", NULL, "BE_IN"},
16418 {"QUAT_TDM_TX_1", NULL, "BE_IN"},
16419 {"QUAT_TDM_TX_2", NULL, "BE_IN"},
16420 {"QUAT_TDM_TX_3", NULL, "BE_IN"},
Rohit Kumara5077932017-09-10 22:05:05 +053016421 {"QUIN_TDM_TX_0", NULL, "BE_IN"},
16422 {"QUIN_TDM_TX_1", NULL, "BE_IN"},
16423 {"QUIN_TDM_TX_2", NULL, "BE_IN"},
16424 {"QUIN_TDM_TX_3", NULL, "BE_IN"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016425};
16426
16427static int msm_pcm_routing_hw_params(struct snd_pcm_substream *substream,
16428 struct snd_pcm_hw_params *params)
16429{
16430 struct snd_soc_pcm_runtime *rtd = substream->private_data;
16431 unsigned int be_id = rtd->dai_link->id;
16432
16433 if (be_id >= MSM_BACKEND_DAI_MAX) {
16434 pr_err("%s: unexpected BE id %d\n", __func__, be_id);
16435 return -EINVAL;
16436 }
16437
16438 mutex_lock(&routing_lock);
16439 msm_bedais[be_id].sample_rate = params_rate(params);
16440 msm_bedais[be_id].channel = params_channels(params);
16441 msm_bedais[be_id].format = params_format(params);
16442 pr_debug("%s: BE Sample Rate (%d) format (%d) BE id %d\n",
16443 __func__, msm_bedais[be_id].sample_rate,
16444 msm_bedais[be_id].format, be_id);
16445 mutex_unlock(&routing_lock);
16446 return 0;
16447}
16448
16449static int msm_pcm_routing_close(struct snd_pcm_substream *substream)
16450{
16451 struct snd_soc_pcm_runtime *rtd = substream->private_data;
16452 unsigned int be_id = rtd->dai_link->id;
16453 int i, session_type, path_type, topology;
16454 struct msm_pcm_routing_bdai_data *bedai;
16455 struct msm_pcm_routing_fdai_data *fdai;
16456
16457 pr_debug("%s: substream->pcm->id:%s\n",
16458 __func__, substream->pcm->id);
16459
16460 if (be_id >= MSM_BACKEND_DAI_MAX) {
16461 pr_err("%s: unexpected BE id %d\n", __func__, be_id);
16462 return -EINVAL;
16463 }
16464
16465 bedai = &msm_bedais[be_id];
16466 session_type = (substream->stream == SNDRV_PCM_STREAM_PLAYBACK ?
16467 0 : 1);
16468 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
16469 path_type = ADM_PATH_PLAYBACK;
16470 else
16471 path_type = ADM_PATH_LIVE_REC;
16472
16473 mutex_lock(&routing_lock);
16474 for_each_set_bit(i, &bedai->fe_sessions[0], MSM_FRONTEND_DAI_MAX) {
16475 if (!is_mm_lsm_fe_id(i))
16476 continue;
16477 fdai = &fe_dai_map[i][session_type];
16478 if (fdai->strm_id != INVALID_SESSION) {
16479 int idx;
16480 int port_id;
16481 unsigned long copp =
16482 session_copp_map[i][session_type][be_id];
16483 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++)
16484 if (test_bit(idx, &copp))
16485 break;
16486 fdai->be_srate = bedai->sample_rate;
16487 port_id = bedai->port_id;
16488 topology = adm_get_topology_for_port_copp_idx(port_id,
16489 idx);
16490 adm_close(bedai->port_id, fdai->perf_mode, idx);
16491 pr_debug("%s: copp:%ld,idx bit fe:%d, type:%d,be:%d topology=0x%x\n",
16492 __func__, copp, i, session_type, be_id,
16493 topology);
16494 clear_bit(idx,
16495 &session_copp_map[i][session_type][be_id]);
16496 if ((fdai->perf_mode == LEGACY_PCM_MODE) &&
16497 (bedai->passthr_mode[i] == LEGACY_PCM))
16498 msm_pcm_routing_deinit_pp(bedai->port_id,
16499 topology);
16500 }
16501 }
16502
16503 bedai->active = 0;
16504 bedai->sample_rate = 0;
16505 bedai->channel = 0;
16506 for (i = 0; i < MSM_FRONTEND_DAI_MAX; i++) {
16507 if (bedai->passthr_mode[i] != LISTEN)
16508 bedai->passthr_mode[i] = LEGACY_PCM;
16509 }
16510 mutex_unlock(&routing_lock);
16511
16512 return 0;
16513}
16514
16515static int msm_pcm_routing_prepare(struct snd_pcm_substream *substream)
16516{
16517 struct snd_soc_pcm_runtime *rtd = substream->private_data;
16518 unsigned int be_id = rtd->dai_link->id;
16519 int i, path_type, topology;
16520 int session_type = INVALID_SESSION;
16521 struct msm_pcm_routing_bdai_data *bedai;
16522 u32 channels, sample_rate;
16523 uint16_t bits_per_sample = 16, voc_path_type;
16524 struct msm_pcm_routing_fdai_data *fdai;
16525 u32 session_id;
16526 struct media_format_info voc_be_media_format;
16527 bool is_lsm;
16528
16529 pr_debug("%s: substream->pcm->id:%s\n",
16530 __func__, substream->pcm->id);
16531
16532 if (be_id >= MSM_BACKEND_DAI_MAX) {
16533 pr_err("%s: unexpected BE id %d\n", __func__, be_id);
16534 return -EINVAL;
16535 }
16536
16537 bedai = &msm_bedais[be_id];
16538
16539 mutex_lock(&routing_lock);
16540 if (bedai->active == 1)
16541 goto done; /* Ignore prepare if back-end already active */
16542
16543 /* AFE port is not active at this point. However, still
16544 * go ahead setting active flag under the notion that
16545 * QDSP6 is able to handle ADM starting before AFE port
16546 * is started.
16547 */
16548 bedai->active = 1;
16549
16550 for_each_set_bit(i, &bedai->fe_sessions[0], MSM_FRONTEND_DAI_MAX) {
16551 if (!(is_mm_lsm_fe_id(i) &&
16552 route_check_fe_id_adm_support(i)))
16553 continue;
16554
16555 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
16556 if (bedai->passthr_mode[i] != LEGACY_PCM)
16557 path_type = ADM_PATH_COMPRESSED_RX;
16558 else
16559 path_type = ADM_PATH_PLAYBACK;
16560 session_type = SESSION_TYPE_RX;
16561 } else {
16562 path_type = ADM_PATH_LIVE_REC;
16563 session_type = SESSION_TYPE_TX;
16564 }
16565
16566 is_lsm = (i >= MSM_FRONTEND_DAI_LSM1) &&
16567 (i <= MSM_FRONTEND_DAI_LSM8);
16568 fdai = &fe_dai_map[i][session_type];
16569 if (fdai->strm_id != INVALID_SESSION) {
16570 int app_type, app_type_idx, copp_idx, acdb_dev_id;
16571
16572 if (session_type == SESSION_TYPE_TX &&
16573 fdai->be_srate &&
16574 (fdai->be_srate != bedai->sample_rate)) {
16575 pr_debug("%s: flush strm %d diff BE rates\n",
16576 __func__,
16577 fdai->strm_id);
16578
16579 if (fdai->event_info.event_func)
16580 fdai->event_info.event_func(
16581 MSM_PCM_RT_EVT_BUF_RECFG,
16582 fdai->event_info.priv_data);
16583 fdai->be_srate = 0; /* might not need it */
16584 }
16585 bits_per_sample = msm_routing_get_bit_width(
16586 bedai->format);
16587
16588 app_type =
16589 fe_dai_app_type_cfg[i][session_type][be_id].app_type;
16590 if (app_type && is_lsm) {
16591 app_type_idx =
16592 msm_pcm_routing_get_lsm_app_type_idx(app_type);
16593 sample_rate =
16594 fe_dai_app_type_cfg[i][session_type][be_id]
16595 .sample_rate;
16596 bits_per_sample =
16597 lsm_app_type_cfg[app_type_idx].bit_width;
16598 } else if (app_type) {
16599 app_type_idx =
16600 msm_pcm_routing_get_app_type_idx(app_type);
16601 sample_rate =
16602 fe_dai_app_type_cfg[i][session_type]
16603 [be_id].sample_rate;
16604 bits_per_sample =
16605 app_type_cfg[app_type_idx].bit_width;
16606 } else
16607 sample_rate = bedai->sample_rate;
16608 /*
16609 * check if ADM needs to be configured with different
16610 * channel mapping than backend
16611 */
16612 if (!bedai->adm_override_ch)
16613 channels = bedai->channel;
16614 else
16615 channels = bedai->adm_override_ch;
16616 acdb_dev_id =
16617 fe_dai_app_type_cfg[i][session_type][be_id].acdb_dev_id;
16618 topology = msm_routing_get_adm_topology(i, session_type,
16619 be_id);
16620 copp_idx = adm_open(bedai->port_id, path_type,
16621 sample_rate, channels, topology,
16622 fdai->perf_mode, bits_per_sample,
16623 app_type, acdb_dev_id);
16624 if ((copp_idx < 0) ||
16625 (copp_idx >= MAX_COPPS_PER_PORT)) {
16626 pr_err("%s: adm open failed\n", __func__);
16627 mutex_unlock(&routing_lock);
16628 return -EINVAL;
16629 }
16630 pr_debug("%s: setting idx bit of fe:%d, type: %d, be:%d\n",
16631 __func__, i, session_type, be_id);
16632 set_bit(copp_idx,
16633 &session_copp_map[i][session_type][be_id]);
16634
16635 if (msm_is_resample_needed(
16636 sample_rate,
16637 bedai->sample_rate))
16638 adm_copp_mfc_cfg(
16639 bedai->port_id, copp_idx,
16640 bedai->sample_rate);
16641
16642 msm_pcm_routing_build_matrix(i, session_type, path_type,
16643 fdai->perf_mode,
16644 bedai->passthr_mode[i]);
16645 if ((fdai->perf_mode == LEGACY_PCM_MODE) &&
16646 (bedai->passthr_mode[i] == LEGACY_PCM))
16647 msm_pcm_routing_cfg_pp(bedai->port_id, copp_idx,
16648 topology, channels);
16649 }
16650 }
16651
16652 for_each_set_bit(i, &bedai->fe_sessions[0], MSM_FRONTEND_DAI_MAX) {
16653 session_id = msm_pcm_routing_get_voc_sessionid(i);
16654 if (session_id) {
16655 pr_debug("%s voice session_id: 0x%x\n", __func__,
16656 session_id);
16657
16658 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
16659 voc_path_type = RX_PATH;
16660 else
16661 voc_path_type = TX_PATH;
16662
16663 voc_set_route_flag(session_id, voc_path_type, 1);
16664
16665 memset(&voc_be_media_format, 0,
16666 sizeof(struct media_format_info));
16667
16668 voc_be_media_format.port_id = bedai->port_id;
16669 voc_be_media_format.num_channels = bedai->channel;
16670 voc_be_media_format.sample_rate = bedai->sample_rate;
16671 voc_be_media_format.bits_per_sample = bedai->format;
16672 /* Defaulting this to 1 for voice call usecases */
16673 voc_be_media_format.channel_mapping[0] = 1;
16674
16675 voc_set_device_config(session_id, voc_path_type,
16676 &voc_be_media_format);
16677
16678 if (voc_get_route_flag(session_id, RX_PATH) &&
16679 voc_get_route_flag(session_id, TX_PATH))
16680 voc_enable_device(session_id);
16681 }
16682 }
16683
16684 /* Check if backend is an external ec ref port and set as needed */
16685 if (unlikely(bedai->port_id == voc_get_ext_ec_ref_port_id())) {
16686
16687 memset(&voc_be_media_format, 0,
16688 sizeof(struct media_format_info));
16689
16690 /* Get format info for ec ref port from msm_bedais[] */
16691 voc_be_media_format.port_id = bedai->port_id;
16692 voc_be_media_format.num_channels = bedai->channel;
16693 voc_be_media_format.bits_per_sample = bedai->format;
16694 voc_be_media_format.sample_rate = bedai->sample_rate;
16695 /* Defaulting this to 1 for voice call usecases */
16696 voc_be_media_format.channel_mapping[0] = 1;
16697 voc_set_ext_ec_ref_media_fmt_info(&voc_be_media_format);
16698 pr_debug("%s: EC Ref media format info set to port_id=%d, num_channels=%d, bits_per_sample=%d, sample_rate=%d\n",
16699 __func__, voc_be_media_format.port_id,
16700 voc_be_media_format.num_channels,
16701 voc_be_media_format.bits_per_sample,
16702 voc_be_media_format.sample_rate);
16703 }
16704
16705done:
16706 mutex_unlock(&routing_lock);
16707
16708 return 0;
16709}
16710
16711static int msm_routing_send_device_pp_params(int port_id, int copp_idx,
16712 int fe_id)
16713{
16714 int index, topo_id, be_idx;
16715 unsigned long pp_config = 0;
16716 bool mute_on;
16717 int latency;
16718 bool compr_passthr_mode = true;
16719
16720 pr_debug("%s: port_id %d, copp_idx %d\n", __func__, port_id, copp_idx);
16721
16722 if (port_id != HDMI_RX && port_id != DISPLAY_PORT_RX) {
16723 pr_err("%s: Device pp params on invalid port %d\n",
16724 __func__, port_id);
16725 return -EINVAL;
16726 }
16727
16728 for (be_idx = 0; be_idx < MSM_BACKEND_DAI_MAX; be_idx++) {
16729 if (port_id == msm_bedais[be_idx].port_id)
16730 break;
16731 }
16732
16733 if (be_idx >= MSM_BACKEND_DAI_MAX) {
16734 pr_debug("%s: Invalid be id %d\n", __func__, be_idx);
16735 return -EINVAL;
16736 }
16737
16738 for (index = 0; index < MSM_BACKEND_DAI_PP_PARAMS_REQ_MAX; index++) {
16739 if (msm_bedais_pp_params[index].port_id == port_id)
16740 break;
16741 }
16742 if (index >= MSM_BACKEND_DAI_PP_PARAMS_REQ_MAX) {
16743 pr_err("%s: Invalid backend pp params index %d\n",
16744 __func__, index);
16745 return -EINVAL;
16746 }
16747
16748 topo_id = adm_get_topology_for_port_copp_idx(port_id, copp_idx);
16749 if (topo_id != COMPRESSED_PASSTHROUGH_DEFAULT_TOPOLOGY) {
16750 pr_err("%s: Invalid passthrough topology 0x%x\n",
16751 __func__, topo_id);
16752 return -EINVAL;
16753 }
16754
16755 if ((msm_bedais[be_idx].passthr_mode[fe_id] == LEGACY_PCM) ||
16756 (msm_bedais[be_idx].passthr_mode[fe_id] == LISTEN))
16757 compr_passthr_mode = false;
16758
16759 pp_config = msm_bedais_pp_params[index].pp_params_config;
16760 if (test_bit(ADM_PP_PARAM_MUTE_BIT, &pp_config)) {
16761 pr_debug("%s: ADM_PP_PARAM_MUTE\n", __func__);
16762 clear_bit(ADM_PP_PARAM_MUTE_BIT, &pp_config);
16763 mute_on = msm_bedais_pp_params[index].mute_on;
16764 if ((msm_bedais[be_idx].active) && compr_passthr_mode)
16765 adm_send_compressed_device_mute(port_id,
16766 copp_idx,
16767 mute_on);
16768 }
16769 if (test_bit(ADM_PP_PARAM_LATENCY_BIT, &pp_config)) {
16770 pr_debug("%s: ADM_PP_PARAM_LATENCY\n", __func__);
16771 clear_bit(ADM_PP_PARAM_LATENCY_BIT,
16772 &pp_config);
16773 latency = msm_bedais_pp_params[index].latency;
16774 if ((msm_bedais[be_idx].active) && compr_passthr_mode)
16775 adm_send_compressed_device_latency(port_id,
16776 copp_idx,
16777 latency);
16778 }
16779 return 0;
16780}
16781
16782static int msm_routing_put_device_pp_params_mixer(struct snd_kcontrol *kcontrol,
16783 struct snd_ctl_elem_value *ucontrol)
16784{
16785 int pp_id = ucontrol->value.integer.value[0];
16786 int port_id = 0;
16787 int index, be_idx, i, topo_id, idx;
16788 bool mute;
16789 int latency;
16790 bool compr_passthr_mode = true;
16791
16792 pr_debug("%s: pp_id: 0x%x\n", __func__, pp_id);
16793
16794 for (be_idx = 0; be_idx < MSM_BACKEND_DAI_MAX; be_idx++) {
16795 port_id = msm_bedais[be_idx].port_id;
16796 if (port_id == HDMI_RX || port_id == DISPLAY_PORT_RX)
16797 break;
16798 }
16799
16800 if (be_idx >= MSM_BACKEND_DAI_MAX) {
16801 pr_debug("%s: Invalid be id %d\n", __func__, be_idx);
16802 return -EINVAL;
16803 }
16804
16805 for (index = 0; index < MSM_BACKEND_DAI_PP_PARAMS_REQ_MAX; index++) {
16806 if (msm_bedais_pp_params[index].port_id == port_id)
16807 break;
16808 }
16809 if (index >= MSM_BACKEND_DAI_PP_PARAMS_REQ_MAX) {
16810 pr_err("%s: Invalid pp params backend index %d\n",
16811 __func__, index);
16812 return -EINVAL;
16813 }
16814
16815 for_each_set_bit(i, &msm_bedais[be_idx].fe_sessions[0],
16816 MSM_FRONTEND_DAI_MM_SIZE) {
16817 if ((msm_bedais[be_idx].passthr_mode[i] == LEGACY_PCM) ||
16818 (msm_bedais[be_idx].passthr_mode[i] == LISTEN))
16819 compr_passthr_mode = false;
16820
16821 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++) {
16822 unsigned long copp =
16823 session_copp_map[i]
16824 [SESSION_TYPE_RX][be_idx];
16825 if (!test_bit(idx, &copp))
16826 continue;
16827 topo_id = adm_get_topology_for_port_copp_idx(port_id,
16828 idx);
16829 if (topo_id != COMPRESSED_PASSTHROUGH_DEFAULT_TOPOLOGY)
16830 continue;
16831 pr_debug("%s: port: 0x%x, copp %ld, be active: %d, passt: %d\n",
16832 __func__, port_id, copp, msm_bedais[be_idx].active,
16833 msm_bedais[be_idx].passthr_mode[i]);
16834 switch (pp_id) {
16835 case ADM_PP_PARAM_MUTE_ID:
16836 pr_debug("%s: ADM_PP_PARAM_MUTE\n", __func__);
16837 mute = ucontrol->value.integer.value[1] ? true : false;
16838 msm_bedais_pp_params[index].mute_on = mute;
16839 set_bit(ADM_PP_PARAM_MUTE_BIT,
16840 &msm_bedais_pp_params[index].pp_params_config);
16841 if ((msm_bedais[be_idx].active) && compr_passthr_mode)
16842 adm_send_compressed_device_mute(port_id,
16843 idx, mute);
16844 break;
16845 case ADM_PP_PARAM_LATENCY_ID:
16846 pr_debug("%s: ADM_PP_PARAM_LATENCY\n", __func__);
16847 msm_bedais_pp_params[index].latency =
16848 ucontrol->value.integer.value[1];
16849 set_bit(ADM_PP_PARAM_LATENCY_BIT,
16850 &msm_bedais_pp_params[index].pp_params_config);
16851 latency = msm_bedais_pp_params[index].latency =
16852 ucontrol->value.integer.value[1];
16853 if ((msm_bedais[be_idx].active) && compr_passthr_mode)
16854 adm_send_compressed_device_latency(port_id,
16855 idx, latency);
16856 break;
16857 default:
16858 pr_info("%s, device pp param %d not supported\n",
16859 __func__, pp_id);
16860 break;
16861 }
16862 }
16863 }
16864 return 0;
16865}
16866
16867static int msm_routing_get_device_pp_params_mixer(struct snd_kcontrol *kcontrol,
16868 struct snd_ctl_elem_value *ucontrol)
16869{
16870 pr_debug("%s:msm_routing_get_device_pp_params_mixer", __func__);
16871 return 0;
16872}
16873
16874static const struct snd_kcontrol_new device_pp_params_mixer_controls[] = {
16875 SOC_SINGLE_MULTI_EXT("Device PP Params", SND_SOC_NOPM, 0, 0xFFFFFFFF,
16876 0, 3, msm_routing_get_device_pp_params_mixer,
16877 msm_routing_put_device_pp_params_mixer),
16878};
16879
16880static int msm_aptx_dec_license_control_get(struct snd_kcontrol *kcontrol,
16881 struct snd_ctl_elem_value *ucontrol)
16882{
16883 ucontrol->value.integer.value[0] =
16884 core_get_license_status(ASM_MEDIA_FMT_APTX);
16885 pr_debug("%s: status %ld\n", __func__,
16886 ucontrol->value.integer.value[0]);
16887 return 0;
16888}
16889
16890static int msm_aptx_dec_license_control_put(struct snd_kcontrol *kcontrol,
16891 struct snd_ctl_elem_value *ucontrol)
16892{
16893 int32_t status = 0;
16894
16895 status = core_set_license(ucontrol->value.integer.value[0],
16896 APTX_CLASSIC_DEC_LICENSE_ID);
16897 pr_debug("%s: status %d\n", __func__, status);
16898 return status;
16899}
16900
16901static const struct snd_kcontrol_new aptx_dec_license_controls[] = {
16902 SOC_SINGLE_EXT("APTX Dec License", SND_SOC_NOPM, 0,
16903 0xFFFF, 0, msm_aptx_dec_license_control_get,
16904 msm_aptx_dec_license_control_put),
16905};
16906
16907static int msm_routing_be_dai_name_table_info(struct snd_kcontrol *kcontrol,
16908 struct snd_ctl_elem_info *uinfo)
16909{
16910 uinfo->type = SNDRV_CTL_ELEM_TYPE_BYTES;
16911 uinfo->count = sizeof(be_dai_name_table);
16912 return 0;
16913}
16914
16915static int msm_routing_be_dai_name_table_tlv_get(struct snd_kcontrol *kcontrol,
16916 unsigned int __user *bytes,
16917 unsigned int size)
16918{
16919 int i;
16920 int ret;
16921
16922 if (size < sizeof(be_dai_name_table)) {
16923 pr_err("%s: invalid size %d requested, returning\n",
16924 __func__, size);
16925 ret = -EINVAL;
16926 goto done;
16927 }
16928
16929 /*
16930 * Fill be_dai_name_table from msm_bedais table to reduce code changes
16931 * needed when adding new backends
16932 */
16933 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
16934 be_dai_name_table[i].be_id = i;
16935 strlcpy(be_dai_name_table[i].be_name,
16936 msm_bedais[i].name,
16937 LPASS_BE_NAME_MAX_LENGTH);
16938 }
16939
16940 ret = copy_to_user(bytes, &be_dai_name_table,
16941 sizeof(be_dai_name_table));
16942 if (ret) {
16943 pr_err("%s: failed to copy be_dai_name_table\n", __func__);
16944 ret = -EFAULT;
16945 }
16946
16947done:
16948 return ret;
16949}
16950
16951static const struct snd_kcontrol_new
16952 msm_routing_be_dai_name_table_mixer_controls[] = {
16953 {
16954 .access = SNDRV_CTL_ELEM_ACCESS_TLV_READ |
16955 SNDRV_CTL_ELEM_ACCESS_TLV_CALLBACK,
16956 .info = msm_routing_be_dai_name_table_info,
16957 .name = "Backend DAI Name Table",
16958 .tlv.c = snd_soc_bytes_tlv_callback,
16959 .private_value = (unsigned long) &(struct soc_bytes_ext) {
16960 .max = sizeof(be_dai_name_table),
16961 .get = msm_routing_be_dai_name_table_tlv_get,
16962 }
16963 },
16964};
16965
16966static int msm_routing_stereo_channel_reverse_control_get(
16967 struct snd_kcontrol *kcontrol,
16968 struct snd_ctl_elem_value *ucontrol)
16969{
16970 ucontrol->value.integer.value[0] = swap_ch;
16971 pr_debug("%s: Swap channel value: %ld\n", __func__,
16972 ucontrol->value.integer.value[0]);
16973 return 0;
16974}
16975
16976static int msm_routing_stereo_channel_reverse_control_put(
16977 struct snd_kcontrol *kcontrol,
16978 struct snd_ctl_elem_value *ucontrol)
16979{
16980 int i, idx, be_index, port_id;
16981 int ret = 0;
16982 unsigned long copp;
16983
16984 pr_debug("%s Swap channel value:%ld\n", __func__,
16985 ucontrol->value.integer.value[0]);
16986
16987 swap_ch = ucontrol->value.integer.value[0];
16988
16989 mutex_lock(&routing_lock);
16990 for (be_index = 0; be_index < MSM_BACKEND_DAI_MAX; be_index++) {
16991 port_id = msm_bedais[be_index].port_id;
16992 if (!msm_bedais[be_index].active)
16993 continue;
16994
16995 for_each_set_bit(i, &msm_bedais[be_index].fe_sessions[0],
16996 MSM_FRONTEND_DAI_MM_SIZE) {
16997 copp = session_copp_map[i][SESSION_TYPE_RX][be_index];
16998 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++) {
16999 if (!test_bit(idx, &copp))
17000 continue;
17001
17002 pr_debug("%s: swap channel control of portid:%d, coppid:%d\n",
17003 __func__, port_id, idx);
17004 ret = adm_swap_speaker_channels(
17005 port_id, idx,
17006 msm_bedais[be_index].sample_rate,
17007 swap_ch);
17008 if (ret) {
17009 pr_err("%s:Swap_channel failed, err=%d\n",
17010 __func__, ret);
17011 goto done;
17012 }
17013 }
17014 }
17015 }
17016done:
17017 mutex_unlock(&routing_lock);
17018 return ret;
17019}
17020
17021static const struct snd_kcontrol_new stereo_channel_reverse_control[] = {
17022 SOC_SINGLE_EXT("Swap channel", SND_SOC_NOPM, 0,
17023 1, 0, msm_routing_stereo_channel_reverse_control_get,
17024 msm_routing_stereo_channel_reverse_control_put),
17025};
17026
17027static const struct snd_pcm_ops msm_routing_pcm_ops = {
17028 .hw_params = msm_pcm_routing_hw_params,
17029 .close = msm_pcm_routing_close,
17030 .prepare = msm_pcm_routing_prepare,
17031};
17032
17033/* Not used but frame seems to require it */
17034static int msm_routing_probe(struct snd_soc_platform *platform)
17035{
17036 snd_soc_dapm_new_controls(&platform->component.dapm, msm_qdsp6_widgets,
17037 ARRAY_SIZE(msm_qdsp6_widgets));
17038 snd_soc_dapm_add_routes(&platform->component.dapm, intercon,
17039 ARRAY_SIZE(intercon));
17040
17041 snd_soc_dapm_new_widgets(platform->component.dapm.card);
17042
17043 snd_soc_add_platform_controls(platform, lsm_controls,
17044 ARRAY_SIZE(lsm_controls));
17045
17046 snd_soc_add_platform_controls(platform, aanc_slim_0_rx_mux,
17047 ARRAY_SIZE(aanc_slim_0_rx_mux));
17048
17049 snd_soc_add_platform_controls(platform, msm_voc_session_controls,
17050 ARRAY_SIZE(msm_voc_session_controls));
17051
17052 snd_soc_add_platform_controls(platform, app_type_cfg_controls,
17053 ARRAY_SIZE(app_type_cfg_controls));
17054
17055 snd_soc_add_platform_controls(platform, lsm_app_type_cfg_controls,
17056 ARRAY_SIZE(lsm_app_type_cfg_controls));
17057
Vikram Pandurangaee9c03a2017-09-07 15:06:17 -070017058 snd_soc_add_platform_controls(platform, module_cfg_controls,
17059 ARRAY_SIZE(module_cfg_controls));
17060
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017061 snd_soc_add_platform_controls(platform,
17062 stereo_to_custom_stereo_controls,
17063 ARRAY_SIZE(stereo_to_custom_stereo_controls));
17064
17065 snd_soc_add_platform_controls(platform, ec_ref_param_controls,
17066 ARRAY_SIZE(ec_ref_param_controls));
17067
17068 snd_soc_add_platform_controls(platform, channel_mixer_controls,
17069 ARRAY_SIZE(channel_mixer_controls));
17070
17071 msm_qti_pp_add_controls(platform);
17072
17073 msm_dts_srs_tm_add_controls(platform);
17074
17075 msm_dolby_dap_add_controls(platform);
17076
17077 snd_soc_add_platform_controls(platform,
17078 use_ds1_or_ds2_controls,
17079 ARRAY_SIZE(use_ds1_or_ds2_controls));
17080
17081 snd_soc_add_platform_controls(platform,
17082 device_pp_params_mixer_controls,
17083 ARRAY_SIZE(device_pp_params_mixer_controls));
17084
17085 snd_soc_add_platform_controls(platform,
17086 msm_routing_be_dai_name_table_mixer_controls,
17087 ARRAY_SIZE(msm_routing_be_dai_name_table_mixer_controls));
17088
17089 snd_soc_add_platform_controls(platform, msm_source_tracking_controls,
17090 ARRAY_SIZE(msm_source_tracking_controls));
17091 snd_soc_add_platform_controls(platform, adm_channel_config_controls,
17092 ARRAY_SIZE(adm_channel_config_controls));
17093
17094 snd_soc_add_platform_controls(platform, aptx_dec_license_controls,
17095 ARRAY_SIZE(aptx_dec_license_controls));
17096 snd_soc_add_platform_controls(platform, stereo_channel_reverse_control,
17097 ARRAY_SIZE(stereo_channel_reverse_control));
17098 return 0;
17099}
17100
17101int msm_routing_pcm_new(struct snd_soc_pcm_runtime *runtime)
17102{
17103 return msm_pcm_routing_hwdep_new(runtime, msm_bedais);
17104}
17105
17106void msm_routing_pcm_free(struct snd_pcm *pcm)
17107{
17108 msm_pcm_routing_hwdep_free(pcm);
17109}
17110
17111static struct snd_soc_platform_driver msm_soc_routing_platform = {
17112 .ops = &msm_routing_pcm_ops,
17113 .probe = msm_routing_probe,
17114 .pcm_new = msm_routing_pcm_new,
17115 .pcm_free = msm_routing_pcm_free,
17116};
17117
17118static int msm_routing_pcm_probe(struct platform_device *pdev)
17119{
17120
17121 dev_dbg(&pdev->dev, "dev name %s\n", dev_name(&pdev->dev));
17122 return snd_soc_register_platform(&pdev->dev,
17123 &msm_soc_routing_platform);
17124}
17125
17126static int msm_routing_pcm_remove(struct platform_device *pdev)
17127{
17128 snd_soc_unregister_platform(&pdev->dev);
17129 return 0;
17130}
17131
17132static const struct of_device_id msm_pcm_routing_dt_match[] = {
17133 {.compatible = "qcom,msm-pcm-routing"},
17134 {}
17135};
17136MODULE_DEVICE_TABLE(of, msm_pcm_routing_dt_match);
17137
17138static struct platform_driver msm_routing_pcm_driver = {
17139 .driver = {
17140 .name = "msm-pcm-routing",
17141 .owner = THIS_MODULE,
17142 .of_match_table = msm_pcm_routing_dt_match,
17143 },
17144 .probe = msm_routing_pcm_probe,
17145 .remove = msm_routing_pcm_remove,
17146};
17147
17148int msm_routing_check_backend_enabled(int fedai_id)
17149{
17150 int i;
17151
17152 if (fedai_id > MSM_FRONTEND_DAI_MM_MAX_ID) {
17153 /* bad ID assigned in machine driver */
17154 pr_err("%s: bad MM ID\n", __func__);
17155 return 0;
17156 }
17157 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
17158 if (test_bit(fedai_id, &msm_bedais[i].fe_sessions[0]))
17159 return msm_bedais[i].active;
17160 }
17161 return 0;
17162}
17163
17164static int msm_routing_set_cal(int32_t cal_type,
17165 size_t data_size, void *data)
17166{
17167 int ret = 0;
17168
17169 pr_debug("%s\n", __func__);
17170
17171 ret = cal_utils_set_cal(data_size, data, cal_data, 0, NULL);
17172 if (ret < 0) {
17173 pr_err("%s: cal_utils_set_cal failed, ret = %d, cal type = %d!\n",
17174 __func__, ret, cal_type);
17175 ret = -EINVAL;
17176 goto done;
17177 }
17178done:
17179 return ret;
17180}
17181
17182static void msm_routing_delete_cal_data(void)
17183{
17184 pr_debug("%s\n", __func__);
17185
17186 cal_utils_destroy_cal_types(1, &cal_data);
17187}
17188
17189static int msm_routing_init_cal_data(void)
17190{
17191 int ret = 0;
17192 struct cal_type_info cal_type_info = {
17193 {ADM_TOPOLOGY_CAL_TYPE,
17194 {NULL, NULL, NULL,
17195 msm_routing_set_cal, NULL, NULL} },
17196 {NULL, NULL, cal_utils_match_buf_num}
17197 };
17198 pr_debug("%s\n", __func__);
17199
17200 ret = cal_utils_create_cal_types(1, &cal_data,
17201 &cal_type_info);
17202 if (ret < 0) {
17203 pr_err("%s: could not create cal type!\n",
17204 __func__);
17205 ret = -EINVAL;
17206 goto err;
17207 }
17208
17209 return ret;
17210err:
17211 msm_routing_delete_cal_data();
17212 return ret;
17213}
17214
Laxminath Kasam8b1366a2017-10-05 01:44:16 +053017215int __init msm_soc_routing_platform_init(void)
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017216{
17217 mutex_init(&routing_lock);
17218 if (msm_routing_init_cal_data())
17219 pr_err("%s: could not init cal data!\n", __func__);
17220
17221 afe_set_routing_callback(
17222 (routing_cb)msm_pcm_get_dev_acdb_id_by_port_id);
17223
17224 memset(&be_dai_name_table, 0, sizeof(be_dai_name_table));
17225 memset(&last_be_id_configured, 0, sizeof(last_be_id_configured));
17226
17227 return platform_driver_register(&msm_routing_pcm_driver);
17228}
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017229
Laxminath Kasam8b1366a2017-10-05 01:44:16 +053017230void __exit msm_soc_routing_platform_exit(void)
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017231{
17232 msm_routing_delete_cal_data();
17233 memset(&be_dai_name_table, 0, sizeof(be_dai_name_table));
17234 mutex_destroy(&routing_lock);
17235 platform_driver_unregister(&msm_routing_pcm_driver);
17236}
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017237
17238MODULE_DESCRIPTION("MSM routing platform driver");
17239MODULE_LICENSE("GPL v2");