blob: 5e84b2171cf396fdb626983dcf8951caeb079ac9 [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;
Aalique Grahamee4fd7d52017-11-28 13:24:13 -08003623 case 23:
3624 msm_route_ec_ref_rx = 23;
3625 ec_ref_port_id = AFE_PORT_ID_HDMI_OVER_DP_RX;
3626 break;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303627 default:
3628 msm_route_ec_ref_rx = 0; /* NONE */
3629 pr_err("%s EC ref rx %ld not valid\n",
3630 __func__, ucontrol->value.integer.value[0]);
3631 ec_ref_port_id = AFE_PORT_INVALID;
3632 break;
3633 }
3634 adm_ec_ref_rx_id(ec_ref_port_id);
3635 pr_debug("%s: msm_route_ec_ref_rx = %d\n",
3636 __func__, msm_route_ec_ref_rx);
3637 mutex_unlock(&routing_lock);
3638 snd_soc_dapm_mux_update_power(widget->dapm, kcontrol,
3639 msm_route_ec_ref_rx, e, update);
3640 return 0;
3641}
3642
3643static const char *const ec_ref_rx[] = { "None", "SLIM_RX", "I2S_RX",
3644 "PRI_MI2S_TX", "SEC_MI2S_TX",
3645 "TERT_MI2S_TX", "QUAT_MI2S_TX", "SEC_I2S_RX", "PROXY_RX",
3646 "SLIM_5_RX", "SLIM_1_TX", "QUAT_TDM_TX_1",
3647 "QUAT_TDM_RX_0", "QUAT_TDM_RX_1", "QUAT_TDM_RX_2", "SLIM_6_RX",
3648 "TERT_MI2S_RX", "QUAT_MI2S_RX", "TERT_TDM_TX_0", "USB_AUDIO_RX",
Aalique Grahamee4fd7d52017-11-28 13:24:13 -08003649 "INT0_MI2S_RX", "INT4_MI2S_RX", "INT3_MI2S_TX", "DISPLAY_PORT"};
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303650
3651static const struct soc_enum msm_route_ec_ref_rx_enum[] = {
3652 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(ec_ref_rx), ec_ref_rx),
3653};
3654
3655static const struct snd_kcontrol_new ext_ec_ref_mux_ul1 =
3656 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL1 MUX Mux",
3657 msm_route_ec_ref_rx_enum[0],
3658 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3659
3660static const struct snd_kcontrol_new ext_ec_ref_mux_ul2 =
3661 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL2 MUX Mux",
3662 msm_route_ec_ref_rx_enum[0],
3663 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3664
3665static const struct snd_kcontrol_new ext_ec_ref_mux_ul3 =
3666 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL3 MUX Mux",
3667 msm_route_ec_ref_rx_enum[0],
3668 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3669
3670static const struct snd_kcontrol_new ext_ec_ref_mux_ul4 =
3671 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL4 MUX Mux",
3672 msm_route_ec_ref_rx_enum[0],
3673 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3674
3675static const struct snd_kcontrol_new ext_ec_ref_mux_ul5 =
3676 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL5 MUX Mux",
3677 msm_route_ec_ref_rx_enum[0],
3678 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3679
3680static const struct snd_kcontrol_new ext_ec_ref_mux_ul6 =
3681 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL6 MUX Mux",
3682 msm_route_ec_ref_rx_enum[0],
3683 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3684
3685static const struct snd_kcontrol_new ext_ec_ref_mux_ul8 =
3686 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL8 MUX Mux",
3687 msm_route_ec_ref_rx_enum[0],
3688 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3689
3690static const struct snd_kcontrol_new ext_ec_ref_mux_ul9 =
3691 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL9 MUX Mux",
3692 msm_route_ec_ref_rx_enum[0],
3693 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3694
Asish Bhattacharya34504582017-08-08 12:55:01 +05303695static const struct snd_kcontrol_new ext_ec_ref_mux_ul16 =
3696 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL16 MUX Mux",
3697 msm_route_ec_ref_rx_enum[0],
3698 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3699
Laxminath Kasam38070be2017-08-17 18:21:59 +05303700static const struct snd_kcontrol_new ext_ec_ref_mux_ul10 =
3701 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL10 MUX Mux",
3702 msm_route_ec_ref_rx_enum[0],
3703 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3704
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303705static const struct snd_kcontrol_new ext_ec_ref_mux_ul17 =
3706 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL17 MUX Mux",
3707 msm_route_ec_ref_rx_enum[0],
3708 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3709
3710static const struct snd_kcontrol_new ext_ec_ref_mux_ul18 =
3711 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL18 MUX Mux",
3712 msm_route_ec_ref_rx_enum[0],
3713 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3714
3715static const struct snd_kcontrol_new ext_ec_ref_mux_ul19 =
3716 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL19 MUX Mux",
3717 msm_route_ec_ref_rx_enum[0],
3718 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3719
3720static int msm_routing_ext_ec_get(struct snd_kcontrol *kcontrol,
3721 struct snd_ctl_elem_value *ucontrol)
3722{
3723 pr_debug("%s: ext_ec_ref_rx = %x\n", __func__, msm_route_ext_ec_ref);
3724
3725 mutex_lock(&routing_lock);
3726 ucontrol->value.integer.value[0] = msm_route_ext_ec_ref;
3727 mutex_unlock(&routing_lock);
3728 return 0;
3729}
3730
3731static int msm_routing_ext_ec_put(struct snd_kcontrol *kcontrol,
3732 struct snd_ctl_elem_value *ucontrol)
3733{
Asish Bhattacharya34504582017-08-08 12:55:01 +05303734 struct snd_soc_dapm_widget *widget =
3735 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303736 int mux = ucontrol->value.enumerated.item[0];
3737 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
3738 int ret = 1;
3739 bool state = true;
3740 uint16_t ext_ec_ref_port_id;
3741 struct snd_soc_dapm_update *update = NULL;
3742
3743 if (mux >= e->items) {
3744 pr_err("%s: Invalid mux value %d\n", __func__, mux);
3745 return -EINVAL;
3746 }
3747
3748 mutex_lock(&routing_lock);
3749 msm_route_ext_ec_ref = ucontrol->value.integer.value[0];
3750
3751 switch (msm_route_ext_ec_ref) {
3752 case EXT_EC_REF_PRI_MI2S_TX:
3753 ext_ec_ref_port_id = AFE_PORT_ID_PRIMARY_MI2S_TX;
3754 break;
3755 case EXT_EC_REF_SEC_MI2S_TX:
3756 ext_ec_ref_port_id = AFE_PORT_ID_SECONDARY_MI2S_TX;
3757 break;
3758 case EXT_EC_REF_TERT_MI2S_TX:
3759 ext_ec_ref_port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
3760 break;
3761 case EXT_EC_REF_QUAT_MI2S_TX:
3762 ext_ec_ref_port_id = AFE_PORT_ID_QUATERNARY_MI2S_TX;
3763 break;
3764 case EXT_EC_REF_QUIN_MI2S_TX:
3765 ext_ec_ref_port_id = AFE_PORT_ID_QUINARY_MI2S_TX;
3766 break;
3767 case EXT_EC_REF_SLIM_1_TX:
3768 ext_ec_ref_port_id = SLIMBUS_1_TX;
3769 break;
3770 case EXT_EC_REF_NONE:
3771 default:
3772 ext_ec_ref_port_id = AFE_PORT_INVALID;
3773 state = false;
3774 break;
3775 }
3776
3777 pr_debug("%s: val = %d ext_ec_ref_port_id = 0x%0x state = %d\n",
3778 __func__, msm_route_ext_ec_ref, ext_ec_ref_port_id, state);
3779
3780 if (!voc_set_ext_ec_ref_port_id(ext_ec_ref_port_id, state)) {
3781 mutex_unlock(&routing_lock);
3782 snd_soc_dapm_mux_update_power(widget->dapm, kcontrol, mux, e,
3783 update);
3784 } else {
3785 ret = -EINVAL;
3786 mutex_unlock(&routing_lock);
3787 }
3788 return ret;
3789}
3790
3791static const char * const ext_ec_ref_rx[] = {"NONE", "PRI_MI2S_TX",
3792 "SEC_MI2S_TX", "TERT_MI2S_TX",
3793 "QUAT_MI2S_TX", "QUIN_MI2S_TX",
3794 "SLIM_1_TX"};
3795
3796static const struct soc_enum msm_route_ext_ec_ref_rx_enum[] = {
3797 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(ext_ec_ref_rx), ext_ec_ref_rx),
3798};
3799
3800static const struct snd_kcontrol_new voc_ext_ec_mux =
3801 SOC_DAPM_ENUM_EXT("VOC_EXT_EC MUX Mux", msm_route_ext_ec_ref_rx_enum[0],
3802 msm_routing_ext_ec_get, msm_routing_ext_ec_put);
3803
3804
3805static const struct snd_kcontrol_new pri_i2s_rx_mixer_controls[] = {
3806 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_I2S_RX,
3807 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
3808 msm_routing_put_audio_mixer),
3809 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_I2S_RX,
3810 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
3811 msm_routing_put_audio_mixer),
3812 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_I2S_RX,
3813 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
3814 msm_routing_put_audio_mixer),
3815 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_I2S_RX,
3816 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
3817 msm_routing_put_audio_mixer),
3818 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_I2S_RX,
3819 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
3820 msm_routing_put_audio_mixer),
3821 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_I2S_RX,
3822 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
3823 msm_routing_put_audio_mixer),
3824 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_I2S_RX,
3825 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
3826 msm_routing_put_audio_mixer),
3827 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_I2S_RX,
3828 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
3829 msm_routing_put_audio_mixer),
3830 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_I2S_RX,
3831 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
3832 msm_routing_put_audio_mixer),
3833 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_I2S_RX,
3834 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
3835 msm_routing_put_audio_mixer),
3836 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_I2S_RX,
3837 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
3838 msm_routing_put_audio_mixer),
3839 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_I2S_RX,
3840 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
3841 msm_routing_put_audio_mixer),
3842 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_I2S_RX,
3843 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
3844 msm_routing_put_audio_mixer),
3845 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_I2S_RX,
3846 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
3847 msm_routing_put_audio_mixer),
3848 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_I2S_RX,
3849 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
3850 msm_routing_put_audio_mixer),
3851 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_I2S_RX,
3852 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
3853 msm_routing_put_audio_mixer),
3854 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_PRI_I2S_RX,
3855 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
3856 msm_routing_put_audio_mixer),
3857 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_PRI_I2S_RX,
3858 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
3859 msm_routing_put_audio_mixer),
3860 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_PRI_I2S_RX,
3861 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
3862 msm_routing_put_audio_mixer),
3863};
3864
3865static const struct snd_kcontrol_new sec_i2s_rx_mixer_controls[] = {
3866 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_I2S_RX,
3867 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
3868 msm_routing_put_audio_mixer),
3869 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_I2S_RX,
3870 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
3871 msm_routing_put_audio_mixer),
3872 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_I2S_RX,
3873 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
3874 msm_routing_put_audio_mixer),
3875 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_I2S_RX,
3876 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
3877 msm_routing_put_audio_mixer),
3878 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_I2S_RX,
3879 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
3880 msm_routing_put_audio_mixer),
3881 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_I2S_RX,
3882 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
3883 msm_routing_put_audio_mixer),
3884 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_I2S_RX,
3885 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
3886 msm_routing_put_audio_mixer),
3887 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_I2S_RX,
3888 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
3889 msm_routing_put_audio_mixer),
3890 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_I2S_RX,
3891 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
3892 msm_routing_put_audio_mixer),
3893 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_I2S_RX,
3894 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
3895 msm_routing_put_audio_mixer),
3896 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_I2S_RX,
3897 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
3898 msm_routing_put_audio_mixer),
3899 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_I2S_RX,
3900 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
3901 msm_routing_put_audio_mixer),
3902 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_I2S_RX,
3903 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
3904 msm_routing_put_audio_mixer),
3905 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_I2S_RX,
3906 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
3907 msm_routing_put_audio_mixer),
3908 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_I2S_RX,
3909 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
3910 msm_routing_put_audio_mixer),
3911 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_I2S_RX,
3912 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
3913 msm_routing_put_audio_mixer),
3914 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SEC_I2S_RX,
3915 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
3916 msm_routing_put_audio_mixer),
3917 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SEC_I2S_RX,
3918 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
3919 msm_routing_put_audio_mixer),
3920 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SEC_I2S_RX,
3921 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
3922 msm_routing_put_audio_mixer),
3923};
3924
3925static const struct snd_kcontrol_new spdif_rx_mixer_controls[] = {
3926 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SPDIF_RX,
3927 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
3928 msm_routing_put_audio_mixer),
3929 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SPDIF_RX,
3930 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
3931 msm_routing_put_audio_mixer),
3932 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SPDIF_RX,
3933 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
3934 msm_routing_put_audio_mixer),
3935 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SPDIF_RX,
3936 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
3937 msm_routing_put_audio_mixer),
3938 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SPDIF_RX,
3939 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
3940 msm_routing_put_audio_mixer),
3941 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SPDIF_RX,
3942 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
3943 msm_routing_put_audio_mixer),
3944 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SPDIF_RX,
3945 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
3946 msm_routing_put_audio_mixer),
3947 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SPDIF_RX,
3948 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
3949 msm_routing_put_audio_mixer),
3950 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SPDIF_RX,
3951 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
3952 msm_routing_put_audio_mixer),
3953 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SPDIF_RX,
3954 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
3955 msm_routing_put_audio_mixer),
3956 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SPDIF_RX,
3957 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
3958 msm_routing_put_audio_mixer),
3959 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SPDIF_RX,
3960 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
3961 msm_routing_put_audio_mixer),
3962 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SPDIF_RX,
3963 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
3964 msm_routing_put_audio_mixer),
3965 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SPDIF_RX,
3966 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
3967 msm_routing_put_audio_mixer),
3968 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SPDIF_RX,
3969 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
3970 msm_routing_put_audio_mixer),
3971 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SPDIF_RX,
3972 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
3973 msm_routing_put_audio_mixer),
3974 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SPDIF_RX,
3975 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
3976 msm_routing_put_audio_mixer),
3977 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SPDIF_RX,
3978 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
3979 msm_routing_put_audio_mixer),
3980 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SPDIF_RX,
3981 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
3982 msm_routing_put_audio_mixer),
3983
3984};
3985
3986static const struct snd_kcontrol_new slimbus_2_rx_mixer_controls[] = {
3987 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_2_RX,
3988 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
3989 msm_routing_put_audio_mixer),
3990 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_2_RX,
3991 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
3992 msm_routing_put_audio_mixer),
3993 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SLIMBUS_2_RX,
3994 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
3995 msm_routing_put_audio_mixer),
3996 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SLIMBUS_2_RX,
3997 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
3998 msm_routing_put_audio_mixer),
3999 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4000 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4001 msm_routing_put_audio_mixer),
4002 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4003 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4004 msm_routing_put_audio_mixer),
4005 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4006 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4007 msm_routing_put_audio_mixer),
4008 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4009 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4010 msm_routing_put_audio_mixer),
4011 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4012 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4013 msm_routing_put_audio_mixer),
4014 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4015 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4016 msm_routing_put_audio_mixer),
4017 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4018 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4019 msm_routing_put_audio_mixer),
4020 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4021 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4022 msm_routing_put_audio_mixer),
4023 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4024 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4025 msm_routing_put_audio_mixer),
4026 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4027 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4028 msm_routing_put_audio_mixer),
4029 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4030 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4031 msm_routing_put_audio_mixer),
4032 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4033 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4034 msm_routing_put_audio_mixer),
4035};
4036
4037static const struct snd_kcontrol_new slimbus_5_rx_mixer_controls[] = {
4038 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4039 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4040 msm_routing_put_audio_mixer),
4041 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4042 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4043 msm_routing_put_audio_mixer),
4044 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4045 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4046 msm_routing_put_audio_mixer),
4047 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4048 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4049 msm_routing_put_audio_mixer),
4050 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4051 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4052 msm_routing_put_audio_mixer),
4053 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4054 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4055 msm_routing_put_audio_mixer),
4056 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4057 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4058 msm_routing_put_audio_mixer),
4059 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4060 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4061 msm_routing_put_audio_mixer),
4062 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4063 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4064 msm_routing_put_audio_mixer),
4065 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4066 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4067 msm_routing_put_audio_mixer),
4068 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4069 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4070 msm_routing_put_audio_mixer),
4071 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4072 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4073 msm_routing_put_audio_mixer),
4074 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4075 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4076 msm_routing_put_audio_mixer),
4077 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4078 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4079 msm_routing_put_audio_mixer),
4080 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4081 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4082 msm_routing_put_audio_mixer),
4083 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4084 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4085 msm_routing_put_audio_mixer),
4086 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4087 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4088 msm_routing_put_audio_mixer),
4089 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4090 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4091 msm_routing_put_audio_mixer),
4092 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4093 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4094 msm_routing_put_audio_mixer),
4095};
4096
4097static const struct snd_kcontrol_new slimbus_rx_mixer_controls[] = {
4098 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4099 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4100 msm_routing_put_audio_mixer),
4101 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4102 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4103 msm_routing_put_audio_mixer),
4104 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4105 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4106 msm_routing_put_audio_mixer),
4107 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4108 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4109 msm_routing_put_audio_mixer),
4110 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4111 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4112 msm_routing_put_audio_mixer),
4113 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4114 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4115 msm_routing_put_audio_mixer),
4116 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4117 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4118 msm_routing_put_audio_mixer),
4119 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4120 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4121 msm_routing_put_audio_mixer),
4122 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4123 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4124 msm_routing_put_audio_mixer),
4125 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4126 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4127 msm_routing_put_audio_mixer),
4128 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4129 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4130 msm_routing_put_audio_mixer),
4131 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4132 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4133 msm_routing_put_audio_mixer),
4134 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4135 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4136 msm_routing_put_audio_mixer),
4137 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4138 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4139 msm_routing_put_audio_mixer),
4140 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4141 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4142 msm_routing_put_audio_mixer),
4143 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4144 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4145 msm_routing_put_audio_mixer),
4146 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4147 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4148 msm_routing_put_audio_mixer),
4149 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4150 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4151 msm_routing_put_audio_mixer),
4152 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4153 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4154 msm_routing_put_audio_mixer),
4155};
4156
4157static const struct snd_kcontrol_new mi2s_rx_mixer_controls[] = {
4158 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_MI2S_RX,
4159 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4160 msm_routing_put_audio_mixer),
4161 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_MI2S_RX,
4162 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4163 msm_routing_put_audio_mixer),
4164 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_MI2S_RX,
4165 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4166 msm_routing_put_audio_mixer),
4167 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_MI2S_RX,
4168 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4169 msm_routing_put_audio_mixer),
4170 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_MI2S_RX,
4171 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4172 msm_routing_put_audio_mixer),
4173 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_MI2S_RX,
4174 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4175 msm_routing_put_audio_mixer),
4176 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_MI2S_RX,
4177 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4178 msm_routing_put_audio_mixer),
4179 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_MI2S_RX,
4180 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4181 msm_routing_put_audio_mixer),
4182 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_MI2S_RX,
4183 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4184 msm_routing_put_audio_mixer),
4185 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_MI2S_RX,
4186 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4187 msm_routing_put_audio_mixer),
4188 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_MI2S_RX,
4189 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4190 msm_routing_put_audio_mixer),
4191 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_MI2S_RX,
4192 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4193 msm_routing_put_audio_mixer),
4194 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_MI2S_RX,
4195 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4196 msm_routing_put_audio_mixer),
4197 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_MI2S_RX,
4198 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4199 msm_routing_put_audio_mixer),
4200 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_MI2S_RX,
4201 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4202 msm_routing_put_audio_mixer),
4203 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_MI2S_RX,
4204 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4205 msm_routing_put_audio_mixer),
4206 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_MI2S_RX,
4207 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4208 msm_routing_put_audio_mixer),
4209 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_MI2S_RX,
4210 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4211 msm_routing_put_audio_mixer),
4212 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_MI2S_RX,
4213 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4214 msm_routing_put_audio_mixer),
4215};
4216
4217static const struct snd_kcontrol_new quaternary_mi2s_rx_mixer_controls[] = {
4218 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4219 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4220 msm_routing_put_audio_mixer),
4221 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4222 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4223 msm_routing_put_audio_mixer),
4224 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4225 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4226 msm_routing_put_audio_mixer),
4227 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4228 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4229 msm_routing_put_audio_mixer),
4230 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4231 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4232 msm_routing_put_audio_mixer),
4233 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4234 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4235 msm_routing_put_audio_mixer),
4236 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4237 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4238 msm_routing_put_audio_mixer),
4239 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4240 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4241 msm_routing_put_audio_mixer),
4242 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4243 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4244 msm_routing_put_audio_mixer),
4245 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4246 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4247 msm_routing_put_audio_mixer),
4248 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4249 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4250 msm_routing_put_audio_mixer),
4251 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4252 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4253 msm_routing_put_audio_mixer),
4254 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4255 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4256 msm_routing_put_audio_mixer),
4257 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4258 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4259 msm_routing_put_audio_mixer),
4260 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4261 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4262 msm_routing_put_audio_mixer),
4263 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4264 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4265 msm_routing_put_audio_mixer),
4266 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4267 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4268 msm_routing_put_audio_mixer),
4269 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4270 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4271 msm_routing_put_audio_mixer),
4272 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4273 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4274 msm_routing_put_audio_mixer),
4275};
4276
4277static const struct snd_kcontrol_new quinary_mi2s_rx_mixer_controls[] = {
4278 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4279 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4280 msm_routing_put_audio_mixer),
4281 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4282 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4283 msm_routing_put_audio_mixer),
4284 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4285 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4286 msm_routing_put_audio_mixer),
4287 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4288 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4289 msm_routing_put_audio_mixer),
4290 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4291 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4292 msm_routing_put_audio_mixer),
4293 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4294 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4295 msm_routing_put_audio_mixer),
4296 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4297 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4298 msm_routing_put_audio_mixer),
4299 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4300 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4301 msm_routing_put_audio_mixer),
4302 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4303 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4304 msm_routing_put_audio_mixer),
4305 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4306 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4307 msm_routing_put_audio_mixer),
4308 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4309 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4310 msm_routing_put_audio_mixer),
4311 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4312 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4313 msm_routing_put_audio_mixer),
4314 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4315 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4316 msm_routing_put_audio_mixer),
4317 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4318 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4319 msm_routing_put_audio_mixer),
4320 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4321 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4322 msm_routing_put_audio_mixer),
4323 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4324 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4325 msm_routing_put_audio_mixer),
4326 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4327 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4328 msm_routing_put_audio_mixer),
4329 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4330 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4331 msm_routing_put_audio_mixer),
4332 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4333 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4334 msm_routing_put_audio_mixer),
4335};
4336
4337static const struct snd_kcontrol_new tertiary_mi2s_rx_mixer_controls[] = {
4338 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4339 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4340 msm_routing_put_audio_mixer),
4341 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4342 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4343 msm_routing_put_audio_mixer),
4344 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4345 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4346 msm_routing_put_audio_mixer),
4347 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4348 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4349 msm_routing_put_audio_mixer),
4350 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4351 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4352 msm_routing_put_audio_mixer),
4353 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4354 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4355 msm_routing_put_audio_mixer),
4356 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4357 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4358 msm_routing_put_audio_mixer),
4359 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4360 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4361 msm_routing_put_audio_mixer),
4362 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4363 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4364 msm_routing_put_audio_mixer),
4365 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4366 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4367 msm_routing_put_audio_mixer),
4368 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4369 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4370 msm_routing_put_audio_mixer),
4371 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4372 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4373 msm_routing_put_audio_mixer),
4374 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4375 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4376 msm_routing_put_audio_mixer),
4377 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4378 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4379 msm_routing_put_audio_mixer),
4380 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4381 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4382 msm_routing_put_audio_mixer),
4383 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4384 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4385 msm_routing_put_audio_mixer),
4386 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4387 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4388 msm_routing_put_audio_mixer),
4389};
4390
4391static const struct snd_kcontrol_new secondary_mi2s_rx2_mixer_controls[] = {
4392 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SECONDARY_MI2S_RX_SD1,
4393 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4394 msm_routing_put_audio_mixer),
4395};
4396
4397static const struct snd_kcontrol_new secondary_mi2s_rx_mixer_controls[] = {
4398 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4399 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4400 msm_routing_put_audio_mixer),
4401 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4402 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4403 msm_routing_put_audio_mixer),
4404 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4405 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4406 msm_routing_put_audio_mixer),
4407 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4408 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4409 msm_routing_put_audio_mixer),
4410 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4411 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4412 msm_routing_put_audio_mixer),
4413 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4414 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4415 msm_routing_put_audio_mixer),
4416 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4417 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4418 msm_routing_put_audio_mixer),
4419 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4420 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4421 msm_routing_put_audio_mixer),
4422 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4423 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4424 msm_routing_put_audio_mixer),
4425 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4426 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4427 msm_routing_put_audio_mixer),
4428 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4429 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4430 msm_routing_put_audio_mixer),
4431 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4432 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4433 msm_routing_put_audio_mixer),
4434 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4435 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4436 msm_routing_put_audio_mixer),
4437 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4438 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4439 msm_routing_put_audio_mixer),
4440 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4441 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4442 msm_routing_put_audio_mixer),
4443 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4444 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4445 msm_routing_put_audio_mixer),
4446 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4447 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4448 msm_routing_put_audio_mixer),
4449 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4450 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4451 msm_routing_put_audio_mixer),
4452 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4453 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4454 msm_routing_put_audio_mixer),
4455};
4456
4457static const struct snd_kcontrol_new primary_mi2s_rx_mixer_controls[] = {
4458 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_MI2S_RX,
4459 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4460 msm_routing_put_audio_mixer),
4461 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_MI2S_RX,
4462 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4463 msm_routing_put_audio_mixer),
4464 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_MI2S_RX,
4465 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4466 msm_routing_put_audio_mixer),
4467 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_MI2S_RX,
4468 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4469 msm_routing_put_audio_mixer),
4470 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_MI2S_RX,
4471 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4472 msm_routing_put_audio_mixer),
4473 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_MI2S_RX,
4474 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4475 msm_routing_put_audio_mixer),
4476 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_MI2S_RX,
4477 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4478 msm_routing_put_audio_mixer),
4479 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_MI2S_RX,
4480 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4481 msm_routing_put_audio_mixer),
4482 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_MI2S_RX,
4483 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4484 msm_routing_put_audio_mixer),
4485 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_MI2S_RX,
4486 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4487 msm_routing_put_audio_mixer),
4488 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_MI2S_RX,
4489 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4490 msm_routing_put_audio_mixer),
4491 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_MI2S_RX,
4492 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4493 msm_routing_put_audio_mixer),
4494 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_MI2S_RX,
4495 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4496 msm_routing_put_audio_mixer),
4497 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_MI2S_RX,
4498 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4499 msm_routing_put_audio_mixer),
4500 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_MI2S_RX,
4501 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4502 msm_routing_put_audio_mixer),
4503 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_MI2S_RX,
4504 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4505 msm_routing_put_audio_mixer),
4506 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_PRI_MI2S_RX,
4507 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4508 msm_routing_put_audio_mixer),
4509 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_PRI_MI2S_RX,
4510 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4511 msm_routing_put_audio_mixer),
4512 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_PRI_MI2S_RX,
4513 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4514 msm_routing_put_audio_mixer),
4515};
4516
4517static const struct snd_kcontrol_new int0_mi2s_rx_mixer_controls[] = {
4518 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_INT0_MI2S_RX,
4519 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4520 msm_routing_put_audio_mixer),
4521 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_INT0_MI2S_RX,
4522 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4523 msm_routing_put_audio_mixer),
4524 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_INT0_MI2S_RX,
4525 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4526 msm_routing_put_audio_mixer),
4527 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_INT0_MI2S_RX,
4528 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4529 msm_routing_put_audio_mixer),
4530 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_INT0_MI2S_RX,
4531 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4532 msm_routing_put_audio_mixer),
4533 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_INT0_MI2S_RX,
4534 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4535 msm_routing_put_audio_mixer),
4536 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_INT0_MI2S_RX,
4537 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4538 msm_routing_put_audio_mixer),
4539 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_INT0_MI2S_RX,
4540 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4541 msm_routing_put_audio_mixer),
4542 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_INT0_MI2S_RX,
4543 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4544 msm_routing_put_audio_mixer),
4545 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_INT0_MI2S_RX,
4546 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4547 msm_routing_put_audio_mixer),
4548 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_INT0_MI2S_RX,
4549 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4550 msm_routing_put_audio_mixer),
4551 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_INT0_MI2S_RX,
4552 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4553 msm_routing_put_audio_mixer),
4554 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_INT0_MI2S_RX,
4555 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4556 msm_routing_put_audio_mixer),
4557 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_INT0_MI2S_RX,
4558 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4559 msm_routing_put_audio_mixer),
4560 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_INT0_MI2S_RX,
4561 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4562 msm_routing_put_audio_mixer),
4563 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_INT0_MI2S_RX,
4564 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4565 msm_routing_put_audio_mixer),
4566};
4567
4568static const struct snd_kcontrol_new int4_mi2s_rx_mixer_controls[] = {
4569 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_INT4_MI2S_RX,
4570 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4571 msm_routing_put_audio_mixer),
4572 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_INT4_MI2S_RX,
4573 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4574 msm_routing_put_audio_mixer),
4575 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_INT4_MI2S_RX,
4576 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4577 msm_routing_put_audio_mixer),
4578 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_INT4_MI2S_RX,
4579 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4580 msm_routing_put_audio_mixer),
4581 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_INT4_MI2S_RX,
4582 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4583 msm_routing_put_audio_mixer),
4584 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_INT4_MI2S_RX,
4585 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4586 msm_routing_put_audio_mixer),
4587 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_INT4_MI2S_RX,
4588 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4589 msm_routing_put_audio_mixer),
4590 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_INT4_MI2S_RX,
4591 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4592 msm_routing_put_audio_mixer),
4593 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_INT4_MI2S_RX,
4594 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4595 msm_routing_put_audio_mixer),
4596 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_INT4_MI2S_RX,
4597 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4598 msm_routing_put_audio_mixer),
4599 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_INT4_MI2S_RX,
4600 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4601 msm_routing_put_audio_mixer),
4602 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_INT4_MI2S_RX,
4603 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4604 msm_routing_put_audio_mixer),
4605 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_INT4_MI2S_RX,
4606 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4607 msm_routing_put_audio_mixer),
4608 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_INT4_MI2S_RX,
4609 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4610 msm_routing_put_audio_mixer),
4611 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_INT4_MI2S_RX,
4612 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4613 msm_routing_put_audio_mixer),
4614 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_INT4_MI2S_RX,
4615 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4616 msm_routing_put_audio_mixer),
4617};
4618
4619static const struct snd_kcontrol_new hdmi_mixer_controls[] = {
4620 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_HDMI_RX,
4621 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4622 msm_routing_put_audio_mixer),
4623 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_HDMI_RX,
4624 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4625 msm_routing_put_audio_mixer),
4626 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_HDMI_RX,
4627 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4628 msm_routing_put_audio_mixer),
4629 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_HDMI_RX,
4630 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4631 msm_routing_put_audio_mixer),
4632 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_HDMI_RX,
4633 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4634 msm_routing_put_audio_mixer),
4635 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_HDMI_RX,
4636 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4637 msm_routing_put_audio_mixer),
4638 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_HDMI_RX,
4639 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4640 msm_routing_put_audio_mixer),
4641 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_HDMI_RX,
4642 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4643 msm_routing_put_audio_mixer),
4644 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_HDMI_RX,
4645 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4646 msm_routing_put_audio_mixer),
4647 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_HDMI_RX,
4648 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4649 msm_routing_put_audio_mixer),
4650 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_HDMI_RX,
4651 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4652 msm_routing_put_audio_mixer),
4653 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_HDMI_RX,
4654 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4655 msm_routing_put_audio_mixer),
4656 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_HDMI_RX,
4657 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4658 msm_routing_put_audio_mixer),
4659 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_HDMI_RX,
4660 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4661 msm_routing_put_audio_mixer),
4662 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_HDMI_RX,
4663 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4664 msm_routing_put_audio_mixer),
4665 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_HDMI_RX,
4666 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4667 msm_routing_put_audio_mixer),
4668 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_HDMI_RX,
4669 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4670 msm_routing_put_audio_mixer),
4671 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_HDMI_RX,
4672 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4673 msm_routing_put_audio_mixer),
4674 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_HDMI_RX,
4675 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4676 msm_routing_put_audio_mixer),
4677};
4678
4679static const struct snd_kcontrol_new display_port_mixer_controls[] = {
4680 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4681 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4682 msm_routing_put_audio_mixer),
4683 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4684 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4685 msm_routing_put_audio_mixer),
4686 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4687 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4688 msm_routing_put_audio_mixer),
4689 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4690 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4691 msm_routing_put_audio_mixer),
4692 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4693 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4694 msm_routing_put_audio_mixer),
4695 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4696 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4697 msm_routing_put_audio_mixer),
4698 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4699 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4700 msm_routing_put_audio_mixer),
4701 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4702 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4703 msm_routing_put_audio_mixer),
4704 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4705 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4706 msm_routing_put_audio_mixer),
4707 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4708 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4709 msm_routing_put_audio_mixer),
4710 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4711 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4712 msm_routing_put_audio_mixer),
4713 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4714 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4715 msm_routing_put_audio_mixer),
4716 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4717 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4718 msm_routing_put_audio_mixer),
4719 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4720 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4721 msm_routing_put_audio_mixer),
4722 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4723 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4724 msm_routing_put_audio_mixer),
4725 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4726 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4727 msm_routing_put_audio_mixer),
4728};
4729
4730 /* incall music delivery mixer */
4731static const struct snd_kcontrol_new incall_music_delivery_mixer_controls[] = {
4732 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_VOICE_PLAYBACK_TX,
4733 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4734 msm_routing_put_audio_mixer),
4735 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_VOICE_PLAYBACK_TX,
4736 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4737 msm_routing_put_audio_mixer),
4738 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_VOICE_PLAYBACK_TX,
4739 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4740 msm_routing_put_audio_mixer),
4741 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_VOICE_PLAYBACK_TX,
4742 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4743 msm_routing_put_audio_mixer),
4744};
4745
4746static const struct snd_kcontrol_new incall_music2_delivery_mixer_controls[] = {
4747 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_VOICE2_PLAYBACK_TX,
4748 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4749 msm_routing_put_audio_mixer),
4750 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_VOICE2_PLAYBACK_TX,
4751 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4752 msm_routing_put_audio_mixer),
4753 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_VOICE2_PLAYBACK_TX,
4754 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4755 msm_routing_put_audio_mixer),
4756 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_VOICE2_PLAYBACK_TX,
4757 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4758 msm_routing_put_audio_mixer),
4759};
4760
4761static const struct snd_kcontrol_new slimbus_4_rx_mixer_controls[] = {
4762 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_4_RX,
4763 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4764 msm_routing_put_audio_mixer),
4765 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_4_RX,
4766 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4767 msm_routing_put_audio_mixer),
4768 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_4_RX,
4769 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4770 msm_routing_put_audio_mixer),
4771 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_4_RX,
4772 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4773 msm_routing_put_audio_mixer),
4774};
4775
4776static const struct snd_kcontrol_new slimbus_6_rx_mixer_controls[] = {
4777 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4778 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4779 msm_routing_put_audio_mixer),
4780 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4781 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4782 msm_routing_put_audio_mixer),
4783 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4784 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4785 msm_routing_put_audio_mixer),
4786 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4787 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4788 msm_routing_put_audio_mixer),
4789 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4790 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4791 msm_routing_put_audio_mixer),
4792 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4793 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4794 msm_routing_put_audio_mixer),
4795 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4796 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4797 msm_routing_put_audio_mixer),
4798 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4799 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4800 msm_routing_put_audio_mixer),
4801 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4802 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4803 msm_routing_put_audio_mixer),
4804 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4805 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4806 msm_routing_put_audio_mixer),
4807 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4808 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4809 msm_routing_put_audio_mixer),
4810 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4811 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4812 msm_routing_put_audio_mixer),
4813 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4814 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4815 msm_routing_put_audio_mixer),
4816 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4817 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4818 msm_routing_put_audio_mixer),
4819 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4820 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4821 msm_routing_put_audio_mixer),
4822 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4823 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4824 msm_routing_put_audio_mixer),
4825};
4826
4827static const struct snd_kcontrol_new slimbus_7_rx_mixer_controls[] = {
4828 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4829 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4830 msm_routing_put_audio_mixer),
4831 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4832 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4833 msm_routing_put_audio_mixer),
4834 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4835 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4836 msm_routing_put_audio_mixer),
4837 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4838 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4839 msm_routing_put_audio_mixer),
4840 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4841 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4842 msm_routing_put_audio_mixer),
4843 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4844 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4845 msm_routing_put_audio_mixer),
4846 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4847 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4848 msm_routing_put_audio_mixer),
4849 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4850 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4851 msm_routing_put_audio_mixer),
4852 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4853 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4854 msm_routing_put_audio_mixer),
4855 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4856 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4857 msm_routing_put_audio_mixer),
4858 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4859 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4860 msm_routing_put_audio_mixer),
4861 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4862 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4863 msm_routing_put_audio_mixer),
4864 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4865 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4866 msm_routing_put_audio_mixer),
4867 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4868 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4869 msm_routing_put_audio_mixer),
4870 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4871 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4872 msm_routing_put_audio_mixer),
4873 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4874 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4875 msm_routing_put_audio_mixer),
4876};
4877
4878static const struct snd_kcontrol_new usb_audio_rx_mixer_controls[] = {
4879 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_USB_RX,
4880 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4881 msm_routing_put_audio_mixer),
4882 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_USB_RX,
4883 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4884 msm_routing_put_audio_mixer),
4885 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_USB_RX,
4886 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4887 msm_routing_put_audio_mixer),
4888 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_USB_RX,
4889 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4890 msm_routing_put_audio_mixer),
4891 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_USB_RX,
4892 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4893 msm_routing_put_audio_mixer),
4894 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_USB_RX,
4895 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4896 msm_routing_put_audio_mixer),
4897 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_USB_RX,
4898 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4899 msm_routing_put_audio_mixer),
4900 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_USB_RX,
4901 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4902 msm_routing_put_audio_mixer),
4903 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_USB_RX,
4904 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4905 msm_routing_put_audio_mixer),
4906 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_USB_RX,
4907 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4908 msm_routing_put_audio_mixer),
4909 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_USB_RX,
4910 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4911 msm_routing_put_audio_mixer),
4912 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_USB_RX,
4913 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4914 msm_routing_put_audio_mixer),
4915 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_USB_RX,
4916 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4917 msm_routing_put_audio_mixer),
4918 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_USB_RX,
4919 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4920 msm_routing_put_audio_mixer),
4921 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_USB_RX,
4922 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4923 msm_routing_put_audio_mixer),
4924 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_USB_RX,
4925 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4926 msm_routing_put_audio_mixer),
4927};
4928
4929static const struct snd_kcontrol_new int_bt_sco_rx_mixer_controls[] = {
4930 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4931 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4932 msm_routing_put_audio_mixer),
4933 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4934 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4935 msm_routing_put_audio_mixer),
4936 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4937 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4938 msm_routing_put_audio_mixer),
4939 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4940 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4941 msm_routing_put_audio_mixer),
4942 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4943 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4944 msm_routing_put_audio_mixer),
4945 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4946 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4947 msm_routing_put_audio_mixer),
4948 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4949 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4950 msm_routing_put_audio_mixer),
4951 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4952 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4953 msm_routing_put_audio_mixer),
4954 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4955 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4956 msm_routing_put_audio_mixer),
4957 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4958 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4959 msm_routing_put_audio_mixer),
4960 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4961 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4962 msm_routing_put_audio_mixer),
4963 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4964 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4965 msm_routing_put_audio_mixer),
4966 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4967 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4968 msm_routing_put_audio_mixer),
4969 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4970 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4971 msm_routing_put_audio_mixer),
4972 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4973 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4974 msm_routing_put_audio_mixer),
4975 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4976 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4977 msm_routing_put_audio_mixer),
4978 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4979 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4980 msm_routing_put_audio_mixer),
4981 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4982 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4983 msm_routing_put_audio_mixer),
4984 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4985 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4986 msm_routing_put_audio_mixer),
4987};
4988
4989static const struct snd_kcontrol_new int_bt_a2dp_rx_mixer_controls[] = {
4990 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
4991 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4992 msm_routing_put_audio_mixer),
4993 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
4994 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4995 msm_routing_put_audio_mixer),
4996 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
4997 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4998 msm_routing_put_audio_mixer),
4999 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5000 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5001 msm_routing_put_audio_mixer),
5002 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5003 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5004 msm_routing_put_audio_mixer),
5005 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5006 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5007 msm_routing_put_audio_mixer),
5008 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5009 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5010 msm_routing_put_audio_mixer),
5011 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5012 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5013 msm_routing_put_audio_mixer),
5014 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5015 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5016 msm_routing_put_audio_mixer),
5017 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5018 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5019 msm_routing_put_audio_mixer),
5020 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5021 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5022 msm_routing_put_audio_mixer),
5023 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5024 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5025 msm_routing_put_audio_mixer),
5026 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5027 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5028 msm_routing_put_audio_mixer),
5029 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5030 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5031 msm_routing_put_audio_mixer),
5032 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5033 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5034 msm_routing_put_audio_mixer),
5035 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5036 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5037 msm_routing_put_audio_mixer),
5038};
5039
5040static const struct snd_kcontrol_new int_fm_rx_mixer_controls[] = {
5041 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_INT_FM_RX,
5042 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5043 msm_routing_put_audio_mixer),
5044 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_INT_FM_RX,
5045 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5046 msm_routing_put_audio_mixer),
5047 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_INT_FM_RX,
5048 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5049 msm_routing_put_audio_mixer),
5050 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_INT_FM_RX,
5051 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5052 msm_routing_put_audio_mixer),
5053 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_INT_FM_RX,
5054 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5055 msm_routing_put_audio_mixer),
5056 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_INT_FM_RX,
5057 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5058 msm_routing_put_audio_mixer),
5059 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_INT_FM_RX,
5060 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5061 msm_routing_put_audio_mixer),
5062 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_INT_FM_RX,
5063 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5064 msm_routing_put_audio_mixer),
5065 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_INT_FM_RX,
5066 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5067 msm_routing_put_audio_mixer),
5068 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_INT_FM_RX,
5069 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5070 msm_routing_put_audio_mixer),
5071 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_INT_FM_RX,
5072 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5073 msm_routing_put_audio_mixer),
5074 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_INT_FM_RX,
5075 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5076 msm_routing_put_audio_mixer),
5077 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_INT_FM_RX,
5078 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5079 msm_routing_put_audio_mixer),
5080 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_INT_FM_RX,
5081 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5082 msm_routing_put_audio_mixer),
5083 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_INT_FM_RX,
5084 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5085 msm_routing_put_audio_mixer),
5086 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_INT_FM_RX,
5087 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5088 msm_routing_put_audio_mixer),
5089 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_INT_FM_RX,
5090 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
5091 msm_routing_put_audio_mixer),
5092 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_INT_FM_RX,
5093 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
5094 msm_routing_put_audio_mixer),
5095 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_INT_FM_RX,
5096 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
5097 msm_routing_put_audio_mixer),
5098};
5099
5100static const struct snd_kcontrol_new afe_pcm_rx_mixer_controls[] = {
5101 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_AFE_PCM_RX,
5102 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5103 msm_routing_put_audio_mixer),
5104 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_AFE_PCM_RX,
5105 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5106 msm_routing_put_audio_mixer),
5107 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_AFE_PCM_RX,
5108 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5109 msm_routing_put_audio_mixer),
5110 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_AFE_PCM_RX,
5111 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5112 msm_routing_put_audio_mixer),
5113 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_AFE_PCM_RX,
5114 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5115 msm_routing_put_audio_mixer),
5116 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_AFE_PCM_RX,
5117 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5118 msm_routing_put_audio_mixer),
5119 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_AFE_PCM_RX,
5120 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5121 msm_routing_put_audio_mixer),
5122 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_AFE_PCM_RX,
5123 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5124 msm_routing_put_audio_mixer),
5125 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_AFE_PCM_RX,
5126 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5127 msm_routing_put_audio_mixer),
5128 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_AFE_PCM_RX,
5129 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5130 msm_routing_put_audio_mixer),
5131 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_AFE_PCM_RX,
5132 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5133 msm_routing_put_audio_mixer),
5134 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_AFE_PCM_RX,
5135 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5136 msm_routing_put_audio_mixer),
5137 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_AFE_PCM_RX,
5138 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5139 msm_routing_put_audio_mixer),
5140 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_AFE_PCM_RX,
5141 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5142 msm_routing_put_audio_mixer),
5143 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_AFE_PCM_RX,
5144 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5145 msm_routing_put_audio_mixer),
5146 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_AFE_PCM_RX,
5147 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5148 msm_routing_put_audio_mixer),
5149 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_AFE_PCM_RX,
5150 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
5151 msm_routing_put_audio_mixer),
5152 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_AFE_PCM_RX,
5153 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
5154 msm_routing_put_audio_mixer),
5155 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_AFE_PCM_RX,
5156 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
5157 msm_routing_put_audio_mixer),
5158};
5159
5160static const struct snd_kcontrol_new auxpcm_rx_mixer_controls[] = {
5161 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_AUXPCM_RX,
5162 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5163 msm_routing_put_audio_mixer),
5164 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_AUXPCM_RX,
5165 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5166 msm_routing_put_audio_mixer),
5167 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_AUXPCM_RX,
5168 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5169 msm_routing_put_audio_mixer),
5170 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_AUXPCM_RX,
5171 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5172 msm_routing_put_audio_mixer),
5173 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_AUXPCM_RX,
5174 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5175 msm_routing_put_audio_mixer),
5176 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_AUXPCM_RX,
5177 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5178 msm_routing_put_audio_mixer),
5179 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_AUXPCM_RX,
5180 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5181 msm_routing_put_audio_mixer),
5182 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_AUXPCM_RX,
5183 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5184 msm_routing_put_audio_mixer),
5185 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_AUXPCM_RX,
5186 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5187 msm_routing_put_audio_mixer),
5188 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_AUXPCM_RX,
5189 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5190 msm_routing_put_audio_mixer),
5191 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_AUXPCM_RX,
5192 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5193 msm_routing_put_audio_mixer),
5194 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_AUXPCM_RX,
5195 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5196 msm_routing_put_audio_mixer),
5197 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_AUXPCM_RX,
5198 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5199 msm_routing_put_audio_mixer),
5200 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_AUXPCM_RX,
5201 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5202 msm_routing_put_audio_mixer),
5203 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_AUXPCM_RX,
5204 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5205 msm_routing_put_audio_mixer),
5206 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_AUXPCM_RX,
5207 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5208 msm_routing_put_audio_mixer),
5209 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_AUXPCM_RX,
5210 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
5211 msm_routing_put_audio_mixer),
5212 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_AUXPCM_RX,
5213 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
5214 msm_routing_put_audio_mixer),
5215 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_AUXPCM_RX,
5216 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
5217 msm_routing_put_audio_mixer),
5218};
5219
5220static const struct snd_kcontrol_new sec_auxpcm_rx_mixer_controls[] = {
5221 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5222 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5223 msm_routing_put_audio_mixer),
5224 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5225 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5226 msm_routing_put_audio_mixer),
5227 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5228 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5229 msm_routing_put_audio_mixer),
5230 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5231 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5232 msm_routing_put_audio_mixer),
5233 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5234 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5235 msm_routing_put_audio_mixer),
5236 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5237 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5238 msm_routing_put_audio_mixer),
5239 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5240 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5241 msm_routing_put_audio_mixer),
5242 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5243 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5244 msm_routing_put_audio_mixer),
5245 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5246 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5247 msm_routing_put_audio_mixer),
5248 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5249 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5250 msm_routing_put_audio_mixer),
5251 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5252 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5253 msm_routing_put_audio_mixer),
5254 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5255 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5256 msm_routing_put_audio_mixer),
5257 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5258 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5259 msm_routing_put_audio_mixer),
5260 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5261 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5262 msm_routing_put_audio_mixer),
5263 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5264 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5265 msm_routing_put_audio_mixer),
5266 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5267 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5268 msm_routing_put_audio_mixer),
5269 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5270 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
5271 msm_routing_put_audio_mixer),
5272 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5273 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
5274 msm_routing_put_audio_mixer),
5275 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5276 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
5277 msm_routing_put_audio_mixer),
5278};
5279
5280static const struct snd_kcontrol_new tert_auxpcm_rx_mixer_controls[] = {
5281 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5282 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5283 msm_routing_put_audio_mixer),
5284 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5285 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5286 msm_routing_put_audio_mixer),
5287 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5288 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5289 msm_routing_put_audio_mixer),
5290 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5291 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5292 msm_routing_put_audio_mixer),
5293 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5294 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5295 msm_routing_put_audio_mixer),
5296 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5297 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5298 msm_routing_put_audio_mixer),
5299 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5300 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5301 msm_routing_put_audio_mixer),
5302 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5303 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5304 msm_routing_put_audio_mixer),
5305 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5306 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5307 msm_routing_put_audio_mixer),
5308 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5309 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5310 msm_routing_put_audio_mixer),
5311 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5312 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5313 msm_routing_put_audio_mixer),
5314 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5315 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5316 msm_routing_put_audio_mixer),
5317 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5318 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5319 msm_routing_put_audio_mixer),
5320 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5321 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5322 msm_routing_put_audio_mixer),
5323 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5324 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5325 msm_routing_put_audio_mixer),
5326 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5327 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5328 msm_routing_put_audio_mixer),
5329};
5330
5331static const struct snd_kcontrol_new quat_auxpcm_rx_mixer_controls[] = {
5332 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5333 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5334 msm_routing_put_audio_mixer),
5335 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5336 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5337 msm_routing_put_audio_mixer),
5338 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5339 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5340 msm_routing_put_audio_mixer),
5341 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5342 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5343 msm_routing_put_audio_mixer),
5344 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5345 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5346 msm_routing_put_audio_mixer),
5347 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5348 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5349 msm_routing_put_audio_mixer),
5350 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5351 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5352 msm_routing_put_audio_mixer),
5353 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5354 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5355 msm_routing_put_audio_mixer),
5356 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5357 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5358 msm_routing_put_audio_mixer),
5359 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5360 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5361 msm_routing_put_audio_mixer),
5362 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5363 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5364 msm_routing_put_audio_mixer),
5365 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5366 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5367 msm_routing_put_audio_mixer),
5368 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5369 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5370 msm_routing_put_audio_mixer),
5371 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5372 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5373 msm_routing_put_audio_mixer),
5374 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5375 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5376 msm_routing_put_audio_mixer),
5377 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5378 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5379 msm_routing_put_audio_mixer),
5380};
5381
Rohit Kumara5077932017-09-10 22:05:05 +05305382static const struct snd_kcontrol_new quin_auxpcm_rx_mixer_controls[] = {
5383 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5384 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5385 msm_routing_put_audio_mixer),
5386 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5387 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5388 msm_routing_put_audio_mixer),
5389 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5390 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5391 msm_routing_put_audio_mixer),
5392 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5393 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5394 msm_routing_put_audio_mixer),
5395 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5396 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5397 msm_routing_put_audio_mixer),
5398 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5399 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5400 msm_routing_put_audio_mixer),
5401 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5402 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5403 msm_routing_put_audio_mixer),
5404 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5405 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5406 msm_routing_put_audio_mixer),
5407 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5408 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5409 msm_routing_put_audio_mixer),
5410 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5411 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5412 msm_routing_put_audio_mixer),
5413 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5414 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5415 msm_routing_put_audio_mixer),
5416 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5417 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5418 msm_routing_put_audio_mixer),
5419 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5420 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5421 msm_routing_put_audio_mixer),
5422 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5423 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5424 msm_routing_put_audio_mixer),
5425 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5426 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5427 msm_routing_put_audio_mixer),
5428 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5429 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5430 msm_routing_put_audio_mixer),
5431};
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305432static const struct snd_kcontrol_new pri_tdm_rx_0_mixer_controls[] = {
5433 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5434 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5435 msm_routing_put_audio_mixer),
5436 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5437 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5438 msm_routing_put_audio_mixer),
5439 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5440 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5441 msm_routing_put_audio_mixer),
5442 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5443 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5444 msm_routing_put_audio_mixer),
5445 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5446 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5447 msm_routing_put_audio_mixer),
5448 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5449 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5450 msm_routing_put_audio_mixer),
5451 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5452 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5453 msm_routing_put_audio_mixer),
5454 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5455 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5456 msm_routing_put_audio_mixer),
5457 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5458 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5459 msm_routing_put_audio_mixer),
5460 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5461 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5462 msm_routing_put_audio_mixer),
5463 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5464 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5465 msm_routing_put_audio_mixer),
5466 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5467 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5468 msm_routing_put_audio_mixer),
5469 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5470 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5471 msm_routing_put_audio_mixer),
5472 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5473 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5474 msm_routing_put_audio_mixer),
5475 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5476 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5477 msm_routing_put_audio_mixer),
5478 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5479 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5480 msm_routing_put_audio_mixer),
5481};
5482
5483static const struct snd_kcontrol_new pri_tdm_rx_1_mixer_controls[] = {
5484 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5485 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5486 msm_routing_put_audio_mixer),
5487 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5488 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5489 msm_routing_put_audio_mixer),
5490 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5491 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5492 msm_routing_put_audio_mixer),
5493 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5494 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5495 msm_routing_put_audio_mixer),
5496 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5497 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5498 msm_routing_put_audio_mixer),
5499 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5500 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5501 msm_routing_put_audio_mixer),
5502 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5503 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5504 msm_routing_put_audio_mixer),
5505 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5506 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5507 msm_routing_put_audio_mixer),
5508 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5509 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5510 msm_routing_put_audio_mixer),
5511 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5512 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5513 msm_routing_put_audio_mixer),
5514 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5515 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5516 msm_routing_put_audio_mixer),
5517 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5518 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5519 msm_routing_put_audio_mixer),
5520 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5521 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5522 msm_routing_put_audio_mixer),
5523 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5524 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5525 msm_routing_put_audio_mixer),
5526 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5527 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5528 msm_routing_put_audio_mixer),
5529 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5530 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5531 msm_routing_put_audio_mixer),
5532};
5533
5534static const struct snd_kcontrol_new pri_tdm_rx_2_mixer_controls[] = {
5535 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5536 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5537 msm_routing_put_audio_mixer),
5538 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5539 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5540 msm_routing_put_audio_mixer),
5541 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5542 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5543 msm_routing_put_audio_mixer),
5544 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5545 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5546 msm_routing_put_audio_mixer),
5547 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5548 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5549 msm_routing_put_audio_mixer),
5550 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5551 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5552 msm_routing_put_audio_mixer),
5553 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5554 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5555 msm_routing_put_audio_mixer),
5556 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5557 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5558 msm_routing_put_audio_mixer),
5559 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5560 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5561 msm_routing_put_audio_mixer),
5562 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5563 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5564 msm_routing_put_audio_mixer),
5565 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5566 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5567 msm_routing_put_audio_mixer),
5568 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5569 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5570 msm_routing_put_audio_mixer),
5571 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5572 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5573 msm_routing_put_audio_mixer),
5574 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5575 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5576 msm_routing_put_audio_mixer),
5577 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5578 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5579 msm_routing_put_audio_mixer),
5580 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5581 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5582 msm_routing_put_audio_mixer),
5583};
5584
5585static const struct snd_kcontrol_new pri_tdm_rx_3_mixer_controls[] = {
5586 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5587 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5588 msm_routing_put_audio_mixer),
5589 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5590 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5591 msm_routing_put_audio_mixer),
5592 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5593 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5594 msm_routing_put_audio_mixer),
5595 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5596 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5597 msm_routing_put_audio_mixer),
5598 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5599 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5600 msm_routing_put_audio_mixer),
5601 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5602 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5603 msm_routing_put_audio_mixer),
5604 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5605 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5606 msm_routing_put_audio_mixer),
5607 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5608 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5609 msm_routing_put_audio_mixer),
5610 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5611 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5612 msm_routing_put_audio_mixer),
5613 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5614 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5615 msm_routing_put_audio_mixer),
5616 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5617 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5618 msm_routing_put_audio_mixer),
5619 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5620 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5621 msm_routing_put_audio_mixer),
5622 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5623 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5624 msm_routing_put_audio_mixer),
5625 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5626 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5627 msm_routing_put_audio_mixer),
5628 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5629 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5630 msm_routing_put_audio_mixer),
5631 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5632 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5633 msm_routing_put_audio_mixer),
5634};
5635
5636static const struct snd_kcontrol_new pri_tdm_tx_0_mixer_controls[] = {
5637 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5638 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5639 msm_routing_put_audio_mixer),
5640 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5641 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5642 msm_routing_put_audio_mixer),
5643 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5644 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5645 msm_routing_put_audio_mixer),
5646 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5647 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5648 msm_routing_put_audio_mixer),
5649 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5650 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5651 msm_routing_put_audio_mixer),
5652 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5653 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5654 msm_routing_put_audio_mixer),
5655 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5656 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5657 msm_routing_put_audio_mixer),
5658 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5659 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5660 msm_routing_put_audio_mixer),
5661 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5662 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5663 msm_routing_put_audio_mixer),
5664 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5665 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5666 msm_routing_put_audio_mixer),
5667 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5668 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5669 msm_routing_put_audio_mixer),
5670 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5671 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5672 msm_routing_put_audio_mixer),
5673 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5674 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5675 msm_routing_put_audio_mixer),
5676 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5677 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5678 msm_routing_put_audio_mixer),
5679 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5680 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5681 msm_routing_put_audio_mixer),
5682 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5683 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5684 msm_routing_put_audio_mixer),
5685};
5686
5687static const struct snd_kcontrol_new sec_tdm_rx_0_mixer_controls[] = {
5688 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5689 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5690 msm_routing_put_audio_mixer),
5691 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5692 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5693 msm_routing_put_audio_mixer),
5694 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5695 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5696 msm_routing_put_audio_mixer),
5697 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5698 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5699 msm_routing_put_audio_mixer),
5700 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5701 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5702 msm_routing_put_audio_mixer),
5703 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5704 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5705 msm_routing_put_audio_mixer),
5706 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5707 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5708 msm_routing_put_audio_mixer),
5709 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5710 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5711 msm_routing_put_audio_mixer),
5712 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5713 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5714 msm_routing_put_audio_mixer),
5715 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5716 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5717 msm_routing_put_audio_mixer),
5718 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5719 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5720 msm_routing_put_audio_mixer),
5721 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5722 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5723 msm_routing_put_audio_mixer),
5724 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5725 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5726 msm_routing_put_audio_mixer),
5727 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5728 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5729 msm_routing_put_audio_mixer),
5730 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5731 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5732 msm_routing_put_audio_mixer),
5733 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5734 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5735 msm_routing_put_audio_mixer),
5736};
5737
5738static const struct snd_kcontrol_new sec_tdm_rx_1_mixer_controls[] = {
5739 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5740 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5741 msm_routing_put_audio_mixer),
5742 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5743 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5744 msm_routing_put_audio_mixer),
5745 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5746 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5747 msm_routing_put_audio_mixer),
5748 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5749 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5750 msm_routing_put_audio_mixer),
5751 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5752 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5753 msm_routing_put_audio_mixer),
5754 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5755 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5756 msm_routing_put_audio_mixer),
5757 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5758 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5759 msm_routing_put_audio_mixer),
5760 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5761 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5762 msm_routing_put_audio_mixer),
5763 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5764 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5765 msm_routing_put_audio_mixer),
5766 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5767 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5768 msm_routing_put_audio_mixer),
5769 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5770 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5771 msm_routing_put_audio_mixer),
5772 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5773 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5774 msm_routing_put_audio_mixer),
5775 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5776 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5777 msm_routing_put_audio_mixer),
5778 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5779 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5780 msm_routing_put_audio_mixer),
5781 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5782 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5783 msm_routing_put_audio_mixer),
5784 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5785 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5786 msm_routing_put_audio_mixer),
5787};
5788
5789static const struct snd_kcontrol_new sec_tdm_rx_2_mixer_controls[] = {
5790 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5791 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5792 msm_routing_put_audio_mixer),
5793 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5794 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5795 msm_routing_put_audio_mixer),
5796 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5797 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5798 msm_routing_put_audio_mixer),
5799 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5800 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5801 msm_routing_put_audio_mixer),
5802 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5803 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5804 msm_routing_put_audio_mixer),
5805 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5806 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5807 msm_routing_put_audio_mixer),
5808 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5809 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5810 msm_routing_put_audio_mixer),
5811 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5812 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5813 msm_routing_put_audio_mixer),
5814 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5815 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5816 msm_routing_put_audio_mixer),
5817 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5818 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5819 msm_routing_put_audio_mixer),
5820 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5821 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5822 msm_routing_put_audio_mixer),
5823 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5824 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5825 msm_routing_put_audio_mixer),
5826 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5827 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5828 msm_routing_put_audio_mixer),
5829 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5830 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5831 msm_routing_put_audio_mixer),
5832 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5833 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5834 msm_routing_put_audio_mixer),
5835 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5836 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5837 msm_routing_put_audio_mixer),
5838};
5839
5840static const struct snd_kcontrol_new sec_tdm_rx_3_mixer_controls[] = {
5841 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5842 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5843 msm_routing_put_audio_mixer),
5844 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5845 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5846 msm_routing_put_audio_mixer),
5847 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5848 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5849 msm_routing_put_audio_mixer),
5850 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5851 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5852 msm_routing_put_audio_mixer),
5853 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5854 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5855 msm_routing_put_audio_mixer),
5856 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5857 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5858 msm_routing_put_audio_mixer),
5859 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5860 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5861 msm_routing_put_audio_mixer),
5862 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5863 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5864 msm_routing_put_audio_mixer),
5865 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5866 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5867 msm_routing_put_audio_mixer),
5868 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5869 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5870 msm_routing_put_audio_mixer),
5871 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5872 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5873 msm_routing_put_audio_mixer),
5874 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5875 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5876 msm_routing_put_audio_mixer),
5877 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5878 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5879 msm_routing_put_audio_mixer),
5880 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5881 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5882 msm_routing_put_audio_mixer),
5883 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5884 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5885 msm_routing_put_audio_mixer),
5886 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5887 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5888 msm_routing_put_audio_mixer),
5889};
5890
5891static const struct snd_kcontrol_new sec_tdm_tx_0_mixer_controls[] = {
5892 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5893 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5894 msm_routing_put_audio_mixer),
5895 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5896 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5897 msm_routing_put_audio_mixer),
5898 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5899 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5900 msm_routing_put_audio_mixer),
5901 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5902 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5903 msm_routing_put_audio_mixer),
5904 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5905 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5906 msm_routing_put_audio_mixer),
5907 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5908 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5909 msm_routing_put_audio_mixer),
5910 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5911 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5912 msm_routing_put_audio_mixer),
5913 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5914 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5915 msm_routing_put_audio_mixer),
5916 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5917 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5918 msm_routing_put_audio_mixer),
5919 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5920 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5921 msm_routing_put_audio_mixer),
5922 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5923 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5924 msm_routing_put_audio_mixer),
5925 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5926 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5927 msm_routing_put_audio_mixer),
5928 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5929 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5930 msm_routing_put_audio_mixer),
5931 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5932 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5933 msm_routing_put_audio_mixer),
5934 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5935 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5936 msm_routing_put_audio_mixer),
5937 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5938 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5939 msm_routing_put_audio_mixer),
5940};
5941
5942static const struct snd_kcontrol_new tert_tdm_rx_0_mixer_controls[] = {
5943 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5944 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5945 msm_routing_put_audio_mixer),
5946 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5947 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5948 msm_routing_put_audio_mixer),
5949 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5950 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5951 msm_routing_put_audio_mixer),
5952 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5953 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5954 msm_routing_put_audio_mixer),
5955 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5956 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5957 msm_routing_put_audio_mixer),
5958 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5959 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5960 msm_routing_put_audio_mixer),
5961 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5962 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5963 msm_routing_put_audio_mixer),
5964 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5965 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5966 msm_routing_put_audio_mixer),
5967 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5968 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5969 msm_routing_put_audio_mixer),
5970 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5971 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5972 msm_routing_put_audio_mixer),
5973 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5974 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5975 msm_routing_put_audio_mixer),
5976 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5977 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5978 msm_routing_put_audio_mixer),
5979 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5980 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5981 msm_routing_put_audio_mixer),
5982 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5983 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5984 msm_routing_put_audio_mixer),
5985 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5986 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5987 msm_routing_put_audio_mixer),
5988 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5989 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5990 msm_routing_put_audio_mixer),
5991};
5992
5993static const struct snd_kcontrol_new tert_tdm_tx_0_mixer_controls[] = {
5994 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_TX_0,
5995 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5996 msm_routing_put_audio_mixer),
5997 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_TX_0,
5998 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5999 msm_routing_put_audio_mixer),
6000 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6001 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6002 msm_routing_put_audio_mixer),
6003 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6004 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6005 msm_routing_put_audio_mixer),
6006 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6007 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6008 msm_routing_put_audio_mixer),
6009 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6010 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6011 msm_routing_put_audio_mixer),
6012 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6013 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6014 msm_routing_put_audio_mixer),
6015 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6016 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6017 msm_routing_put_audio_mixer),
6018 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6019 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6020 msm_routing_put_audio_mixer),
6021 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6022 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6023 msm_routing_put_audio_mixer),
6024 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6025 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6026 msm_routing_put_audio_mixer),
6027 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6028 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6029 msm_routing_put_audio_mixer),
6030 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6031 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6032 msm_routing_put_audio_mixer),
6033 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6034 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6035 msm_routing_put_audio_mixer),
6036 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6037 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6038 msm_routing_put_audio_mixer),
6039 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6040 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6041 msm_routing_put_audio_mixer),
6042};
6043
6044static const struct snd_kcontrol_new tert_tdm_rx_1_mixer_controls[] = {
6045 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6046 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6047 msm_routing_put_audio_mixer),
6048 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6049 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6050 msm_routing_put_audio_mixer),
6051 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6052 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6053 msm_routing_put_audio_mixer),
6054 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6055 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6056 msm_routing_put_audio_mixer),
6057 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6058 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6059 msm_routing_put_audio_mixer),
6060 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6061 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6062 msm_routing_put_audio_mixer),
6063 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6064 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6065 msm_routing_put_audio_mixer),
6066 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6067 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6068 msm_routing_put_audio_mixer),
6069 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6070 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6071 msm_routing_put_audio_mixer),
6072 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6073 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6074 msm_routing_put_audio_mixer),
6075 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6076 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6077 msm_routing_put_audio_mixer),
6078 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6079 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6080 msm_routing_put_audio_mixer),
6081 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6082 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6083 msm_routing_put_audio_mixer),
6084 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6085 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6086 msm_routing_put_audio_mixer),
6087 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6088 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6089 msm_routing_put_audio_mixer),
6090 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6091 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6092 msm_routing_put_audio_mixer),
6093};
6094
6095static const struct snd_kcontrol_new tert_tdm_rx_2_mixer_controls[] = {
6096 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6097 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6098 msm_routing_put_audio_mixer),
6099 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6100 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6101 msm_routing_put_audio_mixer),
6102 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6103 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6104 msm_routing_put_audio_mixer),
6105 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6106 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6107 msm_routing_put_audio_mixer),
6108 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6109 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6110 msm_routing_put_audio_mixer),
6111 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6112 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6113 msm_routing_put_audio_mixer),
6114 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6115 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6116 msm_routing_put_audio_mixer),
6117 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6118 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6119 msm_routing_put_audio_mixer),
6120 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6121 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6122 msm_routing_put_audio_mixer),
6123 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6124 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6125 msm_routing_put_audio_mixer),
6126 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6127 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6128 msm_routing_put_audio_mixer),
6129 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6130 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6131 msm_routing_put_audio_mixer),
6132 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6133 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6134 msm_routing_put_audio_mixer),
6135 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6136 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6137 msm_routing_put_audio_mixer),
6138 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6139 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6140 msm_routing_put_audio_mixer),
6141 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6142 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6143 msm_routing_put_audio_mixer),
6144};
6145
6146static const struct snd_kcontrol_new tert_tdm_rx_3_mixer_controls[] = {
6147 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6148 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6149 msm_routing_put_audio_mixer),
6150 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6151 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6152 msm_routing_put_audio_mixer),
6153 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6154 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6155 msm_routing_put_audio_mixer),
6156 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6157 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6158 msm_routing_put_audio_mixer),
6159 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6160 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6161 msm_routing_put_audio_mixer),
6162 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6163 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6164 msm_routing_put_audio_mixer),
6165 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6166 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6167 msm_routing_put_audio_mixer),
6168 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6169 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6170 msm_routing_put_audio_mixer),
6171 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6172 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6173 msm_routing_put_audio_mixer),
6174 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6175 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6176 msm_routing_put_audio_mixer),
6177 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6178 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6179 msm_routing_put_audio_mixer),
6180 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6181 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6182 msm_routing_put_audio_mixer),
6183 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6184 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6185 msm_routing_put_audio_mixer),
6186 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6187 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6188 msm_routing_put_audio_mixer),
6189 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6190 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6191 msm_routing_put_audio_mixer),
6192 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6193 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6194 msm_routing_put_audio_mixer),
6195};
6196
6197static const struct snd_kcontrol_new tert_tdm_rx_4_mixer_controls[] = {
6198 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6199 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6200 msm_routing_put_audio_mixer),
6201 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6202 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6203 msm_routing_put_audio_mixer),
6204 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6205 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6206 msm_routing_put_audio_mixer),
6207 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6208 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6209 msm_routing_put_audio_mixer),
6210 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6211 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6212 msm_routing_put_audio_mixer),
6213 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6214 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6215 msm_routing_put_audio_mixer),
6216 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6217 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6218 msm_routing_put_audio_mixer),
6219 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6220 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6221 msm_routing_put_audio_mixer),
6222 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6223 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6224 msm_routing_put_audio_mixer),
6225 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6226 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6227 msm_routing_put_audio_mixer),
6228 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6229 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6230 msm_routing_put_audio_mixer),
6231 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6232 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6233 msm_routing_put_audio_mixer),
6234 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6235 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6236 msm_routing_put_audio_mixer),
6237 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6238 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6239 msm_routing_put_audio_mixer),
6240 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6241 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6242 msm_routing_put_audio_mixer),
6243 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6244 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6245 msm_routing_put_audio_mixer),
6246};
6247
6248static const struct snd_kcontrol_new quat_tdm_rx_0_mixer_controls[] = {
6249 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6250 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6251 msm_routing_put_audio_mixer),
6252 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6253 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6254 msm_routing_put_audio_mixer),
6255 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6256 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6257 msm_routing_put_audio_mixer),
6258 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6259 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6260 msm_routing_put_audio_mixer),
6261 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6262 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6263 msm_routing_put_audio_mixer),
6264 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6265 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6266 msm_routing_put_audio_mixer),
6267 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6268 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6269 msm_routing_put_audio_mixer),
6270 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6271 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6272 msm_routing_put_audio_mixer),
6273 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6274 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6275 msm_routing_put_audio_mixer),
6276 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6277 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6278 msm_routing_put_audio_mixer),
6279 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6280 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6281 msm_routing_put_audio_mixer),
6282 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6283 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6284 msm_routing_put_audio_mixer),
6285 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6286 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6287 msm_routing_put_audio_mixer),
6288 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6289 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6290 msm_routing_put_audio_mixer),
6291 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6292 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6293 msm_routing_put_audio_mixer),
6294 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6295 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6296 msm_routing_put_audio_mixer),
6297 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6298 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6299 msm_routing_put_audio_mixer),
6300};
6301
6302static const struct snd_kcontrol_new quat_tdm_tx_0_mixer_controls[] = {
6303 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6304 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6305 msm_routing_put_audio_mixer),
6306 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6307 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6308 msm_routing_put_audio_mixer),
6309 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6310 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6311 msm_routing_put_audio_mixer),
6312 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6313 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6314 msm_routing_put_audio_mixer),
6315 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6316 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6317 msm_routing_put_audio_mixer),
6318 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6319 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6320 msm_routing_put_audio_mixer),
6321 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6322 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6323 msm_routing_put_audio_mixer),
6324 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6325 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6326 msm_routing_put_audio_mixer),
6327 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6328 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6329 msm_routing_put_audio_mixer),
6330 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6331 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6332 msm_routing_put_audio_mixer),
6333 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6334 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6335 msm_routing_put_audio_mixer),
6336 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6337 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6338 msm_routing_put_audio_mixer),
6339 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6340 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6341 msm_routing_put_audio_mixer),
6342 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6343 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6344 msm_routing_put_audio_mixer),
6345 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6346 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6347 msm_routing_put_audio_mixer),
6348 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6349 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6350 msm_routing_put_audio_mixer),
6351};
6352
6353static const struct snd_kcontrol_new quat_tdm_rx_1_mixer_controls[] = {
6354 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6355 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6356 msm_routing_put_audio_mixer),
6357 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6358 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6359 msm_routing_put_audio_mixer),
6360 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6361 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6362 msm_routing_put_audio_mixer),
6363 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6364 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6365 msm_routing_put_audio_mixer),
6366 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6367 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6368 msm_routing_put_audio_mixer),
6369 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6370 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6371 msm_routing_put_audio_mixer),
6372 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6373 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6374 msm_routing_put_audio_mixer),
6375 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6376 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6377 msm_routing_put_audio_mixer),
6378 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6379 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6380 msm_routing_put_audio_mixer),
6381 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6382 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6383 msm_routing_put_audio_mixer),
6384 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6385 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6386 msm_routing_put_audio_mixer),
6387 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6388 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6389 msm_routing_put_audio_mixer),
6390 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6391 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6392 msm_routing_put_audio_mixer),
6393 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6394 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6395 msm_routing_put_audio_mixer),
6396 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6397 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6398 msm_routing_put_audio_mixer),
6399 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6400 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6401 msm_routing_put_audio_mixer),
6402 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6403 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6404 msm_routing_put_audio_mixer),
6405};
6406
6407static const struct snd_kcontrol_new quat_tdm_rx_2_mixer_controls[] = {
6408 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6409 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6410 msm_routing_put_audio_mixer),
6411 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6412 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6413 msm_routing_put_audio_mixer),
6414 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6415 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6416 msm_routing_put_audio_mixer),
6417 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6418 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6419 msm_routing_put_audio_mixer),
6420 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6421 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6422 msm_routing_put_audio_mixer),
6423 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6424 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6425 msm_routing_put_audio_mixer),
6426 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6427 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6428 msm_routing_put_audio_mixer),
6429 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6430 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6431 msm_routing_put_audio_mixer),
6432 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6433 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6434 msm_routing_put_audio_mixer),
6435 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6436 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6437 msm_routing_put_audio_mixer),
6438 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6439 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6440 msm_routing_put_audio_mixer),
6441 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6442 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6443 msm_routing_put_audio_mixer),
6444 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6445 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6446 msm_routing_put_audio_mixer),
6447 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6448 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6449 msm_routing_put_audio_mixer),
6450 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6451 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6452 msm_routing_put_audio_mixer),
6453 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6454 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6455 msm_routing_put_audio_mixer),
6456 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6457 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6458 msm_routing_put_audio_mixer),
6459};
6460
6461static const struct snd_kcontrol_new quat_tdm_rx_3_mixer_controls[] = {
6462 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6463 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6464 msm_routing_put_audio_mixer),
6465 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6466 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6467 msm_routing_put_audio_mixer),
6468 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6469 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6470 msm_routing_put_audio_mixer),
6471 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6472 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6473 msm_routing_put_audio_mixer),
6474 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6475 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6476 msm_routing_put_audio_mixer),
6477 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6478 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6479 msm_routing_put_audio_mixer),
6480 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6481 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6482 msm_routing_put_audio_mixer),
6483 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6484 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6485 msm_routing_put_audio_mixer),
6486 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6487 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6488 msm_routing_put_audio_mixer),
6489 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6490 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6491 msm_routing_put_audio_mixer),
6492 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6493 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6494 msm_routing_put_audio_mixer),
6495 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6496 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6497 msm_routing_put_audio_mixer),
6498 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6499 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6500 msm_routing_put_audio_mixer),
6501 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6502 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6503 msm_routing_put_audio_mixer),
6504 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6505 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6506 msm_routing_put_audio_mixer),
6507 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6508 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6509 msm_routing_put_audio_mixer),
6510 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6511 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6512 msm_routing_put_audio_mixer),
6513};
6514
Rohit Kumara5077932017-09-10 22:05:05 +05306515static const struct snd_kcontrol_new quin_tdm_rx_0_mixer_controls[] = {
6516 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6517 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6518 msm_routing_put_audio_mixer),
6519 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6520 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6521 msm_routing_put_audio_mixer),
6522 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6523 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6524 msm_routing_put_audio_mixer),
6525 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6526 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6527 msm_routing_put_audio_mixer),
6528 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6529 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6530 msm_routing_put_audio_mixer),
6531 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6532 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6533 msm_routing_put_audio_mixer),
6534 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6535 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6536 msm_routing_put_audio_mixer),
6537 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6538 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6539 msm_routing_put_audio_mixer),
6540 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6541 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6542 msm_routing_put_audio_mixer),
6543 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6544 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6545 msm_routing_put_audio_mixer),
6546 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6547 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6548 msm_routing_put_audio_mixer),
6549 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6550 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6551 msm_routing_put_audio_mixer),
6552 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6553 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6554 msm_routing_put_audio_mixer),
6555 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6556 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6557 msm_routing_put_audio_mixer),
6558 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6559 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6560 msm_routing_put_audio_mixer),
6561 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6562 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6563 msm_routing_put_audio_mixer),
6564 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6565 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6566 msm_routing_put_audio_mixer),
6567};
6568
6569static const struct snd_kcontrol_new quin_tdm_tx_0_mixer_controls[] = {
6570 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6571 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6572 msm_routing_put_audio_mixer),
6573 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6574 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6575 msm_routing_put_audio_mixer),
6576 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6577 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6578 msm_routing_put_audio_mixer),
6579 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6580 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6581 msm_routing_put_audio_mixer),
6582 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6583 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6584 msm_routing_put_audio_mixer),
6585 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6586 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6587 msm_routing_put_audio_mixer),
6588 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6589 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6590 msm_routing_put_audio_mixer),
6591 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6592 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6593 msm_routing_put_audio_mixer),
6594 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6595 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6596 msm_routing_put_audio_mixer),
6597 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6598 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6599 msm_routing_put_audio_mixer),
6600 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6601 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6602 msm_routing_put_audio_mixer),
6603 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6604 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6605 msm_routing_put_audio_mixer),
6606 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6607 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6608 msm_routing_put_audio_mixer),
6609 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6610 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6611 msm_routing_put_audio_mixer),
6612 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6613 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6614 msm_routing_put_audio_mixer),
6615 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6616 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6617 msm_routing_put_audio_mixer),
6618};
6619
6620static const struct snd_kcontrol_new quin_tdm_rx_1_mixer_controls[] = {
6621 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6622 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6623 msm_routing_put_audio_mixer),
6624 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6625 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6626 msm_routing_put_audio_mixer),
6627 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6628 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6629 msm_routing_put_audio_mixer),
6630 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6631 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6632 msm_routing_put_audio_mixer),
6633 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6634 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6635 msm_routing_put_audio_mixer),
6636 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6637 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6638 msm_routing_put_audio_mixer),
6639 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6640 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6641 msm_routing_put_audio_mixer),
6642 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6643 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6644 msm_routing_put_audio_mixer),
6645 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6646 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6647 msm_routing_put_audio_mixer),
6648 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6649 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6650 msm_routing_put_audio_mixer),
6651 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6652 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6653 msm_routing_put_audio_mixer),
6654 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6655 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6656 msm_routing_put_audio_mixer),
6657 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6658 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6659 msm_routing_put_audio_mixer),
6660 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6661 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6662 msm_routing_put_audio_mixer),
6663 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6664 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6665 msm_routing_put_audio_mixer),
6666 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6667 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6668 msm_routing_put_audio_mixer),
6669 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6670 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6671 msm_routing_put_audio_mixer),
6672};
6673
6674static const struct snd_kcontrol_new quin_tdm_rx_2_mixer_controls[] = {
6675 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6676 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6677 msm_routing_put_audio_mixer),
6678 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6679 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6680 msm_routing_put_audio_mixer),
6681 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6682 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6683 msm_routing_put_audio_mixer),
6684 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6685 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6686 msm_routing_put_audio_mixer),
6687 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6688 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6689 msm_routing_put_audio_mixer),
6690 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6691 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6692 msm_routing_put_audio_mixer),
6693 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6694 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6695 msm_routing_put_audio_mixer),
6696 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6697 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6698 msm_routing_put_audio_mixer),
6699 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6700 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6701 msm_routing_put_audio_mixer),
6702 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6703 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6704 msm_routing_put_audio_mixer),
6705 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6706 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6707 msm_routing_put_audio_mixer),
6708 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6709 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6710 msm_routing_put_audio_mixer),
6711 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6712 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6713 msm_routing_put_audio_mixer),
6714 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6715 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6716 msm_routing_put_audio_mixer),
6717 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6718 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6719 msm_routing_put_audio_mixer),
6720 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6721 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6722 msm_routing_put_audio_mixer),
6723 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6724 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6725 msm_routing_put_audio_mixer),
6726};
6727
6728static const struct snd_kcontrol_new quin_tdm_rx_3_mixer_controls[] = {
6729 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6730 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6731 msm_routing_put_audio_mixer),
6732 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6733 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6734 msm_routing_put_audio_mixer),
6735 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6736 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6737 msm_routing_put_audio_mixer),
6738 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6739 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6740 msm_routing_put_audio_mixer),
6741 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6742 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6743 msm_routing_put_audio_mixer),
6744 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6745 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6746 msm_routing_put_audio_mixer),
6747 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6748 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6749 msm_routing_put_audio_mixer),
6750 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6751 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6752 msm_routing_put_audio_mixer),
6753 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6754 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6755 msm_routing_put_audio_mixer),
6756 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6757 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6758 msm_routing_put_audio_mixer),
6759 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6760 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6761 msm_routing_put_audio_mixer),
6762 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6763 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6764 msm_routing_put_audio_mixer),
6765 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6766 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6767 msm_routing_put_audio_mixer),
6768 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6769 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6770 msm_routing_put_audio_mixer),
6771 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6772 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6773 msm_routing_put_audio_mixer),
6774 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6775 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6776 msm_routing_put_audio_mixer),
6777 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6778 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6779 msm_routing_put_audio_mixer),
6780};
6781
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306782static const struct snd_kcontrol_new mmul1_mixer_controls[] = {
6783 SOC_SINGLE_EXT("PRI_TX", MSM_BACKEND_DAI_PRI_I2S_TX,
6784 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6785 msm_routing_put_audio_mixer),
6786 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
6787 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6788 msm_routing_put_audio_mixer),
6789 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
6790 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6791 msm_routing_put_audio_mixer),
6792 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
6793 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6794 msm_routing_put_audio_mixer),
6795 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
6796 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6797 msm_routing_put_audio_mixer),
6798 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
6799 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6800 msm_routing_put_audio_mixer),
6801 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
6802 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6803 msm_routing_put_audio_mixer),
6804 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
6805 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6806 msm_routing_put_audio_mixer),
6807 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
6808 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6809 msm_routing_put_audio_mixer),
6810 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
6811 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6812 msm_routing_put_audio_mixer),
6813 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
6814 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6815 msm_routing_put_audio_mixer),
6816 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
6817 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6818 msm_routing_put_audio_mixer),
6819 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
6820 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6821 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05306822 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
6823 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6824 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306825 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
6826 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6827 msm_routing_put_audio_mixer),
6828 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
6829 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6830 msm_routing_put_audio_mixer),
6831 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
6832 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6833 msm_routing_put_audio_mixer),
6834 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
6835 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6836 msm_routing_put_audio_mixer),
6837 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
6838 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6839 msm_routing_put_audio_mixer),
6840 SOC_SINGLE_EXT("SLIM_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
6841 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6842 msm_routing_put_audio_mixer),
6843 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
6844 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6845 msm_routing_put_audio_mixer),
6846 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_TX,
6847 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6848 msm_routing_put_audio_mixer),
6849 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
6850 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6851 msm_routing_put_audio_mixer),
6852 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
6853 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6854 msm_routing_put_audio_mixer),
6855 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
6856 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6857 msm_routing_put_audio_mixer),
6858 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
6859 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6860 msm_routing_put_audio_mixer),
6861 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6862 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6863 msm_routing_put_audio_mixer),
6864 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
6865 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6866 msm_routing_put_audio_mixer),
6867 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
6868 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6869 msm_routing_put_audio_mixer),
6870 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
6871 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6872 msm_routing_put_audio_mixer),
6873 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6874 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6875 msm_routing_put_audio_mixer),
6876 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
6877 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6878 msm_routing_put_audio_mixer),
6879 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
6880 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6881 msm_routing_put_audio_mixer),
6882 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
6883 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6884 msm_routing_put_audio_mixer),
6885 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6886 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6887 msm_routing_put_audio_mixer),
6888 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
6889 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6890 msm_routing_put_audio_mixer),
6891 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
6892 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6893 msm_routing_put_audio_mixer),
6894 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
6895 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6896 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05306897 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6898 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6899 msm_routing_put_audio_mixer),
6900 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
6901 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6902 msm_routing_put_audio_mixer),
6903 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
6904 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6905 msm_routing_put_audio_mixer),
6906 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
6907 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6908 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306909 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
6910 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6911 msm_routing_put_audio_mixer),
6912 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
6913 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6914 msm_routing_put_audio_mixer),
6915 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
6916 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6917 msm_routing_put_audio_mixer),
6918};
6919
6920static const struct snd_kcontrol_new mmul2_mixer_controls[] = {
6921 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
6922 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6923 msm_routing_put_audio_mixer),
6924 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
6925 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6926 msm_routing_put_audio_mixer),
6927 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
6928 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6929 msm_routing_put_audio_mixer),
6930 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
6931 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6932 msm_routing_put_audio_mixer),
6933 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
6934 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6935 msm_routing_put_audio_mixer),
6936 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
6937 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6938 msm_routing_put_audio_mixer),
6939 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
6940 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6941 msm_routing_put_audio_mixer),
6942 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
6943 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6944 msm_routing_put_audio_mixer),
6945 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
6946 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6947 msm_routing_put_audio_mixer),
6948 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
6949 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6950 msm_routing_put_audio_mixer),
6951 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
6952 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6953 msm_routing_put_audio_mixer),
6954 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_TX,
6955 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6956 msm_routing_put_audio_mixer),
6957 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
6958 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6959 msm_routing_put_audio_mixer),
6960 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
6961 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6962 msm_routing_put_audio_mixer),
6963 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
6964 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6965 msm_routing_put_audio_mixer),
6966 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
6967 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6968 msm_routing_put_audio_mixer),
6969 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6970 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6971 msm_routing_put_audio_mixer),
6972 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
6973 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6974 msm_routing_put_audio_mixer),
6975 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
6976 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6977 msm_routing_put_audio_mixer),
6978 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
6979 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6980 msm_routing_put_audio_mixer),
6981 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6982 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6983 msm_routing_put_audio_mixer),
6984 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
6985 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6986 msm_routing_put_audio_mixer),
6987 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
6988 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6989 msm_routing_put_audio_mixer),
6990 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
6991 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6992 msm_routing_put_audio_mixer),
6993 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6994 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6995 msm_routing_put_audio_mixer),
6996 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
6997 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6998 msm_routing_put_audio_mixer),
6999 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7000 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7001 msm_routing_put_audio_mixer),
7002 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7003 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7004 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307005 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7006 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7007 msm_routing_put_audio_mixer),
7008 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7009 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7010 msm_routing_put_audio_mixer),
7011 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7012 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7013 msm_routing_put_audio_mixer),
7014 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7015 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7016 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307017 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
7018 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7019 msm_routing_put_audio_mixer),
7020 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7021 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7022 msm_routing_put_audio_mixer),
7023};
7024
7025static const struct snd_kcontrol_new mmul3_mixer_controls[] = {
7026 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7027 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7028 msm_routing_put_audio_mixer),
7029 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7030 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7031 msm_routing_put_audio_mixer),
7032 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
7033 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7034 msm_routing_put_audio_mixer),
7035 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7036 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7037 msm_routing_put_audio_mixer),
7038 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7039 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7040 msm_routing_put_audio_mixer),
7041 SOC_SINGLE_EXT("AUX_PCM_TX", MSM_BACKEND_DAI_AUXPCM_TX,
7042 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7043 msm_routing_put_audio_mixer),
7044 SOC_SINGLE_EXT("SEC_AUX_PCM_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
7045 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7046 msm_routing_put_audio_mixer),
7047 SOC_SINGLE_EXT("TERT_AUX_PCM_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
7048 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7049 msm_routing_put_audio_mixer),
7050 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
7051 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7052 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307053 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
7054 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7055 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307056 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7057 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7058 msm_routing_put_audio_mixer),
7059 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7060 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7061 msm_routing_put_audio_mixer),
7062 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7063 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7064 msm_routing_put_audio_mixer),
7065 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7066 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7067 msm_routing_put_audio_mixer),
7068 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7069 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7070 msm_routing_put_audio_mixer),
7071 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7072 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7073 msm_routing_put_audio_mixer),
7074 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7075 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7076 msm_routing_put_audio_mixer),
7077 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7078 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7079 msm_routing_put_audio_mixer),
7080 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7081 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7082 msm_routing_put_audio_mixer),
7083 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7084 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7085 msm_routing_put_audio_mixer),
7086 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7087 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7088 msm_routing_put_audio_mixer),
7089 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7090 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7091 msm_routing_put_audio_mixer),
7092 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7093 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7094 msm_routing_put_audio_mixer),
7095 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7096 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7097 msm_routing_put_audio_mixer),
7098 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7099 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7100 msm_routing_put_audio_mixer),
7101 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7102 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7103 msm_routing_put_audio_mixer),
7104 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7105 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7106 msm_routing_put_audio_mixer),
7107 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7108 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7109 msm_routing_put_audio_mixer),
7110 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7111 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7112 msm_routing_put_audio_mixer),
7113 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7114 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7115 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307116 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7117 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7118 msm_routing_put_audio_mixer),
7119 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7120 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7121 msm_routing_put_audio_mixer),
7122 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7123 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7124 msm_routing_put_audio_mixer),
7125 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7126 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7127 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307128};
7129
7130static const struct snd_kcontrol_new mmul4_mixer_controls[] = {
7131 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7132 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7133 msm_routing_put_audio_mixer),
7134 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7135 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7136 msm_routing_put_audio_mixer),
7137 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7138 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7139 msm_routing_put_audio_mixer),
7140 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7141 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7142 msm_routing_put_audio_mixer),
7143 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7144 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7145 msm_routing_put_audio_mixer),
7146 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7147 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7148 msm_routing_put_audio_mixer),
7149 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7150 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7151 msm_routing_put_audio_mixer),
7152 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7153 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7154 msm_routing_put_audio_mixer),
7155 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7156 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7157 msm_routing_put_audio_mixer),
7158 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7159 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7160 msm_routing_put_audio_mixer),
7161 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7162 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7163 msm_routing_put_audio_mixer),
7164 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7165 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7166 msm_routing_put_audio_mixer),
7167 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7168 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7169 msm_routing_put_audio_mixer),
7170 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7171 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7172 msm_routing_put_audio_mixer),
7173 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7174 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7175 msm_routing_put_audio_mixer),
7176 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7177 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7178 msm_routing_put_audio_mixer),
7179 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7180 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7181 msm_routing_put_audio_mixer),
7182 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7183 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7184 msm_routing_put_audio_mixer),
7185 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7186 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7187 msm_routing_put_audio_mixer),
7188 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7189 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7190 msm_routing_put_audio_mixer),
7191 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7192 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7193 msm_routing_put_audio_mixer),
7194 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7195 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7196 msm_routing_put_audio_mixer),
7197 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7198 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7199 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307200 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7201 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7202 msm_routing_put_audio_mixer),
7203 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7204 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7205 msm_routing_put_audio_mixer),
7206 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7207 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7208 msm_routing_put_audio_mixer),
7209 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7210 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7211 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307212 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7213 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7214 msm_routing_put_audio_mixer),
7215 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7216 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7217 msm_routing_put_audio_mixer),
7218 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7219 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7220 msm_routing_put_audio_mixer),
7221 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7222 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7223 msm_routing_put_audio_mixer),
7224 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7225 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7226 msm_routing_put_audio_mixer),
7227 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7228 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7229 msm_routing_put_audio_mixer),
7230};
7231
7232static const struct snd_kcontrol_new mmul5_mixer_controls[] = {
7233 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7234 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7235 msm_routing_put_audio_mixer),
7236 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7237 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7238 msm_routing_put_audio_mixer),
7239 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
7240 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7241 msm_routing_put_audio_mixer),
7242 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7243 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7244 msm_routing_put_audio_mixer),
7245 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7246 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7247 msm_routing_put_audio_mixer),
7248 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
7249 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7250 msm_routing_put_audio_mixer),
7251 SOC_SINGLE_EXT("SEC_AUX_PCM_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
7252 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7253 msm_routing_put_audio_mixer),
7254 SOC_SINGLE_EXT("TERT_AUX_PCM_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
7255 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7256 msm_routing_put_audio_mixer),
7257 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
7258 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7259 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307260 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
7261 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7262 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307263 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7264 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7265 msm_routing_put_audio_mixer),
7266 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7267 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7268 msm_routing_put_audio_mixer),
7269 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7270 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7271 msm_routing_put_audio_mixer),
7272 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7273 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7274 msm_routing_put_audio_mixer),
7275 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7276 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7277 msm_routing_put_audio_mixer),
7278 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7279 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7280 msm_routing_put_audio_mixer),
7281 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7282 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7283 msm_routing_put_audio_mixer),
7284 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7285 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7286 msm_routing_put_audio_mixer),
7287 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7288 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7289 msm_routing_put_audio_mixer),
7290 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7291 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7292 msm_routing_put_audio_mixer),
7293 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7294 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7295 msm_routing_put_audio_mixer),
7296 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7297 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7298 msm_routing_put_audio_mixer),
7299 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7300 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7301 msm_routing_put_audio_mixer),
7302 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7303 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7304 msm_routing_put_audio_mixer),
7305 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7306 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7307 msm_routing_put_audio_mixer),
7308 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7309 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7310 msm_routing_put_audio_mixer),
7311 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7312 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7313 msm_routing_put_audio_mixer),
7314 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7315 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7316 msm_routing_put_audio_mixer),
7317 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7318 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7319 msm_routing_put_audio_mixer),
7320 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7321 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7322 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307323 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7324 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7325 msm_routing_put_audio_mixer),
7326 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7327 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7328 msm_routing_put_audio_mixer),
7329 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7330 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7331 msm_routing_put_audio_mixer),
7332 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7333 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7334 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307335 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7336 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7337 msm_routing_put_audio_mixer),
7338 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7339 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7340 msm_routing_put_audio_mixer),
7341 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
7342 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7343 msm_routing_put_audio_mixer),
7344 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
7345 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7346 msm_routing_put_audio_mixer),
7347 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7348 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7349 msm_routing_put_audio_mixer),
7350};
7351
7352static const struct snd_kcontrol_new mmul6_mixer_controls[] = {
7353 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7354 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7355 msm_routing_put_audio_mixer),
7356 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7357 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7358 msm_routing_put_audio_mixer),
7359 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7360 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7361 msm_routing_put_audio_mixer),
7362 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7363 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7364 msm_routing_put_audio_mixer),
7365 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7366 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7367 msm_routing_put_audio_mixer),
7368 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7369 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7370 msm_routing_put_audio_mixer),
7371 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7372 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7373 msm_routing_put_audio_mixer),
7374 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7375 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7376 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307377 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_TX,
7378 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7379 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307380 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
7381 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7382 msm_routing_put_audio_mixer),
7383 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
7384 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7385 msm_routing_put_audio_mixer),
7386 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
7387 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7388 msm_routing_put_audio_mixer),
7389 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
7390 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7391 msm_routing_put_audio_mixer),
7392 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7393 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7394 msm_routing_put_audio_mixer),
7395 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7396 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7397 msm_routing_put_audio_mixer),
7398 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7399 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7400 msm_routing_put_audio_mixer),
7401 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7402 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7403 msm_routing_put_audio_mixer),
7404 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7405 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7406 msm_routing_put_audio_mixer),
7407 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7408 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7409 msm_routing_put_audio_mixer),
7410 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7411 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7412 msm_routing_put_audio_mixer),
7413 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7414 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7415 msm_routing_put_audio_mixer),
7416 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7417 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7418 msm_routing_put_audio_mixer),
7419 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7420 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7421 msm_routing_put_audio_mixer),
7422 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7423 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7424 msm_routing_put_audio_mixer),
7425 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7426 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7427 msm_routing_put_audio_mixer),
7428 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7429 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7430 msm_routing_put_audio_mixer),
7431 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7432 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7433 msm_routing_put_audio_mixer),
7434 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7435 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7436 msm_routing_put_audio_mixer),
7437 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7438 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7439 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307440 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7441 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7442 msm_routing_put_audio_mixer),
7443 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7444 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7445 msm_routing_put_audio_mixer),
7446 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7447 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7448 msm_routing_put_audio_mixer),
7449 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7450 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7451 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307452 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7453 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7454 msm_routing_put_audio_mixer),
7455};
7456
7457static const struct snd_kcontrol_new mmul8_mixer_controls[] = {
7458 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7459 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7460 msm_routing_put_audio_mixer),
7461 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7462 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7463 msm_routing_put_audio_mixer),
7464 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7465 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7466 msm_routing_put_audio_mixer),
7467 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7468 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7469 msm_routing_put_audio_mixer),
7470 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7471 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7472 msm_routing_put_audio_mixer),
7473 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7474 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7475 msm_routing_put_audio_mixer),
7476 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7477 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7478 msm_routing_put_audio_mixer),
7479 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7480 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7481 msm_routing_put_audio_mixer),
7482 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7483 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7484 msm_routing_put_audio_mixer),
7485 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7486 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7487 msm_routing_put_audio_mixer),
7488 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7489 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7490 msm_routing_put_audio_mixer),
7491 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7492 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7493 msm_routing_put_audio_mixer),
7494 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
7495 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7496 msm_routing_put_audio_mixer),
7497 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7498 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7499 msm_routing_put_audio_mixer),
7500 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7501 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7502 msm_routing_put_audio_mixer),
7503 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7504 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7505 msm_routing_put_audio_mixer),
7506 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7507 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7508 msm_routing_put_audio_mixer),
7509 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7510 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7511 msm_routing_put_audio_mixer),
7512 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7513 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7514 msm_routing_put_audio_mixer),
7515 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7516 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7517 msm_routing_put_audio_mixer),
7518 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7519 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7520 msm_routing_put_audio_mixer),
7521 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7522 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7523 msm_routing_put_audio_mixer),
7524 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7525 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7526 msm_routing_put_audio_mixer),
7527 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7528 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7529 msm_routing_put_audio_mixer),
7530 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7531 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7532 msm_routing_put_audio_mixer),
7533 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7534 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7535 msm_routing_put_audio_mixer),
7536 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7537 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7538 msm_routing_put_audio_mixer),
7539 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7540 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7541 msm_routing_put_audio_mixer),
7542 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7543 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7544 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307545 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7546 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7547 msm_routing_put_audio_mixer),
7548 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7549 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7550 msm_routing_put_audio_mixer),
7551 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7552 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7553 msm_routing_put_audio_mixer),
7554 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7555 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7556 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307557 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
7558 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7559 msm_routing_put_audio_mixer),
7560 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7561 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7562 msm_routing_put_audio_mixer),
7563};
7564
Asish Bhattacharya34504582017-08-08 12:55:01 +05307565static const struct snd_kcontrol_new mmul16_mixer_controls[] = {
7566 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7567 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7568 msm_routing_put_audio_mixer),
7569 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7570 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7571 msm_routing_put_audio_mixer),
7572 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7573 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7574 msm_routing_put_audio_mixer),
7575 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7576 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7577 msm_routing_put_audio_mixer),
7578 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7579 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7580 msm_routing_put_audio_mixer),
7581 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7582 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7583 msm_routing_put_audio_mixer),
7584 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7585 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7586 msm_routing_put_audio_mixer),
7587 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7588 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7589 msm_routing_put_audio_mixer),
7590 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7591 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7592 msm_routing_put_audio_mixer),
7593 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7594 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7595 msm_routing_put_audio_mixer),
7596 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7597 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7598 msm_routing_put_audio_mixer),
7599 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7600 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7601 msm_routing_put_audio_mixer),
7602 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
7603 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7604 msm_routing_put_audio_mixer),
7605 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7606 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7607 msm_routing_put_audio_mixer),
7608 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7609 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7610 msm_routing_put_audio_mixer),
7611 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7612 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7613 msm_routing_put_audio_mixer),
7614 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7615 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7616 msm_routing_put_audio_mixer),
7617 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7618 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7619 msm_routing_put_audio_mixer),
7620 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7621 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7622 msm_routing_put_audio_mixer),
7623 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7624 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7625 msm_routing_put_audio_mixer),
7626 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7627 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7628 msm_routing_put_audio_mixer),
7629 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7630 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7631 msm_routing_put_audio_mixer),
7632 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7633 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7634 msm_routing_put_audio_mixer),
7635 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7636 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7637 msm_routing_put_audio_mixer),
7638 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7639 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7640 msm_routing_put_audio_mixer),
7641 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7642 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7643 msm_routing_put_audio_mixer),
7644 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7645 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7646 msm_routing_put_audio_mixer),
7647 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7648 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7649 msm_routing_put_audio_mixer),
7650 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7651 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7652 msm_routing_put_audio_mixer),
7653 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
7654 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7655 msm_routing_put_audio_mixer),
7656 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7657 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7658 msm_routing_put_audio_mixer),
7659 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
7660 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7661 msm_routing_put_audio_mixer),
7662 SOC_SINGLE_EXT("AUX_PCM_TX", MSM_BACKEND_DAI_AUXPCM_TX,
7663 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7664 msm_routing_put_audio_mixer),
7665 SOC_SINGLE_EXT("SEC_AUX_PCM_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
7666 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7667 msm_routing_put_audio_mixer),
7668 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
7669 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7670 msm_routing_put_audio_mixer),
7671};
7672
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307673static const struct snd_kcontrol_new mmul9_mixer_controls[] = {
7674 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7675 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7676 msm_routing_put_audio_mixer),
7677 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7678 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7679 msm_routing_put_audio_mixer),
7680 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7681 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7682 msm_routing_put_audio_mixer),
7683 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7684 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7685 msm_routing_put_audio_mixer),
7686 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7687 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7688 msm_routing_put_audio_mixer),
7689 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7690 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7691 msm_routing_put_audio_mixer),
7692 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7693 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7694 msm_routing_put_audio_mixer),
7695 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
7696 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7697 msm_routing_put_audio_mixer),
7698 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7699 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7700 msm_routing_put_audio_mixer),
7701 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7702 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7703 msm_routing_put_audio_mixer),
7704 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7705 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7706 msm_routing_put_audio_mixer),
7707 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7708 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7709 msm_routing_put_audio_mixer),
7710 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7711 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7712 msm_routing_put_audio_mixer),
7713 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7714 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7715 msm_routing_put_audio_mixer),
7716 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7717 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7718 msm_routing_put_audio_mixer),
7719 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7720 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7721 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307722 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7723 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7724 msm_routing_put_audio_mixer),
7725 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7726 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7727 msm_routing_put_audio_mixer),
7728 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7729 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7730 msm_routing_put_audio_mixer),
7731 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7732 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7733 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307734};
7735
Laxminath Kasam38070be2017-08-17 18:21:59 +05307736static const struct snd_kcontrol_new mmul10_mixer_controls[] = {
7737 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7738 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7739 msm_routing_put_audio_mixer),
7740 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7741 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7742 msm_routing_put_audio_mixer),
7743 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7744 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7745 msm_routing_put_audio_mixer),
7746 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7747 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7748 msm_routing_put_audio_mixer),
7749 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7750 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7751 msm_routing_put_audio_mixer),
7752 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7753 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7754 msm_routing_put_audio_mixer),
7755 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7756 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7757 msm_routing_put_audio_mixer),
7758 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
7759 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7760 msm_routing_put_audio_mixer),
Vikram Panduranga72863152017-09-06 15:47:35 -07007761 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
7762 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7763 msm_routing_put_audio_mixer),
Laxminath Kasam38070be2017-08-17 18:21:59 +05307764 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7765 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7766 msm_routing_put_audio_mixer),
7767 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7768 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7769 msm_routing_put_audio_mixer),
7770 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7771 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7772 msm_routing_put_audio_mixer),
7773 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7774 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7775 msm_routing_put_audio_mixer),
7776 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7777 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7778 msm_routing_put_audio_mixer),
7779 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7780 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7781 msm_routing_put_audio_mixer),
7782 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7783 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7784 msm_routing_put_audio_mixer),
7785 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7786 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7787 msm_routing_put_audio_mixer),
7788 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7789 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7790 msm_routing_put_audio_mixer),
Vikram Panduranga016c49f2017-09-11 15:15:56 -07007791 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
7792 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7793 msm_routing_put_audio_mixer),
7794 SOC_SINGLE_EXT("AUX_PCM_TX", MSM_BACKEND_DAI_AUXPCM_TX,
7795 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7796 msm_routing_put_audio_mixer),
7797 SOC_SINGLE_EXT("SEC_AUX_PCM_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
7798 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7799 msm_routing_put_audio_mixer),
7800 SOC_SINGLE_EXT("TERT_AUX_PCM_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
7801 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7802 msm_routing_put_audio_mixer),
7803 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
7804 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7805 msm_routing_put_audio_mixer),
7806 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7807 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7808 msm_routing_put_audio_mixer),
7809 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7810 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7811 msm_routing_put_audio_mixer),
7812 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7813 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7814 msm_routing_put_audio_mixer),
Laxminath Kasam38070be2017-08-17 18:21:59 +05307815};
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307816static const struct snd_kcontrol_new mmul17_mixer_controls[] = {
7817 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7818 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7819 msm_routing_put_audio_mixer),
7820 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7821 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7822 msm_routing_put_audio_mixer),
7823 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7824 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7825 msm_routing_put_audio_mixer),
7826 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7827 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7828 msm_routing_put_audio_mixer),
7829 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7830 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7831 msm_routing_put_audio_mixer),
7832 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7833 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7834 msm_routing_put_audio_mixer),
7835 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7836 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7837 msm_routing_put_audio_mixer),
7838};
7839
7840static const struct snd_kcontrol_new mmul18_mixer_controls[] = {
7841 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7842 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
7843 msm_routing_put_audio_mixer),
7844 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7845 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
7846 msm_routing_put_audio_mixer),
7847 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7848 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
7849 msm_routing_put_audio_mixer),
7850 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7851 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
7852 msm_routing_put_audio_mixer),
7853 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7854 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
7855 msm_routing_put_audio_mixer),
7856 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7857 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
7858 msm_routing_put_audio_mixer),
7859 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7860 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
7861 msm_routing_put_audio_mixer),
7862 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7863 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
7864 msm_routing_put_audio_mixer),
7865};
7866
7867static const struct snd_kcontrol_new mmul19_mixer_controls[] = {
7868 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7869 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
7870 msm_routing_put_audio_mixer),
7871 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7872 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
7873 msm_routing_put_audio_mixer),
7874 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7875 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
7876 msm_routing_put_audio_mixer),
7877 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7878 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
7879 msm_routing_put_audio_mixer),
7880 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7881 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
7882 msm_routing_put_audio_mixer),
7883 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7884 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
7885 msm_routing_put_audio_mixer),
7886 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7887 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
7888 msm_routing_put_audio_mixer),
7889};
7890
7891static const struct snd_kcontrol_new mmul20_mixer_controls[] = {
7892 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7893 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7894 msm_routing_put_audio_mixer),
7895 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7896 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7897 msm_routing_put_audio_mixer),
7898 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7899 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7900 msm_routing_put_audio_mixer),
7901 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7902 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7903 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307904 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_TX,
7905 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7906 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307907 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7908 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7909 msm_routing_put_audio_mixer),
7910 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7911 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7912 msm_routing_put_audio_mixer),
7913 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7914 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7915 msm_routing_put_audio_mixer),
7916 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7917 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7918 msm_routing_put_audio_mixer),
7919 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7920 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7921 msm_routing_put_audio_mixer),
7922 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7923 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7924 msm_routing_put_audio_mixer),
7925 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7926 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7927 msm_routing_put_audio_mixer),
7928 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7929 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7930 msm_routing_put_audio_mixer),
7931 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7932 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7933 msm_routing_put_audio_mixer),
7934 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7935 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7936 msm_routing_put_audio_mixer),
7937 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7938 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7939 msm_routing_put_audio_mixer),
7940 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7941 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7942 msm_routing_put_audio_mixer),
7943 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7944 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7945 msm_routing_put_audio_mixer),
7946 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7947 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7948 msm_routing_put_audio_mixer),
7949 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7950 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7951 msm_routing_put_audio_mixer),
7952 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7953 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7954 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307955 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7956 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7957 msm_routing_put_audio_mixer),
7958 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7959 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7960 msm_routing_put_audio_mixer),
7961 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7962 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7963 msm_routing_put_audio_mixer),
7964 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7965 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7966 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307967};
7968
7969static const struct snd_kcontrol_new pri_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307970 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_PRI_I2S_RX,
7971 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
7972 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307973 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_PRI_I2S_RX,
7974 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
7975 msm_routing_put_voice_mixer),
7976 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_PRI_I2S_RX,
7977 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
7978 msm_routing_put_voice_mixer),
7979 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_PRI_I2S_RX,
7980 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
7981 msm_routing_put_voice_mixer),
7982 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_PRI_I2S_RX,
7983 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
7984 msm_routing_put_voice_mixer),
7985};
7986
7987static const struct snd_kcontrol_new sec_i2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307988 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SEC_I2S_RX,
7989 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
7990 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307991 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SEC_I2S_RX,
7992 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
7993 msm_routing_put_voice_mixer),
7994 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SEC_I2S_RX,
7995 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
7996 msm_routing_put_voice_mixer),
7997};
7998
7999static const struct snd_kcontrol_new sec_mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308000 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
8001 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8002 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308003 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
8004 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8005 msm_routing_put_voice_mixer),
8006 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
8007 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8008 msm_routing_put_voice_mixer),
8009 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
8010 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8011 msm_routing_put_voice_mixer),
8012 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
8013 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8014 msm_routing_put_voice_mixer),
8015};
8016
8017static const struct snd_kcontrol_new slimbus_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308018 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8019 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8020 msm_routing_put_voice_mixer),
8021 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8022 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8023 msm_routing_put_voice_stub_mixer),
8024 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8025 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8026 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308027 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8028 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8029 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308030 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8031 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8032 msm_routing_put_voice_mixer),
8033 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8034 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8035 msm_routing_put_voice_mixer),
8036 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8037 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8038 msm_routing_put_voice_mixer),
8039 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8040 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8041 msm_routing_put_voice_mixer),
8042};
8043
8044static const struct snd_kcontrol_new slimbus_6_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308045 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8046 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8047 msm_routing_put_voice_mixer),
8048 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8049 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8050 msm_routing_put_voice_stub_mixer),
8051 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8052 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8053 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308054 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8055 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8056 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308057 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8058 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8059 msm_routing_put_voice_mixer),
8060 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8061 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8062 msm_routing_put_voice_mixer),
8063 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8064 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8065 msm_routing_put_voice_mixer),
8066 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8067 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8068 msm_routing_put_voice_mixer),
8069};
8070
8071static const struct snd_kcontrol_new usb_audio_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308072 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_USB_RX,
8073 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8074 msm_routing_put_voice_mixer),
8075 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_USB_RX,
8076 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8077 msm_routing_put_voice_stub_mixer),
8078 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_USB_RX,
8079 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8080 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308081 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_USB_RX,
8082 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8083 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308084 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_USB_RX,
8085 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8086 msm_routing_put_voice_mixer),
8087 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_USB_RX,
8088 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8089 msm_routing_put_voice_mixer),
8090 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_USB_RX,
8091 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8092 msm_routing_put_voice_mixer),
8093 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_USB_RX,
8094 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8095 msm_routing_put_voice_mixer),
8096};
8097
Aalique Grahamee4fd7d52017-11-28 13:24:13 -08008098static const struct snd_kcontrol_new display_port_rx_voice_mixer_controls[] = {
8099 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
8100 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8101 msm_routing_put_voice_mixer),
8102 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
8103 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8104 msm_routing_put_voice_stub_mixer),
8105 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
8106 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8107 msm_routing_put_voice_stub_mixer),
8108 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
8109 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8110 msm_routing_put_voice_stub_mixer),
8111 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
8112 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8113 msm_routing_put_voice_mixer),
8114 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
8115 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8116 msm_routing_put_voice_mixer),
8117 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
8118 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8119 msm_routing_put_voice_mixer),
8120 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
8121 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8122 msm_routing_put_voice_mixer),
8123};
8124
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308125static const struct snd_kcontrol_new bt_sco_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308126 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8127 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8128 msm_routing_put_voice_mixer),
8129 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8130 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8131 msm_routing_put_voice_stub_mixer),
8132 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8133 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8134 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308135 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8136 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8137 msm_routing_put_voice_mixer),
8138 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8139 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8140 msm_routing_put_voice_mixer),
8141 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8142 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8143 msm_routing_put_voice_mixer),
8144 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8145 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8146 msm_routing_put_voice_mixer),
8147};
8148
8149static const struct snd_kcontrol_new mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308150 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_MI2S_RX,
8151 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8152 msm_routing_put_voice_mixer),
8153 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_MI2S_RX,
8154 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8155 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308156 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_MI2S_RX,
8157 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8158 msm_routing_put_voice_mixer),
8159 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_MI2S_RX,
8160 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8161 msm_routing_put_voice_mixer),
8162 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_MI2S_RX,
8163 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8164 msm_routing_put_voice_mixer),
8165 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_MI2S_RX,
8166 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8167 msm_routing_put_voice_mixer),
8168};
8169
8170static const struct snd_kcontrol_new pri_mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308171 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_PRI_MI2S_RX,
8172 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8173 msm_routing_put_voice_mixer),
8174 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_PRI_MI2S_RX,
8175 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8176 msm_routing_put_voice_stub_mixer),
8177 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_PRI_MI2S_RX,
8178 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8179 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308180 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_PRI_MI2S_RX,
8181 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_mixer,
8182 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308183 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_PRI_MI2S_RX,
8184 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8185 msm_routing_put_voice_mixer),
8186 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_PRI_MI2S_RX,
8187 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8188 msm_routing_put_voice_mixer),
8189 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_PRI_MI2S_RX,
8190 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8191 msm_routing_put_voice_mixer),
8192 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_PRI_MI2S_RX,
8193 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8194 msm_routing_put_voice_mixer),
8195};
8196
8197static const struct snd_kcontrol_new int0_mi2s_rx_voice_mixer_controls[] = {
8198 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_INT0_MI2S_RX,
8199 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8200 msm_routing_put_voice_mixer),
8201 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_INT0_MI2S_RX,
8202 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8203 msm_routing_put_voice_mixer),
8204 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_INT0_MI2S_RX,
8205 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8206 msm_routing_put_voice_mixer),
8207 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_INT0_MI2S_RX,
8208 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8209 msm_routing_put_voice_mixer),
8210 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_INT0_MI2S_RX,
8211 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8212 msm_routing_put_voice_mixer),
8213};
8214
8215static const struct snd_kcontrol_new int4_mi2s_rx_voice_mixer_controls[] = {
8216 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_INT4_MI2S_RX,
8217 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8218 msm_routing_put_voice_mixer),
8219 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_INT4_MI2S_RX,
8220 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8221 msm_routing_put_voice_mixer),
8222 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_INT4_MI2S_RX,
8223 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8224 msm_routing_put_voice_mixer),
8225 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_INT4_MI2S_RX,
8226 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8227 msm_routing_put_voice_mixer),
8228 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_INT4_MI2S_RX,
8229 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8230 msm_routing_put_voice_mixer),
8231};
8232
8233static const struct snd_kcontrol_new tert_mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308234 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8235 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8236 msm_routing_put_voice_mixer),
8237 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8238 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8239 msm_routing_put_voice_stub_mixer),
8240 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8241 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8242 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308243 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8244 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_mixer,
8245 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308246 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8247 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8248 msm_routing_put_voice_mixer),
8249 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8250 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8251 msm_routing_put_voice_mixer),
8252 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8253 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8254 msm_routing_put_voice_mixer),
8255 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8256 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8257 msm_routing_put_voice_mixer),
8258};
8259
8260static const struct snd_kcontrol_new quat_mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308261 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8262 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8263 msm_routing_put_voice_mixer),
8264 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8265 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8266 msm_routing_put_voice_stub_mixer),
8267 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8268 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8269 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308270 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8271 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_mixer,
8272 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308273 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8274 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8275 msm_routing_put_voice_mixer),
8276 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8277 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8278 msm_routing_put_voice_mixer),
8279 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8280 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8281 msm_routing_put_voice_mixer),
8282 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8283 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8284 msm_routing_put_voice_mixer),
8285};
8286
8287static const struct snd_kcontrol_new quin_mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308288 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8289 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8290 msm_routing_put_voice_mixer),
8291 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8292 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8293 msm_routing_put_voice_stub_mixer),
8294 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8295 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8296 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308297 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8298 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_mixer,
8299 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308300 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8301 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8302 msm_routing_put_voice_mixer),
8303 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8304 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8305 msm_routing_put_voice_mixer),
8306 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8307 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8308 msm_routing_put_voice_mixer),
8309 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8310 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8311 msm_routing_put_voice_mixer),
8312};
8313
8314static const struct snd_kcontrol_new afe_pcm_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308315 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_AFE_PCM_RX,
8316 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8317 msm_routing_put_voice_mixer),
8318 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_AFE_PCM_RX,
8319 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8320 msm_routing_put_voice_stub_mixer),
8321 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_AFE_PCM_RX,
8322 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8323 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308324 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_AFE_PCM_RX,
8325 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8326 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308327 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_AFE_PCM_RX,
8328 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8329 msm_routing_put_voice_mixer),
8330 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_AFE_PCM_RX,
8331 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8332 msm_routing_put_voice_mixer),
8333 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_AFE_PCM_RX,
8334 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8335 msm_routing_put_voice_mixer),
8336 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_AFE_PCM_RX,
8337 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8338 msm_routing_put_voice_mixer),
8339};
8340
8341static const struct snd_kcontrol_new aux_pcm_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308342 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_AUXPCM_RX,
8343 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8344 msm_routing_put_voice_mixer),
8345 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_AUXPCM_RX,
8346 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8347 msm_routing_put_voice_stub_mixer),
8348 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_AUXPCM_RX,
8349 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8350 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308351 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_AUXPCM_RX,
8352 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8353 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308354 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_AUXPCM_RX,
8355 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8356 msm_routing_put_voice_mixer),
8357 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_AUXPCM_RX,
8358 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8359 msm_routing_put_voice_mixer),
8360 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_AUXPCM_RX,
8361 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8362 msm_routing_put_voice_mixer),
8363 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_AUXPCM_RX,
8364 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8365 msm_routing_put_voice_mixer),
8366};
8367
8368static const struct snd_kcontrol_new sec_aux_pcm_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308369 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8370 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8371 msm_routing_put_voice_mixer),
8372 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8373 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8374 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308375 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8376 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8377 msm_routing_put_voice_mixer),
8378 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8379 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8380 msm_routing_put_voice_mixer),
8381 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8382 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8383 msm_routing_put_voice_mixer),
8384 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8385 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8386 msm_routing_put_voice_mixer),
8387};
8388
8389static const struct snd_kcontrol_new tert_aux_pcm_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308390 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8391 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8392 msm_routing_put_voice_mixer),
8393 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8394 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8395 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308396 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8397 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8398 msm_routing_put_voice_mixer),
8399 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8400 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8401 msm_routing_put_voice_mixer),
8402 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8403 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8404 msm_routing_put_voice_mixer),
8405 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8406 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8407 msm_routing_put_voice_mixer),
8408};
8409
8410static const struct snd_kcontrol_new quat_aux_pcm_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308411 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8412 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8413 msm_routing_put_voice_mixer),
8414 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8415 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8416 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308417 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8418 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8419 msm_routing_put_voice_mixer),
8420 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8421 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8422 msm_routing_put_voice_mixer),
8423 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8424 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8425 msm_routing_put_voice_mixer),
8426 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8427 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8428 msm_routing_put_voice_mixer),
8429};
8430
Rohit Kumara5077932017-09-10 22:05:05 +05308431static const struct snd_kcontrol_new quin_aux_pcm_rx_voice_mixer_controls[] = {
Rohit Kumara5077932017-09-10 22:05:05 +05308432 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
8433 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8434 msm_routing_put_voice_mixer),
8435 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
8436 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8437 msm_routing_put_voice_stub_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308438 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
8439 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8440 msm_routing_put_voice_mixer),
8441 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
8442 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8443 msm_routing_put_voice_mixer),
8444 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
8445 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8446 msm_routing_put_voice_mixer),
8447 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
8448 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8449 msm_routing_put_voice_mixer),
8450};
8451
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308452static const struct snd_kcontrol_new hdmi_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308453 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_HDMI_RX,
8454 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8455 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308456 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_HDMI_RX,
8457 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8458 msm_routing_put_voice_stub_mixer),
8459 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_HDMI_RX,
8460 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8461 msm_routing_put_voice_stub_mixer),
8462 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_HDMI_RX,
8463 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8464 msm_routing_put_voice_stub_mixer),
8465 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_HDMI_RX,
8466 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8467 msm_routing_put_voice_mixer),
8468 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_HDMI_RX,
8469 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8470 msm_routing_put_voice_mixer),
8471 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_HDMI_RX,
8472 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8473 msm_routing_put_voice_mixer),
8474 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_HDMI_RX,
8475 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8476 msm_routing_put_voice_mixer),
8477};
8478
8479static const struct snd_kcontrol_new slimbus_7_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308480 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8481 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8482 msm_routing_put_voice_mixer),
8483 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8484 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8485 msm_routing_put_voice_stub_mixer),
8486 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8487 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8488 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308489 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8490 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8491 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308492 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8493 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8494 msm_routing_put_voice_mixer),
8495 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8496 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8497 msm_routing_put_voice_mixer),
8498 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8499 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8500 msm_routing_put_voice_mixer),
8501 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8502 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8503 msm_routing_put_voice_mixer),
8504};
8505
8506static const struct snd_kcontrol_new slimbus_8_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308507 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8508 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8509 msm_routing_put_voice_mixer),
8510 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8511 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8512 msm_routing_put_voice_stub_mixer),
8513 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8514 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8515 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308516 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8517 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8518 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308519 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8520 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8521 msm_routing_put_voice_mixer),
8522 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8523 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8524 msm_routing_put_voice_mixer),
8525 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8526 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8527 msm_routing_put_voice_mixer),
8528 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8529 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8530 msm_routing_put_voice_mixer),
8531};
8532
8533static const struct snd_kcontrol_new quat_tdm_rx_2_voice_mixer_controls[] = {
8534 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
8535 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8536 msm_routing_put_voice_mixer),
8537};
8538
8539static const struct snd_kcontrol_new stub_rx_mixer_controls[] = {
8540 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_EXTPROC_RX,
8541 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8542 msm_routing_put_voice_stub_mixer),
8543 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_EXTPROC_RX,
8544 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8545 msm_routing_put_voice_stub_mixer),
8546 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_EXTPROC_RX,
8547 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8548 msm_routing_put_voice_stub_mixer),
8549};
8550
8551static const struct snd_kcontrol_new slimbus_1_rx_mixer_controls[] = {
8552 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_SLIMBUS_1_RX,
8553 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8554 msm_routing_put_voice_stub_mixer),
8555 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_SLIMBUS_1_RX,
8556 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8557 msm_routing_put_voice_stub_mixer),
8558 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_SLIMBUS_1_RX,
8559 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8560 msm_routing_put_voice_stub_mixer),
8561};
8562
8563static const struct snd_kcontrol_new slimbus_3_rx_mixer_controls[] = {
8564 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_SLIMBUS_3_RX,
8565 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8566 msm_routing_put_voice_stub_mixer),
8567 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_SLIMBUS_3_RX,
8568 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8569 msm_routing_put_voice_stub_mixer),
8570 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_SLIMBUS_3_RX,
8571 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8572 msm_routing_put_voice_stub_mixer),
8573};
8574
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308575static const struct snd_kcontrol_new tx_voicemmode1_mixer_controls[] = {
8576 SOC_SINGLE_EXT("PRI_TX_MMode1", MSM_BACKEND_DAI_PRI_I2S_TX,
8577 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8578 msm_routing_put_voice_mixer),
8579 SOC_SINGLE_EXT("MI2S_TX_MMode1", MSM_BACKEND_DAI_MI2S_TX,
8580 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8581 msm_routing_put_voice_mixer),
8582 SOC_SINGLE_EXT("SLIM_0_TX_MMode1",
8583 MSM_BACKEND_DAI_SLIMBUS_0_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8584 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8585 SOC_SINGLE_EXT("INT_BT_SCO_TX_MMode1",
8586 MSM_BACKEND_DAI_INT_BT_SCO_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8587 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8588 SOC_SINGLE_EXT("AFE_PCM_TX_MMode1",
8589 MSM_BACKEND_DAI_AFE_PCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0,
8590 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8591 SOC_SINGLE_EXT("AUX_PCM_TX_MMode1",
8592 MSM_BACKEND_DAI_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0,
8593 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8594 SOC_SINGLE_EXT("SEC_AUX_PCM_TX_MMode1",
8595 MSM_BACKEND_DAI_SEC_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8596 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8597 SOC_SINGLE_EXT("TERT_AUX_PCM_TX_MMode1",
8598 MSM_BACKEND_DAI_TERT_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8599 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8600 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX_MMode1",
8601 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8602 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308603 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX_MMode1",
8604 MSM_BACKEND_DAI_QUIN_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8605 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308606 SOC_SINGLE_EXT("PRI_MI2S_TX_MMode1",
8607 MSM_BACKEND_DAI_PRI_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0,
8608 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8609 SOC_SINGLE_EXT("TERT_MI2S_TX_MMode1",
8610 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE1,
8611 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8612 SOC_SINGLE_EXT("INT3_MI2S_TX_MMode1",
8613 MSM_BACKEND_DAI_INT3_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE1,
8614 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8615 SOC_SINGLE_EXT("SLIM_7_TX_MMode1",
8616 MSM_BACKEND_DAI_SLIMBUS_7_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8617 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8618 SOC_SINGLE_EXT("SLIM_8_TX_MMode1",
8619 MSM_BACKEND_DAI_SLIMBUS_8_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8620 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8621 SOC_SINGLE_EXT("USB_AUDIO_TX_MMode1", MSM_BACKEND_DAI_USB_TX,
8622 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8623 msm_routing_put_voice_mixer),
8624 SOC_SINGLE_EXT("QUAT_TDM_TX_0_MMode1",
8625 MSM_BACKEND_DAI_QUAT_TDM_TX_0, MSM_FRONTEND_DAI_VOICEMMODE1,
8626 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8627};
8628
8629static const struct snd_kcontrol_new tx_voicemmode2_mixer_controls[] = {
8630 SOC_SINGLE_EXT("PRI_TX_MMode2", MSM_BACKEND_DAI_PRI_I2S_TX,
8631 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8632 msm_routing_put_voice_mixer),
8633 SOC_SINGLE_EXT("MI2S_TX_MMode2", MSM_BACKEND_DAI_MI2S_TX,
8634 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8635 msm_routing_put_voice_mixer),
8636 SOC_SINGLE_EXT("SLIM_0_TX_MMode2",
8637 MSM_BACKEND_DAI_SLIMBUS_0_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8638 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8639 SOC_SINGLE_EXT("INT_BT_SCO_TX_MMode2",
8640 MSM_BACKEND_DAI_INT_BT_SCO_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8641 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8642 SOC_SINGLE_EXT("AFE_PCM_TX_MMode2",
8643 MSM_BACKEND_DAI_AFE_PCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0,
8644 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8645 SOC_SINGLE_EXT("AUX_PCM_TX_MMode2",
8646 MSM_BACKEND_DAI_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0,
8647 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8648 SOC_SINGLE_EXT("SEC_AUX_PCM_TX_MMode2",
8649 MSM_BACKEND_DAI_SEC_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8650 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8651 SOC_SINGLE_EXT("TERT_AUX_PCM_TX_MMode2",
8652 MSM_BACKEND_DAI_TERT_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8653 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8654 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX_MMode2",
8655 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8656 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308657 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX_MMode2",
8658 MSM_BACKEND_DAI_QUIN_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8659 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308660 SOC_SINGLE_EXT("PRI_MI2S_TX_MMode2",
8661 MSM_BACKEND_DAI_PRI_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0,
8662 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8663 SOC_SINGLE_EXT("TERT_MI2S_TX_MMode2",
8664 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE2,
8665 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8666 SOC_SINGLE_EXT("INT3_MI2S_TX_MMode2",
8667 MSM_BACKEND_DAI_INT3_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE2,
8668 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8669 SOC_SINGLE_EXT("SLIM_7_TX_MMode2",
8670 MSM_BACKEND_DAI_SLIMBUS_7_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8671 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8672 SOC_SINGLE_EXT("SLIM_8_TX_MMode2",
8673 MSM_BACKEND_DAI_SLIMBUS_8_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8674 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8675 SOC_SINGLE_EXT("USB_AUDIO_TX_MMode2",
8676 MSM_BACKEND_DAI_USB_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8677 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8678};
8679
8680static const struct snd_kcontrol_new tx_voip_mixer_controls[] = {
8681 SOC_SINGLE_EXT("PRI_TX_Voip", MSM_BACKEND_DAI_PRI_I2S_TX,
8682 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8683 msm_routing_put_voice_mixer),
8684 SOC_SINGLE_EXT("MI2S_TX_Voip", MSM_BACKEND_DAI_MI2S_TX,
8685 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8686 msm_routing_put_voice_mixer),
8687 SOC_SINGLE_EXT("SLIM_0_TX_Voip", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8688 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8689 msm_routing_put_voice_mixer),
8690 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX_Voip", MSM_BACKEND_DAI_INT_BT_SCO_TX,
8691 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8692 msm_routing_put_voice_mixer),
8693 SOC_SINGLE_EXT("AFE_PCM_TX_Voip", MSM_BACKEND_DAI_AFE_PCM_TX,
8694 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8695 msm_routing_put_voice_mixer),
8696 SOC_SINGLE_EXT("AUX_PCM_TX_Voip", MSM_BACKEND_DAI_AUXPCM_TX,
8697 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8698 msm_routing_put_voice_mixer),
8699 SOC_SINGLE_EXT("SEC_AUX_PCM_TX_Voip", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
8700 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8701 msm_routing_put_voice_mixer),
8702 SOC_SINGLE_EXT("TERT_AUX_PCM_TX_Voip", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
8703 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8704 msm_routing_put_voice_mixer),
8705 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX_Voip", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
8706 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8707 msm_routing_put_voice_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308708 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX_Voip", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
8709 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8710 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308711 SOC_SINGLE_EXT("PRI_MI2S_TX_Voip", MSM_BACKEND_DAI_PRI_MI2S_TX,
8712 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8713 msm_routing_put_voice_mixer),
8714 SOC_SINGLE_EXT("TERT_MI2S_TX_Voip", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
8715 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8716 msm_routing_put_voice_mixer),
8717 SOC_SINGLE_EXT("INT3_MI2S_TX_Voip", MSM_BACKEND_DAI_INT3_MI2S_TX,
8718 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8719 msm_routing_put_voice_mixer),
8720 SOC_SINGLE_EXT("SLIM_7_TX_Voip", MSM_BACKEND_DAI_SLIMBUS_7_TX,
8721 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8722 msm_routing_put_voice_mixer),
8723 SOC_SINGLE_EXT("SLIM_8_TX_Voip", MSM_BACKEND_DAI_SLIMBUS_8_TX,
8724 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8725 msm_routing_put_voice_mixer),
8726 SOC_SINGLE_EXT("USB_AUDIO_TX_Voip", MSM_BACKEND_DAI_USB_TX,
8727 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8728 msm_routing_put_voice_mixer),
8729};
8730
8731static const struct snd_kcontrol_new tx_voice_stub_mixer_controls[] = {
8732 SOC_SINGLE_EXT("STUB_TX_HL", MSM_BACKEND_DAI_EXTPROC_TX,
8733 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8734 msm_routing_put_voice_stub_mixer),
8735 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
8736 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8737 msm_routing_put_voice_stub_mixer),
8738 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
8739 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8740 msm_routing_put_voice_stub_mixer),
8741 SOC_SINGLE_EXT("STUB_1_TX_HL", MSM_BACKEND_DAI_EXTPROC_EC_TX,
8742 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8743 msm_routing_put_voice_stub_mixer),
8744 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
8745 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8746 msm_routing_put_voice_stub_mixer),
8747 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
8748 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8749 msm_routing_put_voice_stub_mixer),
8750 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
8751 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8752 msm_routing_put_voice_stub_mixer),
8753 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
8754 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8755 msm_routing_put_voice_stub_mixer),
8756 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
8757 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8758 msm_routing_put_voice_stub_mixer),
8759 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
8760 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8761 msm_routing_put_voice_stub_mixer),
8762 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
8763 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8764 msm_routing_put_voice_stub_mixer),
8765 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
8766 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8767 msm_routing_put_voice_stub_mixer),
8768 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
8769 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8770 msm_routing_put_voice_stub_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308771 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
8772 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8773 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308774 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8775 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8776 msm_routing_put_voice_stub_mixer),
8777 SOC_SINGLE_EXT("SLIM_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
8778 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8779 msm_routing_put_voice_stub_mixer),
8780 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
8781 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8782 msm_routing_put_voice_stub_mixer),
8783 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
8784 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8785 msm_routing_put_voice_stub_mixer),
8786 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
8787 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8788 msm_routing_put_voice_stub_mixer),
8789};
8790
8791static const struct snd_kcontrol_new tx_voice2_stub_mixer_controls[] = {
8792 SOC_SINGLE_EXT("STUB_TX_HL", MSM_BACKEND_DAI_EXTPROC_TX,
8793 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8794 msm_routing_put_voice_stub_mixer),
8795 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
8796 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8797 msm_routing_put_voice_stub_mixer),
8798 SOC_SINGLE_EXT("STUB_1_TX_HL", MSM_BACKEND_DAI_EXTPROC_EC_TX,
8799 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8800 msm_routing_put_voice_stub_mixer),
8801 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
8802 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8803 msm_routing_put_voice_stub_mixer),
8804 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
8805 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8806 msm_routing_put_voice_stub_mixer),
8807 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
8808 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8809 msm_routing_put_voice_stub_mixer),
8810 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
8811 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8812 msm_routing_put_voice_stub_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308813 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
8814 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8815 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308816 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8817 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8818 msm_routing_put_voice_stub_mixer),
8819 SOC_SINGLE_EXT("SLIM_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
8820 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8821 msm_routing_put_voice_stub_mixer),
8822 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
8823 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8824 msm_routing_put_voice_stub_mixer),
8825 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
8826 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8827 msm_routing_put_voice_stub_mixer),
8828 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
8829 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8830 msm_routing_put_voice_stub_mixer),
8831 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
8832 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8833 msm_routing_put_voice_stub_mixer),
8834 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
8835 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8836 msm_routing_put_voice_stub_mixer),
8837};
8838
8839static const struct snd_kcontrol_new tx_volte_stub_mixer_controls[] = {
8840 SOC_SINGLE_EXT("STUB_TX_HL", MSM_BACKEND_DAI_EXTPROC_TX,
8841 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8842 msm_routing_put_voice_stub_mixer),
8843 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
8844 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8845 msm_routing_put_voice_stub_mixer),
8846 SOC_SINGLE_EXT("STUB_1_TX_HL", MSM_BACKEND_DAI_EXTPROC_EC_TX,
8847 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8848 msm_routing_put_voice_stub_mixer),
8849 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
8850 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8851 msm_routing_put_voice_stub_mixer),
8852 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
8853 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8854 msm_routing_put_voice_stub_mixer),
8855 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
8856 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8857 msm_routing_put_voice_stub_mixer),
8858 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
8859 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8860 msm_routing_put_voice_stub_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308861 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
8862 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8863 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308864 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8865 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8866 msm_routing_put_voice_stub_mixer),
8867 SOC_SINGLE_EXT("SLIM_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
8868 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8869 msm_routing_put_voice_stub_mixer),
8870 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
8871 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8872 msm_routing_put_voice_stub_mixer),
8873 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
8874 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8875 msm_routing_put_voice_stub_mixer),
8876 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
8877 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8878 msm_routing_put_voice_stub_mixer),
8879 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
8880 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8881 msm_routing_put_voice_stub_mixer),
8882 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
8883 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8884 msm_routing_put_voice_stub_mixer),
8885};
8886
8887static const struct snd_kcontrol_new tx_qchat_mixer_controls[] = {
8888 SOC_SINGLE_EXT("PRI_TX_QCHAT", MSM_BACKEND_DAI_PRI_I2S_TX,
8889 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8890 msm_routing_put_voice_mixer),
8891 SOC_SINGLE_EXT("SLIM_0_TX_QCHAT", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8892 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8893 msm_routing_put_voice_mixer),
8894 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX_QCHAT",
8895 MSM_BACKEND_DAI_INT_BT_SCO_TX, MSM_FRONTEND_DAI_QCHAT, 1, 0,
8896 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8897 SOC_SINGLE_EXT("AFE_PCM_TX_QCHAT", MSM_BACKEND_DAI_AFE_PCM_TX,
8898 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8899 msm_routing_put_voice_mixer),
8900 SOC_SINGLE_EXT("AUX_PCM_TX_QCHAT", MSM_BACKEND_DAI_AUXPCM_TX,
8901 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8902 msm_routing_put_voice_mixer),
8903 SOC_SINGLE_EXT("SEC_AUX_PCM_TX_QCHAT", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
8904 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8905 msm_routing_put_voice_mixer),
8906 SOC_SINGLE_EXT("TERT_AUX_PCM_TX_QCHAT", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
8907 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8908 msm_routing_put_voice_mixer),
8909 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX_QCHAT", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
8910 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8911 msm_routing_put_voice_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308912 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX_QCHAT", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
8913 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8914 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308915 SOC_SINGLE_EXT("MI2S_TX_QCHAT", MSM_BACKEND_DAI_MI2S_TX,
8916 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8917 msm_routing_put_voice_mixer),
8918 SOC_SINGLE_EXT("PRI_MI2S_TX_QCHAT", MSM_BACKEND_DAI_PRI_MI2S_TX,
8919 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8920 msm_routing_put_voice_mixer),
8921 SOC_SINGLE_EXT("TERT_MI2S_TX_QCHAT", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
8922 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8923 msm_routing_put_voice_mixer),
8924 SOC_SINGLE_EXT("INT3_MI2S_TX_QCHAT", MSM_BACKEND_DAI_INT3_MI2S_TX,
8925 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8926 msm_routing_put_voice_mixer),
8927 SOC_SINGLE_EXT("SLIM_7_TX_QCHAT", MSM_BACKEND_DAI_SLIMBUS_7_TX,
8928 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8929 msm_routing_put_voice_mixer),
8930 SOC_SINGLE_EXT("SLIM_8_TX_QCHAT", MSM_BACKEND_DAI_SLIMBUS_8_TX,
8931 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8932 msm_routing_put_voice_mixer),
8933 SOC_SINGLE_EXT("USB_AUDIO_TX_QCHAT", MSM_BACKEND_DAI_USB_TX,
8934 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8935 msm_routing_put_voice_mixer),
8936};
8937
8938static const struct snd_kcontrol_new int0_mi2s_rx_port_mixer_controls[] = {
8939 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
8940 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8941 msm_routing_put_port_mixer),
8942 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
8943 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8944 msm_routing_put_port_mixer),
8945 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
8946 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8947 msm_routing_put_port_mixer),
8948 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
8949 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8950 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308951 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
8952 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8953 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308954 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
8955 MSM_BACKEND_DAI_INT3_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8956 msm_routing_put_port_mixer),
8957 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
8958 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
8959 msm_routing_put_port_mixer),
8960 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
8961 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
8962 msm_routing_put_port_mixer),
8963 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
8964 MSM_BACKEND_DAI_SLIMBUS_7_TX, 1, 0, msm_routing_get_port_mixer,
8965 msm_routing_put_port_mixer),
8966 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
8967 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
8968 msm_routing_put_port_mixer),
8969};
8970
8971static const struct snd_kcontrol_new int4_mi2s_rx_port_mixer_controls[] = {
8972 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
8973 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8974 msm_routing_put_port_mixer),
8975 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
8976 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8977 msm_routing_put_port_mixer),
8978 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
8979 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8980 msm_routing_put_port_mixer),
8981 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
8982 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8983 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308984 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
8985 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8986 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308987 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
8988 MSM_BACKEND_DAI_INT3_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8989 msm_routing_put_port_mixer),
8990 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
8991 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
8992 msm_routing_put_port_mixer),
8993 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
8994 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
8995 msm_routing_put_port_mixer),
8996 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
8997 MSM_BACKEND_DAI_SLIMBUS_7_TX, 1, 0, msm_routing_get_port_mixer,
8998 msm_routing_put_port_mixer),
8999 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9000 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9001 msm_routing_put_port_mixer),
9002};
9003
9004static const struct snd_kcontrol_new sbus_0_rx_port_mixer_controls[] = {
9005 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9006 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9007 msm_routing_put_port_mixer),
9008 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9009 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9010 msm_routing_put_port_mixer),
9011 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9012 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9013 msm_routing_put_port_mixer),
9014 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9015 MSM_BACKEND_DAI_SLIMBUS_7_TX, 1, 0, msm_routing_get_port_mixer,
9016 msm_routing_put_port_mixer),
9017 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9018 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9019 msm_routing_put_port_mixer),
9020 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9021 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9022 msm_routing_put_port_mixer),
9023 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9024 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9025 msm_routing_put_port_mixer),
9026 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9027 MSM_BACKEND_DAI_TERT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9028 msm_routing_put_port_mixer),
9029 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9030 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9031 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309032 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9033 MSM_BACKEND_DAI_QUIN_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9034 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309035 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9036 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9037 msm_routing_put_port_mixer),
9038 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9039 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9040 msm_routing_put_port_mixer),
9041 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9042 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9043 msm_routing_put_port_mixer),
9044 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9045 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9046 msm_routing_put_port_mixer),
9047 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9048 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9049 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309050 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9051 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9052 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309053 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9054 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
9055 msm_routing_put_port_mixer),
9056 SOC_SINGLE_EXT("PRI_MI2S_RX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9057 MSM_BACKEND_DAI_PRI_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
9058 msm_routing_put_port_mixer),
9059 SOC_SINGLE_EXT("SEC_MI2S_RX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9060 MSM_BACKEND_DAI_SECONDARY_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
9061 msm_routing_put_port_mixer),
9062 SOC_SINGLE_EXT("TERT_MI2S_RX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9063 MSM_BACKEND_DAI_TERTIARY_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
9064 msm_routing_put_port_mixer),
9065 SOC_SINGLE_EXT("QUAT_MI2S_RX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9066 MSM_BACKEND_DAI_QUATERNARY_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
9067 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309068 SOC_SINGLE_EXT("QUIN_MI2S_RX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9069 MSM_BACKEND_DAI_QUINARY_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
9070 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309071};
9072
9073static const struct snd_kcontrol_new aux_pcm_rx_port_mixer_controls[] = {
9074 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_RX,
9075 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9076 msm_routing_put_port_mixer),
9077 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_AUXPCM_RX,
9078 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9079 msm_routing_put_port_mixer),
9080 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_AUXPCM_RX,
9081 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9082 msm_routing_put_port_mixer),
9083 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_RX,
9084 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9085 msm_routing_put_port_mixer),
9086 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_AUXPCM_RX,
9087 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0, msm_routing_get_port_mixer,
9088 msm_routing_put_port_mixer),
9089};
9090
9091static const struct snd_kcontrol_new sec_auxpcm_rx_port_mixer_controls[] = {
9092 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
9093 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9094 msm_routing_put_port_mixer),
9095 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
9096 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9097 msm_routing_put_port_mixer),
9098 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
9099 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9100 msm_routing_put_port_mixer),
9101};
9102
9103static const struct snd_kcontrol_new tert_auxpcm_rx_port_mixer_controls[] = {
9104 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
9105 MSM_BACKEND_DAI_TERT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9106 msm_routing_put_port_mixer),
9107 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
9108 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9109 msm_routing_put_port_mixer),
9110 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
9111 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9112 msm_routing_put_port_mixer),
9113};
9114
9115static const struct snd_kcontrol_new quat_auxpcm_rx_port_mixer_controls[] = {
9116 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
9117 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9118 msm_routing_put_port_mixer),
9119 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
9120 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9121 msm_routing_put_port_mixer),
9122 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
9123 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9124 msm_routing_put_port_mixer),
9125};
9126
Rohit Kumara5077932017-09-10 22:05:05 +05309127static const struct snd_kcontrol_new quin_auxpcm_rx_port_mixer_controls[] = {
9128 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
9129 MSM_BACKEND_DAI_QUIN_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9130 msm_routing_put_port_mixer),
9131 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
9132 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9133 msm_routing_put_port_mixer),
9134 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
9135 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9136 msm_routing_put_port_mixer),
9137};
9138
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309139static const struct snd_kcontrol_new sbus_1_rx_port_mixer_controls[] = {
9140 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9141 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
9142 msm_routing_put_port_mixer),
9143 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9144 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0, msm_routing_get_port_mixer,
9145 msm_routing_put_port_mixer),
9146 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9147 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9148 msm_routing_put_port_mixer),
9149 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9150 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9151 msm_routing_put_port_mixer),
9152 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9153 MSM_BACKEND_DAI_TERT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9154 msm_routing_put_port_mixer),
9155 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9156 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9157 msm_routing_put_port_mixer),
9158};
9159
9160static const struct snd_kcontrol_new sbus_3_rx_port_mixer_controls[] = {
9161 SOC_SINGLE_EXT("INTERNAL_BT_SCO_RX", MSM_BACKEND_DAI_SLIMBUS_3_RX,
9162 MSM_BACKEND_DAI_INT_BT_SCO_RX, 1, 0, msm_routing_get_port_mixer,
9163 msm_routing_put_port_mixer),
9164 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_3_RX,
9165 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9166 msm_routing_put_port_mixer),
9167 SOC_SINGLE_EXT("AFE_PCM_RX", MSM_BACKEND_DAI_SLIMBUS_3_RX,
9168 MSM_BACKEND_DAI_AFE_PCM_RX, 1, 0, msm_routing_get_port_mixer,
9169 msm_routing_put_port_mixer),
9170 SOC_SINGLE_EXT("AUX_PCM_RX", MSM_BACKEND_DAI_SLIMBUS_3_RX,
9171 MSM_BACKEND_DAI_AUXPCM_RX, 1, 0, msm_routing_get_port_mixer,
9172 msm_routing_put_port_mixer),
9173 SOC_SINGLE_EXT("SLIM_0_RX", MSM_BACKEND_DAI_SLIMBUS_3_RX,
9174 MSM_BACKEND_DAI_SLIMBUS_0_RX, 1, 0, msm_routing_get_port_mixer,
9175 msm_routing_put_port_mixer),
9176};
9177
9178static const struct snd_kcontrol_new sbus_6_rx_port_mixer_controls[] = {
9179 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9180 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9181 msm_routing_put_port_mixer),
9182 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9183 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9184 msm_routing_put_port_mixer),
9185 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9186 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9187 msm_routing_put_port_mixer),
9188 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9189 MSM_BACKEND_DAI_SLIMBUS_7_TX, 1, 0, msm_routing_get_port_mixer,
9190 msm_routing_put_port_mixer),
9191 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9192 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9193 msm_routing_put_port_mixer),
9194 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9195 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9196 msm_routing_put_port_mixer),
9197 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9198 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9199 msm_routing_put_port_mixer),
9200 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9201 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9202 msm_routing_put_port_mixer),
9203 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9204 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9205 msm_routing_put_port_mixer),
9206 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9207 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9208 msm_routing_put_port_mixer),
9209 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9210 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9211 msm_routing_put_port_mixer),
9212 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9213 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
9214 msm_routing_put_port_mixer),
9215};
9216
9217static const struct snd_kcontrol_new bt_sco_rx_port_mixer_controls[] = {
9218 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_INT_BT_SCO_RX,
9219 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9220 msm_routing_put_port_mixer),
9221 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_INT_BT_SCO_RX,
9222 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9223 msm_routing_put_port_mixer),
9224};
9225
9226static const struct snd_kcontrol_new afe_pcm_rx_port_mixer_controls[] = {
9227 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_AFE_PCM_RX,
9228 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9229 msm_routing_put_port_mixer),
9230 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_AFE_PCM_RX,
9231 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9232 msm_routing_put_port_mixer),
9233};
9234
9235
9236static const struct snd_kcontrol_new hdmi_rx_port_mixer_controls[] = {
9237 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_HDMI_RX,
9238 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9239 msm_routing_put_port_mixer),
9240};
9241
9242static const struct snd_kcontrol_new display_port_rx_port_mixer_controls[] = {
9243 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
9244 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9245 msm_routing_put_port_mixer),
9246};
9247
9248static const struct snd_kcontrol_new sec_i2s_rx_port_mixer_controls[] = {
9249 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_SEC_I2S_RX,
9250 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9251 msm_routing_put_port_mixer),
9252};
9253
9254static const struct snd_kcontrol_new mi2s_rx_port_mixer_controls[] = {
9255 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_MI2S_RX,
9256 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9257 msm_routing_put_port_mixer),
9258 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_RX,
9259 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9260 msm_routing_put_port_mixer),
9261};
9262
9263static const struct snd_kcontrol_new primary_mi2s_rx_port_mixer_controls[] = {
9264 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9265 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9266 msm_routing_put_port_mixer),
9267 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9268 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9269 msm_routing_put_port_mixer),
9270 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9271 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9272 msm_routing_put_port_mixer),
9273 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9274 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9275 msm_routing_put_port_mixer),
9276 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9277 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
9278 msm_routing_put_port_mixer),
9279 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9280 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9281 msm_routing_put_port_mixer),
9282 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9283 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9284 msm_routing_put_port_mixer),
9285 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9286 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9287 msm_routing_put_port_mixer),
9288 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9289 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9290 msm_routing_put_port_mixer),
9291};
9292
9293static const struct snd_kcontrol_new usb_rx_port_mixer_controls[] = {
9294 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_RX,
9295 MSM_BACKEND_DAI_USB_TX, 1, 0, msm_routing_get_port_mixer,
9296 msm_routing_put_port_mixer),
9297};
9298
9299static const struct snd_kcontrol_new quat_mi2s_rx_port_mixer_controls[] = {
9300 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9301 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9302 msm_routing_put_port_mixer),
9303 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9304 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9305 msm_routing_put_port_mixer),
9306 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9307 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9308 msm_routing_put_port_mixer),
9309 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9310 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9311 msm_routing_put_port_mixer),
9312 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9313 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9314 msm_routing_put_port_mixer),
9315 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9316 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9317 msm_routing_put_port_mixer),
9318 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9319 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9320 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309321 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9322 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9323 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309324 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9325 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9326 msm_routing_put_port_mixer),
9327};
9328
Rohit Kumara5077932017-09-10 22:05:05 +05309329static const struct snd_kcontrol_new quin_mi2s_rx_port_mixer_controls[] = {
9330 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9331 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9332 msm_routing_put_port_mixer),
9333 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9334 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9335 msm_routing_put_port_mixer),
9336 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9337 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9338 msm_routing_put_port_mixer),
9339 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9340 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9341 msm_routing_put_port_mixer),
9342 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9343 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9344 msm_routing_put_port_mixer),
9345 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9346 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9347 msm_routing_put_port_mixer),
9348 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9349 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9350 msm_routing_put_port_mixer),
9351};
9352
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309353static const struct snd_kcontrol_new pri_tdm_rx_0_port_mixer_controls[] = {
9354 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9355 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9356 msm_routing_get_port_mixer,
9357 msm_routing_put_port_mixer),
9358 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9359 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9360 msm_routing_get_port_mixer,
9361 msm_routing_put_port_mixer),
9362 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9363 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9364 msm_routing_get_port_mixer,
9365 msm_routing_put_port_mixer),
9366 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9367 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9368 msm_routing_get_port_mixer,
9369 msm_routing_put_port_mixer),
9370 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9371 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9372 msm_routing_get_port_mixer,
9373 msm_routing_put_port_mixer),
9374 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9375 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9376 msm_routing_get_port_mixer,
9377 msm_routing_put_port_mixer),
9378 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9379 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9380 msm_routing_get_port_mixer,
9381 msm_routing_put_port_mixer),
9382 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9383 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9384 msm_routing_get_port_mixer,
9385 msm_routing_put_port_mixer),
9386 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9387 MSM_BACKEND_DAI_PRI_TDM_TX_0, 1, 0,
9388 msm_routing_get_port_mixer,
9389 msm_routing_put_port_mixer),
9390 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9391 MSM_BACKEND_DAI_PRI_TDM_TX_1, 1, 0,
9392 msm_routing_get_port_mixer,
9393 msm_routing_put_port_mixer),
9394 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9395 MSM_BACKEND_DAI_PRI_TDM_TX_2, 1, 0,
9396 msm_routing_get_port_mixer,
9397 msm_routing_put_port_mixer),
9398 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9399 MSM_BACKEND_DAI_PRI_TDM_TX_3, 1, 0,
9400 msm_routing_get_port_mixer,
9401 msm_routing_put_port_mixer),
9402 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9403 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9404 msm_routing_get_port_mixer,
9405 msm_routing_put_port_mixer),
9406 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9407 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9408 msm_routing_get_port_mixer,
9409 msm_routing_put_port_mixer),
9410 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9411 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9412 msm_routing_get_port_mixer,
9413 msm_routing_put_port_mixer),
9414 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9415 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9416 msm_routing_get_port_mixer,
9417 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309418 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9419 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9420 msm_routing_get_port_mixer,
9421 msm_routing_put_port_mixer),
9422 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9423 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9424 msm_routing_get_port_mixer,
9425 msm_routing_put_port_mixer),
9426 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9427 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9428 msm_routing_get_port_mixer,
9429 msm_routing_put_port_mixer),
9430 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9431 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9432 msm_routing_get_port_mixer,
9433 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309434};
9435
9436static const struct snd_kcontrol_new pri_tdm_rx_1_port_mixer_controls[] = {
9437 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9438 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9439 msm_routing_get_port_mixer,
9440 msm_routing_put_port_mixer),
9441 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9442 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9443 msm_routing_get_port_mixer,
9444 msm_routing_put_port_mixer),
9445 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9446 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9447 msm_routing_get_port_mixer,
9448 msm_routing_put_port_mixer),
9449 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9450 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9451 msm_routing_get_port_mixer,
9452 msm_routing_put_port_mixer),
9453 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9454 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9455 msm_routing_get_port_mixer,
9456 msm_routing_put_port_mixer),
9457 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9458 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9459 msm_routing_get_port_mixer,
9460 msm_routing_put_port_mixer),
9461 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9462 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9463 msm_routing_get_port_mixer,
9464 msm_routing_put_port_mixer),
9465 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9466 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9467 msm_routing_get_port_mixer,
9468 msm_routing_put_port_mixer),
9469 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9470 MSM_BACKEND_DAI_PRI_TDM_TX_0, 1, 0,
9471 msm_routing_get_port_mixer,
9472 msm_routing_put_port_mixer),
9473 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9474 MSM_BACKEND_DAI_PRI_TDM_TX_1, 1, 0,
9475 msm_routing_get_port_mixer,
9476 msm_routing_put_port_mixer),
9477 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9478 MSM_BACKEND_DAI_PRI_TDM_TX_2, 1, 0,
9479 msm_routing_get_port_mixer,
9480 msm_routing_put_port_mixer),
9481 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9482 MSM_BACKEND_DAI_PRI_TDM_TX_3, 1, 0,
9483 msm_routing_get_port_mixer,
9484 msm_routing_put_port_mixer),
9485 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9486 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9487 msm_routing_get_port_mixer,
9488 msm_routing_put_port_mixer),
9489 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9490 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9491 msm_routing_get_port_mixer,
9492 msm_routing_put_port_mixer),
9493 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9494 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9495 msm_routing_get_port_mixer,
9496 msm_routing_put_port_mixer),
9497 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9498 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9499 msm_routing_get_port_mixer,
9500 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309501 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9502 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9503 msm_routing_get_port_mixer,
9504 msm_routing_put_port_mixer),
9505 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9506 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9507 msm_routing_get_port_mixer,
9508 msm_routing_put_port_mixer),
9509 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9510 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9511 msm_routing_get_port_mixer,
9512 msm_routing_put_port_mixer),
9513 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9514 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9515 msm_routing_get_port_mixer,
9516 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309517};
9518
9519static const struct snd_kcontrol_new pri_tdm_rx_2_port_mixer_controls[] = {
9520 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9521 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9522 msm_routing_get_port_mixer,
9523 msm_routing_put_port_mixer),
9524 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9525 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9526 msm_routing_get_port_mixer,
9527 msm_routing_put_port_mixer),
9528 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9529 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9530 msm_routing_get_port_mixer,
9531 msm_routing_put_port_mixer),
9532 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9533 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9534 msm_routing_get_port_mixer,
9535 msm_routing_put_port_mixer),
9536 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9537 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9538 msm_routing_get_port_mixer,
9539 msm_routing_put_port_mixer),
9540 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9541 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9542 msm_routing_get_port_mixer,
9543 msm_routing_put_port_mixer),
9544 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9545 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9546 msm_routing_get_port_mixer,
9547 msm_routing_put_port_mixer),
9548 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9549 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9550 msm_routing_get_port_mixer,
9551 msm_routing_put_port_mixer),
9552 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9553 MSM_BACKEND_DAI_PRI_TDM_TX_0, 1, 0,
9554 msm_routing_get_port_mixer,
9555 msm_routing_put_port_mixer),
9556 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9557 MSM_BACKEND_DAI_PRI_TDM_TX_1, 1, 0,
9558 msm_routing_get_port_mixer,
9559 msm_routing_put_port_mixer),
9560 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9561 MSM_BACKEND_DAI_PRI_TDM_TX_2, 1, 0,
9562 msm_routing_get_port_mixer,
9563 msm_routing_put_port_mixer),
9564 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9565 MSM_BACKEND_DAI_PRI_TDM_TX_3, 1, 0,
9566 msm_routing_get_port_mixer,
9567 msm_routing_put_port_mixer),
9568 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9569 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9570 msm_routing_get_port_mixer,
9571 msm_routing_put_port_mixer),
9572 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9573 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9574 msm_routing_get_port_mixer,
9575 msm_routing_put_port_mixer),
9576 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9577 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9578 msm_routing_get_port_mixer,
9579 msm_routing_put_port_mixer),
9580 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9581 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9582 msm_routing_get_port_mixer,
9583 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309584 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9585 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9586 msm_routing_get_port_mixer,
9587 msm_routing_put_port_mixer),
9588 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9589 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9590 msm_routing_get_port_mixer,
9591 msm_routing_put_port_mixer),
9592 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9593 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9594 msm_routing_get_port_mixer,
9595 msm_routing_put_port_mixer),
9596 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9597 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9598 msm_routing_get_port_mixer,
9599 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309600};
9601
9602static const struct snd_kcontrol_new pri_tdm_rx_3_port_mixer_controls[] = {
9603 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9604 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9605 msm_routing_get_port_mixer,
9606 msm_routing_put_port_mixer),
9607 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9608 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9609 msm_routing_get_port_mixer,
9610 msm_routing_put_port_mixer),
9611 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9612 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9613 msm_routing_get_port_mixer,
9614 msm_routing_put_port_mixer),
9615 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9616 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9617 msm_routing_get_port_mixer,
9618 msm_routing_put_port_mixer),
9619 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9620 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9621 msm_routing_get_port_mixer,
9622 msm_routing_put_port_mixer),
9623 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9624 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9625 msm_routing_get_port_mixer,
9626 msm_routing_put_port_mixer),
9627 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9628 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9629 msm_routing_get_port_mixer,
9630 msm_routing_put_port_mixer),
9631 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9632 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9633 msm_routing_get_port_mixer,
9634 msm_routing_put_port_mixer),
9635 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9636 MSM_BACKEND_DAI_PRI_TDM_TX_0, 1, 0,
9637 msm_routing_get_port_mixer,
9638 msm_routing_put_port_mixer),
9639 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9640 MSM_BACKEND_DAI_PRI_TDM_TX_1, 1, 0,
9641 msm_routing_get_port_mixer,
9642 msm_routing_put_port_mixer),
9643 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9644 MSM_BACKEND_DAI_PRI_TDM_TX_2, 1, 0,
9645 msm_routing_get_port_mixer,
9646 msm_routing_put_port_mixer),
9647 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9648 MSM_BACKEND_DAI_PRI_TDM_TX_3, 1, 0,
9649 msm_routing_get_port_mixer,
9650 msm_routing_put_port_mixer),
9651 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9652 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9653 msm_routing_get_port_mixer,
9654 msm_routing_put_port_mixer),
9655 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9656 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9657 msm_routing_get_port_mixer,
9658 msm_routing_put_port_mixer),
9659 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9660 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9661 msm_routing_get_port_mixer,
9662 msm_routing_put_port_mixer),
9663 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9664 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9665 msm_routing_get_port_mixer,
9666 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309667 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9668 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9669 msm_routing_get_port_mixer,
9670 msm_routing_put_port_mixer),
9671 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9672 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9673 msm_routing_get_port_mixer,
9674 msm_routing_put_port_mixer),
9675 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9676 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9677 msm_routing_get_port_mixer,
9678 msm_routing_put_port_mixer),
9679 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9680 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9681 msm_routing_get_port_mixer,
9682 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309683};
9684
9685static const struct snd_kcontrol_new sec_tdm_rx_0_port_mixer_controls[] = {
9686 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9687 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9688 msm_routing_get_port_mixer,
9689 msm_routing_put_port_mixer),
9690 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9691 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9692 msm_routing_get_port_mixer,
9693 msm_routing_put_port_mixer),
9694 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9695 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9696 msm_routing_get_port_mixer,
9697 msm_routing_put_port_mixer),
9698 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9699 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9700 msm_routing_get_port_mixer,
9701 msm_routing_put_port_mixer),
9702 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9703 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9704 msm_routing_get_port_mixer,
9705 msm_routing_put_port_mixer),
9706 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9707 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9708 msm_routing_get_port_mixer,
9709 msm_routing_put_port_mixer),
9710 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9711 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9712 msm_routing_get_port_mixer,
9713 msm_routing_put_port_mixer),
9714 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9715 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9716 msm_routing_get_port_mixer,
9717 msm_routing_put_port_mixer),
9718 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9719 MSM_BACKEND_DAI_SEC_TDM_TX_0, 1, 0,
9720 msm_routing_get_port_mixer,
9721 msm_routing_put_port_mixer),
9722 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9723 MSM_BACKEND_DAI_SEC_TDM_TX_1, 1, 0,
9724 msm_routing_get_port_mixer,
9725 msm_routing_put_port_mixer),
9726 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9727 MSM_BACKEND_DAI_SEC_TDM_TX_2, 1, 0,
9728 msm_routing_get_port_mixer,
9729 msm_routing_put_port_mixer),
9730 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9731 MSM_BACKEND_DAI_SEC_TDM_TX_3, 1, 0,
9732 msm_routing_get_port_mixer,
9733 msm_routing_put_port_mixer),
9734 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9735 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9736 msm_routing_get_port_mixer,
9737 msm_routing_put_port_mixer),
9738 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9739 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9740 msm_routing_get_port_mixer,
9741 msm_routing_put_port_mixer),
9742 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9743 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9744 msm_routing_get_port_mixer,
9745 msm_routing_put_port_mixer),
9746 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9747 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9748 msm_routing_get_port_mixer,
9749 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309750 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9751 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9752 msm_routing_get_port_mixer,
9753 msm_routing_put_port_mixer),
9754 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9755 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9756 msm_routing_get_port_mixer,
9757 msm_routing_put_port_mixer),
9758 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9759 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9760 msm_routing_get_port_mixer,
9761 msm_routing_put_port_mixer),
9762 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9763 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9764 msm_routing_get_port_mixer,
9765 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309766};
9767
9768static const struct snd_kcontrol_new sec_tdm_rx_1_port_mixer_controls[] = {
9769 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9770 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9771 msm_routing_get_port_mixer,
9772 msm_routing_put_port_mixer),
9773 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9774 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9775 msm_routing_get_port_mixer,
9776 msm_routing_put_port_mixer),
9777 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9778 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9779 msm_routing_get_port_mixer,
9780 msm_routing_put_port_mixer),
9781 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9782 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9783 msm_routing_get_port_mixer,
9784 msm_routing_put_port_mixer),
9785 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9786 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9787 msm_routing_get_port_mixer,
9788 msm_routing_put_port_mixer),
9789 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9790 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9791 msm_routing_get_port_mixer,
9792 msm_routing_put_port_mixer),
9793 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9794 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9795 msm_routing_get_port_mixer,
9796 msm_routing_put_port_mixer),
9797 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9798 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9799 msm_routing_get_port_mixer,
9800 msm_routing_put_port_mixer),
9801 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9802 MSM_BACKEND_DAI_SEC_TDM_TX_0, 1, 0,
9803 msm_routing_get_port_mixer,
9804 msm_routing_put_port_mixer),
9805 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9806 MSM_BACKEND_DAI_SEC_TDM_TX_1, 1, 0,
9807 msm_routing_get_port_mixer,
9808 msm_routing_put_port_mixer),
9809 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9810 MSM_BACKEND_DAI_SEC_TDM_TX_2, 1, 0,
9811 msm_routing_get_port_mixer,
9812 msm_routing_put_port_mixer),
9813 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9814 MSM_BACKEND_DAI_SEC_TDM_TX_3, 1, 0,
9815 msm_routing_get_port_mixer,
9816 msm_routing_put_port_mixer),
9817 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9818 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9819 msm_routing_get_port_mixer,
9820 msm_routing_put_port_mixer),
9821 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9822 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9823 msm_routing_get_port_mixer,
9824 msm_routing_put_port_mixer),
9825 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9826 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9827 msm_routing_get_port_mixer,
9828 msm_routing_put_port_mixer),
9829 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9830 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9831 msm_routing_get_port_mixer,
9832 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309833 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9834 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9835 msm_routing_get_port_mixer,
9836 msm_routing_put_port_mixer),
9837 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9838 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9839 msm_routing_get_port_mixer,
9840 msm_routing_put_port_mixer),
9841 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9842 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9843 msm_routing_get_port_mixer,
9844 msm_routing_put_port_mixer),
9845 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9846 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9847 msm_routing_get_port_mixer,
9848 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309849};
9850
9851static const struct snd_kcontrol_new sec_tdm_rx_2_port_mixer_controls[] = {
9852 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9853 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9854 msm_routing_get_port_mixer,
9855 msm_routing_put_port_mixer),
9856 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9857 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9858 msm_routing_get_port_mixer,
9859 msm_routing_put_port_mixer),
9860 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9861 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9862 msm_routing_get_port_mixer,
9863 msm_routing_put_port_mixer),
9864 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9865 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9866 msm_routing_get_port_mixer,
9867 msm_routing_put_port_mixer),
9868 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9869 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9870 msm_routing_get_port_mixer,
9871 msm_routing_put_port_mixer),
9872 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9873 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9874 msm_routing_get_port_mixer,
9875 msm_routing_put_port_mixer),
9876 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9877 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9878 msm_routing_get_port_mixer,
9879 msm_routing_put_port_mixer),
9880 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9881 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9882 msm_routing_get_port_mixer,
9883 msm_routing_put_port_mixer),
9884 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9885 MSM_BACKEND_DAI_SEC_TDM_TX_0, 1, 0,
9886 msm_routing_get_port_mixer,
9887 msm_routing_put_port_mixer),
9888 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9889 MSM_BACKEND_DAI_SEC_TDM_TX_1, 1, 0,
9890 msm_routing_get_port_mixer,
9891 msm_routing_put_port_mixer),
9892 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9893 MSM_BACKEND_DAI_SEC_TDM_TX_2, 1, 0,
9894 msm_routing_get_port_mixer,
9895 msm_routing_put_port_mixer),
9896 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9897 MSM_BACKEND_DAI_SEC_TDM_TX_3, 1, 0,
9898 msm_routing_get_port_mixer,
9899 msm_routing_put_port_mixer),
9900 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9901 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9902 msm_routing_get_port_mixer,
9903 msm_routing_put_port_mixer),
9904 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9905 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9906 msm_routing_get_port_mixer,
9907 msm_routing_put_port_mixer),
9908 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9909 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9910 msm_routing_get_port_mixer,
9911 msm_routing_put_port_mixer),
9912 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9913 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9914 msm_routing_get_port_mixer,
9915 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309916 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9917 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9918 msm_routing_get_port_mixer,
9919 msm_routing_put_port_mixer),
9920 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9921 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9922 msm_routing_get_port_mixer,
9923 msm_routing_put_port_mixer),
9924 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9925 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9926 msm_routing_get_port_mixer,
9927 msm_routing_put_port_mixer),
9928 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9929 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9930 msm_routing_get_port_mixer,
9931 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309932};
9933
9934static const struct snd_kcontrol_new sec_tdm_rx_3_port_mixer_controls[] = {
9935 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9936 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9937 msm_routing_get_port_mixer,
9938 msm_routing_put_port_mixer),
9939 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9940 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9941 msm_routing_get_port_mixer,
9942 msm_routing_put_port_mixer),
9943 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9944 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9945 msm_routing_get_port_mixer,
9946 msm_routing_put_port_mixer),
9947 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9948 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9949 msm_routing_get_port_mixer,
9950 msm_routing_put_port_mixer),
9951 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9952 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9953 msm_routing_get_port_mixer,
9954 msm_routing_put_port_mixer),
9955 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9956 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9957 msm_routing_get_port_mixer,
9958 msm_routing_put_port_mixer),
9959 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9960 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9961 msm_routing_get_port_mixer,
9962 msm_routing_put_port_mixer),
9963 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9964 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9965 msm_routing_get_port_mixer,
9966 msm_routing_put_port_mixer),
9967 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9968 MSM_BACKEND_DAI_SEC_TDM_TX_0, 1, 0,
9969 msm_routing_get_port_mixer,
9970 msm_routing_put_port_mixer),
9971 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9972 MSM_BACKEND_DAI_SEC_TDM_TX_1, 1, 0,
9973 msm_routing_get_port_mixer,
9974 msm_routing_put_port_mixer),
9975 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9976 MSM_BACKEND_DAI_SEC_TDM_TX_2, 1, 0,
9977 msm_routing_get_port_mixer,
9978 msm_routing_put_port_mixer),
9979 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9980 MSM_BACKEND_DAI_SEC_TDM_TX_3, 1, 0,
9981 msm_routing_get_port_mixer,
9982 msm_routing_put_port_mixer),
9983 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9984 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9985 msm_routing_get_port_mixer,
9986 msm_routing_put_port_mixer),
9987 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9988 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9989 msm_routing_get_port_mixer,
9990 msm_routing_put_port_mixer),
9991 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9992 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9993 msm_routing_get_port_mixer,
9994 msm_routing_put_port_mixer),
9995 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9996 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9997 msm_routing_get_port_mixer,
9998 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309999 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10000 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10001 msm_routing_get_port_mixer,
10002 msm_routing_put_port_mixer),
10003 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10004 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10005 msm_routing_get_port_mixer,
10006 msm_routing_put_port_mixer),
10007 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10008 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10009 msm_routing_get_port_mixer,
10010 msm_routing_put_port_mixer),
10011 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10012 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10013 msm_routing_get_port_mixer,
10014 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010015};
10016
10017static const struct snd_kcontrol_new tert_tdm_rx_0_port_mixer_controls[] = {
10018 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10019 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10020 msm_routing_get_port_mixer,
10021 msm_routing_put_port_mixer),
10022 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10023 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10024 msm_routing_get_port_mixer,
10025 msm_routing_put_port_mixer),
10026 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10027 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
10028 msm_routing_get_port_mixer,
10029 msm_routing_put_port_mixer),
10030 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10031 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10032 msm_routing_get_port_mixer,
10033 msm_routing_put_port_mixer),
10034 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10035 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10036 msm_routing_get_port_mixer,
10037 msm_routing_put_port_mixer),
10038 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10039 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10040 msm_routing_get_port_mixer,
10041 msm_routing_put_port_mixer),
10042 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10043 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10044 msm_routing_get_port_mixer,
10045 msm_routing_put_port_mixer),
10046 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10047 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10048 msm_routing_get_port_mixer,
10049 msm_routing_put_port_mixer),
10050 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10051 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10052 msm_routing_get_port_mixer,
10053 msm_routing_put_port_mixer),
10054 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10055 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10056 msm_routing_get_port_mixer,
10057 msm_routing_put_port_mixer),
10058 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10059 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10060 msm_routing_get_port_mixer,
10061 msm_routing_put_port_mixer),
10062 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10063 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10064 msm_routing_get_port_mixer,
10065 msm_routing_put_port_mixer),
10066 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10067 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10068 msm_routing_get_port_mixer,
10069 msm_routing_put_port_mixer),
10070 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10071 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10072 msm_routing_get_port_mixer,
10073 msm_routing_put_port_mixer),
10074 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10075 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10076 msm_routing_get_port_mixer,
10077 msm_routing_put_port_mixer),
10078 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10079 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10080 msm_routing_get_port_mixer,
10081 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010082 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10083 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10084 msm_routing_get_port_mixer,
10085 msm_routing_put_port_mixer),
10086 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10087 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10088 msm_routing_get_port_mixer,
10089 msm_routing_put_port_mixer),
10090 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10091 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10092 msm_routing_get_port_mixer,
10093 msm_routing_put_port_mixer),
10094 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10095 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10096 msm_routing_get_port_mixer,
10097 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010098};
10099
10100static const struct snd_kcontrol_new tert_tdm_rx_1_port_mixer_controls[] = {
10101 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10102 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10103 msm_routing_get_port_mixer,
10104 msm_routing_put_port_mixer),
10105 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10106 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10107 msm_routing_get_port_mixer,
10108 msm_routing_put_port_mixer),
10109 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10110 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
10111 msm_routing_get_port_mixer,
10112 msm_routing_put_port_mixer),
10113 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10114 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10115 msm_routing_get_port_mixer,
10116 msm_routing_put_port_mixer),
10117 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10118 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10119 msm_routing_get_port_mixer,
10120 msm_routing_put_port_mixer),
10121 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10122 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10123 msm_routing_get_port_mixer,
10124 msm_routing_put_port_mixer),
10125 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10126 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10127 msm_routing_get_port_mixer,
10128 msm_routing_put_port_mixer),
10129 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10130 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10131 msm_routing_get_port_mixer,
10132 msm_routing_put_port_mixer),
10133 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10134 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10135 msm_routing_get_port_mixer,
10136 msm_routing_put_port_mixer),
10137 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10138 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10139 msm_routing_get_port_mixer,
10140 msm_routing_put_port_mixer),
10141 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10142 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10143 msm_routing_get_port_mixer,
10144 msm_routing_put_port_mixer),
10145 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10146 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10147 msm_routing_get_port_mixer,
10148 msm_routing_put_port_mixer),
10149 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10150 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10151 msm_routing_get_port_mixer,
10152 msm_routing_put_port_mixer),
10153 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10154 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10155 msm_routing_get_port_mixer,
10156 msm_routing_put_port_mixer),
10157 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10158 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10159 msm_routing_get_port_mixer,
10160 msm_routing_put_port_mixer),
10161 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10162 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10163 msm_routing_get_port_mixer,
10164 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010165 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10166 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10167 msm_routing_get_port_mixer,
10168 msm_routing_put_port_mixer),
10169 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10170 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10171 msm_routing_get_port_mixer,
10172 msm_routing_put_port_mixer),
10173 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10174 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10175 msm_routing_get_port_mixer,
10176 msm_routing_put_port_mixer),
10177 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10178 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10179 msm_routing_get_port_mixer,
10180 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010181};
10182
10183static const struct snd_kcontrol_new tert_tdm_rx_2_port_mixer_controls[] = {
10184 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10185 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10186 msm_routing_get_port_mixer,
10187 msm_routing_put_port_mixer),
10188 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10189 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10190 msm_routing_get_port_mixer,
10191 msm_routing_put_port_mixer),
10192 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10193 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
10194 msm_routing_get_port_mixer,
10195 msm_routing_put_port_mixer),
10196 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10197 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10198 msm_routing_get_port_mixer,
10199 msm_routing_put_port_mixer),
10200 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10201 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10202 msm_routing_get_port_mixer,
10203 msm_routing_put_port_mixer),
10204 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10205 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10206 msm_routing_get_port_mixer,
10207 msm_routing_put_port_mixer),
10208 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10209 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10210 msm_routing_get_port_mixer,
10211 msm_routing_put_port_mixer),
10212 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10213 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10214 msm_routing_get_port_mixer,
10215 msm_routing_put_port_mixer),
10216 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10217 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10218 msm_routing_get_port_mixer,
10219 msm_routing_put_port_mixer),
10220 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10221 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10222 msm_routing_get_port_mixer,
10223 msm_routing_put_port_mixer),
10224 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10225 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10226 msm_routing_get_port_mixer,
10227 msm_routing_put_port_mixer),
10228 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10229 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10230 msm_routing_get_port_mixer,
10231 msm_routing_put_port_mixer),
10232 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10233 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10234 msm_routing_get_port_mixer,
10235 msm_routing_put_port_mixer),
10236 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10237 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10238 msm_routing_get_port_mixer,
10239 msm_routing_put_port_mixer),
10240 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10241 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10242 msm_routing_get_port_mixer,
10243 msm_routing_put_port_mixer),
10244 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10245 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10246 msm_routing_get_port_mixer,
10247 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010248 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10249 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10250 msm_routing_get_port_mixer,
10251 msm_routing_put_port_mixer),
10252 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10253 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10254 msm_routing_get_port_mixer,
10255 msm_routing_put_port_mixer),
10256 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10257 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10258 msm_routing_get_port_mixer,
10259 msm_routing_put_port_mixer),
10260 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10261 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10262 msm_routing_get_port_mixer,
10263 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010264};
10265
10266static const struct snd_kcontrol_new tert_tdm_rx_3_port_mixer_controls[] = {
10267 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10268 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10269 msm_routing_get_port_mixer,
10270 msm_routing_put_port_mixer),
10271 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10272 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10273 msm_routing_get_port_mixer,
10274 msm_routing_put_port_mixer),
10275 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10276 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
10277 msm_routing_get_port_mixer,
10278 msm_routing_put_port_mixer),
10279 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10280 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10281 msm_routing_get_port_mixer,
10282 msm_routing_put_port_mixer),
10283 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10284 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10285 msm_routing_get_port_mixer,
10286 msm_routing_put_port_mixer),
10287 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10288 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10289 msm_routing_get_port_mixer,
10290 msm_routing_put_port_mixer),
10291 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10292 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10293 msm_routing_get_port_mixer,
10294 msm_routing_put_port_mixer),
10295 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10296 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10297 msm_routing_get_port_mixer,
10298 msm_routing_put_port_mixer),
10299 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10300 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10301 msm_routing_get_port_mixer,
10302 msm_routing_put_port_mixer),
10303 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10304 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10305 msm_routing_get_port_mixer,
10306 msm_routing_put_port_mixer),
10307 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10308 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10309 msm_routing_get_port_mixer,
10310 msm_routing_put_port_mixer),
10311 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10312 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10313 msm_routing_get_port_mixer,
10314 msm_routing_put_port_mixer),
10315 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10316 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10317 msm_routing_get_port_mixer,
10318 msm_routing_put_port_mixer),
10319 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10320 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10321 msm_routing_get_port_mixer,
10322 msm_routing_put_port_mixer),
10323 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10324 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10325 msm_routing_get_port_mixer,
10326 msm_routing_put_port_mixer),
10327 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10328 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10329 msm_routing_get_port_mixer,
10330 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010331 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10332 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10333 msm_routing_get_port_mixer,
10334 msm_routing_put_port_mixer),
10335 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10336 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10337 msm_routing_get_port_mixer,
10338 msm_routing_put_port_mixer),
10339 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10340 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10341 msm_routing_get_port_mixer,
10342 msm_routing_put_port_mixer),
10343 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10344 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10345 msm_routing_get_port_mixer,
10346 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010347};
10348
10349static const struct snd_kcontrol_new quat_tdm_rx_0_port_mixer_controls[] = {
10350 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10351 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10352 msm_routing_get_port_mixer,
10353 msm_routing_put_port_mixer),
10354 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10355 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10356 msm_routing_get_port_mixer,
10357 msm_routing_put_port_mixer),
10358 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10359 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10360 msm_routing_get_port_mixer,
10361 msm_routing_put_port_mixer),
10362 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10363 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10364 msm_routing_get_port_mixer,
10365 msm_routing_put_port_mixer),
10366 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10367 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10368 msm_routing_get_port_mixer,
10369 msm_routing_put_port_mixer),
10370 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10371 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10372 msm_routing_get_port_mixer,
10373 msm_routing_put_port_mixer),
10374 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10375 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10376 msm_routing_get_port_mixer,
10377 msm_routing_put_port_mixer),
10378 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10379 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10380 msm_routing_get_port_mixer,
10381 msm_routing_put_port_mixer),
10382 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10383 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10384 msm_routing_get_port_mixer,
10385 msm_routing_put_port_mixer),
10386 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10387 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10388 msm_routing_get_port_mixer,
10389 msm_routing_put_port_mixer),
10390 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10391 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10392 msm_routing_get_port_mixer,
10393 msm_routing_put_port_mixer),
10394 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10395 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10396 msm_routing_get_port_mixer,
10397 msm_routing_put_port_mixer),
10398 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10399 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10400 msm_routing_get_port_mixer,
10401 msm_routing_put_port_mixer),
10402 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10403 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10404 msm_routing_get_port_mixer,
10405 msm_routing_put_port_mixer),
10406 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10407 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10408 msm_routing_get_port_mixer,
10409 msm_routing_put_port_mixer),
10410 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10411 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10412 msm_routing_get_port_mixer,
10413 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010414 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10415 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10416 msm_routing_get_port_mixer,
10417 msm_routing_put_port_mixer),
10418 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10419 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10420 msm_routing_get_port_mixer,
10421 msm_routing_put_port_mixer),
10422 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10423 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10424 msm_routing_get_port_mixer,
10425 msm_routing_put_port_mixer),
10426 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10427 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10428 msm_routing_get_port_mixer,
10429 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010430};
10431
10432static const struct snd_kcontrol_new quat_tdm_rx_1_port_mixer_controls[] = {
10433 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10434 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10435 msm_routing_get_port_mixer,
10436 msm_routing_put_port_mixer),
10437 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10438 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10439 msm_routing_get_port_mixer,
10440 msm_routing_put_port_mixer),
10441 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10442 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10443 msm_routing_get_port_mixer,
10444 msm_routing_put_port_mixer),
10445 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10446 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10447 msm_routing_get_port_mixer,
10448 msm_routing_put_port_mixer),
10449 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10450 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10451 msm_routing_get_port_mixer,
10452 msm_routing_put_port_mixer),
10453 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10454 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10455 msm_routing_get_port_mixer,
10456 msm_routing_put_port_mixer),
10457 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10458 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10459 msm_routing_get_port_mixer,
10460 msm_routing_put_port_mixer),
10461 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10462 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10463 msm_routing_get_port_mixer,
10464 msm_routing_put_port_mixer),
10465 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10466 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10467 msm_routing_get_port_mixer,
10468 msm_routing_put_port_mixer),
10469 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10470 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10471 msm_routing_get_port_mixer,
10472 msm_routing_put_port_mixer),
10473 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10474 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10475 msm_routing_get_port_mixer,
10476 msm_routing_put_port_mixer),
10477 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10478 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10479 msm_routing_get_port_mixer,
10480 msm_routing_put_port_mixer),
10481 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10482 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10483 msm_routing_get_port_mixer,
10484 msm_routing_put_port_mixer),
10485 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10486 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10487 msm_routing_get_port_mixer,
10488 msm_routing_put_port_mixer),
10489 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10490 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10491 msm_routing_get_port_mixer,
10492 msm_routing_put_port_mixer),
10493 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10494 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10495 msm_routing_get_port_mixer,
10496 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010497 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10498 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10499 msm_routing_get_port_mixer,
10500 msm_routing_put_port_mixer),
10501 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10502 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10503 msm_routing_get_port_mixer,
10504 msm_routing_put_port_mixer),
10505 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10506 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10507 msm_routing_get_port_mixer,
10508 msm_routing_put_port_mixer),
10509 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10510 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10511 msm_routing_get_port_mixer,
10512 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010513};
10514
10515static const struct snd_kcontrol_new quat_tdm_rx_2_port_mixer_controls[] = {
10516 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10517 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10518 msm_routing_get_port_mixer,
10519 msm_routing_put_port_mixer),
10520 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10521 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10522 msm_routing_get_port_mixer,
10523 msm_routing_put_port_mixer),
10524 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10525 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10526 msm_routing_get_port_mixer,
10527 msm_routing_put_port_mixer),
10528 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10529 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10530 msm_routing_get_port_mixer,
10531 msm_routing_put_port_mixer),
10532 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10533 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10534 msm_routing_get_port_mixer,
10535 msm_routing_put_port_mixer),
10536 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10537 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10538 msm_routing_get_port_mixer,
10539 msm_routing_put_port_mixer),
10540 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10541 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10542 msm_routing_get_port_mixer,
10543 msm_routing_put_port_mixer),
10544 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10545 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10546 msm_routing_get_port_mixer,
10547 msm_routing_put_port_mixer),
10548 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10549 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10550 msm_routing_get_port_mixer,
10551 msm_routing_put_port_mixer),
10552 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10553 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10554 msm_routing_get_port_mixer,
10555 msm_routing_put_port_mixer),
10556 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10557 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10558 msm_routing_get_port_mixer,
10559 msm_routing_put_port_mixer),
10560 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10561 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10562 msm_routing_get_port_mixer,
10563 msm_routing_put_port_mixer),
10564 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10565 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10566 msm_routing_get_port_mixer,
10567 msm_routing_put_port_mixer),
10568 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10569 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10570 msm_routing_get_port_mixer,
10571 msm_routing_put_port_mixer),
10572 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10573 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10574 msm_routing_get_port_mixer,
10575 msm_routing_put_port_mixer),
10576 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10577 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10578 msm_routing_get_port_mixer,
10579 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010580 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10581 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10582 msm_routing_get_port_mixer,
10583 msm_routing_put_port_mixer),
10584 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10585 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10586 msm_routing_get_port_mixer,
10587 msm_routing_put_port_mixer),
10588 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10589 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10590 msm_routing_get_port_mixer,
10591 msm_routing_put_port_mixer),
10592 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10593 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10594 msm_routing_get_port_mixer,
10595 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010596};
10597
10598static const struct snd_kcontrol_new quat_tdm_rx_3_port_mixer_controls[] = {
10599 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10600 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10601 msm_routing_get_port_mixer,
10602 msm_routing_put_port_mixer),
10603 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10604 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10605 msm_routing_get_port_mixer,
10606 msm_routing_put_port_mixer),
10607 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10608 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10609 msm_routing_get_port_mixer,
10610 msm_routing_put_port_mixer),
10611 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10612 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10613 msm_routing_get_port_mixer,
10614 msm_routing_put_port_mixer),
10615 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10616 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10617 msm_routing_get_port_mixer,
10618 msm_routing_put_port_mixer),
10619 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10620 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10621 msm_routing_get_port_mixer,
10622 msm_routing_put_port_mixer),
10623 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10624 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10625 msm_routing_get_port_mixer,
10626 msm_routing_put_port_mixer),
10627 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10628 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10629 msm_routing_get_port_mixer,
10630 msm_routing_put_port_mixer),
10631 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10632 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10633 msm_routing_get_port_mixer,
10634 msm_routing_put_port_mixer),
10635 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10636 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10637 msm_routing_get_port_mixer,
10638 msm_routing_put_port_mixer),
10639 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10640 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10641 msm_routing_get_port_mixer,
10642 msm_routing_put_port_mixer),
10643 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10644 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10645 msm_routing_get_port_mixer,
10646 msm_routing_put_port_mixer),
10647 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10648 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10649 msm_routing_get_port_mixer,
10650 msm_routing_put_port_mixer),
10651 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10652 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10653 msm_routing_get_port_mixer,
10654 msm_routing_put_port_mixer),
10655 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10656 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10657 msm_routing_get_port_mixer,
10658 msm_routing_put_port_mixer),
10659 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10660 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10661 msm_routing_get_port_mixer,
10662 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010663 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10664 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10665 msm_routing_get_port_mixer,
10666 msm_routing_put_port_mixer),
10667 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10668 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10669 msm_routing_get_port_mixer,
10670 msm_routing_put_port_mixer),
10671 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10672 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10673 msm_routing_get_port_mixer,
10674 msm_routing_put_port_mixer),
10675 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10676 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10677 msm_routing_get_port_mixer,
10678 msm_routing_put_port_mixer),
10679};
10680
10681static const struct snd_kcontrol_new quin_tdm_rx_0_port_mixer_controls[] = {
10682 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10683 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10684 msm_routing_get_port_mixer,
10685 msm_routing_put_port_mixer),
10686 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10687 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10688 msm_routing_get_port_mixer,
10689 msm_routing_put_port_mixer),
10690 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10691 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10692 msm_routing_get_port_mixer,
10693 msm_routing_put_port_mixer),
10694 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10695 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10696 msm_routing_get_port_mixer,
10697 msm_routing_put_port_mixer),
10698 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10699 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10700 msm_routing_get_port_mixer,
10701 msm_routing_put_port_mixer),
10702 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10703 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10704 msm_routing_get_port_mixer,
10705 msm_routing_put_port_mixer),
10706 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10707 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10708 msm_routing_get_port_mixer,
10709 msm_routing_put_port_mixer),
10710 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10711 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10712 msm_routing_get_port_mixer,
10713 msm_routing_put_port_mixer),
10714 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10715 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10716 msm_routing_get_port_mixer,
10717 msm_routing_put_port_mixer),
10718 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10719 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10720 msm_routing_get_port_mixer,
10721 msm_routing_put_port_mixer),
10722 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10723 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10724 msm_routing_get_port_mixer,
10725 msm_routing_put_port_mixer),
10726 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10727 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10728 msm_routing_get_port_mixer,
10729 msm_routing_put_port_mixer),
10730 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10731 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10732 msm_routing_get_port_mixer,
10733 msm_routing_put_port_mixer),
10734 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10735 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10736 msm_routing_get_port_mixer,
10737 msm_routing_put_port_mixer),
10738 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10739 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10740 msm_routing_get_port_mixer,
10741 msm_routing_put_port_mixer),
10742 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10743 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10744 msm_routing_get_port_mixer,
10745 msm_routing_put_port_mixer),
10746 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10747 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10748 msm_routing_get_port_mixer,
10749 msm_routing_put_port_mixer),
10750 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10751 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10752 msm_routing_get_port_mixer,
10753 msm_routing_put_port_mixer),
10754 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10755 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10756 msm_routing_get_port_mixer,
10757 msm_routing_put_port_mixer),
10758 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10759 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10760 msm_routing_get_port_mixer,
10761 msm_routing_put_port_mixer),
10762};
10763
10764static const struct snd_kcontrol_new quin_tdm_rx_1_port_mixer_controls[] = {
10765 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10766 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10767 msm_routing_get_port_mixer,
10768 msm_routing_put_port_mixer),
10769 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10770 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10771 msm_routing_get_port_mixer,
10772 msm_routing_put_port_mixer),
10773 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10774 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10775 msm_routing_get_port_mixer,
10776 msm_routing_put_port_mixer),
10777 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10778 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10779 msm_routing_get_port_mixer,
10780 msm_routing_put_port_mixer),
10781 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10782 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10783 msm_routing_get_port_mixer,
10784 msm_routing_put_port_mixer),
10785 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10786 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10787 msm_routing_get_port_mixer,
10788 msm_routing_put_port_mixer),
10789 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10790 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10791 msm_routing_get_port_mixer,
10792 msm_routing_put_port_mixer),
10793 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10794 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10795 msm_routing_get_port_mixer,
10796 msm_routing_put_port_mixer),
10797 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10798 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10799 msm_routing_get_port_mixer,
10800 msm_routing_put_port_mixer),
10801 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10802 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10803 msm_routing_get_port_mixer,
10804 msm_routing_put_port_mixer),
10805 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10806 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10807 msm_routing_get_port_mixer,
10808 msm_routing_put_port_mixer),
10809 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10810 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10811 msm_routing_get_port_mixer,
10812 msm_routing_put_port_mixer),
10813 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10814 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10815 msm_routing_get_port_mixer,
10816 msm_routing_put_port_mixer),
10817 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10818 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10819 msm_routing_get_port_mixer,
10820 msm_routing_put_port_mixer),
10821 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10822 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10823 msm_routing_get_port_mixer,
10824 msm_routing_put_port_mixer),
10825 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10826 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10827 msm_routing_get_port_mixer,
10828 msm_routing_put_port_mixer),
10829 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10830 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10831 msm_routing_get_port_mixer,
10832 msm_routing_put_port_mixer),
10833 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10834 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10835 msm_routing_get_port_mixer,
10836 msm_routing_put_port_mixer),
10837 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10838 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10839 msm_routing_get_port_mixer,
10840 msm_routing_put_port_mixer),
10841 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10842 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10843 msm_routing_get_port_mixer,
10844 msm_routing_put_port_mixer),
10845};
10846
10847static const struct snd_kcontrol_new quin_tdm_rx_2_port_mixer_controls[] = {
10848 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10849 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10850 msm_routing_get_port_mixer,
10851 msm_routing_put_port_mixer),
10852 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10853 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10854 msm_routing_get_port_mixer,
10855 msm_routing_put_port_mixer),
10856 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10857 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10858 msm_routing_get_port_mixer,
10859 msm_routing_put_port_mixer),
10860 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10861 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10862 msm_routing_get_port_mixer,
10863 msm_routing_put_port_mixer),
10864 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10865 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10866 msm_routing_get_port_mixer,
10867 msm_routing_put_port_mixer),
10868 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10869 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10870 msm_routing_get_port_mixer,
10871 msm_routing_put_port_mixer),
10872 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10873 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10874 msm_routing_get_port_mixer,
10875 msm_routing_put_port_mixer),
10876 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10877 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10878 msm_routing_get_port_mixer,
10879 msm_routing_put_port_mixer),
10880 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10881 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10882 msm_routing_get_port_mixer,
10883 msm_routing_put_port_mixer),
10884 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10885 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10886 msm_routing_get_port_mixer,
10887 msm_routing_put_port_mixer),
10888 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10889 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10890 msm_routing_get_port_mixer,
10891 msm_routing_put_port_mixer),
10892 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10893 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10894 msm_routing_get_port_mixer,
10895 msm_routing_put_port_mixer),
10896 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10897 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10898 msm_routing_get_port_mixer,
10899 msm_routing_put_port_mixer),
10900 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10901 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10902 msm_routing_get_port_mixer,
10903 msm_routing_put_port_mixer),
10904 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10905 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10906 msm_routing_get_port_mixer,
10907 msm_routing_put_port_mixer),
10908 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10909 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10910 msm_routing_get_port_mixer,
10911 msm_routing_put_port_mixer),
10912 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10913 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10914 msm_routing_get_port_mixer,
10915 msm_routing_put_port_mixer),
10916 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10917 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10918 msm_routing_get_port_mixer,
10919 msm_routing_put_port_mixer),
10920 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10921 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10922 msm_routing_get_port_mixer,
10923 msm_routing_put_port_mixer),
10924 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10925 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10926 msm_routing_get_port_mixer,
10927 msm_routing_put_port_mixer),
10928};
10929
10930static const struct snd_kcontrol_new quin_tdm_rx_3_port_mixer_controls[] = {
10931 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10932 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10933 msm_routing_get_port_mixer,
10934 msm_routing_put_port_mixer),
10935 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10936 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10937 msm_routing_get_port_mixer,
10938 msm_routing_put_port_mixer),
10939 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10940 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10941 msm_routing_get_port_mixer,
10942 msm_routing_put_port_mixer),
10943 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10944 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10945 msm_routing_get_port_mixer,
10946 msm_routing_put_port_mixer),
10947 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10948 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10949 msm_routing_get_port_mixer,
10950 msm_routing_put_port_mixer),
10951 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10952 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10953 msm_routing_get_port_mixer,
10954 msm_routing_put_port_mixer),
10955 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10956 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10957 msm_routing_get_port_mixer,
10958 msm_routing_put_port_mixer),
10959 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10960 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10961 msm_routing_get_port_mixer,
10962 msm_routing_put_port_mixer),
10963 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10964 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10965 msm_routing_get_port_mixer,
10966 msm_routing_put_port_mixer),
10967 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10968 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10969 msm_routing_get_port_mixer,
10970 msm_routing_put_port_mixer),
10971 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10972 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10973 msm_routing_get_port_mixer,
10974 msm_routing_put_port_mixer),
10975 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10976 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10977 msm_routing_get_port_mixer,
10978 msm_routing_put_port_mixer),
10979 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10980 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10981 msm_routing_get_port_mixer,
10982 msm_routing_put_port_mixer),
10983 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10984 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10985 msm_routing_get_port_mixer,
10986 msm_routing_put_port_mixer),
10987 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10988 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10989 msm_routing_get_port_mixer,
10990 msm_routing_put_port_mixer),
10991 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10992 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10993 msm_routing_get_port_mixer,
10994 msm_routing_put_port_mixer),
10995 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10996 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10997 msm_routing_get_port_mixer,
10998 msm_routing_put_port_mixer),
10999 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11000 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
11001 msm_routing_get_port_mixer,
11002 msm_routing_put_port_mixer),
11003 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11004 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
11005 msm_routing_get_port_mixer,
11006 msm_routing_put_port_mixer),
11007 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11008 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
11009 msm_routing_get_port_mixer,
11010 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011011};
11012
11013static const struct snd_kcontrol_new tert_mi2s_rx_port_mixer_controls[] = {
11014 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
11015 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11016 msm_routing_put_port_mixer),
11017 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
11018 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11019 msm_routing_put_port_mixer),
11020 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
11021 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
11022 msm_routing_put_port_mixer),
11023 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
11024 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11025 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053011026 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
11027 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11028 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011029 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
11030 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11031 msm_routing_put_port_mixer),
11032 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
11033 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
11034 msm_routing_put_port_mixer),
11035};
11036
11037static const struct snd_kcontrol_new sec_mi2s_rx_port_mixer_controls[] = {
11038 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11039 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11040 msm_routing_put_port_mixer),
11041 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11042 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11043 msm_routing_put_port_mixer),
11044 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11045 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11046 msm_routing_put_port_mixer),
11047 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11048 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11049 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053011050 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11051 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11052 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011053 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11054 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
11055 msm_routing_put_port_mixer),
11056 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11057 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
11058 msm_routing_put_port_mixer),
11059 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11060 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
11061 msm_routing_put_port_mixer),
11062};
11063
11064static const struct snd_kcontrol_new lsm1_mixer_controls[] = {
11065 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11066 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11067 msm_routing_put_listen_mixer),
11068 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11069 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11070 msm_routing_put_listen_mixer),
11071 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11072 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11073 msm_routing_put_listen_mixer),
11074 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11075 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11076 msm_routing_put_listen_mixer),
11077 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11078 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11079 msm_routing_put_listen_mixer),
11080 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11081 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11082 msm_routing_put_listen_mixer),
11083 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11084 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11085 msm_routing_put_listen_mixer),
11086 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11087 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11088 msm_routing_put_listen_mixer),
11089};
11090
11091static const struct snd_kcontrol_new lsm2_mixer_controls[] = {
11092 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11093 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11094 msm_routing_put_listen_mixer),
11095 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11096 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11097 msm_routing_put_listen_mixer),
11098 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11099 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11100 msm_routing_put_listen_mixer),
11101 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11102 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11103 msm_routing_put_listen_mixer),
11104 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11105 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11106 msm_routing_put_listen_mixer),
11107 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11108 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11109 msm_routing_put_listen_mixer),
11110 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11111 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11112 msm_routing_put_listen_mixer),
11113 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11114 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11115 msm_routing_put_listen_mixer),
11116};
11117
11118static const struct snd_kcontrol_new lsm3_mixer_controls[] = {
11119 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11120 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11121 msm_routing_put_listen_mixer),
11122 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11123 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11124 msm_routing_put_listen_mixer),
11125 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11126 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11127 msm_routing_put_listen_mixer),
11128 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11129 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11130 msm_routing_put_listen_mixer),
11131 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11132 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11133 msm_routing_put_listen_mixer),
11134 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11135 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11136 msm_routing_put_listen_mixer),
11137 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11138 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11139 msm_routing_put_listen_mixer),
11140 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11141 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11142 msm_routing_put_listen_mixer),
11143};
11144
11145static const struct snd_kcontrol_new lsm4_mixer_controls[] = {
11146 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11147 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11148 msm_routing_put_listen_mixer),
11149 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11150 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11151 msm_routing_put_listen_mixer),
11152 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11153 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11154 msm_routing_put_listen_mixer),
11155 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11156 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11157 msm_routing_put_listen_mixer),
11158 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11159 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11160 msm_routing_put_listen_mixer),
11161 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11162 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11163 msm_routing_put_listen_mixer),
11164 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11165 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11166 msm_routing_put_listen_mixer),
11167 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11168 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11169 msm_routing_put_listen_mixer),
11170};
11171
11172static const struct snd_kcontrol_new lsm5_mixer_controls[] = {
11173 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11174 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11175 msm_routing_put_listen_mixer),
11176 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11177 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11178 msm_routing_put_listen_mixer),
11179 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11180 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11181 msm_routing_put_listen_mixer),
11182 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11183 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11184 msm_routing_put_listen_mixer),
11185 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11186 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11187 msm_routing_put_listen_mixer),
11188 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11189 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11190 msm_routing_put_listen_mixer),
11191 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11192 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11193 msm_routing_put_listen_mixer),
11194 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11195 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11196 msm_routing_put_listen_mixer),
11197};
11198
11199static const struct snd_kcontrol_new lsm6_mixer_controls[] = {
11200 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11201 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11202 msm_routing_put_listen_mixer),
11203 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11204 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11205 msm_routing_put_listen_mixer),
11206 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11207 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11208 msm_routing_put_listen_mixer),
11209 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11210 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11211 msm_routing_put_listen_mixer),
11212 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11213 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11214 msm_routing_put_listen_mixer),
11215 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11216 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11217 msm_routing_put_listen_mixer),
11218 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11219 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11220 msm_routing_put_listen_mixer),
11221 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11222 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11223 msm_routing_put_listen_mixer),
11224};
11225
11226static const struct snd_kcontrol_new lsm7_mixer_controls[] = {
11227 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11228 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11229 msm_routing_put_listen_mixer),
11230 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11231 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11232 msm_routing_put_listen_mixer),
11233 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11234 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11235 msm_routing_put_listen_mixer),
11236 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11237 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11238 msm_routing_put_listen_mixer),
11239 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11240 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11241 msm_routing_put_listen_mixer),
11242 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11243 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11244 msm_routing_put_listen_mixer),
11245 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11246 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11247 msm_routing_put_listen_mixer),
11248 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11249 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11250 msm_routing_put_listen_mixer),
11251};
11252
11253static const struct snd_kcontrol_new lsm8_mixer_controls[] = {
11254 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11255 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11256 msm_routing_put_listen_mixer),
11257 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11258 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11259 msm_routing_put_listen_mixer),
11260 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11261 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11262 msm_routing_put_listen_mixer),
11263 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11264 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11265 msm_routing_put_listen_mixer),
11266 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11267 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11268 msm_routing_put_listen_mixer),
11269 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11270 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11271 msm_routing_put_listen_mixer),
11272 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11273 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11274 msm_routing_put_listen_mixer),
11275 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11276 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11277 msm_routing_put_listen_mixer),
11278};
11279
11280static const struct snd_kcontrol_new slim_fm_switch_mixer_controls =
11281 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11282 0, 1, 0, msm_routing_get_switch_mixer,
11283 msm_routing_put_switch_mixer);
11284
11285static const struct snd_kcontrol_new slim1_fm_switch_mixer_controls =
11286 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11287 0, 1, 0, msm_routing_get_switch_mixer,
11288 msm_routing_put_switch_mixer);
11289
11290static const struct snd_kcontrol_new slim3_fm_switch_mixer_controls =
11291 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11292 0, 1, 0, msm_routing_get_switch_mixer,
11293 msm_routing_put_switch_mixer);
11294
11295static const struct snd_kcontrol_new slim4_fm_switch_mixer_controls =
11296 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11297 0, 1, 0, msm_routing_get_switch_mixer,
11298 msm_routing_put_switch_mixer);
11299
11300static const struct snd_kcontrol_new slim6_fm_switch_mixer_controls =
11301 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11302 0, 1, 0, msm_routing_get_switch_mixer,
11303 msm_routing_put_switch_mixer);
11304
11305static const struct snd_kcontrol_new pcm_rx_switch_mixer_controls =
11306 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11307 0, 1, 0, msm_routing_get_fm_pcmrx_switch_mixer,
11308 msm_routing_put_fm_pcmrx_switch_mixer);
11309
11310static const struct snd_kcontrol_new int0_mi2s_rx_switch_mixer_controls =
11311 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11312 0, 1, 0, msm_routing_get_int0_mi2s_switch_mixer,
11313 msm_routing_put_int0_mi2s_switch_mixer);
11314
11315static const struct snd_kcontrol_new int4_mi2s_rx_switch_mixer_controls =
11316 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11317 0, 1, 0, msm_routing_get_int4_mi2s_switch_mixer,
11318 msm_routing_put_int4_mi2s_switch_mixer);
11319
11320static const struct snd_kcontrol_new pri_mi2s_rx_switch_mixer_controls =
11321 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11322 0, 1, 0, msm_routing_get_pri_mi2s_switch_mixer,
11323 msm_routing_put_pri_mi2s_switch_mixer);
11324
11325static const struct snd_kcontrol_new sec_mi2s_rx_switch_mixer_controls =
11326 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11327 0, 1, 0, msm_routing_get_sec_mi2s_switch_mixer,
11328 msm_routing_put_sec_mi2s_switch_mixer);
11329
11330static const struct snd_kcontrol_new tert_mi2s_rx_switch_mixer_controls =
11331 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11332 0, 1, 0, msm_routing_get_tert_mi2s_switch_mixer,
11333 msm_routing_put_tert_mi2s_switch_mixer);
11334
11335static const struct snd_kcontrol_new quat_mi2s_rx_switch_mixer_controls =
11336 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11337 0, 1, 0, msm_routing_get_quat_mi2s_switch_mixer,
11338 msm_routing_put_quat_mi2s_switch_mixer);
11339
Rohit Kumara5077932017-09-10 22:05:05 +053011340static const struct snd_kcontrol_new quin_mi2s_rx_switch_mixer_controls =
11341 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11342 0, 1, 0, msm_routing_get_quin_mi2s_switch_mixer,
11343 msm_routing_put_quin_mi2s_switch_mixer);
11344
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011345static const struct snd_kcontrol_new hfp_pri_aux_switch_mixer_controls =
11346 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11347 0, 1, 0, msm_routing_get_hfp_switch_mixer,
11348 msm_routing_put_hfp_switch_mixer);
11349
11350static const struct snd_kcontrol_new hfp_aux_switch_mixer_controls =
11351 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11352 0, 1, 0, msm_routing_get_hfp_switch_mixer,
11353 msm_routing_put_hfp_switch_mixer);
11354
11355static const struct snd_kcontrol_new hfp_int_switch_mixer_controls =
11356 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11357 0, 1, 0, msm_routing_get_hfp_switch_mixer,
11358 msm_routing_put_hfp_switch_mixer);
11359
11360static const struct snd_kcontrol_new hfp_slim7_switch_mixer_controls =
11361 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11362 0, 1, 0, msm_routing_get_hfp_switch_mixer,
11363 msm_routing_put_hfp_switch_mixer);
11364
11365static const struct snd_kcontrol_new usb_switch_mixer_controls =
11366 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11367 0, 1, 0, msm_routing_get_usb_switch_mixer,
11368 msm_routing_put_usb_switch_mixer);
11369
11370static const struct soc_enum lsm_port_enum =
11371 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(lsm_port_text), lsm_port_text);
11372
11373static const char * const lsm_func_text[] = {
11374 "None", "AUDIO", "BEACON", "ULTRASOUND", "SWAUDIO",
11375};
11376static const struct soc_enum lsm_func_enum =
11377 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(lsm_func_text), lsm_func_text);
11378
11379static const struct snd_kcontrol_new lsm_controls[] = {
11380 /* kcontrol of lsm_function */
11381 SOC_ENUM_EXT(SLIMBUS_0_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11382 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11383 SOC_ENUM_EXT(SLIMBUS_1_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11384 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11385 SOC_ENUM_EXT(SLIMBUS_2_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11386 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11387 SOC_ENUM_EXT(SLIMBUS_3_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11388 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11389 SOC_ENUM_EXT(SLIMBUS_4_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11390 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11391 SOC_ENUM_EXT(SLIMBUS_5_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11392 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11393 SOC_ENUM_EXT(TERT_MI2S_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11394 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11395 SOC_ENUM_EXT(QUAT_MI2S_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11396 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11397 SOC_ENUM_EXT(INT3_MI2S_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11398 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11399 /* kcontrol of lsm_port */
11400 SOC_ENUM_EXT("LSM1 Port", lsm_port_enum,
11401 msm_routing_lsm_port_get,
11402 msm_routing_lsm_port_put),
11403 SOC_ENUM_EXT("LSM2 Port", lsm_port_enum,
11404 msm_routing_lsm_port_get,
11405 msm_routing_lsm_port_put),
11406 SOC_ENUM_EXT("LSM3 Port", lsm_port_enum,
11407 msm_routing_lsm_port_get,
11408 msm_routing_lsm_port_put),
11409 SOC_ENUM_EXT("LSM4 Port", lsm_port_enum,
11410 msm_routing_lsm_port_get,
11411 msm_routing_lsm_port_put),
11412 SOC_ENUM_EXT("LSM5 Port", lsm_port_enum,
11413 msm_routing_lsm_port_get,
11414 msm_routing_lsm_port_put),
11415 SOC_ENUM_EXT("LSM6 Port", lsm_port_enum,
11416 msm_routing_lsm_port_get,
11417 msm_routing_lsm_port_put),
11418 SOC_ENUM_EXT("LSM7 Port", lsm_port_enum,
11419 msm_routing_lsm_port_get,
11420 msm_routing_lsm_port_put),
11421 SOC_ENUM_EXT("LSM8 Port", lsm_port_enum,
11422 msm_routing_lsm_port_get,
11423 msm_routing_lsm_port_put),
11424};
11425
11426static const char * const aanc_slim_0_rx_text[] = {
11427 "ZERO", "SLIMBUS_0_TX", "SLIMBUS_1_TX", "SLIMBUS_2_TX", "SLIMBUS_3_TX",
11428 "SLIMBUS_4_TX", "SLIMBUS_5_TX", "SLIMBUS_6_TX"
11429};
11430
11431static const struct soc_enum aanc_slim_0_rx_enum =
11432 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(aanc_slim_0_rx_text),
11433 aanc_slim_0_rx_text);
11434
11435static const struct snd_kcontrol_new aanc_slim_0_rx_mux[] = {
11436 SOC_ENUM_EXT("AANC_SLIM_0_RX MUX", aanc_slim_0_rx_enum,
11437 msm_routing_slim_0_rx_aanc_mux_get,
11438 msm_routing_slim_0_rx_aanc_mux_put)
11439};
11440
11441static int msm_routing_get_stereo_to_custom_stereo_control(
11442 struct snd_kcontrol *kcontrol,
11443 struct snd_ctl_elem_value *ucontrol)
11444{
11445 ucontrol->value.integer.value[0] = is_custom_stereo_on;
11446 return 0;
11447}
11448
11449static int msm_routing_put_stereo_to_custom_stereo_control(
11450 struct snd_kcontrol *kcontrol,
11451 struct snd_ctl_elem_value *ucontrol)
11452{
11453 int flag = 0, i = 0, rc = 0, idx = 0;
11454 int be_index = 0, port_id, topo_id;
11455 unsigned int session_id = 0;
11456 uint16_t op_FL_ip_FL_weight = 0;
11457 uint16_t op_FL_ip_FR_weight = 0;
11458 uint16_t op_FR_ip_FL_weight = 0;
11459 uint16_t op_FR_ip_FR_weight = 0;
11460
11461 flag = ucontrol->value.integer.value[0];
11462 pr_debug("%s E flag %d\n", __func__, flag);
11463
11464 if ((is_custom_stereo_on && flag) || (!is_custom_stereo_on && !flag)) {
11465 pr_err("%s: is_custom_stereo_on %d, flag %d\n",
11466 __func__, is_custom_stereo_on, flag);
11467 return 0;
11468 }
11469 is_custom_stereo_on = flag ? true : false;
11470 pr_debug("%s:is_custom_stereo_on %d\n", __func__, is_custom_stereo_on);
11471 for (be_index = 0; be_index < MSM_BACKEND_DAI_MAX; be_index++) {
11472 port_id = msm_bedais[be_index].port_id;
11473 if (!msm_bedais[be_index].active)
11474 continue;
11475 if ((port_id != SLIMBUS_0_RX) &&
11476 (port_id != RT_PROXY_PORT_001_RX) &&
11477 (port_id != AFE_PORT_ID_PRIMARY_MI2S_RX) &&
11478 (port_id != AFE_PORT_ID_INT4_MI2S_RX))
11479 continue;
11480
11481 for_each_set_bit(i, &msm_bedais[be_index].fe_sessions[0],
11482 MSM_FRONTEND_DAI_MM_SIZE) {
11483 if (fe_dai_map[i][SESSION_TYPE_RX].perf_mode !=
11484 LEGACY_PCM_MODE)
11485 goto skip_send_custom_stereo;
11486 session_id =
11487 fe_dai_map[i][SESSION_TYPE_RX].strm_id;
11488 if (is_custom_stereo_on) {
11489 op_FL_ip_FL_weight =
11490 Q14_GAIN_ZERO_POINT_FIVE;
11491 op_FL_ip_FR_weight =
11492 Q14_GAIN_ZERO_POINT_FIVE;
11493 op_FR_ip_FL_weight =
11494 Q14_GAIN_ZERO_POINT_FIVE;
11495 op_FR_ip_FR_weight =
11496 Q14_GAIN_ZERO_POINT_FIVE;
11497 } else {
11498 op_FL_ip_FL_weight = Q14_GAIN_UNITY;
11499 op_FL_ip_FR_weight = 0;
11500 op_FR_ip_FL_weight = 0;
11501 op_FR_ip_FR_weight = Q14_GAIN_UNITY;
11502 }
11503 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++) {
11504 unsigned long copp =
11505 session_copp_map[i]
11506 [SESSION_TYPE_RX][be_index];
11507 if (!test_bit(idx, &copp))
11508 goto skip_send_custom_stereo;
11509 topo_id = adm_get_topology_for_port_copp_idx(
11510 msm_bedais[be_index].port_id, idx);
11511 if (topo_id < 0)
11512 pr_debug("%s:Err:custom stereo topo %d",
11513 __func__, topo_id);
11514 pr_debug("idx %d\n", idx);
11515 if (topo_id == DS2_ADM_COPP_TOPOLOGY_ID)
11516 rc = msm_ds2_dap_set_custom_stereo_onoff
11517 (msm_bedais[be_index].port_id,
11518 idx, is_custom_stereo_on);
11519 else if (topo_id == DOLBY_ADM_COPP_TOPOLOGY_ID)
11520 rc = dolby_dap_set_custom_stereo_onoff(
11521 msm_bedais[be_index].port_id,
11522 idx, is_custom_stereo_on);
11523 else
11524 rc = msm_qti_pp_send_stereo_to_custom_stereo_cmd
11525 (msm_bedais[be_index].port_id,
11526 idx, session_id,
11527 op_FL_ip_FL_weight,
11528 op_FL_ip_FR_weight,
11529 op_FR_ip_FL_weight,
11530 op_FR_ip_FR_weight);
11531 if (rc < 0)
11532skip_send_custom_stereo:
11533 pr_err("%s: err setting custom stereo\n",
11534 __func__);
11535 }
11536
11537 }
11538 }
11539 return 0;
11540}
11541
11542static const struct snd_kcontrol_new stereo_to_custom_stereo_controls[] = {
11543 SOC_SINGLE_EXT("Set Custom Stereo OnOff", SND_SOC_NOPM, 0,
11544 1, 0, msm_routing_get_stereo_to_custom_stereo_control,
11545 msm_routing_put_stereo_to_custom_stereo_control),
11546};
11547
11548static int msm_routing_get_app_type_cfg_control(struct snd_kcontrol *kcontrol,
11549 struct snd_ctl_elem_value *ucontrol)
11550{
11551 return 0;
11552}
11553
11554static int msm_routing_put_app_type_cfg_control(struct snd_kcontrol *kcontrol,
11555 struct snd_ctl_elem_value *ucontrol)
11556{
11557 int i = 0, j;
11558 int num_app_types = ucontrol->value.integer.value[i++];
11559
11560 pr_debug("%s\n", __func__);
11561
11562 memset(app_type_cfg, 0, MAX_APP_TYPES*
11563 sizeof(struct msm_pcm_routing_app_type_data));
11564 if (num_app_types > MAX_APP_TYPES) {
11565 pr_err("%s: number of app types exceed the max supported\n",
11566 __func__);
11567 return -EINVAL;
11568 }
11569 for (j = 0; j < num_app_types; j++) {
11570 app_type_cfg[j].app_type =
11571 ucontrol->value.integer.value[i++];
11572 app_type_cfg[j].sample_rate =
11573 ucontrol->value.integer.value[i++];
11574 app_type_cfg[j].bit_width =
11575 ucontrol->value.integer.value[i++];
11576 }
11577
11578 return 0;
11579}
11580
11581static int msm_routing_put_app_type_gain_control(struct snd_kcontrol *kcontrol,
11582 struct snd_ctl_elem_value *ucontrol)
11583{
11584 int j, fe_id, be_id, port_type;
11585 int ret = 0;
11586 unsigned long copp;
11587 struct msm_pcm_routing_bdai_data *bedai;
11588 int dir = ucontrol->value.integer.value[0] ? SESSION_TYPE_TX :
11589 SESSION_TYPE_RX;
11590 int app_type = ucontrol->value.integer.value[1];
11591 int gain = (ucontrol->value.integer.value[2] +
11592 ucontrol->value.integer.value[3])/2;
11593
11594 port_type = (dir == SESSION_TYPE_RX) ? MSM_AFE_PORT_TYPE_RX :
11595 MSM_AFE_PORT_TYPE_TX;
11596
11597 mutex_lock(&routing_lock);
11598 for (be_id = 0; be_id < MSM_BACKEND_DAI_MAX; be_id++) {
11599 if (is_be_dai_extproc(be_id))
11600 continue;
11601
11602 bedai = &msm_bedais[be_id];
11603 if (afe_get_port_type(bedai->port_id) != port_type)
11604 continue;
11605
11606 if (!bedai->active)
11607 continue;
11608
11609 for (fe_id = 0; fe_id < MSM_FRONTEND_DAI_MAX; fe_id++) {
11610 if (!test_bit(fe_id, &bedai->fe_sessions[0]))
11611 continue;
11612
11613 if (app_type !=
11614 fe_dai_app_type_cfg[fe_id][dir][be_id].app_type)
11615 continue;
11616
11617 copp = session_copp_map[fe_id][dir][be_id];
11618 for (j = 0; j < MAX_COPPS_PER_PORT; j++) {
11619 if (!test_bit(j, &copp))
11620 continue;
11621 ret |= adm_set_volume(bedai->port_id, j, gain);
11622 }
11623 }
11624 }
11625 mutex_unlock(&routing_lock);
11626 return ret ? -EINVAL : 0;
11627}
11628
11629static const struct snd_kcontrol_new app_type_cfg_controls[] = {
11630 SOC_SINGLE_MULTI_EXT("App Type Config", SND_SOC_NOPM, 0,
11631 0xFFFFFFFF, 0, 128, msm_routing_get_app_type_cfg_control,
11632 msm_routing_put_app_type_cfg_control),
11633 SOC_SINGLE_MULTI_EXT("App Type Gain", SND_SOC_NOPM, 0,
11634 0x2000, 0, 4, NULL, msm_routing_put_app_type_gain_control)
11635};
11636
Vikram Pandurangaee9c03a2017-09-07 15:06:17 -070011637static int msm_routing_put_module_cfg_control(struct snd_kcontrol *kcontrol,
11638 struct snd_ctl_elem_value *ucontrol)
11639{
11640 int copp_idx, fe_id, be_id, port_type;
11641 int ret = 0;
11642 unsigned long copp;
11643 struct msm_pcm_routing_bdai_data *bedai;
11644 char *param_data = NULL;
11645 uint32_t *update_param_data = NULL;
11646 uint32_t param_size = sizeof(uint32_t) +
11647 sizeof(struct adm_param_data_v5);
11648 int dir = ucontrol->value.integer.value[0] ? SESSION_TYPE_TX :
11649 SESSION_TYPE_RX;
11650 int app_type = ucontrol->value.integer.value[1];
11651 int module_id = ucontrol->value.integer.value[2];
11652 int instance_id = ucontrol->value.integer.value[3];
11653 int param_id = ucontrol->value.integer.value[4];
11654 int param_value = ucontrol->value.integer.value[5];
11655
11656 port_type = (dir == SESSION_TYPE_RX) ? MSM_AFE_PORT_TYPE_RX :
11657 MSM_AFE_PORT_TYPE_TX;
11658 pr_debug("%s app_type:%d mod_id:%d instance_id:%d param_id:%d value:%d\n",
11659 __func__, app_type, module_id,
11660 instance_id, param_id, param_value);
11661
11662 param_data = kzalloc(param_size, GFP_KERNEL);
11663 if (!param_data)
11664 return -ENOMEM;
11665
11666 update_param_data = (uint32_t *)param_data;
11667 *update_param_data++ = module_id;
11668 *update_param_data++ = param_id;
11669 *update_param_data++ = sizeof(uint32_t);
11670 *update_param_data++ = param_value;
11671
11672 mutex_lock(&routing_lock);
11673 for (be_id = 0; be_id < MSM_BACKEND_DAI_MAX; be_id++) {
11674 if (is_be_dai_extproc(be_id))
11675 continue;
11676
11677 bedai = &msm_bedais[be_id];
11678 if (afe_get_port_type(bedai->port_id) != port_type)
11679 continue;
11680
11681 if (!bedai->active)
11682 continue;
11683
11684 for (fe_id = 0; fe_id < MSM_FRONTEND_DAI_MAX; fe_id++) {
11685 if (!test_bit(fe_id, &bedai->fe_sessions[0]))
11686 continue;
11687
11688 if (app_type !=
11689 fe_dai_app_type_cfg[fe_id][dir][be_id].app_type)
11690 continue;
11691
11692 copp = session_copp_map[fe_id][dir][be_id];
11693 for (copp_idx = 0; copp_idx < MAX_COPPS_PER_PORT;
11694 copp_idx++) {
11695 if (!test_bit(copp_idx, &copp))
11696 continue;
11697
11698 ret = adm_send_params_v5(bedai->port_id,
11699 copp_idx,
11700 param_data,
11701 param_size);
11702 if (ret) {
11703 pr_err("%s: Setting param failed with err=%d\n",
11704 __func__, ret);
11705 ret = -EINVAL;
11706 goto done;
11707 }
11708 }
11709 }
11710 }
11711done:
11712 mutex_unlock(&routing_lock);
11713 kfree(param_data);
11714 return ret;
11715}
11716
11717static const struct snd_kcontrol_new module_cfg_controls[] = {
11718 SOC_SINGLE_MULTI_EXT("Audio Effect", SND_SOC_NOPM, 0,
11719 0x2000, 0, 6, NULL, msm_routing_put_module_cfg_control)
11720};
11721
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011722static int msm_routing_get_lsm_app_type_cfg_control(
11723 struct snd_kcontrol *kcontrol,
11724 struct snd_ctl_elem_value *ucontrol)
11725{
11726 return 0;
11727}
11728
11729static int msm_routing_put_lsm_app_type_cfg_control(
11730 struct snd_kcontrol *kcontrol,
11731 struct snd_ctl_elem_value *ucontrol)
11732{
11733 int i = 0, j;
11734 int num_app_types = ucontrol->value.integer.value[i++];
11735
11736 memset(lsm_app_type_cfg, 0, MAX_APP_TYPES*
11737 sizeof(struct msm_pcm_routing_app_type_data));
11738 if (num_app_types > MAX_APP_TYPES) {
11739 pr_err("%s: number of app types exceed the max supported\n",
11740 __func__);
11741 return -EINVAL;
11742 }
11743 for (j = 0; j < num_app_types; j++) {
11744 lsm_app_type_cfg[j].app_type =
11745 ucontrol->value.integer.value[i++];
11746 lsm_app_type_cfg[j].sample_rate =
11747 ucontrol->value.integer.value[i++];
11748 lsm_app_type_cfg[j].bit_width =
11749 ucontrol->value.integer.value[i++];
11750 }
11751
11752 return 0;
11753}
11754
11755static const struct snd_kcontrol_new lsm_app_type_cfg_controls[] = {
11756 SOC_SINGLE_MULTI_EXT("Listen App Type Config", SND_SOC_NOPM, 0,
11757 0xFFFFFFFF, 0, 128, msm_routing_get_lsm_app_type_cfg_control,
11758 msm_routing_put_lsm_app_type_cfg_control),
11759};
11760
11761static int msm_routing_get_use_ds1_or_ds2_control(
11762 struct snd_kcontrol *kcontrol,
11763 struct snd_ctl_elem_value *ucontrol)
11764{
11765 ucontrol->value.integer.value[0] = is_ds2_on;
11766 return 0;
11767}
11768
11769static int msm_routing_put_use_ds1_or_ds2_control(
11770 struct snd_kcontrol *kcontrol,
11771 struct snd_ctl_elem_value *ucontrol)
11772{
11773 is_ds2_on = ucontrol->value.integer.value[0];
11774 return 0;
11775}
11776
11777static const struct snd_kcontrol_new use_ds1_or_ds2_controls[] = {
11778 SOC_SINGLE_EXT("DS2 OnOff", SND_SOC_NOPM, 0,
11779 1, 0, msm_routing_get_use_ds1_or_ds2_control,
11780 msm_routing_put_use_ds1_or_ds2_control),
11781};
11782
11783int msm_routing_get_rms_value_control(struct snd_kcontrol *kcontrol,
11784 struct snd_ctl_elem_value *ucontrol) {
11785 int rc = 0;
11786 int be_idx = 0;
11787 char *param_value;
11788 int *update_param_value;
11789 uint32_t param_length = sizeof(uint32_t);
11790 uint32_t param_payload_len = RMS_PAYLOAD_LEN * sizeof(uint32_t);
11791
11792 param_value = kzalloc(param_length + param_payload_len, GFP_KERNEL);
11793 if (!param_value)
11794 return -ENOMEM;
11795
11796 for (be_idx = 0; be_idx < MSM_BACKEND_DAI_MAX; be_idx++)
11797 if (msm_bedais[be_idx].port_id == SLIMBUS_0_TX)
11798 break;
11799 if ((be_idx < MSM_BACKEND_DAI_MAX) && msm_bedais[be_idx].active) {
11800 rc = adm_get_params(SLIMBUS_0_TX, 0,
11801 RMS_MODULEID_APPI_PASSTHRU,
11802 RMS_PARAM_FIRST_SAMPLE,
11803 param_length + param_payload_len,
11804 param_value);
11805 if (rc) {
11806 pr_err("%s: get parameters failed:%d\n", __func__, rc);
11807 kfree(param_value);
11808 return -EINVAL;
11809 }
11810 update_param_value = (int *)param_value;
11811 ucontrol->value.integer.value[0] = update_param_value[0];
11812
11813 pr_debug("%s: FROM DSP value[0] 0x%x\n",
11814 __func__, update_param_value[0]);
11815 }
11816 kfree(param_value);
11817 return 0;
11818}
11819
11820static int msm_voc_session_id_put(struct snd_kcontrol *kcontrol,
11821 struct snd_ctl_elem_value *ucontrol)
11822{
11823 voc_session_id = ucontrol->value.integer.value[0];
11824
11825 pr_debug("%s: voc_session_id=%u\n", __func__, voc_session_id);
11826
11827 return 0;
11828}
11829
11830static int msm_voc_session_id_get(struct snd_kcontrol *kcontrol,
11831 struct snd_ctl_elem_value *ucontrol)
11832{
11833 ucontrol->value.integer.value[0] = voc_session_id;
11834
11835 return 0;
11836}
11837
11838static struct snd_kcontrol_new msm_voc_session_controls[] = {
11839 SOC_SINGLE_MULTI_EXT("Voc VSID", SND_SOC_NOPM, 0,
11840 0xFFFFFFFF, 0, 1, msm_voc_session_id_get,
11841 msm_voc_session_id_put),
11842};
11843
11844static int msm_sound_focus_info(struct snd_kcontrol *kcontrol,
11845 struct snd_ctl_elem_info *uinfo)
11846{
11847 uinfo->type = SNDRV_CTL_ELEM_TYPE_BYTES;
11848 uinfo->count = sizeof(struct sound_focus_param);
11849
11850 return 0;
11851}
11852
11853static int msm_voice_sound_focus_put(struct snd_kcontrol *kcontrol,
11854 struct snd_ctl_elem_value *ucontrol)
11855{
11856 int ret = 0;
11857 struct sound_focus_param soundFocusData;
11858
11859 memcpy((void *)&soundFocusData, ucontrol->value.bytes.data,
11860 sizeof(struct sound_focus_param));
11861 ret = voc_set_sound_focus(soundFocusData);
11862 if (ret) {
11863 pr_err("%s: Error setting Sound Focus Params, err=%d\n",
11864 __func__, ret);
11865
11866 ret = -EINVAL;
11867 }
11868
11869 return ret;
11870}
11871
11872static int msm_voice_sound_focus_get(struct snd_kcontrol *kcontrol,
11873 struct snd_ctl_elem_value *ucontrol)
11874{
11875 int ret = 0;
11876 struct sound_focus_param soundFocusData;
11877
11878 memset(&soundFocusData, 0, sizeof(struct sound_focus_param));
11879
11880 ret = voc_get_sound_focus(&soundFocusData);
11881 if (ret) {
11882 pr_err("%s: Error getting Sound Focus Params, err=%d\n",
11883 __func__, ret);
11884
11885 ret = -EINVAL;
11886 goto done;
11887 }
11888 memcpy(ucontrol->value.bytes.data, (void *)&soundFocusData,
11889 sizeof(struct sound_focus_param));
11890
11891done:
11892 return ret;
11893}
11894
11895static int msm_source_tracking_info(struct snd_kcontrol *kcontrol,
11896 struct snd_ctl_elem_info *uinfo)
11897{
11898 uinfo->type = SNDRV_CTL_ELEM_TYPE_BYTES;
11899 uinfo->count = sizeof(struct source_tracking_param);
11900
11901 return 0;
11902}
11903
11904static int msm_voice_source_tracking_get(struct snd_kcontrol *kcontrol,
11905 struct snd_ctl_elem_value *ucontrol)
11906{
11907 int ret = 0;
11908 struct source_tracking_param sourceTrackingData;
11909
11910 memset(&sourceTrackingData, 0, sizeof(struct source_tracking_param));
11911
11912 ret = voc_get_source_tracking(&sourceTrackingData);
11913 if (ret) {
11914 pr_err("%s: Error getting Source Tracking Params, err=%d\n",
11915 __func__, ret);
11916
11917 ret = -EINVAL;
11918 goto done;
11919 }
11920 memcpy(ucontrol->value.bytes.data, (void *)&sourceTrackingData,
11921 sizeof(struct source_tracking_param));
11922
11923done:
11924 return ret;
11925}
11926
11927static int msm_audio_get_copp_idx_from_port_id(int port_id, int session_type,
11928 int *copp_idx)
11929{
11930 int i, idx, be_idx;
11931 int ret = 0;
11932 unsigned long copp;
11933
11934 pr_debug("%s: Enter, port_id=%d\n", __func__, port_id);
11935
11936 ret = q6audio_validate_port(port_id);
11937 if (ret < 0) {
11938 pr_err("%s: port validation failed id 0x%x ret %d\n",
11939 __func__, port_id, ret);
11940
11941 ret = -EINVAL;
11942 goto done;
11943 }
11944
11945 for (be_idx = 0; be_idx < MSM_BACKEND_DAI_MAX; be_idx++) {
11946 if (msm_bedais[be_idx].port_id == port_id)
11947 break;
11948 }
11949 if (be_idx >= MSM_BACKEND_DAI_MAX) {
11950 pr_err("%s: Invalid be id %d\n", __func__, be_idx);
11951
11952 ret = -EINVAL;
11953 goto done;
11954 }
11955
11956 for_each_set_bit(i, &msm_bedais[be_idx].fe_sessions[0],
11957 MSM_FRONTEND_DAI_MM_SIZE) {
11958 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++) {
11959 copp = session_copp_map[i]
11960 [session_type][be_idx];
11961 if (test_bit(idx, &copp))
11962 break;
11963 }
11964 if (idx >= MAX_COPPS_PER_PORT)
11965 continue;
11966 else
11967 break;
11968 }
11969 if (i >= MSM_FRONTEND_DAI_MM_SIZE) {
11970 pr_err("%s: Invalid FE, exiting\n", __func__);
11971
11972 ret = -EINVAL;
11973 goto done;
11974 }
11975 *copp_idx = idx;
11976 pr_debug("%s: copp_idx=%d\n", __func__, *copp_idx);
11977
11978done:
11979 return ret;
11980}
11981
11982static int msm_audio_sound_focus_derive_port_id(struct snd_kcontrol *kcontrol,
11983 const char *prefix, int *port_id)
11984{
11985 int ret = 0;
11986
11987 pr_debug("%s: Enter, prefix:%s\n", __func__, prefix);
11988
11989 /*
11990 * Mixer control name will be like "Sound Focus Audio Tx SLIMBUS_0"
11991 * where the prefix is "Sound Focus Audio Tx ". Skip the prefix
11992 * and compare the string with the backend name to derive the port id.
11993 */
11994 if (!strcmp(kcontrol->id.name + strlen(prefix),
11995 "SLIMBUS_0")) {
11996 *port_id = SLIMBUS_0_TX;
11997 } else if (!strcmp(kcontrol->id.name + strlen(prefix),
11998 "TERT_MI2S")) {
11999 *port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
12000 } else if (!strcmp(kcontrol->id.name + strlen(prefix),
12001 "INT3_MI2S")) {
12002 *port_id = AFE_PORT_ID_INT3_MI2S_TX;
12003 } else {
12004 pr_err("%s: mixer ctl name=%s, could not derive valid port id\n",
12005 __func__, kcontrol->id.name);
12006
12007 ret = -EINVAL;
12008 goto done;
12009 }
12010 pr_debug("%s: mixer ctl name=%s, derived port_id=%d\n",
12011 __func__, kcontrol->id.name, *port_id);
12012
12013done:
12014 return ret;
12015}
12016
12017static int msm_audio_sound_focus_put(struct snd_kcontrol *kcontrol,
12018 struct snd_ctl_elem_value *ucontrol)
12019{
12020 int ret = 0;
12021 struct sound_focus_param soundFocusData;
12022 int port_id, copp_idx;
12023
12024 ret = msm_audio_sound_focus_derive_port_id(kcontrol,
12025 "Sound Focus Audio Tx ", &port_id);
12026 if (ret != 0) {
12027 pr_err("%s: Error in deriving port id, err=%d\n",
12028 __func__, ret);
12029
12030 ret = -EINVAL;
12031 goto done;
12032 }
12033
12034 ret = msm_audio_get_copp_idx_from_port_id(port_id, SESSION_TYPE_TX,
12035 &copp_idx);
12036 if (ret) {
12037 pr_err("%s: Could not get copp idx for port_id=%d\n",
12038 __func__, port_id);
12039
12040 ret = -EINVAL;
12041 goto done;
12042 }
12043
12044 memcpy((void *)&soundFocusData, ucontrol->value.bytes.data,
12045 sizeof(struct sound_focus_param));
12046
12047 ret = adm_set_sound_focus(port_id, copp_idx, soundFocusData);
12048 if (ret) {
12049 pr_err("%s: Error setting Sound Focus Params, err=%d\n",
12050 __func__, ret);
12051
12052 ret = -EINVAL;
12053 goto done;
12054 }
12055
12056done:
12057 return ret;
12058}
12059
12060static int msm_audio_sound_focus_get(struct snd_kcontrol *kcontrol,
12061 struct snd_ctl_elem_value *ucontrol)
12062{
12063 int ret = 0;
12064 struct sound_focus_param soundFocusData;
12065 int port_id, copp_idx;
12066
12067 ret = msm_audio_sound_focus_derive_port_id(kcontrol,
12068 "Sound Focus Audio Tx ", &port_id);
12069 if (ret) {
12070 pr_err("%s: Error in deriving port id, err=%d\n",
12071 __func__, ret);
12072
12073 ret = -EINVAL;
12074 goto done;
12075 }
12076
12077 ret = msm_audio_get_copp_idx_from_port_id(port_id, SESSION_TYPE_TX,
12078 &copp_idx);
12079 if (ret) {
12080 pr_err("%s: Could not get copp idx for port_id=%d\n",
12081 __func__, port_id);
12082
12083 ret = -EINVAL;
12084 goto done;
12085 }
12086
12087 ret = adm_get_sound_focus(port_id, copp_idx, &soundFocusData);
12088 if (ret) {
12089 pr_err("%s: Error getting Sound Focus Params, err=%d\n",
12090 __func__, ret);
12091
12092 ret = -EINVAL;
12093 goto done;
12094 }
12095
12096 memcpy(ucontrol->value.bytes.data, (void *)&soundFocusData,
12097 sizeof(struct sound_focus_param));
12098
12099done:
12100 return ret;
12101}
12102
12103static int msm_audio_source_tracking_get(struct snd_kcontrol *kcontrol,
12104 struct snd_ctl_elem_value *ucontrol)
12105{
12106 int ret = 0;
12107 struct source_tracking_param sourceTrackingData;
12108 int port_id, copp_idx;
12109
12110 ret = msm_audio_sound_focus_derive_port_id(kcontrol,
12111 "Source Tracking Audio Tx ", &port_id);
12112 if (ret) {
12113 pr_err("%s: Error in deriving port id, err=%d\n",
12114 __func__, ret);
12115
12116 ret = -EINVAL;
12117 goto done;
12118 }
12119
12120 ret = msm_audio_get_copp_idx_from_port_id(port_id, SESSION_TYPE_TX,
12121 &copp_idx);
12122 if (ret) {
12123 pr_err("%s: Could not get copp idx for port_id=%d\n",
12124 __func__, port_id);
12125
12126 ret = -EINVAL;
12127 goto done;
12128 }
12129
12130 ret = adm_get_source_tracking(port_id, copp_idx, &sourceTrackingData);
12131 if (ret) {
12132 pr_err("%s: Error getting Source Tracking Params, err=%d\n",
12133 __func__, ret);
12134
12135 ret = -EINVAL;
12136 goto done;
12137 }
12138
12139 memcpy(ucontrol->value.bytes.data, (void *)&sourceTrackingData,
12140 sizeof(struct source_tracking_param));
12141
12142done:
12143 return ret;
12144}
12145
12146static const struct snd_kcontrol_new msm_source_tracking_controls[] = {
12147 {
12148 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12149 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12150 .name = "Sound Focus Voice Tx SLIMBUS_0",
12151 .info = msm_sound_focus_info,
12152 .get = msm_voice_sound_focus_get,
12153 .put = msm_voice_sound_focus_put,
12154 },
12155 {
12156 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12157 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12158 .name = "Source Tracking Voice Tx SLIMBUS_0",
12159 .info = msm_source_tracking_info,
12160 .get = msm_voice_source_tracking_get,
12161 },
12162 {
12163 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12164 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12165 .name = "Sound Focus Audio Tx SLIMBUS_0",
12166 .info = msm_sound_focus_info,
12167 .get = msm_audio_sound_focus_get,
12168 .put = msm_audio_sound_focus_put,
12169 },
12170 {
12171 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12172 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12173 .name = "Source Tracking Audio Tx SLIMBUS_0",
12174 .info = msm_source_tracking_info,
12175 .get = msm_audio_source_tracking_get,
12176 },
12177 {
12178 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12179 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12180 .name = "Sound Focus Voice Tx TERT_MI2S",
12181 .info = msm_sound_focus_info,
12182 .get = msm_voice_sound_focus_get,
12183 .put = msm_voice_sound_focus_put,
12184 },
12185 {
12186 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12187 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12188 .name = "Source Tracking Voice Tx TERT_MI2S",
12189 .info = msm_source_tracking_info,
12190 .get = msm_voice_source_tracking_get,
12191 },
12192 {
12193 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12194 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12195 .name = "Sound Focus Audio Tx TERT_MI2S",
12196 .info = msm_sound_focus_info,
12197 .get = msm_audio_sound_focus_get,
12198 .put = msm_audio_sound_focus_put,
12199 },
12200 {
12201 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12202 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12203 .name = "Source Tracking Audio Tx TERT_MI2S",
12204 .info = msm_source_tracking_info,
12205 .get = msm_audio_source_tracking_get,
12206 },
12207 {
12208 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12209 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12210 .name = "Sound Focus Voice Tx INT3_MI2S",
12211 .info = msm_sound_focus_info,
12212 .get = msm_voice_sound_focus_get,
12213 .put = msm_voice_sound_focus_put,
12214 },
12215 {
12216 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12217 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12218 .name = "Source Tracking Voice Tx INT3_MI2S",
12219 .info = msm_source_tracking_info,
12220 .get = msm_voice_source_tracking_get,
12221 },
12222 {
12223 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12224 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12225 .name = "Sound Focus Audio Tx INT3_MI2S",
12226 .info = msm_sound_focus_info,
12227 .get = msm_audio_sound_focus_get,
12228 .put = msm_audio_sound_focus_put,
12229 },
12230 {
12231 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12232 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12233 .name = "Source Tracking Audio Tx INT3_MI2S",
12234 .info = msm_source_tracking_info,
12235 .get = msm_audio_source_tracking_get,
12236 },
12237};
12238
12239static int spkr_prot_put_vi_lch_port(struct snd_kcontrol *kcontrol,
12240 struct snd_ctl_elem_value *ucontrol)
12241{
12242 int ret = 0;
12243 int item;
12244 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
12245
12246 pr_debug("%s item is %d\n", __func__,
12247 ucontrol->value.enumerated.item[0]);
12248 mutex_lock(&routing_lock);
12249 item = ucontrol->value.enumerated.item[0];
12250 if (item < e->items) {
12251 pr_debug("%s RX DAI ID %d TX DAI id %d\n",
12252 __func__, e->shift_l, e->values[item]);
12253 if (e->shift_l < MSM_BACKEND_DAI_MAX &&
12254 e->values[item] < MSM_BACKEND_DAI_MAX)
12255 /* Enable feedback TX path */
12256 ret = afe_spk_prot_feed_back_cfg(
12257 msm_bedais[e->values[item]].port_id,
12258 msm_bedais[e->shift_l].port_id, 1, 0, 1);
12259 else {
12260 pr_debug("%s values are out of range item %d\n",
12261 __func__, e->values[item]);
12262 /* Disable feedback TX path */
12263 if (e->values[item] == MSM_BACKEND_DAI_MAX)
12264 ret = afe_spk_prot_feed_back_cfg(0, 0, 0, 0, 0);
12265 else
12266 ret = -EINVAL;
12267 }
12268 } else {
12269 pr_err("%s item value is out of range item\n", __func__);
12270 ret = -EINVAL;
12271 }
12272 mutex_unlock(&routing_lock);
12273 return ret;
12274}
12275
12276static int spkr_prot_put_vi_rch_port(struct snd_kcontrol *kcontrol,
12277 struct snd_ctl_elem_value *ucontrol)
12278{
12279 int ret = 0;
12280 int item;
12281 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
12282
12283 pr_debug("%s item is %d\n", __func__,
12284 ucontrol->value.enumerated.item[0]);
12285 mutex_lock(&routing_lock);
12286 item = ucontrol->value.enumerated.item[0];
12287 if (item < e->items) {
12288 pr_debug("%s RX DAI ID %d TX DAI id %d\n",
12289 __func__, e->shift_l, e->values[item]);
12290 if (e->shift_l < MSM_BACKEND_DAI_MAX &&
12291 e->values[item] < MSM_BACKEND_DAI_MAX)
12292 /* Enable feedback TX path */
12293 ret = afe_spk_prot_feed_back_cfg(
12294 msm_bedais[e->values[item]].port_id,
12295 msm_bedais[e->shift_l].port_id,
12296 1, 1, 1);
12297 else {
12298 pr_debug("%s values are out of range item %d\n",
12299 __func__, e->values[item]);
12300 /* Disable feedback TX path */
12301 if (e->values[item] == MSM_BACKEND_DAI_MAX)
12302 ret = afe_spk_prot_feed_back_cfg(0,
12303 0, 0, 0, 0);
12304 else
12305 ret = -EINVAL;
12306 }
12307 } else {
12308 pr_err("%s item value is out of range item\n", __func__);
12309 ret = -EINVAL;
12310 }
12311 mutex_unlock(&routing_lock);
12312 return ret;
12313}
12314
12315static int spkr_prot_get_vi_lch_port(struct snd_kcontrol *kcontrol,
12316 struct snd_ctl_elem_value *ucontrol)
12317{
12318 pr_debug("%s\n", __func__);
12319 return 0;
12320}
12321
12322static int spkr_prot_get_vi_rch_port(struct snd_kcontrol *kcontrol,
12323 struct snd_ctl_elem_value *ucontrol)
12324{
12325 pr_debug("%s\n", __func__);
12326 ucontrol->value.enumerated.item[0] = 0;
12327 return 0;
12328}
12329
12330static const char * const slim0_rx_vi_fb_tx_lch_mux_text[] = {
12331 "ZERO", "SLIM4_TX"
12332};
12333
12334static const char * const slim0_rx_vi_fb_tx_rch_mux_text[] = {
12335 "ZERO", "SLIM4_TX"
12336};
12337
12338static const char * const mi2s_rx_vi_fb_tx_mux_text[] = {
12339 "ZERO", "SENARY_TX"
12340};
12341
12342static const char * const int4_mi2s_rx_vi_fb_tx_mono_mux_text[] = {
12343 "ZERO", "INT5_MI2S_TX"
12344};
12345
12346static const char * const int4_mi2s_rx_vi_fb_tx_stereo_mux_text[] = {
12347 "ZERO", "INT5_MI2S_TX"
12348};
12349
12350static const int const slim0_rx_vi_fb_tx_lch_value[] = {
12351 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_SLIMBUS_4_TX
12352};
12353
12354static const int const slim0_rx_vi_fb_tx_rch_value[] = {
12355 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_SLIMBUS_4_TX
12356};
12357
12358static const int const mi2s_rx_vi_fb_tx_value[] = {
12359 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_SENARY_MI2S_TX
12360};
12361
12362static const int const int4_mi2s_rx_vi_fb_tx_mono_ch_value[] = {
12363 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_INT5_MI2S_TX
12364};
12365
12366static const int const int4_mi2s_rx_vi_fb_tx_stereo_ch_value[] = {
12367 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_INT5_MI2S_TX
12368};
12369
12370static const struct soc_enum slim0_rx_vi_fb_lch_mux_enum =
12371 SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_SLIMBUS_0_RX, 0, 0,
12372 ARRAY_SIZE(slim0_rx_vi_fb_tx_lch_mux_text),
12373 slim0_rx_vi_fb_tx_lch_mux_text, slim0_rx_vi_fb_tx_lch_value);
12374
12375static const struct soc_enum slim0_rx_vi_fb_rch_mux_enum =
12376 SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_SLIMBUS_0_RX, 0, 0,
12377 ARRAY_SIZE(slim0_rx_vi_fb_tx_rch_mux_text),
12378 slim0_rx_vi_fb_tx_rch_mux_text, slim0_rx_vi_fb_tx_rch_value);
12379
12380static const struct soc_enum mi2s_rx_vi_fb_mux_enum =
12381 SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_PRI_MI2S_RX, 0, 0,
12382 ARRAY_SIZE(mi2s_rx_vi_fb_tx_mux_text),
12383 mi2s_rx_vi_fb_tx_mux_text, mi2s_rx_vi_fb_tx_value);
12384
12385static const struct soc_enum int4_mi2s_rx_vi_fb_mono_ch_mux_enum =
12386 SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_INT4_MI2S_RX, 0, 0,
12387 ARRAY_SIZE(int4_mi2s_rx_vi_fb_tx_mono_mux_text),
12388 int4_mi2s_rx_vi_fb_tx_mono_mux_text,
12389 int4_mi2s_rx_vi_fb_tx_mono_ch_value);
12390
12391static const struct soc_enum int4_mi2s_rx_vi_fb_stereo_ch_mux_enum =
12392 SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_INT4_MI2S_RX, 0, 0,
12393 ARRAY_SIZE(int4_mi2s_rx_vi_fb_tx_stereo_mux_text),
12394 int4_mi2s_rx_vi_fb_tx_stereo_mux_text,
12395 int4_mi2s_rx_vi_fb_tx_stereo_ch_value);
12396
12397static const struct snd_kcontrol_new slim0_rx_vi_fb_lch_mux =
12398 SOC_DAPM_ENUM_EXT("SLIM0_RX_VI_FB_LCH_MUX",
12399 slim0_rx_vi_fb_lch_mux_enum, spkr_prot_get_vi_lch_port,
12400 spkr_prot_put_vi_lch_port);
12401
12402static const struct snd_kcontrol_new slim0_rx_vi_fb_rch_mux =
12403 SOC_DAPM_ENUM_EXT("SLIM0_RX_VI_FB_RCH_MUX",
12404 slim0_rx_vi_fb_rch_mux_enum, spkr_prot_get_vi_rch_port,
12405 spkr_prot_put_vi_rch_port);
12406
12407static const struct snd_kcontrol_new mi2s_rx_vi_fb_mux =
12408 SOC_DAPM_ENUM_EXT("PRI_MI2S_RX_VI_FB_MUX",
12409 mi2s_rx_vi_fb_mux_enum, spkr_prot_get_vi_lch_port,
12410 spkr_prot_put_vi_lch_port);
12411
12412static const struct snd_kcontrol_new int4_mi2s_rx_vi_fb_mono_ch_mux =
12413 SOC_DAPM_ENUM_EXT("INT4_MI2S_RX_VI_FB_MONO_CH_MUX",
12414 int4_mi2s_rx_vi_fb_mono_ch_mux_enum, spkr_prot_get_vi_lch_port,
12415 spkr_prot_put_vi_lch_port);
12416
12417static const struct snd_kcontrol_new int4_mi2s_rx_vi_fb_stereo_ch_mux =
12418 SOC_DAPM_ENUM_EXT("INT4_MI2S_RX_VI_FB_STEREO_CH_MUX",
12419 int4_mi2s_rx_vi_fb_stereo_ch_mux_enum, spkr_prot_get_vi_rch_port,
12420 spkr_prot_put_vi_rch_port);
12421
12422static const struct snd_soc_dapm_widget msm_qdsp6_widgets[] = {
12423 /* Frontend AIF */
12424 /* Widget name equals to Front-End DAI name<Need confirmation>,
12425 * Stream name must contains substring of front-end dai name
12426 */
12427 SND_SOC_DAPM_AIF_IN("MM_DL1", "MultiMedia1 Playback", 0, 0, 0, 0),
12428 SND_SOC_DAPM_AIF_IN("MM_DL2", "MultiMedia2 Playback", 0, 0, 0, 0),
12429 SND_SOC_DAPM_AIF_IN("MM_DL3", "MultiMedia3 Playback", 0, 0, 0, 0),
12430 SND_SOC_DAPM_AIF_IN("MM_DL4", "MultiMedia4 Playback", 0, 0, 0, 0),
12431 SND_SOC_DAPM_AIF_IN("MM_DL5", "MultiMedia5 Playback", 0, 0, 0, 0),
12432 SND_SOC_DAPM_AIF_IN("MM_DL6", "MultiMedia6 Playback", 0, 0, 0, 0),
12433 SND_SOC_DAPM_AIF_IN("MM_DL7", "MultiMedia7 Playback", 0, 0, 0, 0),
12434 SND_SOC_DAPM_AIF_IN("MM_DL8", "MultiMedia8 Playback", 0, 0, 0, 0),
12435 SND_SOC_DAPM_AIF_IN("MM_DL9", "MultiMedia9 Playback", 0, 0, 0, 0),
12436 SND_SOC_DAPM_AIF_IN("MM_DL10", "MultiMedia10 Playback", 0, 0, 0, 0),
12437 SND_SOC_DAPM_AIF_IN("MM_DL11", "MultiMedia11 Playback", 0, 0, 0, 0),
12438 SND_SOC_DAPM_AIF_IN("MM_DL12", "MultiMedia12 Playback", 0, 0, 0, 0),
12439 SND_SOC_DAPM_AIF_IN("MM_DL13", "MultiMedia13 Playback", 0, 0, 0, 0),
12440 SND_SOC_DAPM_AIF_IN("MM_DL14", "MultiMedia14 Playback", 0, 0, 0, 0),
12441 SND_SOC_DAPM_AIF_IN("MM_DL15", "MultiMedia15 Playback", 0, 0, 0, 0),
12442 SND_SOC_DAPM_AIF_IN("MM_DL16", "MultiMedia16 Playback", 0, 0, 0, 0),
12443 SND_SOC_DAPM_AIF_IN("MM_DL20", "MultiMedia20 Playback", 0, 0, 0, 0),
12444 SND_SOC_DAPM_AIF_IN("VOIP_DL", "VoIP Playback", 0, 0, 0, 0),
12445 SND_SOC_DAPM_AIF_OUT("MM_UL1", "MultiMedia1 Capture", 0, 0, 0, 0),
12446 SND_SOC_DAPM_AIF_OUT("MM_UL2", "MultiMedia2 Capture", 0, 0, 0, 0),
12447 SND_SOC_DAPM_AIF_OUT("MM_UL3", "MultiMedia3 Capture", 0, 0, 0, 0),
12448 SND_SOC_DAPM_AIF_OUT("MM_UL4", "MultiMedia4 Capture", 0, 0, 0, 0),
12449 SND_SOC_DAPM_AIF_OUT("MM_UL5", "MultiMedia5 Capture", 0, 0, 0, 0),
12450 SND_SOC_DAPM_AIF_OUT("MM_UL6", "MultiMedia6 Capture", 0, 0, 0, 0),
12451 SND_SOC_DAPM_AIF_OUT("MM_UL8", "MultiMedia8 Capture", 0, 0, 0, 0),
12452 SND_SOC_DAPM_AIF_OUT("MM_UL9", "MultiMedia9 Capture", 0, 0, 0, 0),
Laxminath Kasam38070be2017-08-17 18:21:59 +053012453 SND_SOC_DAPM_AIF_OUT("MM_UL10", "MultiMedia10 Capture", 0, 0, 0, 0),
Asish Bhattacharya34504582017-08-08 12:55:01 +053012454 SND_SOC_DAPM_AIF_OUT("MM_UL16", "MultiMedia16 Capture", 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012455 SND_SOC_DAPM_AIF_OUT("MM_UL17", "MultiMedia17 Capture", 0, 0, 0, 0),
12456 SND_SOC_DAPM_AIF_OUT("MM_UL18", "MultiMedia18 Capture", 0, 0, 0, 0),
12457 SND_SOC_DAPM_AIF_OUT("MM_UL19", "MultiMedia19 Capture", 0, 0, 0, 0),
12458 SND_SOC_DAPM_AIF_OUT("MM_UL20", "MultiMedia20 Capture", 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012459 SND_SOC_DAPM_AIF_OUT("VOIP_UL", "VoIP Capture", 0, 0, 0, 0),
12460 SND_SOC_DAPM_AIF_IN("VOICEMMODE1_DL",
12461 "VoiceMMode1 Playback", 0, 0, 0, 0),
12462 SND_SOC_DAPM_AIF_OUT("VOICEMMODE1_UL",
12463 "VoiceMMode1 Capture", 0, 0, 0, 0),
12464 SND_SOC_DAPM_AIF_IN("VOICEMMODE2_DL",
12465 "VoiceMMode2 Playback", 0, 0, 0, 0),
12466 SND_SOC_DAPM_AIF_OUT("VOICEMMODE2_UL",
12467 "VoiceMMode2 Capture", 0, 0, 0, 0),
12468 SND_SOC_DAPM_AIF_IN("SLIM0_DL_HL", "SLIMBUS0_HOSTLESS Playback",
12469 0, 0, 0, 0),
12470 SND_SOC_DAPM_AIF_OUT("SLIM0_UL_HL", "SLIMBUS0_HOSTLESS Capture",
12471 0, 0, 0, 0),
12472 SND_SOC_DAPM_AIF_OUT("CPE_LSM_UL_HL", "CPE LSM capture",
12473 0, 0, 0, 0),
12474 SND_SOC_DAPM_AIF_IN("SLIM1_DL_HL", "SLIMBUS1_HOSTLESS Playback",
12475 0, 0, 0, 0),
12476 SND_SOC_DAPM_AIF_OUT("SLIM1_UL_HL", "SLIMBUS1_HOSTLESS Capture",
12477 0, 0, 0, 0),
12478 SND_SOC_DAPM_AIF_IN("SLIM3_DL_HL", "SLIMBUS3_HOSTLESS Playback",
12479 0, 0, 0, 0),
12480 SND_SOC_DAPM_AIF_OUT("SLIM3_UL_HL", "SLIMBUS3_HOSTLESS Capture",
12481 0, 0, 0, 0),
12482 SND_SOC_DAPM_AIF_IN("SLIM4_DL_HL", "SLIMBUS4_HOSTLESS Playback",
12483 0, 0, 0, 0),
12484 SND_SOC_DAPM_AIF_OUT("SLIM4_UL_HL", "SLIMBUS4_HOSTLESS Capture",
12485 0, 0, 0, 0),
12486 SND_SOC_DAPM_AIF_IN("SLIM6_DL_HL", "SLIMBUS6_HOSTLESS Playback",
12487 0, 0, 0, 0),
12488 SND_SOC_DAPM_AIF_OUT("SLIM6_UL_HL", "SLIMBUS6_HOSTLESS Capture",
12489 0, 0, 0, 0),
12490 SND_SOC_DAPM_AIF_IN("SLIM7_DL_HL", "SLIMBUS7_HOSTLESS Playback",
12491 0, 0, 0, 0),
12492 SND_SOC_DAPM_AIF_OUT("SLIM7_UL_HL", "SLIMBUS7_HOSTLESS Capture",
12493 0, 0, 0, 0),
12494 SND_SOC_DAPM_AIF_IN("SLIM8_DL_HL", "SLIMBUS8_HOSTLESS Playback",
12495 0, 0, 0, 0),
12496 SND_SOC_DAPM_AIF_OUT("SLIM8_UL_HL", "SLIMBUS8_HOSTLESS Capture",
12497 0, 0, 0, 0),
12498 SND_SOC_DAPM_AIF_IN("INTFM_DL_HL", "INT_FM_HOSTLESS Playback",
12499 0, 0, 0, 0),
12500 SND_SOC_DAPM_AIF_OUT("INTFM_UL_HL", "INT_FM_HOSTLESS Capture",
12501 0, 0, 0, 0),
12502 SND_SOC_DAPM_AIF_IN("INTHFP_DL_HL", "INT_HFP_BT_HOSTLESS Playback",
12503 0, 0, 0, 0),
12504 SND_SOC_DAPM_AIF_OUT("INTHFP_UL_HL", "INT_HFP_BT_HOSTLESS Capture",
12505 0, 0, 0, 0),
12506 SND_SOC_DAPM_AIF_IN("USBAUDIO_DL_HL", "USBAUDIO_HOSTLESS Playback",
12507 0, 0, 0, 0),
12508 SND_SOC_DAPM_AIF_OUT("USBAUDIO_UL_HL", "USBAUDIO_HOSTLESS Capture",
12509 0, 0, 0, 0),
12510 SND_SOC_DAPM_AIF_IN("HDMI_DL_HL", "HDMI_HOSTLESS Playback", 0, 0, 0, 0),
12511 SND_SOC_DAPM_AIF_IN("SEC_I2S_DL_HL", "SEC_I2S_RX_HOSTLESS Playback",
12512 0, 0, 0, 0),
12513 SND_SOC_DAPM_AIF_IN("INT0_MI2S_DL_HL",
12514 "INT0 MI2S_RX Hostless Playback",
12515 0, 0, 0, 0),
12516 SND_SOC_DAPM_AIF_IN("INT4_MI2S_DL_HL",
12517 "INT4 MI2S_RX Hostless Playback",
12518 0, 0, 0, 0),
12519 SND_SOC_DAPM_AIF_IN("PRI_MI2S_DL_HL",
12520 "Primary MI2S_RX Hostless Playback",
12521 0, 0, 0, 0),
12522 SND_SOC_DAPM_AIF_IN("SEC_MI2S_DL_HL",
12523 "Secondary MI2S_RX Hostless Playback",
12524 0, 0, 0, 0),
12525 SND_SOC_DAPM_AIF_IN("TERT_MI2S_DL_HL",
12526 "Tertiary MI2S_RX Hostless Playback",
12527 0, 0, 0, 0),
12528 SND_SOC_DAPM_AIF_IN("QUAT_MI2S_DL_HL",
12529 "Quaternary MI2S_RX Hostless Playback",
12530 0, 0, 0, 0),
Rohit Kumara5077932017-09-10 22:05:05 +053012531 SND_SOC_DAPM_AIF_IN("QUIN_MI2S_DL_HL",
12532 "Quinary MI2S_RX Hostless Playback",
12533 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012534
12535 SND_SOC_DAPM_AIF_IN("AUXPCM_DL_HL", "AUXPCM_HOSTLESS Playback",
12536 0, 0, 0, 0),
12537 SND_SOC_DAPM_AIF_OUT("AUXPCM_UL_HL", "AUXPCM_HOSTLESS Capture",
12538 0, 0, 0, 0),
12539 SND_SOC_DAPM_AIF_OUT("MI2S_UL_HL", "MI2S_TX_HOSTLESS Capture",
12540 0, 0, 0, 0),
12541 SND_SOC_DAPM_AIF_OUT("INT3_MI2S_UL_HL",
12542 "INT3 MI2S_TX Hostless Capture",
12543 0, 0, 0, 0),
12544 SND_SOC_DAPM_AIF_OUT("TERT_MI2S_UL_HL",
12545 "Tertiary MI2S_TX Hostless Capture",
12546 0, 0, 0, 0),
12547 SND_SOC_DAPM_AIF_OUT("SEC_MI2S_UL_HL",
12548 "Secondary MI2S_TX Hostless Capture",
12549 0, 0, 0, 0),
12550 SND_SOC_DAPM_AIF_OUT("PRI_MI2S_UL_HL",
12551 "Primary MI2S_TX Hostless Capture",
12552 0, 0, 0, 0),
12553 SND_SOC_DAPM_AIF_OUT("MI2S_DL_HL", "MI2S_RX_HOSTLESS Playback",
12554 0, 0, 0, 0),
12555 SND_SOC_DAPM_AIF_IN("DTMF_DL_HL", "DTMF_RX_HOSTLESS Playback",
12556 0, 0, 0, 0),
12557 SND_SOC_DAPM_AIF_OUT("QUAT_MI2S_UL_HL",
12558 "Quaternary MI2S_TX Hostless Capture",
12559 0, 0, 0, 0),
Rohit Kumara5077932017-09-10 22:05:05 +053012560 SND_SOC_DAPM_AIF_OUT("QUIN_MI2S_UL_HL",
12561 "Quinary MI2S_TX Hostless Capture",
12562 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012563
12564 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_0_DL_HL",
12565 "Primary TDM0 Hostless Playback",
12566 0, 0, 0, 0),
12567 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_0_UL_HL",
12568 "Primary TDM0 Hostless Capture",
12569 0, 0, 0, 0),
12570 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_1_DL_HL",
12571 "Primary TDM1 Hostless Playback",
12572 0, 0, 0, 0),
12573 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_1_UL_HL",
12574 "Primary TDM1 Hostless Capture",
12575 0, 0, 0, 0),
12576 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_2_DL_HL",
12577 "Primary TDM2 Hostless Playback",
12578 0, 0, 0, 0),
12579 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_2_UL_HL",
12580 "Primary TDM2 Hostless Capture",
12581 0, 0, 0, 0),
12582 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_3_DL_HL",
12583 "Primary TDM3 Hostless Playback",
12584 0, 0, 0, 0),
12585 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_3_UL_HL",
12586 "Primary TDM3 Hostless Capture",
12587 0, 0, 0, 0),
12588 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_4_DL_HL",
12589 "Primary TDM4 Hostless Playback",
12590 0, 0, 0, 0),
12591 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_4_UL_HL",
12592 "Primary TDM4 Hostless Capture",
12593 0, 0, 0, 0),
12594 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_5_DL_HL",
12595 "Primary TDM5 Hostless Playback",
12596 0, 0, 0, 0),
12597 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_5_UL_HL",
12598 "Primary TDM5 Hostless Capture",
12599 0, 0, 0, 0),
12600 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_6_DL_HL",
12601 "Primary TDM6 Hostless Playback",
12602 0, 0, 0, 0),
12603 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_6_UL_HL",
12604 "Primary TDM6 Hostless Capture",
12605 0, 0, 0, 0),
12606 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_7_DL_HL",
12607 "Primary TDM7 Hostless Playback",
12608 0, 0, 0, 0),
12609 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_7_UL_HL",
12610 "Primary TDM7 Hostless Capture",
12611 0, 0, 0, 0),
12612 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_0_DL_HL",
12613 "Secondary TDM0 Hostless Playback",
12614 0, 0, 0, 0),
12615 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_0_UL_HL",
12616 "Secondary TDM0 Hostless Capture",
12617 0, 0, 0, 0),
12618 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_1_DL_HL",
12619 "Secondary TDM1 Hostless Playback",
12620 0, 0, 0, 0),
12621 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_1_UL_HL",
12622 "Secondary TDM1 Hostless Capture",
12623 0, 0, 0, 0),
12624 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_2_DL_HL",
12625 "Secondary TDM2 Hostless Playback",
12626 0, 0, 0, 0),
12627 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_2_UL_HL",
12628 "Secondary TDM2 Hostless Capture",
12629 0, 0, 0, 0),
12630 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_3_DL_HL",
12631 "Secondary TDM3 Hostless Playback",
12632 0, 0, 0, 0),
12633 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_3_UL_HL",
12634 "Secondary TDM3 Hostless Capture",
12635 0, 0, 0, 0),
12636 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_4_DL_HL",
12637 "Secondary TDM4 Hostless Playback",
12638 0, 0, 0, 0),
12639 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_4_UL_HL",
12640 "Secondary TDM4 Hostless Capture",
12641 0, 0, 0, 0),
12642 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_5_DL_HL",
12643 "Secondary TDM5 Hostless Playback",
12644 0, 0, 0, 0),
12645 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_5_UL_HL",
12646 "Secondary TDM5 Hostless Capture",
12647 0, 0, 0, 0),
12648 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_6_DL_HL",
12649 "Secondary TDM6 Hostless Playback",
12650 0, 0, 0, 0),
12651 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_6_UL_HL",
12652 "Secondary TDM6 Hostless Capture",
12653 0, 0, 0, 0),
12654 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_7_DL_HL",
12655 "Secondary TDM7 Hostless Playback",
12656 0, 0, 0, 0),
12657 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_7_UL_HL",
12658 "Secondary TDM7 Hostless Capture",
12659 0, 0, 0, 0),
12660 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_0_DL_HL",
12661 "Tertiary TDM0 Hostless Playback",
12662 0, 0, 0, 0),
12663 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_0_UL_HL",
12664 "Tertiary TDM0 Hostless Capture",
12665 0, 0, 0, 0),
12666 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_1_DL_HL",
12667 "Tertiary TDM1 Hostless Playback",
12668 0, 0, 0, 0),
12669 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_1_UL_HL",
12670 "Tertiary TDM1 Hostless Capture",
12671 0, 0, 0, 0),
12672 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_2_DL_HL",
12673 "Tertiary TDM2 Hostless Playback",
12674 0, 0, 0, 0),
12675 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_2_UL_HL",
12676 "Tertiary TDM2 Hostless Capture",
12677 0, 0, 0, 0),
12678 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_3_DL_HL",
12679 "Tertiary TDM3 Hostless Playback",
12680 0, 0, 0, 0),
12681 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_3_UL_HL",
12682 "Tertiary TDM3 Hostless Capture",
12683 0, 0, 0, 0),
12684 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_4_DL_HL",
12685 "Tertiary TDM4 Hostless Playback",
12686 0, 0, 0, 0),
12687 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_4_UL_HL",
12688 "Tertiary TDM4 Hostless Capture",
12689 0, 0, 0, 0),
12690 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_5_DL_HL",
12691 "Tertiary TDM5 Hostless Playback",
12692 0, 0, 0, 0),
12693 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_5_UL_HL",
12694 "Tertiary TDM5 Hostless Capture",
12695 0, 0, 0, 0),
12696 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_6_DL_HL",
12697 "Tertiary TDM6 Hostless Playback",
12698 0, 0, 0, 0),
12699 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_6_UL_HL",
12700 "Tertiary TDM6 Hostless Capture",
12701 0, 0, 0, 0),
12702 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_7_DL_HL",
12703 "Tertiary TDM7 Hostless Playback",
12704 0, 0, 0, 0),
12705 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_7_UL_HL",
12706 "Tertiary TDM7 Hostless Capture",
12707 0, 0, 0, 0),
12708 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_0_DL_HL",
12709 "Quaternary TDM0 Hostless Playback",
12710 0, 0, 0, 0),
12711 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_0_UL_HL",
12712 "Quaternary TDM0 Hostless Capture",
12713 0, 0, 0, 0),
12714 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_1_DL_HL",
12715 "Quaternary TDM1 Hostless Playback",
12716 0, 0, 0, 0),
12717 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_1_UL_HL",
12718 "Quaternary TDM1 Hostless Capture",
12719 0, 0, 0, 0),
12720 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_2_DL_HL",
12721 "Quaternary TDM2 Hostless Playback",
12722 0, 0, 0, 0),
12723 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_2_UL_HL",
12724 "Quaternary TDM2 Hostless Capture",
12725 0, 0, 0, 0),
12726 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_3_DL_HL",
12727 "Quaternary TDM3 Hostless Playback",
12728 0, 0, 0, 0),
12729 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_3_UL_HL",
12730 "Quaternary TDM3 Hostless Capture",
12731 0, 0, 0, 0),
12732 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_4_DL_HL",
12733 "Quaternary TDM4 Hostless Playback",
12734 0, 0, 0, 0),
12735 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_4_UL_HL",
12736 "Quaternary TDM4 Hostless Capture",
12737 0, 0, 0, 0),
12738 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_5_DL_HL",
12739 "Quaternary TDM5 Hostless Playback",
12740 0, 0, 0, 0),
12741 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_5_UL_HL",
12742 "Quaternary TDM5 Hostless Capture",
12743 0, 0, 0, 0),
12744 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_6_DL_HL",
12745 "Quaternary TDM6 Hostless Playback",
12746 0, 0, 0, 0),
12747 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_6_UL_HL",
12748 "Quaternary TDM6 Hostless Capture",
12749 0, 0, 0, 0),
12750 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_7_DL_HL",
12751 "Quaternary TDM7 Hostless Playback",
12752 0, 0, 0, 0),
12753 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_7_UL_HL",
12754 "Quaternary TDM7 Hostless Capture",
12755 0, 0, 0, 0),
Rohit Kumara5077932017-09-10 22:05:05 +053012756 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_0_DL_HL",
12757 "Quinary TDM0 Hostless Playback",
12758 0, 0, 0, 0),
12759 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_0_UL_HL",
12760 "Quinary TDM0 Hostless Capture",
12761 0, 0, 0, 0),
12762 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_1_DL_HL",
12763 "Quinary TDM1 Hostless Playback",
12764 0, 0, 0, 0),
12765 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_1_UL_HL",
12766 "Quinary TDM1 Hostless Capture",
12767 0, 0, 0, 0),
12768 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_2_DL_HL",
12769 "Quinary TDM2 Hostless Playback",
12770 0, 0, 0, 0),
12771 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_2_UL_HL",
12772 "Quinary TDM2 Hostless Capture",
12773 0, 0, 0, 0),
12774 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_3_DL_HL",
12775 "Quinary TDM3 Hostless Playback",
12776 0, 0, 0, 0),
12777 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_3_UL_HL",
12778 "Quinary TDM3 Hostless Capture",
12779 0, 0, 0, 0),
12780 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_4_DL_HL",
12781 "Quinary TDM4 Hostless Playback",
12782 0, 0, 0, 0),
12783 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_4_UL_HL",
12784 "Quinary TDM4 Hostless Capture",
12785 0, 0, 0, 0),
12786 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_5_DL_HL",
12787 "Quinary TDM5 Hostless Playback",
12788 0, 0, 0, 0),
12789 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_5_UL_HL",
12790 "Quinary TDM5 Hostless Capture",
12791 0, 0, 0, 0),
12792 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_6_DL_HL",
12793 "Quinary TDM6 Hostless Playback",
12794 0, 0, 0, 0),
12795 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_6_UL_HL",
12796 "Quinary TDM6 Hostless Capture",
12797 0, 0, 0, 0),
12798 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_7_DL_HL",
12799 "Quinary TDM7 Hostless Playback",
12800 0, 0, 0, 0),
12801 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_7_UL_HL",
12802 "Quinary TDM7 Hostless Capture",
12803 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012804
12805 /* LSM */
12806 SND_SOC_DAPM_AIF_OUT("LSM1_UL_HL", "Listen 1 Audio Service Capture",
12807 0, 0, 0, 0),
12808 SND_SOC_DAPM_AIF_OUT("LSM2_UL_HL", "Listen 2 Audio Service Capture",
12809 0, 0, 0, 0),
12810 SND_SOC_DAPM_AIF_OUT("LSM3_UL_HL", "Listen 3 Audio Service Capture",
12811 0, 0, 0, 0),
12812 SND_SOC_DAPM_AIF_OUT("LSM4_UL_HL", "Listen 4 Audio Service Capture",
12813 0, 0, 0, 0),
12814 SND_SOC_DAPM_AIF_OUT("LSM5_UL_HL", "Listen 5 Audio Service Capture",
12815 0, 0, 0, 0),
12816 SND_SOC_DAPM_AIF_OUT("LSM6_UL_HL", "Listen 6 Audio Service Capture",
12817 0, 0, 0, 0),
12818 SND_SOC_DAPM_AIF_OUT("LSM7_UL_HL", "Listen 7 Audio Service Capture",
12819 0, 0, 0, 0),
12820 SND_SOC_DAPM_AIF_OUT("LSM8_UL_HL", "Listen 8 Audio Service Capture",
12821 0, 0, 0, 0),
12822 SND_SOC_DAPM_AIF_IN("QCHAT_DL", "QCHAT Playback", 0, 0, 0, 0),
12823 SND_SOC_DAPM_AIF_OUT("QCHAT_UL", "QCHAT Capture", 0, 0, 0, 0),
12824 /* Backend AIF */
12825 /* Stream name equals to backend dai link stream name */
12826 SND_SOC_DAPM_AIF_OUT("PRI_I2S_RX", "Primary I2S Playback", 0, 0, 0, 0),
12827 SND_SOC_DAPM_AIF_OUT("SEC_I2S_RX", "Secondary I2S Playback",
12828 0, 0, 0, 0),
12829 SND_SOC_DAPM_AIF_OUT("SPDIF_RX", "SPDIF Playback", 0, 0, 0, 0),
12830 SND_SOC_DAPM_AIF_OUT("SLIMBUS_0_RX", "Slimbus Playback", 0, 0, 0, 0),
12831 SND_SOC_DAPM_AIF_OUT("SLIMBUS_2_RX", "Slimbus2 Playback", 0, 0, 0, 0),
12832 SND_SOC_DAPM_AIF_OUT("SLIMBUS_5_RX", "Slimbus5 Playback", 0, 0, 0, 0),
12833 SND_SOC_DAPM_AIF_OUT("HDMI", "HDMI Playback", 0, 0, 0, 0),
12834 SND_SOC_DAPM_AIF_OUT("DISPLAY_PORT", "Display Port Playback",
12835 0, 0, 0, 0),
12836 SND_SOC_DAPM_AIF_OUT("MI2S_RX", "MI2S Playback", 0, 0, 0, 0),
12837 SND_SOC_DAPM_AIF_OUT("QUAT_MI2S_RX", "Quaternary MI2S Playback",
12838 0, 0, 0, 0),
12839 SND_SOC_DAPM_AIF_OUT("TERT_MI2S_RX", "Tertiary MI2S Playback",
12840 0, 0, 0, 0),
12841 SND_SOC_DAPM_AIF_OUT("SEC_MI2S_RX", "Secondary MI2S Playback",
12842 0, 0, 0, 0),
12843 SND_SOC_DAPM_AIF_OUT("SEC_MI2S_RX_SD1",
12844 "Secondary MI2S Playback SD1",
12845 0, 0, 0, 0),
12846 SND_SOC_DAPM_AIF_OUT("PRI_MI2S_RX", "Primary MI2S Playback",
12847 0, 0, 0, 0),
12848 SND_SOC_DAPM_AIF_OUT("INT0_MI2S_RX", "INT0 MI2S Playback",
12849 0, 0, 0, 0),
12850 SND_SOC_DAPM_AIF_OUT("INT4_MI2S_RX", "INT4 MI2S Playback",
12851 0, 0, 0, 0),
12852 SND_SOC_DAPM_AIF_OUT("QUIN_MI2S_RX", "Quinary MI2S Playback",
12853 0, 0, 0, 0),
12854 SND_SOC_DAPM_AIF_IN("PRI_I2S_TX", "Primary I2S Capture", 0, 0, 0, 0),
12855 SND_SOC_DAPM_AIF_IN("MI2S_TX", "MI2S Capture", 0, 0, 0, 0),
12856 SND_SOC_DAPM_AIF_IN("QUAT_MI2S_TX", "Quaternary MI2S Capture",
12857 0, 0, 0, 0),
12858 SND_SOC_DAPM_AIF_IN("PRI_MI2S_TX", "Primary MI2S Capture",
12859 0, 0, 0, 0),
12860 SND_SOC_DAPM_AIF_IN("TERT_MI2S_TX", "Tertiary MI2S Capture",
12861 0, 0, 0, 0),
12862 SND_SOC_DAPM_AIF_IN("INT2_MI2S_TX", "INT2 MI2S Capture",
12863 0, 0, 0, 0),
12864 SND_SOC_DAPM_AIF_IN("INT3_MI2S_TX", "INT3 MI2S Capture",
12865 0, 0, 0, 0),
12866 SND_SOC_DAPM_AIF_IN("SEC_MI2S_TX", "Secondary MI2S Capture",
12867 0, 0, 0, 0),
12868 SND_SOC_DAPM_AIF_IN("SLIMBUS_0_TX", "Slimbus Capture", 0, 0, 0, 0),
12869 SND_SOC_DAPM_AIF_IN("SLIMBUS_2_TX", "Slimbus2 Capture", 0, 0, 0, 0),
12870 SND_SOC_DAPM_AIF_IN("QUIN_MI2S_TX", "Quinary MI2S Capture",
12871 0, 0, 0, 0),
12872 SND_SOC_DAPM_AIF_IN("SENARY_MI2S_TX", "Senary MI2S Capture",
12873 0, 0, 0, 0),
12874 SND_SOC_DAPM_AIF_OUT("INT_BT_SCO_RX", "Internal BT-SCO Playback",
12875 0, 0, 0, 0),
12876 SND_SOC_DAPM_AIF_IN("INT_BT_SCO_TX", "Internal BT-SCO Capture",
12877 0, 0, 0, 0),
12878 SND_SOC_DAPM_AIF_OUT("INT_BT_A2DP_RX", "Internal BT-A2DP Playback",
12879 0, 0, 0, 0),
12880 SND_SOC_DAPM_AIF_OUT("INT_FM_RX", "Internal FM Playback",
12881 0, 0, 0, 0),
12882 SND_SOC_DAPM_AIF_IN("INT_FM_TX", "Internal FM Capture",
12883 0, 0, 0, 0),
12884 SND_SOC_DAPM_AIF_OUT("PCM_RX", "AFE Playback",
12885 0, 0, 0, 0),
12886 SND_SOC_DAPM_AIF_IN("PCM_TX", "AFE Capture",
12887 0, 0, 0, 0),
12888 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_0", "Primary TDM0 Playback",
12889 0, 0, 0, 0),
12890 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_0", "Primary TDM0 Capture",
12891 0, 0, 0, 0),
12892 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_1", "Primary TDM1 Playback",
12893 0, 0, 0, 0),
12894 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_1", "Primary TDM1 Capture",
12895 0, 0, 0, 0),
12896 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_2", "Primary TDM2 Playback",
12897 0, 0, 0, 0),
12898 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_2", "Primary TDM2 Capture",
12899 0, 0, 0, 0),
12900 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_3", "Primary TDM3 Playback",
12901 0, 0, 0, 0),
12902 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_3", "Primary TDM3 Capture",
12903 0, 0, 0, 0),
12904 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_4", "Primary TDM4 Playback",
12905 0, 0, 0, 0),
12906 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_4", "Primary TDM4 Capture",
12907 0, 0, 0, 0),
12908 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_5", "Primary TDM5 Playback",
12909 0, 0, 0, 0),
12910 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_5", "Primary TDM5 Capture",
12911 0, 0, 0, 0),
12912 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_6", "Primary TDM6 Playback",
12913 0, 0, 0, 0),
12914 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_6", "Primary TDM6 Capture",
12915 0, 0, 0, 0),
12916 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_7", "Primary TDM7 Playback",
12917 0, 0, 0, 0),
12918 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_7", "Primary TDM7 Capture",
12919 0, 0, 0, 0),
12920 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_0", "Secondary TDM0 Playback",
12921 0, 0, 0, 0),
12922 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_0", "Secondary TDM0 Capture",
12923 0, 0, 0, 0),
12924 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_1", "Secondary TDM1 Playback",
12925 0, 0, 0, 0),
12926 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_1", "Secondary TDM1 Capture",
12927 0, 0, 0, 0),
12928 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_2", "Secondary TDM2 Playback",
12929 0, 0, 0, 0),
12930 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_2", "Secondary TDM2 Capture",
12931 0, 0, 0, 0),
12932 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_3", "Secondary TDM3 Playback",
12933 0, 0, 0, 0),
12934 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_3", "Secondary TDM3 Capture",
12935 0, 0, 0, 0),
12936 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_4", "Secondary TDM4 Playback",
12937 0, 0, 0, 0),
12938 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_4", "Secondary TDM4 Capture",
12939 0, 0, 0, 0),
12940 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_5", "Secondary TDM5 Playback",
12941 0, 0, 0, 0),
12942 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_5", "Secondary TDM5 Capture",
12943 0, 0, 0, 0),
12944 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_6", "Secondary TDM6 Playback",
12945 0, 0, 0, 0),
12946 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_6", "Secondary TDM6 Capture",
12947 0, 0, 0, 0),
12948 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_7", "Secondary TDM7 Playback",
12949 0, 0, 0, 0),
12950 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_7", "Secondary TDM7 Capture",
12951 0, 0, 0, 0),
12952 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_0", "Tertiary TDM0 Playback",
12953 0, 0, 0, 0),
12954 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_0", "Tertiary TDM0 Capture",
12955 0, 0, 0, 0),
12956 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_1", "Tertiary TDM1 Playback",
12957 0, 0, 0, 0),
12958 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_1", "Tertiary TDM1 Capture",
12959 0, 0, 0, 0),
12960 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_2", "Tertiary TDM2 Playback",
12961 0, 0, 0, 0),
12962 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_2", "Tertiary TDM2 Capture",
12963 0, 0, 0, 0),
12964 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_3", "Tertiary TDM3 Playback",
12965 0, 0, 0, 0),
12966 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_3", "Tertiary TDM3 Capture",
12967 0, 0, 0, 0),
12968 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_4", "Tertiary TDM4 Playback",
12969 0, 0, 0, 0),
12970 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_4", "Tertiary TDM4 Capture",
12971 0, 0, 0, 0),
12972 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_5", "Tertiary TDM5 Playback",
12973 0, 0, 0, 0),
12974 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_5", "Tertiary TDM5 Capture",
12975 0, 0, 0, 0),
12976 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_6", "Tertiary TDM6 Playback",
12977 0, 0, 0, 0),
12978 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_6", "Tertiary TDM6 Capture",
12979 0, 0, 0, 0),
12980 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_7", "Tertiary TDM7 Playback",
12981 0, 0, 0, 0),
12982 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_7", "Tertiary TDM7 Capture",
12983 0, 0, 0, 0),
12984 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_0", "Quaternary TDM0 Playback",
12985 0, 0, 0, 0),
12986 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_0", "Quaternary TDM0 Capture",
12987 0, 0, 0, 0),
12988 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_1", "Quaternary TDM1 Playback",
12989 0, 0, 0, 0),
12990 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_1", "Quaternary TDM1 Capture",
12991 0, 0, 0, 0),
12992 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_2", "Quaternary TDM2 Playback",
12993 0, 0, 0, 0),
12994 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_2", "Quaternary TDM2 Capture",
12995 0, 0, 0, 0),
12996 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_3", "Quaternary TDM3 Playback",
12997 0, 0, 0, 0),
12998 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_3", "Quaternary TDM3 Capture",
12999 0, 0, 0, 0),
13000 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_4", "Quaternary TDM4 Playback",
13001 0, 0, 0, 0),
13002 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_4", "Quaternary TDM4 Capture",
13003 0, 0, 0, 0),
13004 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_5", "Quaternary TDM5 Playback",
13005 0, 0, 0, 0),
13006 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_5", "Quaternary TDM5 Capture",
13007 0, 0, 0, 0),
13008 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_6", "Quaternary TDM6 Playback",
13009 0, 0, 0, 0),
13010 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_6", "Quaternary TDM6 Capture",
13011 0, 0, 0, 0),
13012 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_7", "Quaternary TDM7 Playback",
13013 0, 0, 0, 0),
13014 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_7", "Quaternary TDM7 Capture",
13015 0, 0, 0, 0),
Rohit Kumara5077932017-09-10 22:05:05 +053013016 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_0", "Quinary TDM0 Playback",
13017 0, 0, 0, 0),
13018 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_0", "Quinary TDM0 Capture",
13019 0, 0, 0, 0),
13020 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_1", "Quinary TDM1 Playback",
13021 0, 0, 0, 0),
13022 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_1", "Quinary TDM1 Capture",
13023 0, 0, 0, 0),
13024 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_2", "Quinary TDM2 Playback",
13025 0, 0, 0, 0),
13026 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_2", "Quinary TDM2 Capture",
13027 0, 0, 0, 0),
13028 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_3", "Quinary TDM3 Playback",
13029 0, 0, 0, 0),
13030 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_3", "Quinary TDM3 Capture",
13031 0, 0, 0, 0),
13032 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_4", "Quinary TDM4 Playback",
13033 0, 0, 0, 0),
13034 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_4", "Quinary TDM4 Capture",
13035 0, 0, 0, 0),
13036 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_5", "Quinary TDM5 Playback",
13037 0, 0, 0, 0),
13038 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_5", "Quinary TDM5 Capture",
13039 0, 0, 0, 0),
13040 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_6", "Quinary TDM6 Playback",
13041 0, 0, 0, 0),
13042 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_6", "Quinary TDM6 Capture",
13043 0, 0, 0, 0),
13044 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_7", "Quinary TDM7 Playback",
13045 0, 0, 0, 0),
13046 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_7", "Quinary TDM7 Capture",
13047 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013048 /* incall */
13049 SND_SOC_DAPM_AIF_OUT("VOICE_PLAYBACK_TX", "Voice Farend Playback",
13050 0, 0, 0, 0),
13051 SND_SOC_DAPM_AIF_OUT("VOICE2_PLAYBACK_TX", "Voice2 Farend Playback",
13052 0, 0, 0, 0),
13053 SND_SOC_DAPM_AIF_OUT("SLIMBUS_4_RX", "Slimbus4 Playback",
13054 0, 0, 0, 0),
13055 SND_SOC_DAPM_AIF_IN("INCALL_RECORD_TX", "Voice Uplink Capture",
13056 0, 0, 0, 0),
13057 SND_SOC_DAPM_AIF_IN("INCALL_RECORD_RX", "Voice Downlink Capture",
13058 0, 0, 0, 0),
13059 SND_SOC_DAPM_AIF_IN("SLIMBUS_4_TX", "Slimbus4 Capture",
13060 0, 0, 0, 0),
13061 SND_SOC_DAPM_AIF_IN("SENARY_TX", "Senary_mi2s Capture",
13062 0, 0, 0, 0),
13063 SND_SOC_DAPM_AIF_IN("INT5_MI2S_TX", "INT5 MI2S Capture",
13064 0, 0, 0, 0),
13065 SND_SOC_DAPM_AIF_IN("SLIMBUS_5_TX", "Slimbus5 Capture", 0, 0, 0, 0),
13066
13067 SND_SOC_DAPM_AIF_OUT("AUX_PCM_RX", "AUX PCM Playback", 0, 0, 0, 0),
13068 SND_SOC_DAPM_AIF_IN("AUX_PCM_TX", "AUX PCM Capture", 0, 0, 0, 0),
13069 SND_SOC_DAPM_AIF_OUT("SEC_AUX_PCM_RX", "Sec AUX PCM Playback",
13070 0, 0, 0, 0),
13071 SND_SOC_DAPM_AIF_IN("SEC_AUX_PCM_TX", "Sec AUX PCM Capture",
13072 0, 0, 0, 0),
13073 SND_SOC_DAPM_AIF_OUT("TERT_AUX_PCM_RX", "Tert AUX PCM Playback",
13074 0, 0, 0, 0),
13075 SND_SOC_DAPM_AIF_IN("TERT_AUX_PCM_TX", "Tert AUX PCM Capture",
13076 0, 0, 0, 0),
13077 SND_SOC_DAPM_AIF_OUT("QUAT_AUX_PCM_RX", "Quat AUX PCM Playback",
13078 0, 0, 0, 0),
13079 SND_SOC_DAPM_AIF_IN("QUAT_AUX_PCM_TX", "Quat AUX PCM Capture",
13080 0, 0, 0, 0),
Rohit Kumara5077932017-09-10 22:05:05 +053013081 SND_SOC_DAPM_AIF_OUT("QUIN_AUX_PCM_RX", "Quin AUX PCM Playback",
13082 0, 0, 0, 0),
13083 SND_SOC_DAPM_AIF_IN("QUIN_AUX_PCM_TX", "Quin AUX PCM Capture",
13084 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013085 SND_SOC_DAPM_AIF_IN("VOICE_STUB_DL", "VOICE_STUB Playback", 0, 0, 0, 0),
13086 SND_SOC_DAPM_AIF_OUT("VOICE_STUB_UL", "VOICE_STUB Capture", 0, 0, 0, 0),
13087 SND_SOC_DAPM_AIF_IN("VOICE2_STUB_DL", "VOICE2_STUB Playback",
13088 0, 0, 0, 0),
13089 SND_SOC_DAPM_AIF_OUT("VOICE2_STUB_UL", "VOICE2_STUB Capture",
13090 0, 0, 0, 0),
13091 SND_SOC_DAPM_AIF_IN("VOLTE_STUB_DL", "VOLTE_STUB Playback", 0, 0, 0, 0),
13092 SND_SOC_DAPM_AIF_OUT("VOLTE_STUB_UL", "VOLTE_STUB Capture", 0, 0, 0, 0),
13093 SND_SOC_DAPM_AIF_OUT("STUB_RX", "Stub Playback", 0, 0, 0, 0),
13094 SND_SOC_DAPM_AIF_IN("STUB_TX", "Stub Capture", 0, 0, 0, 0),
13095 SND_SOC_DAPM_AIF_OUT("SLIMBUS_1_RX", "Slimbus1 Playback", 0, 0, 0, 0),
13096 SND_SOC_DAPM_AIF_IN("SLIMBUS_1_TX", "Slimbus1 Capture", 0, 0, 0, 0),
13097 SND_SOC_DAPM_AIF_IN("STUB_1_TX", "Stub1 Capture", 0, 0, 0, 0),
13098 SND_SOC_DAPM_AIF_OUT("SLIMBUS_3_RX", "Slimbus3 Playback", 0, 0, 0, 0),
13099 SND_SOC_DAPM_AIF_IN("SLIMBUS_3_TX", "Slimbus3 Capture", 0, 0, 0, 0),
13100 /* In- call recording */
13101 SND_SOC_DAPM_AIF_OUT("SLIMBUS_6_RX", "Slimbus6 Playback", 0, 0, 0, 0),
13102 SND_SOC_DAPM_AIF_IN("SLIMBUS_6_TX", "Slimbus6 Capture", 0, 0, 0, 0),
13103
13104 SND_SOC_DAPM_AIF_OUT("SLIMBUS_7_RX", "Slimbus7 Playback", 0, 0, 0, 0),
13105 SND_SOC_DAPM_AIF_IN("SLIMBUS_7_TX", "Slimbus7 Capture", 0, 0, 0, 0),
13106
13107 SND_SOC_DAPM_AIF_OUT("SLIMBUS_8_RX", "Slimbus8 Playback", 0, 0, 0, 0),
13108 SND_SOC_DAPM_AIF_IN("SLIMBUS_8_TX", "Slimbus8 Capture", 0, 0, 0, 0),
13109 SND_SOC_DAPM_AIF_OUT("USB_AUDIO_RX", "USB Audio Playback", 0, 0, 0, 0),
13110 SND_SOC_DAPM_AIF_IN("USB_AUDIO_TX", "USB Audio Capture", 0, 0, 0, 0),
13111
13112 /* Switch Definitions */
13113 SND_SOC_DAPM_SWITCH("SLIMBUS_DL_HL", SND_SOC_NOPM, 0, 0,
13114 &slim_fm_switch_mixer_controls),
13115 SND_SOC_DAPM_SWITCH("SLIMBUS1_DL_HL", SND_SOC_NOPM, 0, 0,
13116 &slim1_fm_switch_mixer_controls),
13117 SND_SOC_DAPM_SWITCH("SLIMBUS3_DL_HL", SND_SOC_NOPM, 0, 0,
13118 &slim3_fm_switch_mixer_controls),
13119 SND_SOC_DAPM_SWITCH("SLIMBUS4_DL_HL", SND_SOC_NOPM, 0, 0,
13120 &slim4_fm_switch_mixer_controls),
13121 SND_SOC_DAPM_SWITCH("SLIMBUS6_DL_HL", SND_SOC_NOPM, 0, 0,
13122 &slim6_fm_switch_mixer_controls),
13123 SND_SOC_DAPM_SWITCH("PCM_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13124 &pcm_rx_switch_mixer_controls),
13125 SND_SOC_DAPM_SWITCH("INT0_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13126 &int0_mi2s_rx_switch_mixer_controls),
13127 SND_SOC_DAPM_SWITCH("INT4_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13128 &int4_mi2s_rx_switch_mixer_controls),
13129 SND_SOC_DAPM_SWITCH("PRI_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13130 &pri_mi2s_rx_switch_mixer_controls),
13131 SND_SOC_DAPM_SWITCH("SEC_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13132 &sec_mi2s_rx_switch_mixer_controls),
13133 SND_SOC_DAPM_SWITCH("TERT_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13134 &tert_mi2s_rx_switch_mixer_controls),
13135 SND_SOC_DAPM_SWITCH("QUAT_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13136 &quat_mi2s_rx_switch_mixer_controls),
Rohit Kumara5077932017-09-10 22:05:05 +053013137 SND_SOC_DAPM_SWITCH("QUIN_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13138 &quin_mi2s_rx_switch_mixer_controls),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013139 SND_SOC_DAPM_SWITCH("HFP_PRI_AUX_UL_HL", SND_SOC_NOPM, 0, 0,
13140 &hfp_pri_aux_switch_mixer_controls),
13141 SND_SOC_DAPM_SWITCH("HFP_AUX_UL_HL", SND_SOC_NOPM, 0, 0,
13142 &hfp_aux_switch_mixer_controls),
13143 SND_SOC_DAPM_SWITCH("HFP_INT_UL_HL", SND_SOC_NOPM, 0, 0,
13144 &hfp_int_switch_mixer_controls),
13145 SND_SOC_DAPM_SWITCH("HFP_SLIM7_UL_HL", SND_SOC_NOPM, 0, 0,
13146 &hfp_slim7_switch_mixer_controls),
13147 SND_SOC_DAPM_SWITCH("USB_DL_HL", SND_SOC_NOPM, 0, 0,
13148 &usb_switch_mixer_controls),
13149
13150 /* Mixer definitions */
13151 SND_SOC_DAPM_MIXER("PRI_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13152 pri_i2s_rx_mixer_controls, ARRAY_SIZE(pri_i2s_rx_mixer_controls)),
13153 SND_SOC_DAPM_MIXER("SEC_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13154 sec_i2s_rx_mixer_controls, ARRAY_SIZE(sec_i2s_rx_mixer_controls)),
13155 SND_SOC_DAPM_MIXER("SLIMBUS_0_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13156 slimbus_rx_mixer_controls, ARRAY_SIZE(slimbus_rx_mixer_controls)),
13157 SND_SOC_DAPM_MIXER("SLIMBUS_2_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13158 slimbus_2_rx_mixer_controls, ARRAY_SIZE(slimbus_2_rx_mixer_controls)),
13159 SND_SOC_DAPM_MIXER("SLIMBUS_5_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13160 slimbus_5_rx_mixer_controls, ARRAY_SIZE(slimbus_5_rx_mixer_controls)),
13161 SND_SOC_DAPM_MIXER("SLIMBUS_7_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13162 slimbus_7_rx_mixer_controls, ARRAY_SIZE(slimbus_7_rx_mixer_controls)),
13163 SND_SOC_DAPM_MIXER("HDMI Mixer", SND_SOC_NOPM, 0, 0,
13164 hdmi_mixer_controls, ARRAY_SIZE(hdmi_mixer_controls)),
13165 SND_SOC_DAPM_MIXER("DISPLAY_PORT Mixer", SND_SOC_NOPM, 0, 0,
13166 display_port_mixer_controls, ARRAY_SIZE(display_port_mixer_controls)),
13167 SND_SOC_DAPM_MIXER("SPDIF_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13168 spdif_rx_mixer_controls, ARRAY_SIZE(spdif_rx_mixer_controls)),
13169 SND_SOC_DAPM_MIXER("MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13170 mi2s_rx_mixer_controls, ARRAY_SIZE(mi2s_rx_mixer_controls)),
13171 SND_SOC_DAPM_MIXER("QUAT_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13172 quaternary_mi2s_rx_mixer_controls,
13173 ARRAY_SIZE(quaternary_mi2s_rx_mixer_controls)),
13174 SND_SOC_DAPM_MIXER("TERT_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13175 tertiary_mi2s_rx_mixer_controls,
13176 ARRAY_SIZE(tertiary_mi2s_rx_mixer_controls)),
13177 SND_SOC_DAPM_MIXER("SEC_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13178 secondary_mi2s_rx_mixer_controls,
13179 ARRAY_SIZE(secondary_mi2s_rx_mixer_controls)),
13180 SND_SOC_DAPM_MIXER("SEC_MI2S_RX_SD1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13181 secondary_mi2s_rx2_mixer_controls,
13182 ARRAY_SIZE(secondary_mi2s_rx2_mixer_controls)),
13183 SND_SOC_DAPM_MIXER("PRI_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13184 primary_mi2s_rx_mixer_controls,
13185 ARRAY_SIZE(primary_mi2s_rx_mixer_controls)),
13186 SND_SOC_DAPM_MIXER("INT0_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13187 int0_mi2s_rx_mixer_controls,
13188 ARRAY_SIZE(int0_mi2s_rx_mixer_controls)),
13189 SND_SOC_DAPM_MIXER("INT4_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13190 int4_mi2s_rx_mixer_controls,
13191 ARRAY_SIZE(int4_mi2s_rx_mixer_controls)),
13192 SND_SOC_DAPM_MIXER("QUIN_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13193 quinary_mi2s_rx_mixer_controls,
13194 ARRAY_SIZE(quinary_mi2s_rx_mixer_controls)),
13195 SND_SOC_DAPM_MIXER("PRI_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13196 pri_tdm_rx_0_mixer_controls,
13197 ARRAY_SIZE(pri_tdm_rx_0_mixer_controls)),
13198 SND_SOC_DAPM_MIXER("PRI_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13199 pri_tdm_rx_1_mixer_controls,
13200 ARRAY_SIZE(pri_tdm_rx_1_mixer_controls)),
13201 SND_SOC_DAPM_MIXER("PRI_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13202 pri_tdm_rx_2_mixer_controls,
13203 ARRAY_SIZE(pri_tdm_rx_2_mixer_controls)),
13204 SND_SOC_DAPM_MIXER("PRI_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
13205 pri_tdm_rx_3_mixer_controls,
13206 ARRAY_SIZE(pri_tdm_rx_3_mixer_controls)),
13207 SND_SOC_DAPM_MIXER("PRI_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13208 pri_tdm_tx_0_mixer_controls,
13209 ARRAY_SIZE(pri_tdm_tx_0_mixer_controls)),
13210 SND_SOC_DAPM_MIXER("SEC_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13211 sec_tdm_rx_0_mixer_controls,
13212 ARRAY_SIZE(sec_tdm_rx_0_mixer_controls)),
13213 SND_SOC_DAPM_MIXER("SEC_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13214 sec_tdm_rx_1_mixer_controls,
13215 ARRAY_SIZE(sec_tdm_rx_1_mixer_controls)),
13216 SND_SOC_DAPM_MIXER("SEC_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13217 sec_tdm_rx_2_mixer_controls,
13218 ARRAY_SIZE(sec_tdm_rx_2_mixer_controls)),
13219 SND_SOC_DAPM_MIXER("SEC_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
13220 sec_tdm_rx_3_mixer_controls,
13221 ARRAY_SIZE(sec_tdm_rx_3_mixer_controls)),
13222 SND_SOC_DAPM_MIXER("SEC_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13223 sec_tdm_tx_0_mixer_controls,
13224 ARRAY_SIZE(sec_tdm_tx_0_mixer_controls)),
13225 SND_SOC_DAPM_MIXER("TERT_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13226 tert_tdm_rx_0_mixer_controls,
13227 ARRAY_SIZE(tert_tdm_rx_0_mixer_controls)),
13228 SND_SOC_DAPM_MIXER("TERT_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13229 tert_tdm_tx_0_mixer_controls,
13230 ARRAY_SIZE(tert_tdm_tx_0_mixer_controls)),
13231 SND_SOC_DAPM_MIXER("TERT_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13232 tert_tdm_rx_1_mixer_controls,
13233 ARRAY_SIZE(tert_tdm_rx_1_mixer_controls)),
13234 SND_SOC_DAPM_MIXER("TERT_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13235 tert_tdm_rx_2_mixer_controls,
13236 ARRAY_SIZE(tert_tdm_rx_2_mixer_controls)),
13237 SND_SOC_DAPM_MIXER("TERT_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
13238 tert_tdm_rx_3_mixer_controls,
13239 ARRAY_SIZE(tert_tdm_rx_3_mixer_controls)),
13240 SND_SOC_DAPM_MIXER("TERT_TDM_RX_4 Audio Mixer", SND_SOC_NOPM, 0, 0,
13241 tert_tdm_rx_4_mixer_controls,
13242 ARRAY_SIZE(tert_tdm_rx_4_mixer_controls)),
13243 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13244 quat_tdm_rx_0_mixer_controls,
13245 ARRAY_SIZE(quat_tdm_rx_0_mixer_controls)),
13246 SND_SOC_DAPM_MIXER("QUAT_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13247 quat_tdm_tx_0_mixer_controls,
13248 ARRAY_SIZE(quat_tdm_tx_0_mixer_controls)),
13249 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13250 quat_tdm_rx_1_mixer_controls,
13251 ARRAY_SIZE(quat_tdm_rx_1_mixer_controls)),
13252 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13253 quat_tdm_rx_2_mixer_controls,
13254 ARRAY_SIZE(quat_tdm_rx_2_mixer_controls)),
13255 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
13256 quat_tdm_rx_3_mixer_controls,
13257 ARRAY_SIZE(quat_tdm_rx_3_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013258 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13259 quin_tdm_rx_0_mixer_controls,
13260 ARRAY_SIZE(quin_tdm_rx_0_mixer_controls)),
13261 SND_SOC_DAPM_MIXER("QUIN_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13262 quin_tdm_tx_0_mixer_controls,
13263 ARRAY_SIZE(quin_tdm_tx_0_mixer_controls)),
13264 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13265 quin_tdm_rx_1_mixer_controls,
13266 ARRAY_SIZE(quin_tdm_rx_1_mixer_controls)),
13267 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13268 quin_tdm_rx_2_mixer_controls,
13269 ARRAY_SIZE(quin_tdm_rx_2_mixer_controls)),
13270 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
13271 quin_tdm_rx_3_mixer_controls,
13272 ARRAY_SIZE(quin_tdm_rx_3_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013273 SND_SOC_DAPM_MIXER("MultiMedia1 Mixer", SND_SOC_NOPM, 0, 0,
13274 mmul1_mixer_controls, ARRAY_SIZE(mmul1_mixer_controls)),
13275 SND_SOC_DAPM_MIXER("MultiMedia2 Mixer", SND_SOC_NOPM, 0, 0,
13276 mmul2_mixer_controls, ARRAY_SIZE(mmul2_mixer_controls)),
13277 SND_SOC_DAPM_MIXER("MultiMedia3 Mixer", SND_SOC_NOPM, 0, 0,
13278 mmul3_mixer_controls, ARRAY_SIZE(mmul3_mixer_controls)),
13279 SND_SOC_DAPM_MIXER("MultiMedia4 Mixer", SND_SOC_NOPM, 0, 0,
13280 mmul4_mixer_controls, ARRAY_SIZE(mmul4_mixer_controls)),
13281 SND_SOC_DAPM_MIXER("MultiMedia5 Mixer", SND_SOC_NOPM, 0, 0,
13282 mmul5_mixer_controls, ARRAY_SIZE(mmul5_mixer_controls)),
13283 SND_SOC_DAPM_MIXER("MultiMedia6 Mixer", SND_SOC_NOPM, 0, 0,
13284 mmul6_mixer_controls, ARRAY_SIZE(mmul6_mixer_controls)),
13285 SND_SOC_DAPM_MIXER("MultiMedia8 Mixer", SND_SOC_NOPM, 0, 0,
13286 mmul8_mixer_controls, ARRAY_SIZE(mmul8_mixer_controls)),
13287 SND_SOC_DAPM_MIXER("MultiMedia9 Mixer", SND_SOC_NOPM, 0, 0,
13288 mmul9_mixer_controls, ARRAY_SIZE(mmul9_mixer_controls)),
Laxminath Kasam38070be2017-08-17 18:21:59 +053013289 SND_SOC_DAPM_MIXER("MultiMedia10 Mixer", SND_SOC_NOPM, 0, 0,
13290 mmul10_mixer_controls, ARRAY_SIZE(mmul10_mixer_controls)),
Asish Bhattacharya34504582017-08-08 12:55:01 +053013291 SND_SOC_DAPM_MIXER("MultiMedia16 Mixer", SND_SOC_NOPM, 0, 0,
13292 mmul16_mixer_controls, ARRAY_SIZE(mmul16_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013293 SND_SOC_DAPM_MIXER("MultiMedia17 Mixer", SND_SOC_NOPM, 0, 0,
13294 mmul17_mixer_controls, ARRAY_SIZE(mmul17_mixer_controls)),
13295 SND_SOC_DAPM_MIXER("MultiMedia18 Mixer", SND_SOC_NOPM, 0, 0,
13296 mmul18_mixer_controls, ARRAY_SIZE(mmul18_mixer_controls)),
13297 SND_SOC_DAPM_MIXER("MultiMedia19 Mixer", SND_SOC_NOPM, 0, 0,
13298 mmul19_mixer_controls, ARRAY_SIZE(mmul19_mixer_controls)),
13299 SND_SOC_DAPM_MIXER("MultiMedia20 Mixer", SND_SOC_NOPM, 0, 0,
13300 mmul20_mixer_controls, ARRAY_SIZE(mmul20_mixer_controls)),
13301 SND_SOC_DAPM_MIXER("AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13302 auxpcm_rx_mixer_controls, ARRAY_SIZE(auxpcm_rx_mixer_controls)),
13303 SND_SOC_DAPM_MIXER("SEC_AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13304 sec_auxpcm_rx_mixer_controls, ARRAY_SIZE(sec_auxpcm_rx_mixer_controls)),
13305 SND_SOC_DAPM_MIXER("TERT_AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13306 tert_auxpcm_rx_mixer_controls,
13307 ARRAY_SIZE(tert_auxpcm_rx_mixer_controls)),
13308 SND_SOC_DAPM_MIXER("QUAT_AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13309 quat_auxpcm_rx_mixer_controls,
13310 ARRAY_SIZE(quat_auxpcm_rx_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013311 SND_SOC_DAPM_MIXER("QUIN_AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13312 quin_auxpcm_rx_mixer_controls,
13313 ARRAY_SIZE(quin_auxpcm_rx_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013314 /* incall */
13315 SND_SOC_DAPM_MIXER("Incall_Music Audio Mixer", SND_SOC_NOPM, 0, 0,
13316 incall_music_delivery_mixer_controls,
13317 ARRAY_SIZE(incall_music_delivery_mixer_controls)),
13318 SND_SOC_DAPM_MIXER("Incall_Music_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13319 incall_music2_delivery_mixer_controls,
13320 ARRAY_SIZE(incall_music2_delivery_mixer_controls)),
13321 SND_SOC_DAPM_MIXER("SLIMBUS_4_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13322 slimbus_4_rx_mixer_controls,
13323 ARRAY_SIZE(slimbus_4_rx_mixer_controls)),
13324 SND_SOC_DAPM_MIXER("SLIMBUS_6_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13325 slimbus_6_rx_mixer_controls,
13326 ARRAY_SIZE(slimbus_6_rx_mixer_controls)),
13327 SND_SOC_DAPM_MIXER("USB_AUDIO_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13328 usb_audio_rx_mixer_controls,
13329 ARRAY_SIZE(usb_audio_rx_mixer_controls)),
13330 /* Voice Mixer */
13331 SND_SOC_DAPM_MIXER("PRI_RX_Voice Mixer",
13332 SND_SOC_NOPM, 0, 0, pri_rx_voice_mixer_controls,
13333 ARRAY_SIZE(pri_rx_voice_mixer_controls)),
13334 SND_SOC_DAPM_MIXER("SEC_RX_Voice Mixer",
13335 SND_SOC_NOPM, 0, 0,
13336 sec_i2s_rx_voice_mixer_controls,
13337 ARRAY_SIZE(sec_i2s_rx_voice_mixer_controls)),
13338 SND_SOC_DAPM_MIXER("SEC_MI2S_RX_Voice Mixer",
13339 SND_SOC_NOPM, 0, 0,
13340 sec_mi2s_rx_voice_mixer_controls,
13341 ARRAY_SIZE(sec_mi2s_rx_voice_mixer_controls)),
13342 SND_SOC_DAPM_MIXER("SLIM_0_RX_Voice Mixer",
13343 SND_SOC_NOPM, 0, 0,
13344 slimbus_rx_voice_mixer_controls,
13345 ARRAY_SIZE(slimbus_rx_voice_mixer_controls)),
13346 SND_SOC_DAPM_MIXER("INTERNAL_BT_SCO_RX_Voice Mixer",
13347 SND_SOC_NOPM, 0, 0,
13348 bt_sco_rx_voice_mixer_controls,
13349 ARRAY_SIZE(bt_sco_rx_voice_mixer_controls)),
13350 SND_SOC_DAPM_MIXER("AFE_PCM_RX_Voice Mixer",
13351 SND_SOC_NOPM, 0, 0,
13352 afe_pcm_rx_voice_mixer_controls,
13353 ARRAY_SIZE(afe_pcm_rx_voice_mixer_controls)),
13354 SND_SOC_DAPM_MIXER("AUX_PCM_RX_Voice Mixer",
13355 SND_SOC_NOPM, 0, 0,
13356 aux_pcm_rx_voice_mixer_controls,
13357 ARRAY_SIZE(aux_pcm_rx_voice_mixer_controls)),
13358 SND_SOC_DAPM_MIXER("SEC_AUX_PCM_RX_Voice Mixer",
13359 SND_SOC_NOPM, 0, 0,
13360 sec_aux_pcm_rx_voice_mixer_controls,
13361 ARRAY_SIZE(sec_aux_pcm_rx_voice_mixer_controls)),
13362 SND_SOC_DAPM_MIXER("TERT_AUX_PCM_RX_Voice Mixer",
13363 SND_SOC_NOPM, 0, 0,
13364 tert_aux_pcm_rx_voice_mixer_controls,
13365 ARRAY_SIZE(tert_aux_pcm_rx_voice_mixer_controls)),
13366 SND_SOC_DAPM_MIXER("QUAT_AUX_PCM_RX_Voice Mixer",
13367 SND_SOC_NOPM, 0, 0,
13368 quat_aux_pcm_rx_voice_mixer_controls,
13369 ARRAY_SIZE(quat_aux_pcm_rx_voice_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013370 SND_SOC_DAPM_MIXER("QUIN_AUX_PCM_RX_Voice Mixer",
13371 SND_SOC_NOPM, 0, 0,
13372 quin_aux_pcm_rx_voice_mixer_controls,
13373 ARRAY_SIZE(quin_aux_pcm_rx_voice_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013374 SND_SOC_DAPM_MIXER("HDMI_RX_Voice Mixer",
13375 SND_SOC_NOPM, 0, 0,
13376 hdmi_rx_voice_mixer_controls,
13377 ARRAY_SIZE(hdmi_rx_voice_mixer_controls)),
13378 SND_SOC_DAPM_MIXER("MI2S_RX_Voice Mixer",
13379 SND_SOC_NOPM, 0, 0,
13380 mi2s_rx_voice_mixer_controls,
13381 ARRAY_SIZE(mi2s_rx_voice_mixer_controls)),
13382 SND_SOC_DAPM_MIXER("PRI_MI2S_RX_Voice Mixer",
13383 SND_SOC_NOPM, 0, 0,
13384 pri_mi2s_rx_voice_mixer_controls,
13385 ARRAY_SIZE(pri_mi2s_rx_voice_mixer_controls)),
13386 SND_SOC_DAPM_MIXER("INT0_MI2S_RX_Voice Mixer",
13387 SND_SOC_NOPM, 0, 0,
13388 int0_mi2s_rx_voice_mixer_controls,
13389 ARRAY_SIZE(int0_mi2s_rx_voice_mixer_controls)),
13390 SND_SOC_DAPM_MIXER("INT4_MI2S_RX_Voice Mixer",
13391 SND_SOC_NOPM, 0, 0,
13392 int4_mi2s_rx_voice_mixer_controls,
13393 ARRAY_SIZE(int4_mi2s_rx_voice_mixer_controls)),
13394 SND_SOC_DAPM_MIXER("TERT_MI2S_RX_Voice Mixer",
13395 SND_SOC_NOPM, 0, 0,
13396 tert_mi2s_rx_voice_mixer_controls,
13397 ARRAY_SIZE(tert_mi2s_rx_voice_mixer_controls)),
13398 SND_SOC_DAPM_MIXER("QUAT_MI2S_RX_Voice Mixer",
13399 SND_SOC_NOPM, 0, 0,
13400 quat_mi2s_rx_voice_mixer_controls,
13401 ARRAY_SIZE(quat_mi2s_rx_voice_mixer_controls)),
13402 SND_SOC_DAPM_MIXER("QUIN_MI2S_RX_Voice Mixer",
13403 SND_SOC_NOPM, 0, 0,
13404 quin_mi2s_rx_voice_mixer_controls,
13405 ARRAY_SIZE(quin_mi2s_rx_voice_mixer_controls)),
13406 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_2_Voice Mixer",
13407 SND_SOC_NOPM, 0, 0,
13408 quat_tdm_rx_2_voice_mixer_controls,
13409 ARRAY_SIZE(quat_tdm_rx_2_voice_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013410 SND_SOC_DAPM_MIXER("Voip_Tx Mixer",
13411 SND_SOC_NOPM, 0, 0, tx_voip_mixer_controls,
13412 ARRAY_SIZE(tx_voip_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013413 SND_SOC_DAPM_MIXER("VoiceMMode1_Tx Mixer",
13414 SND_SOC_NOPM, 0, 0, tx_voicemmode1_mixer_controls,
13415 ARRAY_SIZE(tx_voicemmode1_mixer_controls)),
13416 SND_SOC_DAPM_MIXER("VoiceMMode2_Tx Mixer",
13417 SND_SOC_NOPM, 0, 0, tx_voicemmode2_mixer_controls,
13418 ARRAY_SIZE(tx_voicemmode2_mixer_controls)),
13419 SND_SOC_DAPM_MIXER("INTERNAL_BT_SCO_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13420 int_bt_sco_rx_mixer_controls, ARRAY_SIZE(int_bt_sco_rx_mixer_controls)),
13421 SND_SOC_DAPM_MIXER("INTERNAL_A2DP_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13422 int_bt_a2dp_rx_mixer_controls,
13423 ARRAY_SIZE(int_bt_a2dp_rx_mixer_controls)),
13424 SND_SOC_DAPM_MIXER("INTERNAL_FM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13425 int_fm_rx_mixer_controls, ARRAY_SIZE(int_fm_rx_mixer_controls)),
13426 SND_SOC_DAPM_MIXER("AFE_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13427 afe_pcm_rx_mixer_controls, ARRAY_SIZE(afe_pcm_rx_mixer_controls)),
13428 SND_SOC_DAPM_MIXER("Voice Stub Tx Mixer", SND_SOC_NOPM, 0, 0,
13429 tx_voice_stub_mixer_controls, ARRAY_SIZE(tx_voice_stub_mixer_controls)),
13430 SND_SOC_DAPM_MIXER("Voice2 Stub Tx Mixer", SND_SOC_NOPM, 0, 0,
13431 tx_voice2_stub_mixer_controls,
13432 ARRAY_SIZE(tx_voice2_stub_mixer_controls)),
13433 SND_SOC_DAPM_MIXER("VoLTE Stub Tx Mixer", SND_SOC_NOPM, 0, 0,
13434 tx_volte_stub_mixer_controls, ARRAY_SIZE(tx_volte_stub_mixer_controls)),
13435 SND_SOC_DAPM_MIXER("STUB_RX Mixer", SND_SOC_NOPM, 0, 0,
13436 stub_rx_mixer_controls, ARRAY_SIZE(stub_rx_mixer_controls)),
13437 SND_SOC_DAPM_MIXER("SLIMBUS_1_RX Mixer", SND_SOC_NOPM, 0, 0,
13438 slimbus_1_rx_mixer_controls, ARRAY_SIZE(slimbus_1_rx_mixer_controls)),
13439 SND_SOC_DAPM_MIXER("SLIMBUS_3_RX_Voice Mixer", SND_SOC_NOPM, 0, 0,
13440 slimbus_3_rx_mixer_controls, ARRAY_SIZE(slimbus_3_rx_mixer_controls)),
13441 SND_SOC_DAPM_MIXER("SLIM_6_RX_Voice Mixer",
13442 SND_SOC_NOPM, 0, 0,
13443 slimbus_6_rx_voice_mixer_controls,
13444 ARRAY_SIZE(slimbus_6_rx_voice_mixer_controls)),
13445 SND_SOC_DAPM_MIXER("SLIM_7_RX_Voice Mixer", SND_SOC_NOPM, 0, 0,
13446 slimbus_7_rx_voice_mixer_controls,
13447 ARRAY_SIZE(slimbus_7_rx_voice_mixer_controls)),
13448 SND_SOC_DAPM_MIXER("SLIM_8_RX_Voice Mixer", SND_SOC_NOPM, 0, 0,
13449 slimbus_8_rx_voice_mixer_controls,
13450 ARRAY_SIZE(slimbus_8_rx_voice_mixer_controls)),
13451 /* port mixer */
13452 SND_SOC_DAPM_MIXER("SLIMBUS_0_RX Port Mixer",
13453 SND_SOC_NOPM, 0, 0, sbus_0_rx_port_mixer_controls,
13454 ARRAY_SIZE(sbus_0_rx_port_mixer_controls)),
13455 SND_SOC_DAPM_MIXER("AUX_PCM_RX Port Mixer",
13456 SND_SOC_NOPM, 0, 0, aux_pcm_rx_port_mixer_controls,
13457 ARRAY_SIZE(aux_pcm_rx_port_mixer_controls)),
13458 SND_SOC_DAPM_MIXER("SEC_AUXPCM_RX Port Mixer",
13459 SND_SOC_NOPM, 0, 0, sec_auxpcm_rx_port_mixer_controls,
13460 ARRAY_SIZE(sec_auxpcm_rx_port_mixer_controls)),
13461 SND_SOC_DAPM_MIXER("TERT_AUXPCM_RX Port Mixer",
13462 SND_SOC_NOPM, 0, 0, tert_auxpcm_rx_port_mixer_controls,
13463 ARRAY_SIZE(tert_auxpcm_rx_port_mixer_controls)),
13464 SND_SOC_DAPM_MIXER("QUAT_AUXPCM_RX Port Mixer",
13465 SND_SOC_NOPM, 0, 0, quat_auxpcm_rx_port_mixer_controls,
13466 ARRAY_SIZE(quat_auxpcm_rx_port_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013467 SND_SOC_DAPM_MIXER("QUIN_AUXPCM_RX Port Mixer",
13468 SND_SOC_NOPM, 0, 0, quin_auxpcm_rx_port_mixer_controls,
13469 ARRAY_SIZE(quin_auxpcm_rx_port_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013470 SND_SOC_DAPM_MIXER("SLIMBUS_1_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13471 sbus_1_rx_port_mixer_controls,
13472 ARRAY_SIZE(sbus_1_rx_port_mixer_controls)),
13473 SND_SOC_DAPM_MIXER("INTERNAL_BT_SCO_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13474 bt_sco_rx_port_mixer_controls,
13475 ARRAY_SIZE(bt_sco_rx_port_mixer_controls)),
13476 SND_SOC_DAPM_MIXER("AFE_PCM_RX Port Mixer",
13477 SND_SOC_NOPM, 0, 0, afe_pcm_rx_port_mixer_controls,
13478 ARRAY_SIZE(afe_pcm_rx_port_mixer_controls)),
13479 SND_SOC_DAPM_MIXER("HDMI_RX Port Mixer",
13480 SND_SOC_NOPM, 0, 0, hdmi_rx_port_mixer_controls,
13481 ARRAY_SIZE(hdmi_rx_port_mixer_controls)),
13482 SND_SOC_DAPM_MIXER("DISPLAY_PORT_RX Port Mixer",
13483 SND_SOC_NOPM, 0, 0, display_port_rx_port_mixer_controls,
13484 ARRAY_SIZE(display_port_rx_port_mixer_controls)),
13485 SND_SOC_DAPM_MIXER("SEC_I2S_RX Port Mixer",
13486 SND_SOC_NOPM, 0, 0, sec_i2s_rx_port_mixer_controls,
13487 ARRAY_SIZE(sec_i2s_rx_port_mixer_controls)),
13488 SND_SOC_DAPM_MIXER("SLIMBUS_3_RX Port Mixer",
13489 SND_SOC_NOPM, 0, 0, sbus_3_rx_port_mixer_controls,
13490 ARRAY_SIZE(sbus_3_rx_port_mixer_controls)),
13491 SND_SOC_DAPM_MIXER("SLIMBUS_6_RX Port Mixer",
13492 SND_SOC_NOPM, 0, 0, sbus_6_rx_port_mixer_controls,
13493 ARRAY_SIZE(sbus_6_rx_port_mixer_controls)),
13494 SND_SOC_DAPM_MIXER("MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13495 mi2s_rx_port_mixer_controls, ARRAY_SIZE(mi2s_rx_port_mixer_controls)),
13496 SND_SOC_DAPM_MIXER("PRI_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13497 primary_mi2s_rx_port_mixer_controls,
13498 ARRAY_SIZE(primary_mi2s_rx_port_mixer_controls)),
13499 SND_SOC_DAPM_MIXER("SEC_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13500 sec_mi2s_rx_port_mixer_controls,
13501 ARRAY_SIZE(sec_mi2s_rx_port_mixer_controls)),
13502 SND_SOC_DAPM_MIXER("TERT_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13503 tert_mi2s_rx_port_mixer_controls,
13504 ARRAY_SIZE(tert_mi2s_rx_port_mixer_controls)),
13505 SND_SOC_DAPM_MIXER("QUAT_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13506 quat_mi2s_rx_port_mixer_controls,
13507 ARRAY_SIZE(quat_mi2s_rx_port_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013508 SND_SOC_DAPM_MIXER("QUIN_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13509 quin_mi2s_rx_port_mixer_controls,
13510 ARRAY_SIZE(quin_mi2s_rx_port_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013511 SND_SOC_DAPM_MIXER("PRI_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
13512 pri_tdm_rx_0_port_mixer_controls,
13513 ARRAY_SIZE(pri_tdm_rx_0_port_mixer_controls)),
13514 SND_SOC_DAPM_MIXER("PRI_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
13515 pri_tdm_rx_1_port_mixer_controls,
13516 ARRAY_SIZE(pri_tdm_rx_1_port_mixer_controls)),
13517 SND_SOC_DAPM_MIXER("PRI_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
13518 pri_tdm_rx_2_port_mixer_controls,
13519 ARRAY_SIZE(pri_tdm_rx_2_port_mixer_controls)),
13520 SND_SOC_DAPM_MIXER("PRI_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
13521 pri_tdm_rx_3_port_mixer_controls,
13522 ARRAY_SIZE(pri_tdm_rx_3_port_mixer_controls)),
13523 SND_SOC_DAPM_MIXER("SEC_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
13524 sec_tdm_rx_0_port_mixer_controls,
13525 ARRAY_SIZE(sec_tdm_rx_0_port_mixer_controls)),
13526 SND_SOC_DAPM_MIXER("SEC_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
13527 sec_tdm_rx_1_port_mixer_controls,
13528 ARRAY_SIZE(sec_tdm_rx_1_port_mixer_controls)),
13529 SND_SOC_DAPM_MIXER("SEC_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
13530 sec_tdm_rx_2_port_mixer_controls,
13531 ARRAY_SIZE(sec_tdm_rx_2_port_mixer_controls)),
13532 SND_SOC_DAPM_MIXER("SEC_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
13533 sec_tdm_rx_3_port_mixer_controls,
13534 ARRAY_SIZE(sec_tdm_rx_3_port_mixer_controls)),
13535 SND_SOC_DAPM_MIXER("TERT_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
13536 tert_tdm_rx_0_port_mixer_controls,
13537 ARRAY_SIZE(tert_tdm_rx_0_port_mixer_controls)),
13538 SND_SOC_DAPM_MIXER("TERT_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
13539 tert_tdm_rx_1_port_mixer_controls,
13540 ARRAY_SIZE(tert_tdm_rx_1_port_mixer_controls)),
13541 SND_SOC_DAPM_MIXER("TERT_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
13542 tert_tdm_rx_2_port_mixer_controls,
13543 ARRAY_SIZE(tert_tdm_rx_2_port_mixer_controls)),
13544 SND_SOC_DAPM_MIXER("TERT_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
13545 tert_tdm_rx_3_port_mixer_controls,
13546 ARRAY_SIZE(tert_tdm_rx_3_port_mixer_controls)),
13547 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
13548 quat_tdm_rx_0_port_mixer_controls,
13549 ARRAY_SIZE(quat_tdm_rx_0_port_mixer_controls)),
13550 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
13551 quat_tdm_rx_1_port_mixer_controls,
13552 ARRAY_SIZE(quat_tdm_rx_1_port_mixer_controls)),
13553 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
13554 quat_tdm_rx_2_port_mixer_controls,
13555 ARRAY_SIZE(quat_tdm_rx_2_port_mixer_controls)),
13556 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
13557 quat_tdm_rx_3_port_mixer_controls,
13558 ARRAY_SIZE(quat_tdm_rx_3_port_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013559 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
13560 quin_tdm_rx_0_port_mixer_controls,
13561 ARRAY_SIZE(quin_tdm_rx_0_port_mixer_controls)),
13562 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
13563 quin_tdm_rx_1_port_mixer_controls,
13564 ARRAY_SIZE(quin_tdm_rx_1_port_mixer_controls)),
13565 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
13566 quin_tdm_rx_2_port_mixer_controls,
13567 ARRAY_SIZE(quin_tdm_rx_2_port_mixer_controls)),
13568 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
13569 quin_tdm_rx_3_port_mixer_controls,
13570 ARRAY_SIZE(quin_tdm_rx_3_port_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013571 SND_SOC_DAPM_MIXER("INT0_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13572 int0_mi2s_rx_port_mixer_controls,
13573 ARRAY_SIZE(int0_mi2s_rx_port_mixer_controls)),
13574 SND_SOC_DAPM_MIXER("INT4_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13575 int4_mi2s_rx_port_mixer_controls,
13576 ARRAY_SIZE(int4_mi2s_rx_port_mixer_controls)),
13577 SND_SOC_DAPM_MIXER("QCHAT_Tx Mixer",
13578 SND_SOC_NOPM, 0, 0, tx_qchat_mixer_controls,
13579 ARRAY_SIZE(tx_qchat_mixer_controls)),
13580 SND_SOC_DAPM_MIXER("USB_AUDIO_RX_Voice Mixer",
13581 SND_SOC_NOPM, 0, 0, usb_audio_rx_voice_mixer_controls,
13582 ARRAY_SIZE(usb_audio_rx_voice_mixer_controls)),
13583 SND_SOC_DAPM_MIXER("USB_AUDIO_RX Port Mixer",
13584 SND_SOC_NOPM, 0, 0, usb_rx_port_mixer_controls,
13585 ARRAY_SIZE(usb_rx_port_mixer_controls)),
Aalique Grahamee4fd7d52017-11-28 13:24:13 -080013586 SND_SOC_DAPM_MIXER("DISPLAY_PORT_RX_Voice Mixer",
13587 SND_SOC_NOPM, 0, 0, display_port_rx_voice_mixer_controls,
13588 ARRAY_SIZE(display_port_rx_voice_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013589 /* lsm mixer definitions */
13590 SND_SOC_DAPM_MIXER("LSM1 Mixer", SND_SOC_NOPM, 0, 0,
13591 lsm1_mixer_controls, ARRAY_SIZE(lsm1_mixer_controls)),
13592 SND_SOC_DAPM_MIXER("LSM2 Mixer", SND_SOC_NOPM, 0, 0,
13593 lsm2_mixer_controls, ARRAY_SIZE(lsm2_mixer_controls)),
13594 SND_SOC_DAPM_MIXER("LSM3 Mixer", SND_SOC_NOPM, 0, 0,
13595 lsm3_mixer_controls, ARRAY_SIZE(lsm3_mixer_controls)),
13596 SND_SOC_DAPM_MIXER("LSM4 Mixer", SND_SOC_NOPM, 0, 0,
13597 lsm4_mixer_controls, ARRAY_SIZE(lsm4_mixer_controls)),
13598 SND_SOC_DAPM_MIXER("LSM5 Mixer", SND_SOC_NOPM, 0, 0,
13599 lsm5_mixer_controls, ARRAY_SIZE(lsm5_mixer_controls)),
13600 SND_SOC_DAPM_MIXER("LSM6 Mixer", SND_SOC_NOPM, 0, 0,
13601 lsm6_mixer_controls, ARRAY_SIZE(lsm6_mixer_controls)),
13602 SND_SOC_DAPM_MIXER("LSM7 Mixer", SND_SOC_NOPM, 0, 0,
13603 lsm7_mixer_controls, ARRAY_SIZE(lsm7_mixer_controls)),
13604 SND_SOC_DAPM_MIXER("LSM8 Mixer", SND_SOC_NOPM, 0, 0,
13605 lsm8_mixer_controls, ARRAY_SIZE(lsm8_mixer_controls)),
13606 /* Virtual Pins to force backends ON atm */
13607 SND_SOC_DAPM_OUTPUT("BE_OUT"),
13608 SND_SOC_DAPM_INPUT("BE_IN"),
13609
13610 SND_SOC_DAPM_MUX("SLIM0_RX_VI_FB_LCH_MUX", SND_SOC_NOPM, 0, 0,
13611 &slim0_rx_vi_fb_lch_mux),
13612 SND_SOC_DAPM_MUX("SLIM0_RX_VI_FB_RCH_MUX", SND_SOC_NOPM, 0, 0,
13613 &slim0_rx_vi_fb_rch_mux),
13614 SND_SOC_DAPM_MUX("PRI_MI2S_RX_VI_FB_MUX", SND_SOC_NOPM, 0, 0,
13615 &mi2s_rx_vi_fb_mux),
13616 SND_SOC_DAPM_MUX("INT4_MI2S_RX_VI_FB_MONO_CH_MUX", SND_SOC_NOPM, 0, 0,
13617 &int4_mi2s_rx_vi_fb_mono_ch_mux),
13618 SND_SOC_DAPM_MUX("INT4_MI2S_RX_VI_FB_STEREO_CH_MUX", SND_SOC_NOPM, 0, 0,
13619 &int4_mi2s_rx_vi_fb_stereo_ch_mux),
13620
13621 SND_SOC_DAPM_MUX("VOC_EXT_EC MUX", SND_SOC_NOPM, 0, 0,
13622 &voc_ext_ec_mux),
13623 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL1 MUX", SND_SOC_NOPM, 0, 0,
13624 &ext_ec_ref_mux_ul1),
13625 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL2 MUX", SND_SOC_NOPM, 0, 0,
13626 &ext_ec_ref_mux_ul2),
13627 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL3 MUX", SND_SOC_NOPM, 0, 0,
13628 &ext_ec_ref_mux_ul3),
13629 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL4 MUX", SND_SOC_NOPM, 0, 0,
13630 &ext_ec_ref_mux_ul4),
13631 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL5 MUX", SND_SOC_NOPM, 0, 0,
13632 &ext_ec_ref_mux_ul5),
13633 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL6 MUX", SND_SOC_NOPM, 0, 0,
13634 &ext_ec_ref_mux_ul6),
13635 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL8 MUX", SND_SOC_NOPM, 0, 0,
13636 &ext_ec_ref_mux_ul8),
13637 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL9 MUX", SND_SOC_NOPM, 0, 0,
13638 &ext_ec_ref_mux_ul9),
Laxminath Kasam38070be2017-08-17 18:21:59 +053013639 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL10 MUX", SND_SOC_NOPM, 0, 0,
13640 &ext_ec_ref_mux_ul10),
Asish Bhattacharya34504582017-08-08 12:55:01 +053013641 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL16 MUX", SND_SOC_NOPM, 0, 0,
13642 &ext_ec_ref_mux_ul16),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013643 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL17 MUX", SND_SOC_NOPM, 0, 0,
13644 &ext_ec_ref_mux_ul17),
13645 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL18 MUX", SND_SOC_NOPM, 0, 0,
13646 &ext_ec_ref_mux_ul18),
13647 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL19 MUX", SND_SOC_NOPM, 0, 0,
13648 &ext_ec_ref_mux_ul19),
13649};
13650
13651static const struct snd_soc_dapm_route intercon[] = {
13652 {"PRI_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13653 {"PRI_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13654 {"PRI_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13655 {"PRI_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13656 {"PRI_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13657 {"PRI_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13658 {"PRI_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13659 {"PRI_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13660 {"PRI_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
13661 {"PRI_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13662 {"PRI_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13663 {"PRI_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13664 {"PRI_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13665 {"PRI_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13666 {"PRI_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13667 {"PRI_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13668 {"PRI_I2S_RX", NULL, "PRI_RX Audio Mixer"},
13669
13670 {"SEC_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13671 {"SEC_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13672 {"SEC_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13673 {"SEC_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13674 {"SEC_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13675 {"SEC_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13676 {"SEC_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13677 {"SEC_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13678 {"SEC_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
13679 {"SEC_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13680 {"SEC_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13681 {"SEC_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13682 {"SEC_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13683 {"SEC_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13684 {"SEC_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13685 {"SEC_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13686 {"SEC_I2S_RX", NULL, "SEC_RX Audio Mixer"},
13687
13688 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13689 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13690 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13691 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13692 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13693 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13694 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13695 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13696 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
13697 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13698 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13699 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13700 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13701 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13702 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13703 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13704 {"SLIMBUS_0_RX", NULL, "SLIMBUS_0_RX Audio Mixer"},
13705
13706 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13707 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13708 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13709 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13710 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13711 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13712 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13713 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13714 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
13715 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13716 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13717 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13718 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13719 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13720 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13721 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13722 {"SLIMBUS_2_RX", NULL, "SLIMBUS_2_RX Audio Mixer"},
13723
13724 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13725 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13726 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13727 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13728 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13729 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13730 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13731 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13732 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
13733 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13734 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13735 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13736 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13737 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13738 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13739 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13740 {"SLIMBUS_5_RX", NULL, "SLIMBUS_5_RX Audio Mixer"},
13741
13742 {"HDMI Mixer", "MultiMedia1", "MM_DL1"},
13743 {"HDMI Mixer", "MultiMedia2", "MM_DL2"},
13744 {"HDMI Mixer", "MultiMedia3", "MM_DL3"},
13745 {"HDMI Mixer", "MultiMedia4", "MM_DL4"},
13746 {"HDMI Mixer", "MultiMedia5", "MM_DL5"},
13747 {"HDMI Mixer", "MultiMedia6", "MM_DL6"},
13748 {"HDMI Mixer", "MultiMedia7", "MM_DL7"},
13749 {"HDMI Mixer", "MultiMedia8", "MM_DL8"},
13750 {"HDMI Mixer", "MultiMedia9", "MM_DL9"},
13751 {"HDMI Mixer", "MultiMedia10", "MM_DL10"},
13752 {"HDMI Mixer", "MultiMedia11", "MM_DL11"},
13753 {"HDMI Mixer", "MultiMedia12", "MM_DL12"},
13754 {"HDMI Mixer", "MultiMedia13", "MM_DL13"},
13755 {"HDMI Mixer", "MultiMedia14", "MM_DL14"},
13756 {"HDMI Mixer", "MultiMedia15", "MM_DL15"},
13757 {"HDMI Mixer", "MultiMedia16", "MM_DL16"},
13758 {"HDMI", NULL, "HDMI Mixer"},
13759
13760 {"DISPLAY_PORT Mixer", "MultiMedia1", "MM_DL1"},
13761 {"DISPLAY_PORT Mixer", "MultiMedia2", "MM_DL2"},
13762 {"DISPLAY_PORT Mixer", "MultiMedia3", "MM_DL3"},
13763 {"DISPLAY_PORT Mixer", "MultiMedia4", "MM_DL4"},
13764 {"DISPLAY_PORT Mixer", "MultiMedia5", "MM_DL5"},
13765 {"DISPLAY_PORT Mixer", "MultiMedia6", "MM_DL6"},
13766 {"DISPLAY_PORT Mixer", "MultiMedia7", "MM_DL7"},
13767 {"DISPLAY_PORT Mixer", "MultiMedia8", "MM_DL8"},
13768 {"DISPLAY_PORT Mixer", "MultiMedia9", "MM_DL9"},
13769 {"DISPLAY_PORT Mixer", "MultiMedia10", "MM_DL10"},
13770 {"DISPLAY_PORT Mixer", "MultiMedia11", "MM_DL11"},
13771 {"DISPLAY_PORT Mixer", "MultiMedia12", "MM_DL12"},
13772 {"DISPLAY_PORT Mixer", "MultiMedia13", "MM_DL13"},
13773 {"DISPLAY_PORT Mixer", "MultiMedia14", "MM_DL14"},
13774 {"DISPLAY_PORT Mixer", "MultiMedia15", "MM_DL15"},
13775 {"DISPLAY_PORT Mixer", "MultiMedia16", "MM_DL16"},
13776 {"DISPLAY_PORT", NULL, "DISPLAY_PORT Mixer"},
13777
13778 {"SPDIF_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13779 {"SPDIF_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13780 {"SPDIF_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13781 {"SPDIF_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13782 {"SPDIF_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13783 {"SPDIF_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13784 {"SPDIF_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13785 {"SPDIF_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13786 {"SPDIF_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
13787 {"SPDIF_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13788 {"SPDIF_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13789 {"SPDIF_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13790 {"SPDIF_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13791 {"SPDIF_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13792 {"SPDIF_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13793 {"SPDIF_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13794 {"SPDIF_RX", NULL, "SPDIF_RX Audio Mixer"},
13795
13796 /* incall */
13797 {"Incall_Music Audio Mixer", "MultiMedia1", "MM_DL1"},
13798 {"Incall_Music Audio Mixer", "MultiMedia2", "MM_DL2"},
13799 {"Incall_Music Audio Mixer", "MultiMedia5", "MM_DL5"},
13800 {"Incall_Music Audio Mixer", "MultiMedia9", "MM_DL9"},
13801 {"VOICE_PLAYBACK_TX", NULL, "Incall_Music Audio Mixer"},
13802 {"Incall_Music_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
13803 {"Incall_Music_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
13804 {"Incall_Music_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
13805 {"Incall_Music_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
13806 {"VOICE2_PLAYBACK_TX", NULL, "Incall_Music_2 Audio Mixer"},
13807 {"SLIMBUS_4_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13808 {"SLIMBUS_4_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13809 {"SLIMBUS_4_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13810 {"SLIMBUS_4_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
13811 {"SLIMBUS_4_RX", NULL, "SLIMBUS_4_RX Audio Mixer"},
13812
13813 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13814 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13815 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13816 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13817 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13818 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13819 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13820 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13821 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
13822 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13823 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13824 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13825 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13826 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13827 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13828 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13829 {"SLIMBUS_6_RX", NULL, "SLIMBUS_6_RX Audio Mixer"},
13830
13831 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13832 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13833 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13834 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13835 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13836 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13837 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13838 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13839 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
13840 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13841 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13842 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13843 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13844 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13845 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13846 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13847 {"SLIMBUS_7_RX", NULL, "SLIMBUS_7_RX Audio Mixer"},
13848
13849 {"USB_AUDIO_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13850 {"USB_AUDIO_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13851 {"USB_AUDIO_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13852 {"USB_AUDIO_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13853 {"USB_AUDIO_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13854 {"USB_AUDIO_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13855 {"USB_AUDIO_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13856 {"USB_AUDIO_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13857 {"USB_AUDIO_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
13858 {"USB_AUDIO_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13859 {"USB_AUDIO_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13860 {"USB_AUDIO_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13861 {"USB_AUDIO_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13862 {"USB_AUDIO_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13863 {"USB_AUDIO_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13864 {"USB_AUDIO_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13865 {"USB_AUDIO_RX", NULL, "USB_AUDIO_RX Audio Mixer"},
13866
13867 {"MultiMedia1 Mixer", "VOC_REC_UL", "INCALL_RECORD_TX"},
13868 {"MultiMedia4 Mixer", "VOC_REC_UL", "INCALL_RECORD_TX"},
13869 {"MultiMedia8 Mixer", "VOC_REC_UL", "INCALL_RECORD_TX"},
13870 {"MultiMedia1 Mixer", "VOC_REC_DL", "INCALL_RECORD_RX"},
13871 {"MultiMedia4 Mixer", "VOC_REC_DL", "INCALL_RECORD_RX"},
13872 {"MultiMedia8 Mixer", "VOC_REC_DL", "INCALL_RECORD_RX"},
13873 {"MultiMedia1 Mixer", "SLIM_4_TX", "SLIMBUS_4_TX"},
13874 {"MultiMedia1 Mixer", "SLIM_6_TX", "SLIMBUS_6_TX"},
13875 {"MultiMedia1 Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
13876 {"MultiMedia1 Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
13877 {"MultiMedia8 Mixer", "SLIM_6_TX", "SLIMBUS_6_TX"},
13878 {"MultiMedia8 Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
13879 {"MultiMedia4 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
13880 {"MultiMedia17 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
13881 {"MultiMedia18 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
13882 {"MultiMedia19 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
13883 {"MultiMedia8 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
13884 {"MultiMedia2 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
13885 {"MultiMedia4 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
13886 {"MultiMedia17 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
13887 {"MultiMedia18 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
13888 {"MultiMedia19 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
13889 {"MultiMedia8 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
13890 {"MultiMedia18 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
13891 {"MultiMedia8 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
13892 {"MultiMedia3 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
13893 {"MultiMedia5 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053013894 {"MultiMedia10 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053013895 {"MultiMedia16 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013896 {"MultiMedia5 Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
13897 {"MultiMedia5 Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053013898 {"MultiMedia10 Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013899 {"MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13900 {"MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13901 {"MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13902 {"MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13903 {"MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13904 {"MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13905 {"MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13906 {"MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13907 {"MI2S_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
13908 {"MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13909 {"MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13910 {"MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13911 {"MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13912 {"MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13913 {"MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13914 {"MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13915 {"MI2S_RX", NULL, "MI2S_RX Audio Mixer"},
13916
13917 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13918 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13919 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13920 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13921 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13922 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13923 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13924 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13925 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13926 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13927 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13928 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13929 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13930 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13931 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13932 {"QUAT_MI2S_RX", NULL, "QUAT_MI2S_RX Audio Mixer"},
13933
13934 {"TERT_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13935 {"TERT_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13936 {"TERT_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13937 {"TERT_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13938 {"TERT_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13939 {"TERT_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13940 {"TERT_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13941 {"TERT_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13942 {"TERT_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13943 {"TERT_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13944 {"TERT_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13945 {"TERT_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13946 {"TERT_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13947 {"TERT_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13948 {"TERT_MI2S_RX", NULL, "TERT_MI2S_RX Audio Mixer"},
13949
13950 {"SEC_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13951 {"SEC_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13952 {"SEC_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13953 {"SEC_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13954 {"SEC_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13955 {"SEC_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13956 {"SEC_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13957 {"SEC_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13958 {"SEC_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13959 {"SEC_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13960 {"SEC_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13961 {"SEC_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13962 {"SEC_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13963 {"SEC_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13964 {"SEC_MI2S_RX", NULL, "SEC_MI2S_RX Audio Mixer"},
13965
13966 {"SEC_MI2S_RX_SD1 Audio Mixer", "MultiMedia6", "MM_DL6"},
13967 {"SEC_MI2S_RX_SD1", NULL, "SEC_MI2S_RX_SD1 Audio Mixer"},
13968
13969 {"SEC_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
13970 {"SEC_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
13971
13972 {"PRI_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13973 {"PRI_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13974 {"PRI_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13975 {"PRI_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13976 {"PRI_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13977 {"PRI_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13978 {"PRI_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13979 {"PRI_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13980 {"PRI_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13981 {"PRI_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13982 {"PRI_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13983 {"PRI_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13984 {"PRI_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13985 {"PRI_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13986 {"PRI_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13987 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX Audio Mixer"},
13988
13989 {"INT0_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13990 {"INT0_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13991 {"INT0_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13992 {"INT0_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13993 {"INT0_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13994 {"INT0_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13995 {"INT0_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13996 {"INT0_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13997 {"INT0_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13998 {"INT0_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13999 {"INT0_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14000 {"INT0_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14001 {"INT0_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14002 {"INT0_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14003 {"INT0_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14004 {"INT0_MI2S_RX", NULL, "INT0_MI2S_RX Audio Mixer"},
14005
14006 {"INT4_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14007 {"INT4_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14008 {"INT4_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14009 {"INT4_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14010 {"INT4_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14011 {"INT4_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14012 {"INT4_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14013 {"INT4_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14014 {"INT4_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14015 {"INT4_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14016 {"INT4_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14017 {"INT4_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14018 {"INT4_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14019 {"INT4_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14020 {"INT4_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14021 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX Audio Mixer"},
14022
14023 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14024 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14025 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14026 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14027 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14028 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14029 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14030 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14031 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14032 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14033 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14034 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14035 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14036 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14037 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14038 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14039 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14040 {"QUIN_MI2S_RX", NULL, "QUIN_MI2S_RX Audio Mixer"},
14041
14042 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14043 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14044 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14045 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14046 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14047 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14048 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14049 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14050 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14051 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14052 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14053 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14054 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14055 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14056 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14057 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14058 {"PRI_TDM_RX_0", NULL, "PRI_TDM_RX_0 Audio Mixer"},
14059
14060 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
14061 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
14062 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
14063 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
14064 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
14065 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
14066 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
14067 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
14068 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
14069 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
14070 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
14071 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
14072 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
14073 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
14074 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
14075 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
14076 {"PRI_TDM_RX_1", NULL, "PRI_TDM_RX_1 Audio Mixer"},
14077
14078 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
14079 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
14080 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
14081 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
14082 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
14083 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
14084 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
14085 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
14086 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
14087 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
14088 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
14089 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
14090 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
14091 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
14092 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
14093 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
14094 {"PRI_TDM_RX_2", NULL, "PRI_TDM_RX_2 Audio Mixer"},
14095
14096 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
14097 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
14098 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
14099 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
14100 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
14101 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
14102 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
14103 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
14104 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
14105 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
14106 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
14107 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
14108 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
14109 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
14110 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
14111 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
14112 {"PRI_TDM_RX_3", NULL, "PRI_TDM_RX_3 Audio Mixer"},
14113
14114 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14115 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14116 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14117 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14118 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14119 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14120 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14121 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14122 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14123 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14124 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14125 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14126 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14127 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14128 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14129 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14130 {"PRI_TDM_TX_0", NULL, "PRI_TDM_TX_0 Audio Mixer"},
14131
14132 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14133 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14134 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14135 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14136 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14137 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14138 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14139 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14140 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14141 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14142 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14143 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14144 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14145 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14146 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14147 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14148 {"SEC_TDM_RX_0", NULL, "SEC_TDM_RX_0 Audio Mixer"},
14149
14150 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
14151 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
14152 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
14153 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
14154 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
14155 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
14156 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
14157 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
14158 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
14159 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
14160 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
14161 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
14162 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
14163 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
14164 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
14165 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
14166 {"SEC_TDM_RX_1", NULL, "SEC_TDM_RX_1 Audio Mixer"},
14167
14168 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
14169 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
14170 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
14171 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
14172 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
14173 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
14174 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
14175 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
14176 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
14177 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
14178 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
14179 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
14180 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
14181 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
14182 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
14183 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
14184 {"SEC_TDM_RX_2", NULL, "SEC_TDM_RX_2 Audio Mixer"},
14185
14186 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
14187 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
14188 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
14189 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
14190 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
14191 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
14192 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
14193 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
14194 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
14195 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
14196 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
14197 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
14198 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
14199 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
14200 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
14201 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
14202 {"SEC_TDM_RX_3", NULL, "SEC_TDM_RX_3 Audio Mixer"},
14203
14204 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14205 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14206 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14207 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14208 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14209 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14210 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14211 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14212 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14213 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14214 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14215 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14216 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14217 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14218 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14219 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14220 {"SEC_TDM_TX_0", NULL, "SEC_TDM_TX_0 Audio Mixer"},
14221
14222 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14223 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14224 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14225 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14226 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14227 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14228 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14229 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14230 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14231 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14232 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14233 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14234 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14235 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14236 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14237 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14238 {"TERT_TDM_RX_0", NULL, "TERT_TDM_RX_0 Audio Mixer"},
14239
14240 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14241 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14242 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14243 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14244 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14245 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14246 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14247 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14248 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14249 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14250 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14251 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14252 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14253 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14254 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14255 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14256 {"TERT_TDM_TX_0", NULL, "TERT_TDM_TX_0 Audio Mixer"},
14257
14258 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
14259 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
14260 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
14261 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
14262 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
14263 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
14264 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
14265 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
14266 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
14267 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
14268 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
14269 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
14270 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
14271 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
14272 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
14273 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
14274 {"TERT_TDM_RX_1", NULL, "TERT_TDM_RX_1 Audio Mixer"},
14275
14276 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
14277 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
14278 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
14279 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
14280 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
14281 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
14282 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
14283 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
14284 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
14285 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
14286 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
14287 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
14288 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
14289 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
14290 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
14291 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
14292 {"TERT_TDM_RX_2", NULL, "TERT_TDM_RX_2 Audio Mixer"},
14293
14294 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
14295 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
14296 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
14297 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
14298 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
14299 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
14300 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
14301 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
14302 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
14303 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
14304 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
14305 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
14306 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
14307 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
14308 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
14309 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
14310 {"TERT_TDM_RX_3", NULL, "TERT_TDM_RX_3 Audio Mixer"},
14311
14312 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia1", "MM_DL1"},
14313 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia2", "MM_DL2"},
14314 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia3", "MM_DL3"},
14315 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia4", "MM_DL4"},
14316 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia5", "MM_DL5"},
14317 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia6", "MM_DL6"},
14318 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia7", "MM_DL7"},
14319 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia8", "MM_DL8"},
14320 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia9", "MM_DL9"},
14321 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia10", "MM_DL10"},
14322 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia11", "MM_DL11"},
14323 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia12", "MM_DL12"},
14324 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia13", "MM_DL13"},
14325 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia14", "MM_DL14"},
14326 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia15", "MM_DL15"},
14327 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia16", "MM_DL16"},
14328 {"TERT_TDM_RX_4", NULL, "TERT_TDM_RX_4 Audio Mixer"},
14329
14330 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14331 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14332 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14333 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14334 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14335 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14336 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14337 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14338 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14339 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14340 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14341 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14342 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14343 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14344 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14345 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14346 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia20", "MM_DL20"},
14347 {"QUAT_TDM_RX_0", NULL, "QUAT_TDM_RX_0 Audio Mixer"},
14348
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014349 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14350 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14351 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14352 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14353 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14354 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14355 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14356 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14357 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14358 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14359 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14360 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14361 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14362 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14363 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14364 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14365 {"QUAT_TDM_TX_0", NULL, "QUAT_TDM_TX_0 Audio Mixer"},
14366
14367 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
14368 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
14369 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
14370 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
14371 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
14372 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
14373 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
14374 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
14375 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
14376 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
14377 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
14378 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
14379 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
14380 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
14381 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
14382 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
14383 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia20", "MM_DL20"},
14384 {"QUAT_TDM_RX_1", NULL, "QUAT_TDM_RX_1 Audio Mixer"},
14385
14386 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
14387 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
14388 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
14389 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
14390 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
14391 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
14392 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
14393 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
14394 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
14395 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
14396 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
14397 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
14398 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
14399 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
14400 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
14401 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
14402 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia20", "MM_DL20"},
14403 {"QUAT_TDM_RX_2", NULL, "QUAT_TDM_RX_2 Audio Mixer"},
14404
14405 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
14406 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
14407 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
14408 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
14409 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
14410 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
14411 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
14412 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
14413 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
14414 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
14415 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
14416 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
14417 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
14418 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
14419 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
14420 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
14421 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia20", "MM_DL20"},
14422 {"QUAT_TDM_RX_3", NULL, "QUAT_TDM_RX_3 Audio Mixer"},
14423
Rohit Kumara5077932017-09-10 22:05:05 +053014424 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14425 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14426 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14427 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14428 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14429 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14430 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14431 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14432 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14433 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14434 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14435 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14436 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14437 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14438 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14439 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14440 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia20", "MM_DL20"},
14441 {"QUIN_TDM_RX_0", NULL, "QUIN_TDM_RX_0 Audio Mixer"},
14442
14443 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14444 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14445 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14446 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14447 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14448 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14449 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14450 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14451 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14452 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14453 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14454 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14455 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14456 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14457 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14458 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14459 {"QUIN_TDM_TX_0", NULL, "QUIN_TDM_TX_0 Audio Mixer"},
14460
14461 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
14462 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
14463 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
14464 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
14465 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
14466 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
14467 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
14468 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
14469 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
14470 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
14471 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
14472 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
14473 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
14474 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
14475 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
14476 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
14477 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia20", "MM_DL20"},
14478 {"QUIN_TDM_RX_1", NULL, "QUIN_TDM_RX_1 Audio Mixer"},
14479
14480 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
14481 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
14482 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
14483 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
14484 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
14485 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
14486 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
14487 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
14488 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
14489 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
14490 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
14491 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
14492 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
14493 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
14494 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
14495 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
14496 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia20", "MM_DL20"},
14497 {"QUIN_TDM_RX_2", NULL, "QUIN_TDM_RX_2 Audio Mixer"},
14498
14499 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
14500 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
14501 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
14502 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
14503 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
14504 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
14505 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
14506 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
14507 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
14508 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
14509 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
14510 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
14511 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
14512 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
14513 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
14514 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
14515 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia20", "MM_DL20"},
14516 {"QUIN_TDM_RX_3", NULL, "QUIN_TDM_RX_3 Audio Mixer"},
14517
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014518 {"MultiMedia1 Mixer", "PRI_TX", "PRI_I2S_TX"},
14519 {"MultiMedia1 Mixer", "MI2S_TX", "MI2S_TX"},
14520 {"MultiMedia2 Mixer", "MI2S_TX", "MI2S_TX"},
14521 {"MultiMedia3 Mixer", "MI2S_TX", "MI2S_TX"},
14522 {"MultiMedia5 Mixer", "MI2S_TX", "MI2S_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014523 {"MultiMedia10 Mixer", "MI2S_TX", "MI2S_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014524 {"MultiMedia16 Mixer", "MI2S_TX", "MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014525 {"MultiMedia1 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14526 {"MultiMedia2 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14527 {"MultiMedia6 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14528 {"MultiMedia1 Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
14529 {"MultiMedia2 Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
14530 {"MultiMedia1 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14531 {"MultiMedia2 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14532 {"MultiMedia1 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
14533 {"MultiMedia2 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
14534 {"MultiMedia1 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14535 {"MultiMedia2 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14536 {"MultiMedia1 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14537 {"MultiMedia1 Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
14538 {"MultiMedia3 Mixer", "AUX_PCM_TX", "AUX_PCM_TX"},
14539 {"MultiMedia5 Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014540 {"MultiMedia10 Mixer", "AUX_PCM_TX", "AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014541 {"MultiMedia1 Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
14542 {"MultiMedia3 Mixer", "SEC_AUX_PCM_TX", "SEC_AUX_PCM_TX"},
14543 {"MultiMedia5 Mixer", "SEC_AUX_PCM_TX", "SEC_AUX_PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014544 {"MultiMedia10 Mixer", "SEC_AUX_PCM_TX", "SEC_AUX_PCM_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014545 {"MultiMedia16 Mixer", "AUX_PCM_TX", "AUX_PCM_TX"},
14546 {"MultiMedia16 Mixer", "SEC_AUX_PCM_TX", "SEC_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014547 {"MultiMedia1 Mixer", "TERT_AUXPCM_UL_TX", "TERT_AUX_PCM_TX"},
14548 {"MultiMedia3 Mixer", "TERT_AUX_PCM_TX", "TERT_AUX_PCM_TX"},
14549 {"MultiMedia5 Mixer", "TERT_AUX_PCM_TX", "TERT_AUX_PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014550 {"MultiMedia10 Mixer", "TERT_AUX_PCM_TX", "TERT_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014551 {"MultiMedia1 Mixer", "QUAT_AUXPCM_UL_TX", "QUAT_AUX_PCM_TX"},
14552 {"MultiMedia3 Mixer", "QUAT_AUX_PCM_TX", "QUAT_AUX_PCM_TX"},
14553 {"MultiMedia5 Mixer", "QUAT_AUX_PCM_TX", "QUAT_AUX_PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014554 {"MultiMedia10 Mixer", "QUAT_AUX_PCM_TX", "QUAT_AUX_PCM_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014555 {"MultiMedia16 Mixer", "QUAT_AUX_PCM_TX", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053014556 {"MultiMedia1 Mixer", "QUIN_AUXPCM_UL_TX", "QUIN_AUX_PCM_TX"},
14557 {"MultiMedia3 Mixer", "QUIN_AUX_PCM_TX", "QUIN_AUX_PCM_TX"},
14558 {"MultiMedia5 Mixer", "QUIN_AUX_PCM_TX", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014559 {"MultiMedia2 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14560 {"MultiMedia2 Mixer", "SLIM_6_TX", "SLIMBUS_6_TX"},
14561 {"MultiMedia2 Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
14562 {"MultiMedia2 Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
14563 {"MultiMedia1 Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
14564 {"MultiMedia1 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14565 {"MultiMedia2 Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
14566 {"MultiMedia6 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14567 {"MultiMedia6 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14568 {"MultiMedia3 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14569 {"MultiMedia5 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014570 {"MultiMedia10 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014571 {"MultiMedia6 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
14572 {"MultiMedia3 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
14573 {"MultiMedia5 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014574 {"MultiMedia10 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014575 {"MultiMedia16 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014576 {"MultiMedia6 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14577 {"MultiMedia3 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14578 {"MultiMedia5 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014579 {"MultiMedia10 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014580 {"MultiMedia16 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014581 {"MultiMedia6 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14582 {"MultiMedia6 Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
14583 {"MultiMedia6 Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
14584 {"MultiMedia6 Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053014585 {"MultiMedia6 Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014586
14587 {"MultiMedia1 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
14588 {"MultiMedia1 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
14589 {"MultiMedia1 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
14590 {"MultiMedia1 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
14591 {"MultiMedia1 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
14592 {"MultiMedia1 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
14593 {"MultiMedia1 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
14594 {"MultiMedia1 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
14595 {"MultiMedia1 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14596 {"MultiMedia1 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14597 {"MultiMedia1 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14598 {"MultiMedia1 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14599 {"MultiMedia1 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14600 {"MultiMedia1 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14601 {"MultiMedia1 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14602 {"MultiMedia1 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053014603 {"MultiMedia1 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
14604 {"MultiMedia1 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
14605 {"MultiMedia1 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
14606 {"MultiMedia1 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014607
14608 {"MultiMedia2 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
14609 {"MultiMedia2 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
14610 {"MultiMedia2 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
14611 {"MultiMedia2 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
14612 {"MultiMedia2 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
14613 {"MultiMedia2 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
14614 {"MultiMedia2 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
14615 {"MultiMedia2 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
14616 {"MultiMedia2 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14617 {"MultiMedia2 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14618 {"MultiMedia2 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14619 {"MultiMedia2 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14620 {"MultiMedia2 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14621 {"MultiMedia2 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14622 {"MultiMedia2 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14623 {"MultiMedia2 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053014624 {"MultiMedia2 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
14625 {"MultiMedia2 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
14626 {"MultiMedia2 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
14627 {"MultiMedia2 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014628
14629 {"MultiMedia3 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
14630 {"MultiMedia3 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
14631 {"MultiMedia3 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
14632 {"MultiMedia3 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
14633 {"MultiMedia3 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
14634 {"MultiMedia3 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
14635 {"MultiMedia3 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
14636 {"MultiMedia3 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
14637 {"MultiMedia3 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14638 {"MultiMedia3 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14639 {"MultiMedia3 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14640 {"MultiMedia3 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14641 {"MultiMedia3 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14642 {"MultiMedia3 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14643 {"MultiMedia3 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14644 {"MultiMedia3 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053014645 {"MultiMedia3 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
14646 {"MultiMedia3 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
14647 {"MultiMedia3 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
14648 {"MultiMedia3 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014649
14650 {"MultiMedia4 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
14651 {"MultiMedia4 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
14652 {"MultiMedia4 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
14653 {"MultiMedia4 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
14654 {"MultiMedia4 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
14655 {"MultiMedia4 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
14656 {"MultiMedia4 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
14657 {"MultiMedia4 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
14658 {"MultiMedia4 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14659 {"MultiMedia4 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14660 {"MultiMedia4 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14661 {"MultiMedia4 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14662 {"MultiMedia4 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14663 {"MultiMedia4 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14664 {"MultiMedia4 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14665 {"MultiMedia4 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053014666 {"MultiMedia4 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
14667 {"MultiMedia4 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
14668 {"MultiMedia4 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
14669 {"MultiMedia4 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014670
14671 {"MultiMedia5 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
14672 {"MultiMedia5 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
14673 {"MultiMedia5 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
14674 {"MultiMedia5 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
14675 {"MultiMedia5 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
14676 {"MultiMedia5 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
14677 {"MultiMedia5 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
14678 {"MultiMedia5 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
14679 {"MultiMedia5 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14680 {"MultiMedia5 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14681 {"MultiMedia5 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14682 {"MultiMedia5 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14683 {"MultiMedia5 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14684 {"MultiMedia5 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14685 {"MultiMedia5 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14686 {"MultiMedia5 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053014687 {"MultiMedia5 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
14688 {"MultiMedia5 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
14689 {"MultiMedia5 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
14690 {"MultiMedia5 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014691
14692 {"MultiMedia6 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
14693 {"MultiMedia6 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
14694 {"MultiMedia6 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
14695 {"MultiMedia6 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
14696 {"MultiMedia6 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
14697 {"MultiMedia6 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
14698 {"MultiMedia6 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
14699 {"MultiMedia6 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
14700 {"MultiMedia6 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14701 {"MultiMedia6 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14702 {"MultiMedia6 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14703 {"MultiMedia6 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14704 {"MultiMedia6 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14705 {"MultiMedia6 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14706 {"MultiMedia6 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14707 {"MultiMedia6 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053014708 {"MultiMedia6 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
14709 {"MultiMedia6 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
14710 {"MultiMedia6 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
14711 {"MultiMedia6 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014712
14713 {"MultiMedia8 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
14714 {"MultiMedia8 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
14715 {"MultiMedia8 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
14716 {"MultiMedia8 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
14717 {"MultiMedia8 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
14718 {"MultiMedia8 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
14719 {"MultiMedia8 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
14720 {"MultiMedia8 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
14721 {"MultiMedia8 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14722 {"MultiMedia8 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14723 {"MultiMedia8 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14724 {"MultiMedia8 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14725 {"MultiMedia8 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14726 {"MultiMedia8 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14727 {"MultiMedia8 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14728 {"MultiMedia8 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053014729 {"MultiMedia8 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
14730 {"MultiMedia8 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
14731 {"MultiMedia8 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
14732 {"MultiMedia8 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014733
14734 {"MultiMedia9 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14735 {"MultiMedia9 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14736 {"MultiMedia9 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14737 {"MultiMedia9 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14738 {"MultiMedia9 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14739 {"MultiMedia9 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14740 {"MultiMedia9 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14741 {"MultiMedia9 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053014742 {"MultiMedia9 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
14743 {"MultiMedia9 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
14744 {"MultiMedia9 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
14745 {"MultiMedia9 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014746
Laxminath Kasam38070be2017-08-17 18:21:59 +053014747 {"MultiMedia10 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14748 {"MultiMedia10 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14749 {"MultiMedia10 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14750 {"MultiMedia10 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14751 {"MultiMedia10 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14752 {"MultiMedia10 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14753 {"MultiMedia10 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14754 {"MultiMedia10 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014755 {"MultiMedia20 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14756 {"MultiMedia20 Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
14757 {"MultiMedia20 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14758 {"MultiMedia20 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053014759 {"MultiMedia20 Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014760 {"MultiMedia20 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
14761 {"MultiMedia20 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
14762 {"MultiMedia20 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
14763 {"MultiMedia20 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
14764 {"MultiMedia20 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
14765 {"MultiMedia20 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
14766 {"MultiMedia20 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
14767 {"MultiMedia20 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
14768 {"MultiMedia20 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14769 {"MultiMedia20 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14770 {"MultiMedia20 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14771 {"MultiMedia20 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14772 {"MultiMedia20 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14773 {"MultiMedia20 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14774 {"MultiMedia20 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14775 {"MultiMedia20 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053014776 {"MultiMedia20 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
14777 {"MultiMedia20 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
14778 {"MultiMedia20 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
14779 {"MultiMedia20 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014780
14781 {"MultiMedia1 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
14782 {"MultiMedia2 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
14783 {"MultiMedia4 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
14784 {"MultiMedia5 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
14785 {"MultiMedia6 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
14786 {"MultiMedia8 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014787 {"MultiMedia10 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014788
Asish Bhattacharya34504582017-08-08 12:55:01 +053014789 {"MultiMedia16 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
14790 {"MultiMedia16 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
14791 {"MultiMedia16 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
14792 {"MultiMedia16 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
14793 {"MultiMedia16 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
14794 {"MultiMedia16 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
14795 {"MultiMedia16 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
14796 {"MultiMedia16 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
14797 {"MultiMedia16 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14798 {"MultiMedia16 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14799 {"MultiMedia16 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14800 {"MultiMedia16 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14801 {"MultiMedia16 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14802 {"MultiMedia16 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14803 {"MultiMedia16 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14804 {"MultiMedia16 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
14805 {"MultiMedia16 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
14806
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014807 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14808 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14809 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14810 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14811 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14812 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14813 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14814 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14815 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14816 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14817 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14818 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14819 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14820 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14821 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14822 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14823 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia6", "MM_UL6"},
14824 {"INT_BT_SCO_RX", NULL, "INTERNAL_BT_SCO_RX Audio Mixer"},
14825
14826 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14827 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14828 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14829 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14830 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14831 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14832 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14833 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14834 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14835 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14836 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14837 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14838 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14839 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14840 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14841 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14842 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia6", "MM_UL6"},
14843 {"INT_BT_A2DP_RX", NULL, "INTERNAL_A2DP_RX Audio Mixer"},
14844
14845 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14846 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14847 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14848 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14849 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14850 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14851 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14852 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14853 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14854 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14855 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14856 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14857 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14858 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14859 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14860 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14861 {"INT_FM_RX", NULL, "INTERNAL_FM_RX Audio Mixer"},
14862
14863 {"AFE_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14864 {"AFE_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14865 {"AFE_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14866 {"AFE_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14867 {"AFE_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14868 {"AFE_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14869 {"AFE_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14870 {"AFE_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14871 {"AFE_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14872 {"AFE_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14873 {"AFE_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14874 {"AFE_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14875 {"AFE_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14876 {"AFE_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14877 {"AFE_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14878 {"AFE_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14879 {"PCM_RX", NULL, "AFE_PCM_RX Audio Mixer"},
14880
14881 {"MultiMedia1 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
14882 {"MultiMedia3 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
14883 {"MultiMedia4 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014884 {"MultiMedia10 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014885 {"MultiMedia17 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
14886 {"MultiMedia18 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
14887 {"MultiMedia19 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
14888 {"MultiMedia5 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
14889 {"MultiMedia8 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014890 {"MultiMedia16 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014891 {"MultiMedia1 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
14892 {"MultiMedia4 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014893 {"MultiMedia16 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014894 {"MultiMedia17 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
14895 {"MultiMedia18 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
14896 {"MultiMedia19 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
14897 {"MultiMedia5 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
14898 {"MultiMedia6 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
14899 {"MultiMedia8 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
14900
14901 {"MultiMedia1 Mixer", "AFE_PCM_TX", "PCM_TX"},
14902 {"MultiMedia3 Mixer", "AFE_PCM_TX", "PCM_TX"},
14903 {"MultiMedia4 Mixer", "AFE_PCM_TX", "PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014904 {"MultiMedia10 Mixer", "AFE_PCM_TX", "PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014905 {"MultiMedia17 Mixer", "AFE_PCM_TX", "PCM_TX"},
14906 {"MultiMedia18 Mixer", "AFE_PCM_TX", "PCM_TX"},
14907 {"MultiMedia19 Mixer", "AFE_PCM_TX", "PCM_TX"},
14908 {"MultiMedia5 Mixer", "AFE_PCM_TX", "PCM_TX"},
14909 {"MultiMedia8 Mixer", "AFE_PCM_TX", "PCM_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014910 {"MultiMedia16 Mixer", "AFE_PCM_TX", "PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014911 {"MM_UL1", NULL, "MultiMedia1 Mixer"},
14912 {"MultiMedia2 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
14913 {"MM_UL2", NULL, "MultiMedia2 Mixer"},
14914 {"MM_UL3", NULL, "MultiMedia3 Mixer"},
14915 {"MM_UL4", NULL, "MultiMedia4 Mixer"},
14916 {"MM_UL5", NULL, "MultiMedia5 Mixer"},
14917 {"MM_UL6", NULL, "MultiMedia6 Mixer"},
14918 {"MM_UL8", NULL, "MultiMedia8 Mixer"},
14919 {"MM_UL9", NULL, "MultiMedia9 Mixer"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014920 {"MM_UL10", NULL, "MultiMedia10 Mixer"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014921 {"MM_UL16", NULL, "MultiMedia16 Mixer"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014922 {"MM_UL17", NULL, "MultiMedia17 Mixer"},
14923 {"MM_UL18", NULL, "MultiMedia18 Mixer"},
14924 {"MM_UL19", NULL, "MultiMedia19 Mixer"},
14925 {"MM_UL20", NULL, "MultiMedia20 Mixer"},
14926
14927 {"AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14928 {"AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14929 {"AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14930 {"AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14931 {"AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14932 {"AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14933 {"AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14934 {"AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14935 {"AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14936 {"AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14937 {"AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14938 {"AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14939 {"AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14940 {"AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14941 {"AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14942 {"AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14943 {"AUX_PCM_RX", NULL, "AUX_PCM_RX Audio Mixer"},
14944
14945 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14946 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14947 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14948 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14949 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14950 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14951 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14952 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14953 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14954 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14955 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14956 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14957 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14958 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14959 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14960 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14961 {"SEC_AUX_PCM_RX", NULL, "SEC_AUX_PCM_RX Audio Mixer"},
14962
14963 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14964 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14965 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14966 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14967 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14968 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14969 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14970 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14971 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14972 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14973 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14974 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14975 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14976 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14977 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14978 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14979 {"TERT_AUX_PCM_RX", NULL, "TERT_AUX_PCM_RX Audio Mixer"},
14980
14981 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14982 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14983 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14984 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14985 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14986 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14987 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14988 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14989 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14990 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14991 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14992 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14993 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14994 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14995 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14996 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14997 {"QUAT_AUX_PCM_RX", NULL, "QUAT_AUX_PCM_RX Audio Mixer"},
14998
Rohit Kumara5077932017-09-10 22:05:05 +053014999 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15000 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15001 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15002 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15003 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15004 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15005 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15006 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15007 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15008 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15009 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15010 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15011 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15012 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15013 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15014 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15015 {"QUIN_AUX_PCM_RX", NULL, "QUIN_AUX_PCM_RX Audio Mixer"},
15016
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015017 {"PRI_RX_Voice Mixer", "Voip", "VOIP_DL"},
15018 {"PRI_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15019 {"PRI_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15020 {"PRI_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15021 {"PRI_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15022 {"PRI_I2S_RX", NULL, "PRI_RX_Voice Mixer"},
15023
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015024 {"SEC_RX_Voice Mixer", "Voip", "VOIP_DL"},
15025 {"SEC_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15026 {"SEC_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15027 {"SEC_I2S_RX", NULL, "SEC_RX_Voice Mixer"},
15028
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015029 {"SEC_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
15030 {"SEC_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15031 {"SEC_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15032 {"SEC_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15033 {"SEC_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15034 {"SEC_MI2S_RX", NULL, "SEC_MI2S_RX_Voice Mixer"},
15035
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015036 {"SLIM_0_RX_Voice Mixer", "Voip", "VOIP_DL"},
15037 {"SLIM_0_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15038 {"SLIM_0_RX_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
15039 {"SLIM_0_RX_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
15040 {"SLIM_0_RX_Voice Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
15041 {"SLIM_0_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15042 {"SLIM_0_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15043 {"SLIM_0_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15044 {"SLIMBUS_0_RX", NULL, "SLIM_0_RX_Voice Mixer"},
15045
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015046 {"SLIM_6_RX_Voice Mixer", "Voip", "VOIP_DL"},
15047 {"SLIM_6_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15048 {"SLIM_6_RX_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
15049 {"SLIM_6_RX_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
15050 {"SLIM_6_RX_Voice Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
15051 {"SLIM_6_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15052 {"SLIM_6_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15053 {"SLIM_6_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15054 {"SLIMBUS_6_RX", NULL, "SLIM_6_RX_Voice Mixer"},
15055
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015056 {"USB_AUDIO_RX_Voice Mixer", "Voip", "VOIP_DL"},
15057 {"USB_AUDIO_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15058 {"USB_AUDIO_RX_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
15059 {"USB_AUDIO_RX_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
15060 {"USB_AUDIO_RX_Voice Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
15061 {"USB_AUDIO_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15062 {"USB_AUDIO_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15063 {"USB_AUDIO_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15064 {"USB_AUDIO_RX", NULL, "USB_AUDIO_RX_Voice Mixer"},
15065
Aalique Grahamee4fd7d52017-11-28 13:24:13 -080015066 {"DISPLAY_PORT_RX_Voice Mixer", "Voip", "VOIP_DL"},
15067 {"DISPLAY_PORT_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15068 {"DISPLAY_PORT_RX_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
15069 {"DISPLAY_PORT_RX_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
15070 {"DISPLAY_PORT_RX_Voice Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
15071 {"DISPLAY_PORT_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15072 {"DISPLAY_PORT_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15073 {"DISPLAY_PORT_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15074 {"DISPLAY_PORT", NULL, "DISPLAY_PORT_RX_Voice Mixer"},
15075
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015076 {"INTERNAL_BT_SCO_RX_Voice Mixer", "Voip", "VOIP_DL"},
15077 {"INTERNAL_BT_SCO_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15078 {"INTERNAL_BT_SCO_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15079 {"INTERNAL_BT_SCO_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15080 {"INTERNAL_BT_SCO_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15081 {"INTERNAL_BT_SCO_RX_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
15082 {"INTERNAL_BT_SCO_RX_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
15083 {"INT_BT_SCO_RX", NULL, "INTERNAL_BT_SCO_RX_Voice Mixer"},
15084
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015085 {"AFE_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
15086 {"AFE_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15087 {"AFE_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15088 {"AFE_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15089 {"AFE_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15090 {"PCM_RX", NULL, "AFE_PCM_RX_Voice Mixer"},
15091
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015092 {"AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
15093 {"AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15094 {"AUX_PCM_RX_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
15095 {"AUX_PCM_RX_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
15096 {"AUX_PCM_RX_Voice Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
15097 {"AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15098 {"AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15099 {"AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15100 {"AUX_PCM_RX", NULL, "AUX_PCM_RX_Voice Mixer"},
15101
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015102 {"SEC_AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
15103 {"SEC_AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15104 {"SEC_AUX_PCM_RX_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
15105 {"SEC_AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15106 {"SEC_AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15107 {"SEC_AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15108 {"SEC_AUX_PCM_RX", NULL, "SEC_AUX_PCM_RX_Voice Mixer"},
15109
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015110 {"TERT_AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
15111 {"TERT_AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15112 {"TERT_AUX_PCM_RX_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
15113 {"TERT_AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15114 {"TERT_AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15115 {"TERT_AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15116 {"TERT_AUX_PCM_RX", NULL, "TERT_AUX_PCM_RX_Voice Mixer"},
15117
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015118 {"QUAT_AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
15119 {"QUAT_AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15120 {"QUAT_AUX_PCM_RX_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
15121 {"QUAT_AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15122 {"QUAT_AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15123 {"QUAT_AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15124 {"QUAT_AUX_PCM_RX", NULL, "QUAT_AUX_PCM_RX_Voice Mixer"},
15125
Rohit Kumara5077932017-09-10 22:05:05 +053015126 {"QUIN_AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
15127 {"QUIN_AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15128 {"QUIN_AUX_PCM_RX_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
15129 {"QUIN_AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15130 {"QUIN_AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15131 {"QUIN_AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15132 {"QUIN_AUX_PCM_RX", NULL, "QUIN_AUX_PCM_RX_Voice Mixer"},
15133
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015134 {"HDMI_RX_Voice Mixer", "Voip", "VOIP_DL"},
15135 {"HDMI_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15136 {"HDMI_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15137 {"HDMI_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15138 {"HDMI_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15139 {"HDMI", NULL, "HDMI_RX_Voice Mixer"},
15140 {"HDMI", NULL, "HDMI_DL_HL"},
15141
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015142 {"MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015143 {"MI2S_RX_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
15144 {"MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15145 {"MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15146 {"MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
kunleiz8a60b822017-10-11 15:04:02 +080015147 {"MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015148 {"MI2S_RX", NULL, "MI2S_RX_Voice Mixer"},
15149
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015150 {"PRI_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015151 {"PRI_MI2S_RX_Voice Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
15152 {"PRI_MI2S_RX_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
15153 {"PRI_MI2S_RX_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
15154 {"PRI_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15155 {"PRI_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15156 {"PRI_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15157 {"PRI_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15158 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX_Voice Mixer"},
15159
15160 {"INT0_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
15161 {"INT0_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15162 {"INT0_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15163 {"INT0_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15164 {"INT0_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15165 {"INT0_MI2S_RX", NULL, "INT0_MI2S_RX_Voice Mixer"},
15166
15167 {"INT4_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
15168 {"INT4_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15169 {"INT4_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15170 {"INT4_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15171 {"INT4_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15172 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX_Voice Mixer"},
15173
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015174 {"TERT_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015175 {"TERT_MI2S_RX_Voice Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
15176 {"TERT_MI2S_RX_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
15177 {"TERT_MI2S_RX_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
15178 {"TERT_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15179 {"TERT_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15180 {"TERT_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15181 {"TERT_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15182 {"TERT_MI2S_RX", NULL, "TERT_MI2S_RX_Voice Mixer"},
15183
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015184 {"QUAT_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015185 {"QUAT_MI2S_RX_Voice Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
15186 {"QUAT_MI2S_RX_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
15187 {"QUAT_MI2S_RX_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
15188 {"QUAT_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15189 {"QUAT_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15190 {"QUAT_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15191 {"QUAT_MI2S_RX", NULL, "QUAT_MI2S_RX_Voice Mixer"},
15192
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015193 {"QUIN_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015194 {"QUIN_MI2S_RX_Voice Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
15195 {"QUIN_MI2S_RX_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
15196 {"QUIN_MI2S_RX_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
15197 {"QUIN_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15198 {"QUIN_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15199 {"QUIN_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15200 {"QUIN_MI2S_RX", NULL, "QUIN_MI2S_RX_Voice Mixer"},
15201
15202 {"QUAT_TDM_RX_2_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15203 {"QUAT_TDM_RX_2", NULL, "QUAT_TDM_RX_2_Voice Mixer"},
15204
15205 {"VOC_EXT_EC MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15206 {"VOC_EXT_EC MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15207 {"VOC_EXT_EC MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15208 {"VOC_EXT_EC MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015209 {"VOC_EXT_EC MUX", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015210 {"VOC_EXT_EC MUX", "SLIM_1_TX", "SLIMBUS_1_TX"},
15211 {"CS-VOICE_UL1", NULL, "VOC_EXT_EC MUX"},
15212 {"VOIP_UL", NULL, "VOC_EXT_EC MUX"},
15213 {"VoLTE_UL", NULL, "VOC_EXT_EC MUX"},
15214 {"VOICE2_UL", NULL, "VOC_EXT_EC MUX"},
15215 {"VoWLAN_UL", NULL, "VOC_EXT_EC MUX"},
15216 {"VOICEMMODE1_UL", NULL, "VOC_EXT_EC MUX"},
15217 {"VOICEMMODE2_UL", NULL, "VOC_EXT_EC MUX"},
15218
15219 {"AUDIO_REF_EC_UL1 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15220 {"AUDIO_REF_EC_UL1 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15221 {"AUDIO_REF_EC_UL1 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15222 {"AUDIO_REF_EC_UL1 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15223 {"AUDIO_REF_EC_UL1 MUX", "SLIM_1_TX", "SLIMBUS_1_TX"},
15224 {"AUDIO_REF_EC_UL1 MUX", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15225 {"AUDIO_REF_EC_UL1 MUX", "QUAT_TDM_RX_0", "QUAT_TDM_RX_0"},
15226 {"AUDIO_REF_EC_UL1 MUX", "QUAT_TDM_RX_1", "QUAT_TDM_RX_1"},
15227 {"AUDIO_REF_EC_UL1 MUX", "QUAT_TDM_RX_2", "QUAT_TDM_RX_2"},
15228 {"AUDIO_REF_EC_UL1 MUX", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15229
15230 {"AUDIO_REF_EC_UL2 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15231 {"AUDIO_REF_EC_UL2 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15232 {"AUDIO_REF_EC_UL2 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15233 {"AUDIO_REF_EC_UL2 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15234
15235 {"AUDIO_REF_EC_UL3 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15236 {"AUDIO_REF_EC_UL3 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15237 {"AUDIO_REF_EC_UL3 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15238 {"AUDIO_REF_EC_UL3 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15239
15240 {"AUDIO_REF_EC_UL4 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15241 {"AUDIO_REF_EC_UL4 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15242 {"AUDIO_REF_EC_UL4 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15243 {"AUDIO_REF_EC_UL4 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15244
15245 {"AUDIO_REF_EC_UL5 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15246 {"AUDIO_REF_EC_UL5 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15247 {"AUDIO_REF_EC_UL5 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15248 {"AUDIO_REF_EC_UL5 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15249
15250 {"AUDIO_REF_EC_UL6 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15251 {"AUDIO_REF_EC_UL6 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15252 {"AUDIO_REF_EC_UL6 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15253 {"AUDIO_REF_EC_UL6 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15254
15255 {"AUDIO_REF_EC_UL8 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15256 {"AUDIO_REF_EC_UL8 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15257 {"AUDIO_REF_EC_UL8 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15258 {"AUDIO_REF_EC_UL8 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15259
15260 {"AUDIO_REF_EC_UL9 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15261 {"AUDIO_REF_EC_UL9 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15262 {"AUDIO_REF_EC_UL9 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15263 {"AUDIO_REF_EC_UL9 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15264
Laxminath Kasam38070be2017-08-17 18:21:59 +053015265 {"AUDIO_REF_EC_UL10 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15266 {"AUDIO_REF_EC_UL10 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15267 {"AUDIO_REF_EC_UL10 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15268 {"AUDIO_REF_EC_UL10 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15269 {"AUDIO_REF_EC_UL10 MUX", "SLIM_1_TX", "SLIMBUS_1_TX"},
15270 {"AUDIO_REF_EC_UL10 MUX", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15271 {"AUDIO_REF_EC_UL10 MUX", "QUAT_TDM_RX_0", "QUAT_TDM_RX_0"},
15272 {"AUDIO_REF_EC_UL10 MUX", "QUAT_TDM_RX_1", "QUAT_TDM_RX_1"},
15273 {"AUDIO_REF_EC_UL10 MUX", "QUAT_TDM_RX_2", "QUAT_TDM_RX_2"},
15274 {"AUDIO_REF_EC_UL10 MUX", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
Vikram Panduranga016c49f2017-09-11 15:15:56 -070015275
15276 {"AUDIO_REF_EC_UL16 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15277 {"AUDIO_REF_EC_UL16 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15278 {"AUDIO_REF_EC_UL16 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15279 {"AUDIO_REF_EC_UL16 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15280
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015281 {"AUDIO_REF_EC_UL17 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15282 {"AUDIO_REF_EC_UL17 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15283 {"AUDIO_REF_EC_UL17 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15284 {"AUDIO_REF_EC_UL17 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15285
15286 {"AUDIO_REF_EC_UL18 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15287 {"AUDIO_REF_EC_UL18 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15288 {"AUDIO_REF_EC_UL18 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15289 {"AUDIO_REF_EC_UL18 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15290
15291 {"AUDIO_REF_EC_UL19 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15292 {"AUDIO_REF_EC_UL19 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15293 {"AUDIO_REF_EC_UL19 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15294 {"AUDIO_REF_EC_UL19 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15295
15296 {"MM_UL1", NULL, "AUDIO_REF_EC_UL1 MUX"},
15297 {"MM_UL2", NULL, "AUDIO_REF_EC_UL2 MUX"},
15298 {"MM_UL3", NULL, "AUDIO_REF_EC_UL3 MUX"},
15299 {"MM_UL4", NULL, "AUDIO_REF_EC_UL4 MUX"},
15300 {"MM_UL5", NULL, "AUDIO_REF_EC_UL5 MUX"},
15301 {"MM_UL6", NULL, "AUDIO_REF_EC_UL6 MUX"},
15302 {"MM_UL8", NULL, "AUDIO_REF_EC_UL8 MUX"},
15303 {"MM_UL9", NULL, "AUDIO_REF_EC_UL9 MUX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053015304 {"MM_UL10", NULL, "AUDIO_REF_EC_UL10 MUX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053015305 {"MM_UL16", NULL, "AUDIO_REF_EC_UL16 MUX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015306 {"MM_UL17", NULL, "AUDIO_REF_EC_UL17 MUX"},
15307 {"MM_UL18", NULL, "AUDIO_REF_EC_UL18 MUX"},
15308 {"MM_UL19", NULL, "AUDIO_REF_EC_UL19 MUX"},
15309
15310 {"Voice_Tx Mixer", "PRI_TX_Voice", "PRI_I2S_TX"},
15311 {"Voice_Tx Mixer", "PRI_MI2S_TX_Voice", "PRI_MI2S_TX"},
15312 {"Voice_Tx Mixer", "MI2S_TX_Voice", "MI2S_TX"},
15313 {"Voice_Tx Mixer", "TERT_MI2S_TX_Voice", "TERT_MI2S_TX"},
15314 {"Voice_Tx Mixer", "SLIM_0_TX_Voice", "SLIMBUS_0_TX"},
15315 {"Voice_Tx Mixer", "SLIM_7_TX_Voice", "SLIMBUS_7_TX"},
15316 {"Voice_Tx Mixer", "SLIM_8_TX_Voice", "SLIMBUS_8_TX"},
15317 {"Voice_Tx Mixer", "USB_AUDIO_TX_Voice", "USB_AUDIO_TX"},
15318 {"Voice_Tx Mixer", "INTERNAL_BT_SCO_TX_Voice", "INT_BT_SCO_TX"},
15319 {"Voice_Tx Mixer", "AFE_PCM_TX_Voice", "PCM_TX"},
15320 {"Voice_Tx Mixer", "AUX_PCM_TX_Voice", "AUX_PCM_TX"},
15321 {"Voice_Tx Mixer", "SEC_AUX_PCM_TX_Voice", "SEC_AUX_PCM_TX"},
15322 {"Voice_Tx Mixer", "TERT_AUX_PCM_TX_Voice", "TERT_AUX_PCM_TX"},
15323 {"Voice_Tx Mixer", "QUAT_AUX_PCM_TX_Voice", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015324 {"Voice_Tx Mixer", "QUIN_AUX_PCM_TX_Voice", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015325 {"Voice_Tx Mixer", "SEC_MI2S_TX_Voice", "SEC_MI2S_TX"},
15326 {"CS-VOICE_UL1", NULL, "Voice_Tx Mixer"},
15327
15328 {"Voice2_Tx Mixer", "PRI_TX_Voice2", "PRI_I2S_TX"},
15329 {"Voice2_Tx Mixer", "PRI_MI2S_TX_Voice2", "PRI_MI2S_TX"},
15330 {"Voice2_Tx Mixer", "MI2S_TX_Voice2", "MI2S_TX"},
15331 {"Voice2_Tx Mixer", "TERT_MI2S_TX_Voice2", "TERT_MI2S_TX"},
15332 {"Voice2_Tx Mixer", "SLIM_0_TX_Voice2", "SLIMBUS_0_TX"},
15333 {"Voice2_Tx Mixer", "SLIM_7_TX_Voice2", "SLIMBUS_7_TX"},
15334 {"Voice2_Tx Mixer", "SLIM_8_TX_Voice2", "SLIMBUS_8_TX"},
15335 {"Voice2_Tx Mixer", "USB_AUDIO_TX_Voice2", "USB_AUDIO_TX"},
15336 {"Voice2_Tx Mixer", "INTERNAL_BT_SCO_TX_Voice2", "INT_BT_SCO_TX"},
15337 {"Voice2_Tx Mixer", "AFE_PCM_TX_Voice2", "PCM_TX"},
15338 {"Voice2_Tx Mixer", "AUX_PCM_TX_Voice2", "AUX_PCM_TX"},
15339 {"Voice2_Tx Mixer", "SEC_AUX_PCM_TX_Voice2", "SEC_AUX_PCM_TX"},
15340 {"Voice2_Tx Mixer", "TERT_AUX_PCM_TX_Voice2", "TERT_AUX_PCM_TX"},
15341 {"Voice2_Tx Mixer", "QUAT_AUX_PCM_TX_Voice2", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015342 {"Voice2_Tx Mixer", "QUIN_AUX_PCM_TX_Voice2", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015343 {"VOICE2_UL", NULL, "Voice2_Tx Mixer"},
15344
15345 {"VoLTE_Tx Mixer", "PRI_TX_VoLTE", "PRI_I2S_TX"},
15346 {"VoLTE_Tx Mixer", "SLIM_0_TX_VoLTE", "SLIMBUS_0_TX"},
15347 {"VoLTE_Tx Mixer", "SLIM_7_TX_VoLTE", "SLIMBUS_7_TX"},
15348 {"VoLTE_Tx Mixer", "SLIM_8_TX_VoLTE", "SLIMBUS_8_TX"},
15349 {"VoLTE_Tx Mixer", "USB_AUDIO_TX_VoLTE", "USB_AUDIO_TX"},
15350 {"VoLTE_Tx Mixer", "INTERNAL_BT_SCO_TX_VoLTE", "INT_BT_SCO_TX"},
15351 {"VoLTE_Tx Mixer", "AFE_PCM_TX_VoLTE", "PCM_TX"},
15352 {"VoLTE_Tx Mixer", "AUX_PCM_TX_VoLTE", "AUX_PCM_TX"},
15353 {"VoLTE_Tx Mixer", "SEC_AUX_PCM_TX_VoLTE", "SEC_AUX_PCM_TX"},
15354 {"VoLTE_Tx Mixer", "TERT_AUX_PCM_TX_VoLTE", "TERT_AUX_PCM_TX"},
15355 {"VoLTE_Tx Mixer", "QUAT_AUX_PCM_TX_VoLTE", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015356 {"VoLTE_Tx Mixer", "QUIN_AUX_PCM_TX_VoLTE", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015357 {"VoLTE_Tx Mixer", "MI2S_TX_VoLTE", "MI2S_TX"},
15358 {"VoLTE_Tx Mixer", "PRI_MI2S_TX_VoLTE", "PRI_MI2S_TX"},
15359 {"VoLTE_Tx Mixer", "TERT_MI2S_TX_VoLTE", "TERT_MI2S_TX"},
15360 {"VoLTE_UL", NULL, "VoLTE_Tx Mixer"},
15361
15362 {"VoWLAN_Tx Mixer", "PRI_TX_VoWLAN", "PRI_I2S_TX"},
15363 {"VoWLAN_Tx Mixer", "SLIM_0_TX_VoWLAN", "SLIMBUS_0_TX"},
15364 {"VoWLAN_Tx Mixer", "SLIM_7_TX_VoWLAN", "SLIMBUS_7_TX"},
15365 {"VoWLAN_Tx Mixer", "SLIM_8_TX_VoWLAN", "SLIMBUS_8_TX"},
15366 {"VoWLAN_Tx Mixer", "USB_AUDIO_TX_VoWLAN", "USB_AUDIO_TX"},
15367 {"VoWLAN_Tx Mixer", "INTERNAL_BT_SCO_TX_VoWLAN", "INT_BT_SCO_TX"},
15368 {"VoWLAN_Tx Mixer", "AFE_PCM_TX_VoWLAN", "PCM_TX"},
15369 {"VoWLAN_Tx Mixer", "AUX_PCM_TX_VoWLAN", "AUX_PCM_TX"},
15370 {"VoWLAN_Tx Mixer", "SEC_AUX_PCM_TX_VoWLAN", "SEC_AUX_PCM_TX"},
15371 {"VoWLAN_Tx Mixer", "TERT_AUX_PCM_TX_VoWLAN", "TERT_AUX_PCM_TX"},
15372 {"VoWLAN_Tx Mixer", "QUAT_AUX_PCM_TX_VoWLAN", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015373 {"VoWLAN_Tx Mixer", "QUIN_AUX_PCM_TX_VoWLAN", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015374 {"VoWLAN_Tx Mixer", "MI2S_TX_VoWLAN", "MI2S_TX"},
15375 {"VoWLAN_Tx Mixer", "PRI_MI2S_TX_VoWLAN", "PRI_MI2S_TX"},
15376 {"VoWLAN_Tx Mixer", "TERT_MI2S_TX_VoWLAN", "TERT_MI2S_TX"},
15377 {"VoWLAN_UL", NULL, "VoWLAN_Tx Mixer"},
15378
15379 {"VoiceMMode1_Tx Mixer", "PRI_TX_MMode1", "PRI_I2S_TX"},
15380 {"VoiceMMode1_Tx Mixer", "PRI_MI2S_TX_MMode1", "PRI_MI2S_TX"},
15381 {"VoiceMMode1_Tx Mixer", "MI2S_TX_MMode1", "MI2S_TX"},
15382 {"VoiceMMode1_Tx Mixer", "TERT_MI2S_TX_MMode1", "TERT_MI2S_TX"},
15383 {"VoiceMMode1_Tx Mixer", "INT3_MI2S_TX_MMode1", "INT3_MI2S_TX"},
15384 {"VoiceMMode1_Tx Mixer", "SLIM_0_TX_MMode1", "SLIMBUS_0_TX"},
15385 {"VoiceMMode1_Tx Mixer", "SLIM_7_TX_MMode1", "SLIMBUS_7_TX"},
15386 {"VoiceMMode1_Tx Mixer", "SLIM_8_TX_MMode1", "SLIMBUS_8_TX"},
15387 {"VoiceMMode1_Tx Mixer", "USB_AUDIO_TX_MMode1", "USB_AUDIO_TX"},
15388 {"VoiceMMode1_Tx Mixer", "INT_BT_SCO_TX_MMode1", "INT_BT_SCO_TX"},
15389 {"VoiceMMode1_Tx Mixer", "AFE_PCM_TX_MMode1", "PCM_TX"},
15390 {"VoiceMMode1_Tx Mixer", "AUX_PCM_TX_MMode1", "AUX_PCM_TX"},
15391 {"VoiceMMode1_Tx Mixer", "SEC_AUX_PCM_TX_MMode1", "SEC_AUX_PCM_TX"},
15392 {"VoiceMMode1_Tx Mixer", "TERT_AUX_PCM_TX_MMode1", "TERT_AUX_PCM_TX"},
15393 {"VoiceMMode1_Tx Mixer", "QUAT_AUX_PCM_TX_MMode1", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015394 {"VoiceMMode1_Tx Mixer", "QUIN_AUX_PCM_TX_MMode1", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015395 {"VoiceMMode1_Tx Mixer", "QUAT_TDM_TX_0_MMode1", "QUAT_TDM_TX_0"},
15396 {"VOICEMMODE1_UL", NULL, "VoiceMMode1_Tx Mixer"},
15397
15398 {"VoiceMMode2_Tx Mixer", "PRI_TX_MMode2", "PRI_I2S_TX"},
15399 {"VoiceMMode2_Tx Mixer", "PRI_MI2S_TX_MMode2", "PRI_MI2S_TX"},
15400 {"VoiceMMode2_Tx Mixer", "MI2S_TX_MMode2", "MI2S_TX"},
15401 {"VoiceMMode2_Tx Mixer", "TERT_MI2S_TX_MMode2", "TERT_MI2S_TX"},
15402 {"VoiceMMode2_Tx Mixer", "INT3_MI2S_TX_MMode2", "INT3_MI2S_TX"},
15403 {"VoiceMMode2_Tx Mixer", "SLIM_0_TX_MMode2", "SLIMBUS_0_TX"},
15404 {"VoiceMMode2_Tx Mixer", "SLIM_7_TX_MMode2", "SLIMBUS_7_TX"},
15405 {"VoiceMMode2_Tx Mixer", "SLIM_8_TX_MMode2", "SLIMBUS_8_TX"},
15406 {"VoiceMMode2_Tx Mixer", "USB_AUDIO_TX_MMode2", "USB_AUDIO_TX"},
15407 {"VoiceMMode2_Tx Mixer", "INT_BT_SCO_TX_MMode2", "INT_BT_SCO_TX"},
15408 {"VoiceMMode2_Tx Mixer", "AFE_PCM_TX_MMode2", "PCM_TX"},
15409 {"VoiceMMode2_Tx Mixer", "AUX_PCM_TX_MMode2", "AUX_PCM_TX"},
15410 {"VoiceMMode2_Tx Mixer", "SEC_AUX_PCM_TX_MMode2", "SEC_AUX_PCM_TX"},
15411 {"VoiceMMode2_Tx Mixer", "TERT_AUX_PCM_TX_MMode2", "TERT_AUX_PCM_TX"},
15412 {"VoiceMMode2_Tx Mixer", "QUAT_AUX_PCM_TX_MMode2", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015413 {"VoiceMMode2_Tx Mixer", "QUIN_AUX_PCM_TX_MMode2", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015414 {"VOICEMMODE2_UL", NULL, "VoiceMMode2_Tx Mixer"},
15415
15416 {"Voip_Tx Mixer", "PRI_TX_Voip", "PRI_I2S_TX"},
15417 {"Voip_Tx Mixer", "MI2S_TX_Voip", "MI2S_TX"},
15418 {"Voip_Tx Mixer", "TERT_MI2S_TX_Voip", "TERT_MI2S_TX"},
15419 {"Voip_Tx Mixer", "INT3_MI2S_TX_Voip", "INT3_MI2S_TX"},
15420 {"Voip_Tx Mixer", "SLIM_0_TX_Voip", "SLIMBUS_0_TX"},
15421 {"Voip_Tx Mixer", "SLIM_7_TX_Voip", "SLIMBUS_7_TX"},
15422 {"Voip_Tx Mixer", "SLIM_8_TX_Voip", "SLIMBUS_8_TX"},
15423 {"Voip_Tx Mixer", "USB_AUDIO_TX_Voip", "USB_AUDIO_TX"},
15424 {"Voip_Tx Mixer", "INTERNAL_BT_SCO_TX_Voip", "INT_BT_SCO_TX"},
15425 {"Voip_Tx Mixer", "AFE_PCM_TX_Voip", "PCM_TX"},
15426 {"Voip_Tx Mixer", "AUX_PCM_TX_Voip", "AUX_PCM_TX"},
15427 {"Voip_Tx Mixer", "SEC_AUX_PCM_TX_Voip", "SEC_AUX_PCM_TX"},
15428 {"Voip_Tx Mixer", "TERT_AUX_PCM_TX_Voip", "TERT_AUX_PCM_TX"},
15429 {"Voip_Tx Mixer", "QUAT_AUX_PCM_TX_Voip", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015430 {"Voip_Tx Mixer", "QUIN_AUX_PCM_TX_Voip", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015431 {"Voip_Tx Mixer", "PRI_MI2S_TX_Voip", "PRI_MI2S_TX"},
15432 {"VOIP_UL", NULL, "Voip_Tx Mixer"},
15433
15434 {"SLIMBUS_DL_HL", "Switch", "SLIM0_DL_HL"},
15435 {"SLIMBUS_0_RX", NULL, "SLIMBUS_DL_HL"},
15436 {"SLIMBUS1_DL_HL", "Switch", "SLIM1_DL_HL"},
15437 {"SLIMBUS_1_RX", NULL, "SLIMBUS1_DL_HL"},
15438 {"SLIMBUS3_DL_HL", "Switch", "SLIM3_DL_HL"},
15439 {"SLIMBUS_3_RX", NULL, "SLIMBUS3_DL_HL"},
15440 {"SLIMBUS4_DL_HL", "Switch", "SLIM4_DL_HL"},
15441 {"SLIMBUS_4_RX", NULL, "SLIMBUS4_DL_HL"},
15442 {"SLIMBUS6_DL_HL", "Switch", "SLIM0_DL_HL"},
15443 {"SLIMBUS_6_RX", NULL, "SLIMBUS6_DL_HL"},
15444 {"SLIM0_UL_HL", NULL, "SLIMBUS_0_TX"},
15445 {"SLIM1_UL_HL", NULL, "SLIMBUS_1_TX"},
15446 {"SLIM3_UL_HL", NULL, "SLIMBUS_3_TX"},
15447 {"SLIM4_UL_HL", NULL, "SLIMBUS_4_TX"},
15448 {"SLIM8_UL_HL", NULL, "SLIMBUS_8_TX"},
15449
15450 {"LSM1 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15451 {"LSM1 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15452 {"LSM1 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15453 {"LSM1 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15454 {"LSM1 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15455 {"LSM1 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15456 {"LSM1 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15457 {"LSM1 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
15458 {"LSM1_UL_HL", NULL, "LSM1 Mixer"},
15459
15460 {"LSM2 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15461 {"LSM2 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15462 {"LSM2 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15463 {"LSM2 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15464 {"LSM2 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15465 {"LSM2 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15466 {"LSM2 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15467 {"LSM2 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
15468 {"LSM2_UL_HL", NULL, "LSM2 Mixer"},
15469
15470
15471 {"LSM3 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15472 {"LSM3 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15473 {"LSM3 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15474 {"LSM3 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15475 {"LSM3 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15476 {"LSM3 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15477 {"LSM3 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15478 {"LSM3 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
15479 {"LSM3_UL_HL", NULL, "LSM3 Mixer"},
15480
15481
15482 {"LSM4 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15483 {"LSM4 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15484 {"LSM4 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15485 {"LSM4 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15486 {"LSM4 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15487 {"LSM4 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15488 {"LSM4 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15489 {"LSM4 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
15490 {"LSM4_UL_HL", NULL, "LSM4 Mixer"},
15491
15492 {"LSM5 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15493 {"LSM5 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15494 {"LSM5 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15495 {"LSM5 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15496 {"LSM5 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15497 {"LSM5 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15498 {"LSM5 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15499 {"LSM5 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
15500 {"LSM5_UL_HL", NULL, "LSM5 Mixer"},
15501
15502 {"LSM6 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15503 {"LSM6 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15504 {"LSM6 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15505 {"LSM6 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15506 {"LSM6 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15507 {"LSM6 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15508 {"LSM6_UL_HL", NULL, "LSM6 Mixer"},
15509
15510 {"LSM7 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15511 {"LSM7 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15512 {"LSM7 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15513 {"LSM7 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15514 {"LSM7 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15515 {"LSM7 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15516 {"LSM7_UL_HL", NULL, "LSM7 Mixer"},
15517
15518 {"LSM8 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15519 {"LSM8 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15520 {"LSM8 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15521 {"LSM8 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15522 {"LSM8 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15523 {"LSM8 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15524 {"LSM8_UL_HL", NULL, "LSM8 Mixer"},
15525
15526
15527 {"CPE_LSM_UL_HL", NULL, "BE_IN"},
15528 {"QCHAT_Tx Mixer", "PRI_TX_QCHAT", "PRI_I2S_TX"},
15529 {"QCHAT_Tx Mixer", "SLIM_0_TX_QCHAT", "SLIMBUS_0_TX"},
15530 {"QCHAT_Tx Mixer", "SLIM_7_TX_QCHAT", "SLIMBUS_7_TX"},
15531 {"QCHAT_Tx Mixer", "SLIM_8_TX_QCHAT", "SLIMBUS_8_TX"},
15532 {"QCHAT_Tx Mixer", "INTERNAL_BT_SCO_TX_QCHAT", "INT_BT_SCO_TX"},
15533 {"QCHAT_Tx Mixer", "AFE_PCM_TX_QCHAT", "PCM_TX"},
15534 {"QCHAT_Tx Mixer", "AUX_PCM_TX_QCHAT", "AUX_PCM_TX"},
15535 {"QCHAT_Tx Mixer", "SEC_AUX_PCM_TX_QCHAT", "SEC_AUX_PCM_TX"},
15536 {"QCHAT_Tx Mixer", "TERT_AUX_PCM_TX_QCHAT", "TERT_AUX_PCM_TX"},
15537 {"QCHAT_Tx Mixer", "QUAT_AUX_PCM_TX_QCHAT", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015538 {"QCHAT_Tx Mixer", "QUIN_AUX_PCM_TX_QCHAT", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015539 {"QCHAT_Tx Mixer", "MI2S_TX_QCHAT", "MI2S_TX"},
15540 {"QCHAT_Tx Mixer", "PRI_MI2S_TX_QCHAT", "PRI_MI2S_TX"},
15541 {"QCHAT_Tx Mixer", "TERT_MI2S_TX_QCHAT", "TERT_MI2S_TX"},
15542 {"QCHAT_Tx Mixer", "INT3_MI2S_TX_QCHAT", "INT3_MI2S_TX"},
15543 {"QCHAT_Tx Mixer", "USB_AUDIO_TX_QCHAT", "USB_AUDIO_TX"},
15544 {"QCHAT_UL", NULL, "QCHAT_Tx Mixer"},
15545
15546 {"INT_FM_RX", NULL, "INTFM_DL_HL"},
15547 {"INTFM_UL_HL", NULL, "INT_FM_TX"},
15548 {"INTHFP_UL_HL", NULL, "HFP_PRI_AUX_UL_HL"},
15549 {"HFP_PRI_AUX_UL_HL", "Switch", "AUX_PCM_TX"},
15550 {"INTHFP_UL_HL", NULL, "HFP_AUX_UL_HL"},
15551 {"HFP_AUX_UL_HL", "Switch", "SEC_AUX_PCM_TX"},
15552 {"INTHFP_UL_HL", NULL, "HFP_INT_UL_HL"},
15553 {"HFP_INT_UL_HL", "Switch", "INT_BT_SCO_TX"},
15554 {"SLIM7_UL_HL", NULL, "HFP_SLIM7_UL_HL"},
15555 {"HFP_SLIM7_UL_HL", "Switch", "SLIMBUS_7_TX"},
15556 {"AUX_PCM_RX", NULL, "AUXPCM_DL_HL"},
15557 {"AUX_PCM_RX", NULL, "INTHFP_DL_HL"},
15558 {"AUXPCM_UL_HL", NULL, "AUX_PCM_TX"},
15559 {"MI2S_RX", NULL, "MI2S_DL_HL"},
15560 {"MI2S_UL_HL", NULL, "MI2S_TX"},
15561 {"PCM_RX_DL_HL", "Switch", "SLIM0_DL_HL"},
15562 {"PCM_RX", NULL, "PCM_RX_DL_HL"},
15563
15564 /* connect to INT4_MI2S_DL_HL since same pcm_id */
15565 {"INT0_MI2S_RX_DL_HL", "Switch", "INT4_MI2S_DL_HL"},
15566 {"INT0_MI2S_RX", NULL, "INT0_MI2S_RX_DL_HL"},
15567 {"INT4_MI2S_RX_DL_HL", "Switch", "INT4_MI2S_DL_HL"},
15568 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX_DL_HL"},
15569 {"PRI_MI2S_RX_DL_HL", "Switch", "PRI_MI2S_DL_HL"},
15570 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX_DL_HL"},
15571 {"SEC_MI2S_RX_DL_HL", "Switch", "SEC_MI2S_DL_HL"},
15572 {"SEC_MI2S_RX", NULL, "SEC_MI2S_RX_DL_HL"},
15573 {"TERT_MI2S_RX_DL_HL", "Switch", "TERT_MI2S_DL_HL"},
15574 {"TERT_MI2S_RX", NULL, "TERT_MI2S_RX_DL_HL"},
15575
15576 {"QUAT_MI2S_RX_DL_HL", "Switch", "QUAT_MI2S_DL_HL"},
15577 {"QUAT_MI2S_RX", NULL, "QUAT_MI2S_RX_DL_HL"},
Rohit Kumara5077932017-09-10 22:05:05 +053015578 {"QUIN_MI2S_RX_DL_HL", "Switch", "QUIN_MI2S_DL_HL"},
15579 {"QUIN_MI2S_RX", NULL, "QUIN_MI2S_RX_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015580 {"MI2S_UL_HL", NULL, "TERT_MI2S_TX"},
15581 {"INT3_MI2S_UL_HL", NULL, "INT3_MI2S_TX"},
15582 {"TERT_MI2S_UL_HL", NULL, "TERT_MI2S_TX"},
15583 {"SEC_I2S_RX", NULL, "SEC_I2S_DL_HL"},
15584 {"PRI_MI2S_UL_HL", NULL, "PRI_MI2S_TX"},
15585 {"SEC_MI2S_UL_HL", NULL, "SEC_MI2S_TX"},
15586 {"SEC_MI2S_RX", NULL, "SEC_MI2S_DL_HL"},
15587 {"PRI_MI2S_RX", NULL, "PRI_MI2S_DL_HL"},
15588 {"TERT_MI2S_RX", NULL, "TERT_MI2S_DL_HL"},
15589 {"QUAT_MI2S_UL_HL", NULL, "QUAT_MI2S_TX"},
15590
15591 {"PRI_TDM_TX_0_UL_HL", NULL, "PRI_TDM_TX_0"},
15592 {"PRI_TDM_TX_1_UL_HL", NULL, "PRI_TDM_TX_1"},
15593 {"PRI_TDM_TX_2_UL_HL", NULL, "PRI_TDM_TX_2"},
15594 {"PRI_TDM_TX_3_UL_HL", NULL, "PRI_TDM_TX_3"},
15595 {"PRI_TDM_RX_0", NULL, "PRI_TDM_RX_0_DL_HL"},
15596 {"PRI_TDM_RX_1", NULL, "PRI_TDM_RX_1_DL_HL"},
15597 {"PRI_TDM_RX_2", NULL, "PRI_TDM_RX_2_DL_HL"},
15598 {"PRI_TDM_RX_3", NULL, "PRI_TDM_RX_3_DL_HL"},
15599 {"SEC_TDM_TX_0_UL_HL", NULL, "SEC_TDM_TX_0"},
15600 {"SEC_TDM_TX_1_UL_HL", NULL, "SEC_TDM_TX_1"},
15601 {"SEC_TDM_TX_2_UL_HL", NULL, "SEC_TDM_TX_2"},
15602 {"SEC_TDM_TX_3_UL_HL", NULL, "SEC_TDM_TX_3"},
15603 {"SEC_TDM_RX_0", NULL, "SEC_TDM_RX_0_DL_HL"},
15604 {"SEC_TDM_RX_1", NULL, "SEC_TDM_RX_1_DL_HL"},
15605 {"SEC_TDM_RX_2", NULL, "SEC_TDM_RX_2_DL_HL"},
15606 {"SEC_TDM_RX_3", NULL, "SEC_TDM_RX_3_DL_HL"},
15607 {"TERT_TDM_TX_0_UL_HL", NULL, "TERT_TDM_TX_0"},
15608 {"TERT_TDM_TX_1_UL_HL", NULL, "TERT_TDM_TX_1"},
15609 {"TERT_TDM_TX_2_UL_HL", NULL, "TERT_TDM_TX_2"},
15610 {"TERT_TDM_TX_3_UL_HL", NULL, "TERT_TDM_TX_3"},
15611 {"TERT_TDM_RX_0", NULL, "TERT_TDM_RX_0_DL_HL"},
15612 {"TERT_TDM_RX_1", NULL, "TERT_TDM_RX_1_DL_HL"},
15613 {"TERT_TDM_RX_2", NULL, "TERT_TDM_RX_2_DL_HL"},
15614 {"TERT_TDM_RX_3", NULL, "TERT_TDM_RX_3_DL_HL"},
15615 {"QUAT_TDM_TX_0_UL_HL", NULL, "QUAT_TDM_TX_0"},
15616 {"QUAT_TDM_TX_1_UL_HL", NULL, "QUAT_TDM_TX_1"},
15617 {"QUAT_TDM_TX_2_UL_HL", NULL, "QUAT_TDM_TX_2"},
15618 {"QUAT_TDM_TX_3_UL_HL", NULL, "QUAT_TDM_TX_3"},
15619 {"QUAT_TDM_RX_0", NULL, "QUAT_TDM_RX_0_DL_HL"},
15620 {"QUAT_TDM_RX_1", NULL, "QUAT_TDM_RX_1_DL_HL"},
15621 {"QUAT_TDM_RX_2", NULL, "QUAT_TDM_RX_2_DL_HL"},
15622 {"QUAT_TDM_RX_3", NULL, "QUAT_TDM_RX_3_DL_HL"},
Rohit Kumara5077932017-09-10 22:05:05 +053015623 {"QUIN_TDM_TX_0_UL_HL", NULL, "QUIN_TDM_TX_0"},
15624 {"QUIN_TDM_TX_1_UL_HL", NULL, "QUIN_TDM_TX_1"},
15625 {"QUIN_TDM_TX_2_UL_HL", NULL, "QUIN_TDM_TX_2"},
15626 {"QUIN_TDM_TX_3_UL_HL", NULL, "QUIN_TDM_TX_3"},
15627 {"QUIN_TDM_RX_0", NULL, "QUIN_TDM_RX_0_DL_HL"},
15628 {"QUIN_TDM_RX_1", NULL, "QUIN_TDM_RX_1_DL_HL"},
15629 {"QUIN_TDM_RX_2", NULL, "QUIN_TDM_RX_2_DL_HL"},
15630 {"QUIN_TDM_RX_3", NULL, "QUIN_TDM_RX_3_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015631
15632 {"PRI_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15633 {"PRI_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15634 {"PRI_TDM_RX_0 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15635 {"PRI_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15636 {"PRI_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15637 {"PRI_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15638 {"PRI_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15639 {"PRI_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15640 {"PRI_TDM_RX_0 Port Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15641 {"PRI_TDM_RX_0 Port Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15642 {"PRI_TDM_RX_0 Port Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15643 {"PRI_TDM_RX_0 Port Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15644 {"PRI_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15645 {"PRI_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15646 {"PRI_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15647 {"PRI_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015648 {"PRI_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15649 {"PRI_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15650 {"PRI_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15651 {"PRI_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015652 {"PRI_TDM_RX_0", NULL, "PRI_TDM_RX_0 Port Mixer"},
15653
15654 {"PRI_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15655 {"PRI_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15656 {"PRI_TDM_RX_1 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15657 {"PRI_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15658 {"PRI_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15659 {"PRI_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15660 {"PRI_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15661 {"PRI_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15662 {"PRI_TDM_RX_1 Port Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15663 {"PRI_TDM_RX_1 Port Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15664 {"PRI_TDM_RX_1 Port Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15665 {"PRI_TDM_RX_1 Port Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15666 {"PRI_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15667 {"PRI_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15668 {"PRI_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15669 {"PRI_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015670 {"PRI_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15671 {"PRI_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15672 {"PRI_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15673 {"PRI_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015674 {"PRI_TDM_RX_1", NULL, "PRI_TDM_RX_1 Port Mixer"},
15675
15676 {"PRI_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15677 {"PRI_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15678 {"PRI_TDM_RX_2 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15679 {"PRI_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15680 {"PRI_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15681 {"PRI_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15682 {"PRI_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15683 {"PRI_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15684 {"PRI_TDM_RX_2 Port Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15685 {"PRI_TDM_RX_2 Port Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15686 {"PRI_TDM_RX_2 Port Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15687 {"PRI_TDM_RX_2 Port Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15688 {"PRI_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15689 {"PRI_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15690 {"PRI_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15691 {"PRI_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015692 {"PRI_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15693 {"PRI_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15694 {"PRI_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15695 {"PRI_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015696 {"PRI_TDM_RX_2", NULL, "PRI_TDM_RX_2 Port Mixer"},
15697
15698 {"PRI_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15699 {"PRI_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15700 {"PRI_TDM_RX_3 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15701 {"PRI_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15702 {"PRI_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15703 {"PRI_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15704 {"PRI_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15705 {"PRI_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15706 {"PRI_TDM_RX_3 Port Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15707 {"PRI_TDM_RX_3 Port Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15708 {"PRI_TDM_RX_3 Port Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15709 {"PRI_TDM_RX_3 Port Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15710 {"PRI_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15711 {"PRI_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15712 {"PRI_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15713 {"PRI_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015714 {"PRI_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15715 {"PRI_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15716 {"PRI_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15717 {"PRI_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015718 {"PRI_TDM_RX_3", NULL, "PRI_TDM_RX_3 Port Mixer"},
15719
15720 {"SEC_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15721 {"SEC_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15722 {"SEC_TDM_RX_0 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15723 {"SEC_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15724 {"SEC_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15725 {"SEC_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15726 {"SEC_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15727 {"SEC_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15728 {"SEC_TDM_RX_0 Port Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15729 {"SEC_TDM_RX_0 Port Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15730 {"SEC_TDM_RX_0 Port Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15731 {"SEC_TDM_RX_0 Port Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15732 {"SEC_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15733 {"SEC_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15734 {"SEC_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15735 {"SEC_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015736 {"SEC_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15737 {"SEC_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15738 {"SEC_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15739 {"SEC_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015740 {"SEC_TDM_RX_0", NULL, "SEC_TDM_RX_0 Port Mixer"},
15741
15742 {"SEC_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15743 {"SEC_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15744 {"SEC_TDM_RX_1 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15745 {"SEC_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15746 {"SEC_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15747 {"SEC_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15748 {"SEC_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15749 {"SEC_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15750 {"SEC_TDM_RX_1 Port Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15751 {"SEC_TDM_RX_1 Port Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15752 {"SEC_TDM_RX_1 Port Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15753 {"SEC_TDM_RX_1 Port Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15754 {"SEC_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15755 {"SEC_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15756 {"SEC_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15757 {"SEC_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015758 {"SEC_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15759 {"SEC_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15760 {"SEC_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15761 {"SEC_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015762 {"SEC_TDM_RX_1", NULL, "SEC_TDM_RX_1 Port Mixer"},
15763
15764 {"SEC_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15765 {"SEC_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15766 {"SEC_TDM_RX_2 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15767 {"SEC_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15768 {"SEC_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15769 {"SEC_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15770 {"SEC_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15771 {"SEC_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15772 {"SEC_TDM_RX_2 Port Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15773 {"SEC_TDM_RX_2 Port Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15774 {"SEC_TDM_RX_2 Port Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15775 {"SEC_TDM_RX_2 Port Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15776 {"SEC_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15777 {"SEC_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15778 {"SEC_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15779 {"SEC_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015780 {"SEC_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15781 {"SEC_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15782 {"SEC_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15783 {"SEC_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015784 {"SEC_TDM_RX_2", NULL, "SEC_TDM_RX_2 Port Mixer"},
15785
15786 {"SEC_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15787 {"SEC_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15788 {"SEC_TDM_RX_3 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15789 {"SEC_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15790 {"SEC_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15791 {"SEC_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15792 {"SEC_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15793 {"SEC_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15794 {"SEC_TDM_RX_3 Port Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15795 {"SEC_TDM_RX_3 Port Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15796 {"SEC_TDM_RX_3 Port Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15797 {"SEC_TDM_RX_3 Port Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15798 {"SEC_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15799 {"SEC_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15800 {"SEC_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15801 {"SEC_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015802 {"SEC_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15803 {"SEC_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15804 {"SEC_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15805 {"SEC_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015806 {"SEC_TDM_RX_3", NULL, "SEC_TDM_RX_3 Port Mixer"},
15807
15808 {"TERT_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15809 {"TERT_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15810 {"TERT_TDM_RX_0 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15811 {"TERT_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15812 {"TERT_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15813 {"TERT_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15814 {"TERT_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15815 {"TERT_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15816 {"TERT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15817 {"TERT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15818 {"TERT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15819 {"TERT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15820 {"TERT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15821 {"TERT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15822 {"TERT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15823 {"TERT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015824 {"TERT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15825 {"TERT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15826 {"TERT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15827 {"TERT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015828 {"TERT_TDM_RX_0", NULL, "TERT_TDM_RX_0 Port Mixer"},
15829
15830 {"TERT_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15831 {"TERT_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15832 {"TERT_TDM_RX_1 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15833 {"TERT_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15834 {"TERT_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15835 {"TERT_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15836 {"TERT_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15837 {"TERT_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15838 {"TERT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15839 {"TERT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15840 {"TERT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15841 {"TERT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15842 {"TERT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15843 {"TERT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15844 {"TERT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15845 {"TERT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015846 {"TERT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15847 {"TERT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15848 {"TERT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15849 {"TERT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015850 {"TERT_TDM_RX_1", NULL, "TERT_TDM_RX_1 Port Mixer"},
15851
15852 {"TERT_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15853 {"TERT_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15854 {"TERT_TDM_RX_2 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15855 {"TERT_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15856 {"TERT_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15857 {"TERT_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15858 {"TERT_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15859 {"TERT_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15860 {"TERT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15861 {"TERT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15862 {"TERT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15863 {"TERT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15864 {"TERT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15865 {"TERT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15866 {"TERT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15867 {"TERT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015868 {"TERT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15869 {"TERT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15870 {"TERT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15871 {"TERT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015872 {"TERT_TDM_RX_2", NULL, "TERT_TDM_RX_2 Port Mixer"},
15873
15874 {"TERT_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15875 {"TERT_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15876 {"TERT_TDM_RX_3 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15877 {"TERT_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15878 {"TERT_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15879 {"TERT_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15880 {"TERT_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15881 {"TERT_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15882 {"TERT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15883 {"TERT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15884 {"TERT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15885 {"TERT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15886 {"TERT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15887 {"TERT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15888 {"TERT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15889 {"TERT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015890 {"TERT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15891 {"TERT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15892 {"TERT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15893 {"TERT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015894 {"TERT_TDM_RX_3", NULL, "TERT_TDM_RX_3 Port Mixer"},
15895
15896 {"QUAT_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15897 {"QUAT_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15898 {"QUAT_TDM_RX_0 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15899 {"QUAT_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15900 {"QUAT_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15901 {"QUAT_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15902 {"QUAT_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15903 {"QUAT_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15904 {"QUAT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15905 {"QUAT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15906 {"QUAT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15907 {"QUAT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15908 {"QUAT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15909 {"QUAT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15910 {"QUAT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15911 {"QUAT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015912 {"QUAT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15913 {"QUAT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15914 {"QUAT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15915 {"QUAT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015916 {"QUAT_TDM_RX_0", NULL, "QUAT_TDM_RX_0 Port Mixer"},
15917
15918 {"QUAT_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15919 {"QUAT_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15920 {"QUAT_TDM_RX_1 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15921 {"QUAT_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15922 {"QUAT_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15923 {"QUAT_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15924 {"QUAT_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15925 {"QUAT_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15926 {"QUAT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15927 {"QUAT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15928 {"QUAT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15929 {"QUAT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15930 {"QUAT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15931 {"QUAT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15932 {"QUAT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15933 {"QUAT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015934 {"QUAT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15935 {"QUAT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15936 {"QUAT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15937 {"QUAT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015938 {"QUAT_TDM_RX_1", NULL, "QUAT_TDM_RX_1 Port Mixer"},
15939
15940 {"QUAT_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15941 {"QUAT_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15942 {"QUAT_TDM_RX_2 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15943 {"QUAT_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15944 {"QUAT_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15945 {"QUAT_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15946 {"QUAT_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15947 {"QUAT_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15948 {"QUAT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15949 {"QUAT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15950 {"QUAT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15951 {"QUAT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15952 {"QUAT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15953 {"QUAT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15954 {"QUAT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15955 {"QUAT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015956 {"QUAT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15957 {"QUAT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15958 {"QUAT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15959 {"QUAT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015960 {"QUAT_TDM_RX_2", NULL, "QUAT_TDM_RX_2 Port Mixer"},
15961
15962 {"QUAT_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15963 {"QUAT_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15964 {"QUAT_TDM_RX_3 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15965 {"QUAT_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15966 {"QUAT_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15967 {"QUAT_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15968 {"QUAT_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15969 {"QUAT_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15970 {"QUAT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15971 {"QUAT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15972 {"QUAT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15973 {"QUAT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15974 {"QUAT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15975 {"QUAT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15976 {"QUAT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15977 {"QUAT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015978 {"QUAT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15979 {"QUAT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15980 {"QUAT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15981 {"QUAT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015982 {"QUAT_TDM_RX_3", NULL, "QUAT_TDM_RX_3 Port Mixer"},
15983
Rohit Kumara5077932017-09-10 22:05:05 +053015984 {"QUIN_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15985 {"QUIN_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15986 {"QUIN_TDM_RX_0 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15987 {"QUIN_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15988 {"QUIN_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15989 {"QUIN_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15990 {"QUIN_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15991 {"QUIN_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15992 {"QUIN_TDM_RX_0 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15993 {"QUIN_TDM_RX_0 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15994 {"QUIN_TDM_RX_0 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15995 {"QUIN_TDM_RX_0 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15996 {"QUIN_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15997 {"QUIN_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15998 {"QUIN_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15999 {"QUIN_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
16000 {"QUIN_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16001 {"QUIN_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16002 {"QUIN_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16003 {"QUIN_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Rohit Kumarc08b14f2017-10-06 10:52:17 +053016004 {"QUIN_TDM_RX_0", NULL, "QUIN_TDM_RX_0 Port Mixer"},
Rohit Kumara5077932017-09-10 22:05:05 +053016005
16006 {"QUIN_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16007 {"QUIN_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16008 {"QUIN_TDM_RX_1 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16009 {"QUIN_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16010 {"QUIN_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16011 {"QUIN_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16012 {"QUIN_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16013 {"QUIN_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16014 {"QUIN_TDM_RX_1 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16015 {"QUIN_TDM_RX_1 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16016 {"QUIN_TDM_RX_1 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16017 {"QUIN_TDM_RX_1 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16018 {"QUIN_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16019 {"QUIN_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16020 {"QUIN_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16021 {"QUIN_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
16022 {"QUIN_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16023 {"QUIN_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16024 {"QUIN_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16025 {"QUIN_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Rohit Kumarc08b14f2017-10-06 10:52:17 +053016026 {"QUIN_TDM_RX_1", NULL, "QUIN_TDM_RX_1 Port Mixer"},
Rohit Kumara5077932017-09-10 22:05:05 +053016027
16028 {"QUIN_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16029 {"QUIN_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16030 {"QUIN_TDM_RX_2 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16031 {"QUIN_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16032 {"QUIN_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16033 {"QUIN_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16034 {"QUIN_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16035 {"QUIN_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16036 {"QUIN_TDM_RX_2 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16037 {"QUIN_TDM_RX_2 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16038 {"QUIN_TDM_RX_2 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16039 {"QUIN_TDM_RX_2 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16040 {"QUIN_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16041 {"QUIN_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16042 {"QUIN_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16043 {"QUIN_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
16044 {"QUIN_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16045 {"QUIN_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16046 {"QUIN_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16047 {"QUIN_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Rohit Kumarc08b14f2017-10-06 10:52:17 +053016048 {"QUIN_TDM_RX_2", NULL, "QUIN_TDM_RX_2 Port Mixer"},
Rohit Kumara5077932017-09-10 22:05:05 +053016049
16050 {"QUIN_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16051 {"QUIN_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16052 {"QUIN_TDM_RX_3 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16053 {"QUIN_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16054 {"QUIN_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16055 {"QUIN_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16056 {"QUIN_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16057 {"QUIN_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16058 {"QUIN_TDM_RX_3 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16059 {"QUIN_TDM_RX_3 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16060 {"QUIN_TDM_RX_3 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16061 {"QUIN_TDM_RX_3 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16062 {"QUIN_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16063 {"QUIN_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16064 {"QUIN_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16065 {"QUIN_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
16066 {"QUIN_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16067 {"QUIN_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16068 {"QUIN_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16069 {"QUIN_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Rohit Kumarc08b14f2017-10-06 10:52:17 +053016070 {"QUIN_TDM_RX_3", NULL, "QUIN_TDM_RX_3 Port Mixer"},
Rohit Kumara5077932017-09-10 22:05:05 +053016071
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016072 {"INT0_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16073 {"INT0_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16074 {"INT0_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16075 {"INT0_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016076 {"INT0_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016077 {"INT0_MI2S_RX Port Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
16078 {"INT0_MI2S_RX Port Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16079 {"INT0_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16080 {"INT0_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16081 {"INT0_MI2S_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16082 {"INT0_MI2S_RX", NULL, "INT0_MI2S_RX Port Mixer"},
16083
16084 {"INT4_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16085 {"INT4_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16086 {"INT4_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16087 {"INT4_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016088 {"INT4_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016089 {"INT4_MI2S_RX Port Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
16090 {"INT4_MI2S_RX Port Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16091 {"INT4_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16092 {"INT4_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16093 {"INT4_MI2S_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16094 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX Port Mixer"},
16095
16096 {"SLIMBUS_0_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16097 {"SLIMBUS_0_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16098 {"SLIMBUS_0_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16099 {"SLIMBUS_0_RX Port Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16100 {"SLIMBUS_0_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16101 {"SLIMBUS_0_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16102 {"SLIMBUS_0_RX Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16103 {"SLIMBUS_0_RX Port Mixer", "TERT_AUXPCM_UL_TX", "TERT_AUX_PCM_TX"},
16104 {"SLIMBUS_0_RX Port Mixer", "QUAT_AUXPCM_UL_TX", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016105 {"SLIMBUS_0_RX Port Mixer", "QUIN_AUXPCM_UL_TX", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016106 {"SLIMBUS_0_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16107 {"SLIMBUS_0_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16108 {"SLIMBUS_0_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16109 {"SLIMBUS_0_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16110 {"SLIMBUS_0_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016111 {"SLIMBUS_0_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016112 {"SLIMBUS_0_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16113 {"SLIMBUS_0_RX", NULL, "SLIMBUS_0_RX Port Mixer"},
16114 {"AFE_PCM_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16115 {"AFE_PCM_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16116 {"PCM_RX", NULL, "AFE_PCM_RX Port Mixer"},
16117 {"USB_AUDIO_RX Port Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
16118 {"USB_AUDIO_RX", NULL, "USB_AUDIO_RX Port Mixer"},
16119 {"USB_DL_HL", "Switch", "USBAUDIO_DL_HL"},
16120 {"USB_AUDIO_RX", NULL, "USB_DL_HL"},
16121 {"USBAUDIO_UL_HL", NULL, "USB_AUDIO_TX"},
16122
16123
16124 {"AUX_PCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16125 {"AUX_PCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16126 {"AUX_PCM_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16127 {"AUX_PCM_RX Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16128 {"AUX_PCM_RX Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16129 {"AUX_PCM_RX", NULL, "AUX_PCM_RX Port Mixer"},
16130
16131 {"SEC_AUXPCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16132 {"SEC_AUXPCM_RX Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16133 {"SEC_AUXPCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16134 {"SEC_AUX_PCM_RX", NULL, "SEC_AUXPCM_RX Port Mixer"},
16135
16136 {"TERT_AUXPCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16137 {"TERT_AUXPCM_RX Port Mixer", "TERT_AUXPCM_UL_TX", "TERT_AUX_PCM_TX"},
16138 {"TERT_AUXPCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16139 {"TERT_AUX_PCM_RX", NULL, "TERT_AUXPCM_RX Port Mixer"},
16140
16141 {"QUAT_AUXPCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16142 {"QUAT_AUXPCM_RX Port Mixer", "QUAT_AUXPCM_UL_TX", "QUAT_AUX_PCM_TX"},
16143 {"QUAT_AUXPCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16144 {"QUAT_AUX_PCM_RX", NULL, "QUAT_AUXPCM_RX Port Mixer"},
16145
Rohit Kumara5077932017-09-10 22:05:05 +053016146 {"QUIN_AUXPCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16147 {"QUIN_AUXPCM_RX Port Mixer", "QUIN_AUXPCM_UL_TX", "QUIN_AUX_PCM_TX"},
16148 {"QUIN_AUXPCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16149 {"QUIN_AUX_PCM_RX", NULL, "QUIN_AUXPCM_RX Port Mixer"},
16150
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016151 {"Voice Stub Tx Mixer", "STUB_TX_HL", "STUB_TX"},
16152 {"Voice Stub Tx Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16153 {"Voice Stub Tx Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16154 {"Voice Stub Tx Mixer", "STUB_1_TX_HL", "STUB_1_TX"},
16155 {"Voice Stub Tx Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16156 {"Voice Stub Tx Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16157 {"Voice Stub Tx Mixer", "TERT_AUXPCM_UL_TX", "TERT_AUX_PCM_TX"},
16158 {"Voice Stub Tx Mixer", "QUAT_AUXPCM_UL_TX", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016159 {"Voice Stub Tx Mixer", "QUIN_AUXPCM_UL_TX", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016160 {"Voice Stub Tx Mixer", "MI2S_TX", "MI2S_TX"},
16161 {"Voice Stub Tx Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16162 {"Voice Stub Tx Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16163 {"Voice Stub Tx Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
16164 {"Voice Stub Tx Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16165 {"Voice Stub Tx Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16166 {"Voice Stub Tx Mixer", "SLIM_3_TX", "SLIMBUS_3_TX"},
16167 {"Voice Stub Tx Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16168 {"Voice Stub Tx Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16169 {"Voice Stub Tx Mixer", "AFE_PCM_TX", "PCM_TX"},
16170 {"VOICE_STUB_UL", NULL, "Voice Stub Tx Mixer"},
16171
16172 {"VoLTE Stub Tx Mixer", "STUB_TX_HL", "STUB_TX"},
16173 {"VoLTE Stub Tx Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16174 {"VoLTE Stub Tx Mixer", "STUB_1_TX_HL", "STUB_1_TX"},
16175 {"VoLTE Stub Tx Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16176 {"VoLTE Stub Tx Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16177 {"VoLTE Stub Tx Mixer", "SLIM_3_TX", "SLIMBUS_3_TX"},
16178 {"VoLTE Stub Tx Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16179 {"VoLTE Stub Tx Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16180 {"VoLTE Stub Tx Mixer", "AFE_PCM_TX", "PCM_TX"},
16181 {"VoLTE Stub Tx Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16182 {"VoLTE Stub Tx Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16183 {"VOLTE_STUB_UL", NULL, "VoLTE Stub Tx Mixer"},
16184
16185 {"Voice2 Stub Tx Mixer", "STUB_TX_HL", "STUB_TX"},
16186 {"Voice2 Stub Tx Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16187 {"Voice2 Stub Tx Mixer", "STUB_1_TX_HL", "STUB_1_TX"},
16188 {"Voice2 Stub Tx Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16189 {"Voice2 Stub Tx Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16190 {"Voice2 Stub Tx Mixer", "SLIM_3_TX", "SLIMBUS_3_TX"},
16191 {"Voice2 Stub Tx Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16192 {"Voice2 Stub Tx Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16193 {"Voice2 Stub Tx Mixer", "AFE_PCM_TX", "PCM_TX"},
16194 {"Voice2 Stub Tx Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16195 {"Voice2 Stub Tx Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16196 {"VOICE2_STUB_UL", NULL, "Voice2 Stub Tx Mixer"},
16197
16198 {"STUB_RX Mixer", "Voice Stub", "VOICE_STUB_DL"},
16199 {"STUB_RX Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
16200 {"STUB_RX Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
16201 {"STUB_RX", NULL, "STUB_RX Mixer"},
16202 {"SLIMBUS_1_RX Mixer", "Voice Stub", "VOICE_STUB_DL"},
16203 {"SLIMBUS_1_RX Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
16204 {"SLIMBUS_1_RX Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
16205 {"SLIMBUS_1_RX", NULL, "SLIMBUS_1_RX Mixer"},
16206 {"AFE_PCM_RX_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
16207 {"AFE_PCM_RX_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
16208 {"AFE_PCM_RX_Voice Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
16209 {"SLIMBUS_3_RX_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
16210 {"SLIMBUS_3_RX_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
16211 {"SLIMBUS_3_RX_Voice Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
16212 {"SLIMBUS_3_RX", NULL, "SLIMBUS_3_RX_Voice Mixer"},
16213
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016214 {"SLIM_7_RX_Voice Mixer", "Voip", "VOIP_DL"},
16215 {"SLIM_7_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
16216 {"SLIM_7_RX_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
16217 {"SLIM_7_RX_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
16218 {"SLIM_7_RX_Voice Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
16219 {"SLIM_7_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
16220 {"SLIM_7_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
16221 {"SLIM_7_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
16222 {"SLIMBUS_7_RX", NULL, "SLIM_7_RX_Voice Mixer"},
16223
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016224 {"SLIM_8_RX_Voice Mixer", "Voip", "VOIP_DL"},
16225 {"SLIM_8_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
16226 {"SLIM_8_RX_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
16227 {"SLIM_8_RX_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
16228 {"SLIM_8_RX_Voice Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
16229 {"SLIM_8_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
16230 {"SLIM_8_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
16231 {"SLIM_8_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
16232 {"SLIMBUS_8_RX", NULL, "SLIM_8_RX_Voice Mixer"},
16233
16234 {"SLIMBUS_1_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16235 {"SLIMBUS_1_RX Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16236 {"SLIMBUS_1_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16237 {"SLIMBUS_1_RX", NULL, "SLIMBUS_1_RX Port Mixer"},
16238 {"INTERNAL_BT_SCO_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16239 {"INTERNAL_BT_SCO_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16240 {"INT_BT_SCO_RX", NULL, "INTERNAL_BT_SCO_RX Port Mixer"},
16241 {"SLIMBUS_3_RX Port Mixer", "INTERNAL_BT_SCO_RX", "INT_BT_SCO_RX"},
16242 {"SLIMBUS_3_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16243 {"SLIMBUS_3_RX Port Mixer", "AFE_PCM_RX", "PCM_RX"},
16244 {"SLIMBUS_3_RX Port Mixer", "AUX_PCM_RX", "AUX_PCM_RX"},
16245 {"SLIMBUS_3_RX Port Mixer", "SLIM_0_RX", "SLIMBUS_0_RX"},
16246 {"SLIMBUS_3_RX", NULL, "SLIMBUS_3_RX Port Mixer"},
16247
16248 {"SLIMBUS_6_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16249 {"SLIMBUS_6_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16250 {"SLIMBUS_6_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16251 {"SLIMBUS_6_RX Port Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16252 {"SLIMBUS_6_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16253 {"SLIMBUS_6_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16254 {"SLIMBUS_6_RX Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16255 {"SLIMBUS_6_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16256 {"SLIMBUS_6_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16257 {"SLIMBUS_6_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16258 {"SLIMBUS_6_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16259 {"SLIMBUS_6_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16260 {"SLIMBUS_6_RX", NULL, "SLIMBUS_6_RX Port Mixer"},
16261
16262 {"HDMI_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16263 {"HDMI", NULL, "HDMI_RX Port Mixer"},
16264
16265 {"DISPLAY_PORT_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16266 {"DISPLAY_PORT", NULL, "DISPLAY_PORT_RX Port Mixer"},
16267
16268 {"SEC_I2S_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16269 {"SEC_I2S_RX", NULL, "SEC_I2S_RX Port Mixer"},
16270
16271 {"MI2S_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16272 {"MI2S_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16273 {"MI2S_RX", NULL, "MI2S_RX Port Mixer"},
16274
16275 {"PRI_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16276 {"PRI_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16277 {"PRI_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16278 {"PRI_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016279 {"PRI_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016280 {"PRI_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16281 {"PRI_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16282 {"PRI_MI2S_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16283 {"PRI_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16284 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX Port Mixer"},
16285
16286 {"SEC_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16287 {"SEC_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16288 {"SEC_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16289 {"SEC_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016290 {"SEC_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016291 {"SEC_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16292 {"SEC_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16293 {"SEC_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16294 {"SEC_MI2S_RX", NULL, "SEC_MI2S_RX Port Mixer"},
16295
16296 {"TERT_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16297 {"TERT_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16298 {"TERT_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16299 {"TERT_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016300 {"TERT_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016301 {"TERT_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16302 {"TERT_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16303 {"TERT_MI2S_RX", NULL, "TERT_MI2S_RX Port Mixer"},
16304
16305 {"QUAT_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16306 {"QUAT_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16307 {"QUAT_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16308 {"QUAT_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016309 {"QUAT_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016310 {"QUAT_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16311 {"QUAT_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16312 {"QUAT_MI2S_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16313 {"QUAT_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16314 {"QUAT_MI2S_RX", NULL, "QUAT_MI2S_RX Port Mixer"},
16315
Rohit Kumara5077932017-09-10 22:05:05 +053016316 {"QUIN_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16317 {"QUIN_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16318 {"QUIN_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16319 {"QUIN_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16320 {"QUIN_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
16321 {"QUIN_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16322 {"QUIN_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16323 {"QUIN_MI2S_RX", NULL, "QUIN_MI2S_RX Port Mixer"},
16324
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016325 /* Backend Enablement */
16326
16327 {"BE_OUT", NULL, "PRI_I2S_RX"},
16328 {"BE_OUT", NULL, "SEC_I2S_RX"},
16329 {"BE_OUT", NULL, "SLIMBUS_0_RX"},
16330 {"BE_OUT", NULL, "SLIMBUS_1_RX"},
16331 {"BE_OUT", NULL, "SLIMBUS_2_RX"},
16332 {"BE_OUT", NULL, "SLIMBUS_3_RX"},
16333 {"BE_OUT", NULL, "SLIMBUS_4_RX"},
16334 {"BE_OUT", NULL, "SLIMBUS_5_RX"},
16335 {"BE_OUT", NULL, "SLIMBUS_6_RX"},
16336 {"BE_OUT", NULL, "SLIMBUS_7_RX"},
16337 {"BE_OUT", NULL, "SLIMBUS_8_RX"},
16338 {"BE_OUT", NULL, "USB_AUDIO_RX"},
16339 {"BE_OUT", NULL, "HDMI"},
16340 {"BE_OUT", NULL, "DISPLAY_PORT"},
16341 {"BE_OUT", NULL, "SPDIF_RX"},
16342 {"BE_OUT", NULL, "MI2S_RX"},
16343 {"BE_OUT", NULL, "QUAT_MI2S_RX"},
16344 {"BE_OUT", NULL, "QUIN_MI2S_RX"},
16345 {"BE_OUT", NULL, "TERT_MI2S_RX"},
16346 {"BE_OUT", NULL, "SEC_MI2S_RX"},
16347 {"BE_OUT", NULL, "SEC_MI2S_RX_SD1"},
16348 {"BE_OUT", NULL, "PRI_MI2S_RX"},
16349 {"BE_OUT", NULL, "INT0_MI2S_RX"},
16350 {"BE_OUT", NULL, "INT4_MI2S_RX"},
16351 {"BE_OUT", NULL, "INT_BT_SCO_RX"},
16352 {"BE_OUT", NULL, "INT_BT_A2DP_RX"},
16353 {"BE_OUT", NULL, "INT_FM_RX"},
16354 {"BE_OUT", NULL, "PCM_RX"},
16355 {"BE_OUT", NULL, "SLIMBUS_3_RX"},
16356 {"BE_OUT", NULL, "AUX_PCM_RX"},
16357 {"BE_OUT", NULL, "SEC_AUX_PCM_RX"},
16358 {"BE_OUT", NULL, "TERT_AUX_PCM_RX"},
16359 {"BE_OUT", NULL, "QUAT_AUX_PCM_RX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016360 {"BE_OUT", NULL, "QUIN_AUX_PCM_RX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016361 {"BE_OUT", NULL, "INT_BT_SCO_RX"},
16362 {"BE_OUT", NULL, "INT_FM_RX"},
16363 {"BE_OUT", NULL, "PCM_RX"},
16364 {"BE_OUT", NULL, "SLIMBUS_3_RX"},
16365 {"BE_OUT", NULL, "VOICE_PLAYBACK_TX"},
16366 {"BE_OUT", NULL, "VOICE2_PLAYBACK_TX"},
16367 {"BE_OUT", NULL, "PRI_TDM_RX_0"},
16368 {"BE_OUT", NULL, "PRI_TDM_RX_1"},
16369 {"BE_OUT", NULL, "PRI_TDM_RX_2"},
16370 {"BE_OUT", NULL, "PRI_TDM_RX_3"},
16371 {"BE_OUT", NULL, "SEC_TDM_RX_0"},
16372 {"BE_OUT", NULL, "SEC_TDM_RX_1"},
16373 {"BE_OUT", NULL, "SEC_TDM_RX_2"},
16374 {"BE_OUT", NULL, "SEC_TDM_RX_3"},
16375 {"BE_OUT", NULL, "TERT_TDM_RX_0"},
16376 {"BE_OUT", NULL, "TERT_TDM_RX_1"},
16377 {"BE_OUT", NULL, "TERT_TDM_RX_2"},
16378 {"BE_OUT", NULL, "TERT_TDM_RX_3"},
16379 {"BE_OUT", NULL, "TERT_TDM_RX_4"},
16380 {"BE_OUT", NULL, "QUAT_TDM_RX_0"},
16381 {"BE_OUT", NULL, "QUAT_TDM_RX_1"},
16382 {"BE_OUT", NULL, "QUAT_TDM_RX_2"},
16383 {"BE_OUT", NULL, "QUAT_TDM_RX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016384 {"BE_OUT", NULL, "QUIN_TDM_RX_0"},
16385 {"BE_OUT", NULL, "QUIN_TDM_RX_1"},
16386 {"BE_OUT", NULL, "QUIN_TDM_RX_2"},
16387 {"BE_OUT", NULL, "QUIN_TDM_RX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016388
16389 {"PRI_I2S_TX", NULL, "BE_IN"},
16390 {"MI2S_TX", NULL, "BE_IN"},
16391 {"QUAT_MI2S_TX", NULL, "BE_IN"},
16392 {"QUIN_MI2S_TX", NULL, "BE_IN"},
16393 {"PRI_MI2S_TX", NULL, "BE_IN"},
16394 {"TERT_MI2S_TX", NULL, "BE_IN"},
16395 {"INT2_MI2S_TX", NULL, "BE_IN"},
16396 {"INT3_MI2S_TX", NULL, "BE_IN"},
16397 {"INT5_MI2S_TX", NULL, "BE_IN"},
16398 {"SEC_MI2S_TX", NULL, "BE_IN"},
16399 {"SENARY_MI2S_TX", NULL, "BE_IN" },
16400 {"SLIMBUS_0_TX", NULL, "BE_IN" },
16401 {"SLIMBUS_1_TX", NULL, "BE_IN" },
16402 {"SLIMBUS_3_TX", NULL, "BE_IN" },
16403 {"SLIMBUS_4_TX", NULL, "BE_IN" },
16404 {"SLIMBUS_5_TX", NULL, "BE_IN" },
16405 {"SLIMBUS_6_TX", NULL, "BE_IN" },
16406 {"SLIMBUS_7_TX", NULL, "BE_IN" },
16407 {"SLIMBUS_8_TX", NULL, "BE_IN" },
16408 {"USB_AUDIO_TX", NULL, "BE_IN" },
16409 {"INT_BT_SCO_TX", NULL, "BE_IN"},
16410 {"INT_FM_TX", NULL, "BE_IN"},
16411 {"PCM_TX", NULL, "BE_IN"},
16412 {"BE_OUT", NULL, "SLIMBUS_3_RX"},
16413 {"BE_OUT", NULL, "STUB_RX"},
16414 {"STUB_TX", NULL, "BE_IN"},
16415 {"STUB_1_TX", NULL, "BE_IN"},
16416 {"BE_OUT", NULL, "AUX_PCM_RX"},
16417 {"AUX_PCM_TX", NULL, "BE_IN"},
16418 {"SEC_AUX_PCM_TX", NULL, "BE_IN"},
16419 {"TERT_AUX_PCM_TX", NULL, "BE_IN"},
16420 {"QUAT_AUX_PCM_TX", NULL, "BE_IN"},
Rohit Kumara5077932017-09-10 22:05:05 +053016421 {"QUIN_AUX_PCM_TX", NULL, "BE_IN"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016422 {"INCALL_RECORD_TX", NULL, "BE_IN"},
16423 {"INCALL_RECORD_RX", NULL, "BE_IN"},
16424 {"SLIM0_RX_VI_FB_LCH_MUX", "SLIM4_TX", "SLIMBUS_4_TX"},
16425 {"SLIM0_RX_VI_FB_RCH_MUX", "SLIM4_TX", "SLIMBUS_4_TX"},
16426 {"PRI_MI2S_RX_VI_FB_MUX", "SENARY_TX", "SENARY_TX"},
16427 {"INT4_MI2S_RX_VI_FB_MONO_CH_MUX", "INT5_MI2S_TX", "INT5_MI2S_TX"},
16428 {"INT4_MI2S_RX_VI_FB_STEREO_CH_MUX", "INT5_MI2S_TX", "INT5_MI2S_TX"},
16429 {"SLIMBUS_0_RX", NULL, "SLIM0_RX_VI_FB_LCH_MUX"},
16430 {"SLIMBUS_0_RX", NULL, "SLIM0_RX_VI_FB_RCH_MUX"},
16431 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX_VI_FB_MUX"},
16432 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX_VI_FB_MONO_CH_MUX"},
16433 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX_VI_FB_STEREO_CH_MUX"},
16434 {"PRI_TDM_TX_0", NULL, "BE_IN"},
16435 {"PRI_TDM_TX_1", NULL, "BE_IN"},
16436 {"PRI_TDM_TX_2", NULL, "BE_IN"},
16437 {"PRI_TDM_TX_3", NULL, "BE_IN"},
16438 {"SEC_TDM_TX_0", NULL, "BE_IN"},
16439 {"SEC_TDM_TX_1", NULL, "BE_IN"},
16440 {"SEC_TDM_TX_2", NULL, "BE_IN"},
16441 {"SEC_TDM_TX_3", NULL, "BE_IN"},
16442 {"TERT_TDM_TX_0", NULL, "BE_IN"},
16443 {"TERT_TDM_TX_1", NULL, "BE_IN"},
16444 {"TERT_TDM_TX_2", NULL, "BE_IN"},
16445 {"TERT_TDM_TX_3", NULL, "BE_IN"},
16446 {"QUAT_TDM_TX_0", NULL, "BE_IN"},
16447 {"QUAT_TDM_TX_1", NULL, "BE_IN"},
16448 {"QUAT_TDM_TX_2", NULL, "BE_IN"},
16449 {"QUAT_TDM_TX_3", NULL, "BE_IN"},
Rohit Kumara5077932017-09-10 22:05:05 +053016450 {"QUIN_TDM_TX_0", NULL, "BE_IN"},
16451 {"QUIN_TDM_TX_1", NULL, "BE_IN"},
16452 {"QUIN_TDM_TX_2", NULL, "BE_IN"},
16453 {"QUIN_TDM_TX_3", NULL, "BE_IN"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016454};
16455
16456static int msm_pcm_routing_hw_params(struct snd_pcm_substream *substream,
16457 struct snd_pcm_hw_params *params)
16458{
16459 struct snd_soc_pcm_runtime *rtd = substream->private_data;
16460 unsigned int be_id = rtd->dai_link->id;
16461
16462 if (be_id >= MSM_BACKEND_DAI_MAX) {
16463 pr_err("%s: unexpected BE id %d\n", __func__, be_id);
16464 return -EINVAL;
16465 }
16466
16467 mutex_lock(&routing_lock);
16468 msm_bedais[be_id].sample_rate = params_rate(params);
16469 msm_bedais[be_id].channel = params_channels(params);
16470 msm_bedais[be_id].format = params_format(params);
16471 pr_debug("%s: BE Sample Rate (%d) format (%d) BE id %d\n",
16472 __func__, msm_bedais[be_id].sample_rate,
16473 msm_bedais[be_id].format, be_id);
16474 mutex_unlock(&routing_lock);
16475 return 0;
16476}
16477
16478static int msm_pcm_routing_close(struct snd_pcm_substream *substream)
16479{
16480 struct snd_soc_pcm_runtime *rtd = substream->private_data;
16481 unsigned int be_id = rtd->dai_link->id;
16482 int i, session_type, path_type, topology;
16483 struct msm_pcm_routing_bdai_data *bedai;
16484 struct msm_pcm_routing_fdai_data *fdai;
16485
16486 pr_debug("%s: substream->pcm->id:%s\n",
16487 __func__, substream->pcm->id);
16488
16489 if (be_id >= MSM_BACKEND_DAI_MAX) {
16490 pr_err("%s: unexpected BE id %d\n", __func__, be_id);
16491 return -EINVAL;
16492 }
16493
16494 bedai = &msm_bedais[be_id];
16495 session_type = (substream->stream == SNDRV_PCM_STREAM_PLAYBACK ?
16496 0 : 1);
16497 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
16498 path_type = ADM_PATH_PLAYBACK;
16499 else
16500 path_type = ADM_PATH_LIVE_REC;
16501
16502 mutex_lock(&routing_lock);
16503 for_each_set_bit(i, &bedai->fe_sessions[0], MSM_FRONTEND_DAI_MAX) {
16504 if (!is_mm_lsm_fe_id(i))
16505 continue;
16506 fdai = &fe_dai_map[i][session_type];
16507 if (fdai->strm_id != INVALID_SESSION) {
16508 int idx;
16509 int port_id;
16510 unsigned long copp =
16511 session_copp_map[i][session_type][be_id];
16512 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++)
16513 if (test_bit(idx, &copp))
16514 break;
16515 fdai->be_srate = bedai->sample_rate;
16516 port_id = bedai->port_id;
16517 topology = adm_get_topology_for_port_copp_idx(port_id,
16518 idx);
16519 adm_close(bedai->port_id, fdai->perf_mode, idx);
16520 pr_debug("%s: copp:%ld,idx bit fe:%d, type:%d,be:%d topology=0x%x\n",
16521 __func__, copp, i, session_type, be_id,
16522 topology);
16523 clear_bit(idx,
16524 &session_copp_map[i][session_type][be_id]);
16525 if ((fdai->perf_mode == LEGACY_PCM_MODE) &&
16526 (bedai->passthr_mode[i] == LEGACY_PCM))
16527 msm_pcm_routing_deinit_pp(bedai->port_id,
16528 topology);
16529 }
16530 }
16531
16532 bedai->active = 0;
16533 bedai->sample_rate = 0;
16534 bedai->channel = 0;
16535 for (i = 0; i < MSM_FRONTEND_DAI_MAX; i++) {
16536 if (bedai->passthr_mode[i] != LISTEN)
16537 bedai->passthr_mode[i] = LEGACY_PCM;
16538 }
16539 mutex_unlock(&routing_lock);
16540
16541 return 0;
16542}
16543
16544static int msm_pcm_routing_prepare(struct snd_pcm_substream *substream)
16545{
16546 struct snd_soc_pcm_runtime *rtd = substream->private_data;
16547 unsigned int be_id = rtd->dai_link->id;
16548 int i, path_type, topology;
16549 int session_type = INVALID_SESSION;
16550 struct msm_pcm_routing_bdai_data *bedai;
16551 u32 channels, sample_rate;
16552 uint16_t bits_per_sample = 16, voc_path_type;
16553 struct msm_pcm_routing_fdai_data *fdai;
16554 u32 session_id;
16555 struct media_format_info voc_be_media_format;
16556 bool is_lsm;
16557
16558 pr_debug("%s: substream->pcm->id:%s\n",
16559 __func__, substream->pcm->id);
16560
16561 if (be_id >= MSM_BACKEND_DAI_MAX) {
16562 pr_err("%s: unexpected BE id %d\n", __func__, be_id);
16563 return -EINVAL;
16564 }
16565
16566 bedai = &msm_bedais[be_id];
16567
16568 mutex_lock(&routing_lock);
16569 if (bedai->active == 1)
16570 goto done; /* Ignore prepare if back-end already active */
16571
16572 /* AFE port is not active at this point. However, still
16573 * go ahead setting active flag under the notion that
16574 * QDSP6 is able to handle ADM starting before AFE port
16575 * is started.
16576 */
16577 bedai->active = 1;
16578
16579 for_each_set_bit(i, &bedai->fe_sessions[0], MSM_FRONTEND_DAI_MAX) {
16580 if (!(is_mm_lsm_fe_id(i) &&
16581 route_check_fe_id_adm_support(i)))
16582 continue;
16583
16584 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
16585 if (bedai->passthr_mode[i] != LEGACY_PCM)
16586 path_type = ADM_PATH_COMPRESSED_RX;
16587 else
16588 path_type = ADM_PATH_PLAYBACK;
16589 session_type = SESSION_TYPE_RX;
16590 } else {
16591 path_type = ADM_PATH_LIVE_REC;
16592 session_type = SESSION_TYPE_TX;
16593 }
16594
16595 is_lsm = (i >= MSM_FRONTEND_DAI_LSM1) &&
16596 (i <= MSM_FRONTEND_DAI_LSM8);
16597 fdai = &fe_dai_map[i][session_type];
16598 if (fdai->strm_id != INVALID_SESSION) {
16599 int app_type, app_type_idx, copp_idx, acdb_dev_id;
16600
16601 if (session_type == SESSION_TYPE_TX &&
16602 fdai->be_srate &&
16603 (fdai->be_srate != bedai->sample_rate)) {
16604 pr_debug("%s: flush strm %d diff BE rates\n",
16605 __func__,
16606 fdai->strm_id);
16607
16608 if (fdai->event_info.event_func)
16609 fdai->event_info.event_func(
16610 MSM_PCM_RT_EVT_BUF_RECFG,
16611 fdai->event_info.priv_data);
16612 fdai->be_srate = 0; /* might not need it */
16613 }
16614 bits_per_sample = msm_routing_get_bit_width(
16615 bedai->format);
16616
16617 app_type =
16618 fe_dai_app_type_cfg[i][session_type][be_id].app_type;
16619 if (app_type && is_lsm) {
16620 app_type_idx =
16621 msm_pcm_routing_get_lsm_app_type_idx(app_type);
16622 sample_rate =
16623 fe_dai_app_type_cfg[i][session_type][be_id]
16624 .sample_rate;
16625 bits_per_sample =
16626 lsm_app_type_cfg[app_type_idx].bit_width;
16627 } else if (app_type) {
16628 app_type_idx =
16629 msm_pcm_routing_get_app_type_idx(app_type);
16630 sample_rate =
16631 fe_dai_app_type_cfg[i][session_type]
16632 [be_id].sample_rate;
16633 bits_per_sample =
16634 app_type_cfg[app_type_idx].bit_width;
16635 } else
16636 sample_rate = bedai->sample_rate;
16637 /*
16638 * check if ADM needs to be configured with different
16639 * channel mapping than backend
16640 */
16641 if (!bedai->adm_override_ch)
16642 channels = bedai->channel;
16643 else
16644 channels = bedai->adm_override_ch;
16645 acdb_dev_id =
16646 fe_dai_app_type_cfg[i][session_type][be_id].acdb_dev_id;
16647 topology = msm_routing_get_adm_topology(i, session_type,
16648 be_id);
16649 copp_idx = adm_open(bedai->port_id, path_type,
16650 sample_rate, channels, topology,
16651 fdai->perf_mode, bits_per_sample,
16652 app_type, acdb_dev_id);
16653 if ((copp_idx < 0) ||
16654 (copp_idx >= MAX_COPPS_PER_PORT)) {
16655 pr_err("%s: adm open failed\n", __func__);
16656 mutex_unlock(&routing_lock);
16657 return -EINVAL;
16658 }
16659 pr_debug("%s: setting idx bit of fe:%d, type: %d, be:%d\n",
16660 __func__, i, session_type, be_id);
16661 set_bit(copp_idx,
16662 &session_copp_map[i][session_type][be_id]);
16663
16664 if (msm_is_resample_needed(
16665 sample_rate,
16666 bedai->sample_rate))
16667 adm_copp_mfc_cfg(
16668 bedai->port_id, copp_idx,
16669 bedai->sample_rate);
16670
16671 msm_pcm_routing_build_matrix(i, session_type, path_type,
16672 fdai->perf_mode,
16673 bedai->passthr_mode[i]);
16674 if ((fdai->perf_mode == LEGACY_PCM_MODE) &&
16675 (bedai->passthr_mode[i] == LEGACY_PCM))
16676 msm_pcm_routing_cfg_pp(bedai->port_id, copp_idx,
16677 topology, channels);
16678 }
16679 }
16680
16681 for_each_set_bit(i, &bedai->fe_sessions[0], MSM_FRONTEND_DAI_MAX) {
16682 session_id = msm_pcm_routing_get_voc_sessionid(i);
16683 if (session_id) {
16684 pr_debug("%s voice session_id: 0x%x\n", __func__,
16685 session_id);
16686
16687 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
16688 voc_path_type = RX_PATH;
16689 else
16690 voc_path_type = TX_PATH;
16691
16692 voc_set_route_flag(session_id, voc_path_type, 1);
16693
16694 memset(&voc_be_media_format, 0,
16695 sizeof(struct media_format_info));
16696
16697 voc_be_media_format.port_id = bedai->port_id;
16698 voc_be_media_format.num_channels = bedai->channel;
16699 voc_be_media_format.sample_rate = bedai->sample_rate;
16700 voc_be_media_format.bits_per_sample = bedai->format;
16701 /* Defaulting this to 1 for voice call usecases */
16702 voc_be_media_format.channel_mapping[0] = 1;
16703
16704 voc_set_device_config(session_id, voc_path_type,
16705 &voc_be_media_format);
16706
16707 if (voc_get_route_flag(session_id, RX_PATH) &&
16708 voc_get_route_flag(session_id, TX_PATH))
16709 voc_enable_device(session_id);
16710 }
16711 }
16712
16713 /* Check if backend is an external ec ref port and set as needed */
16714 if (unlikely(bedai->port_id == voc_get_ext_ec_ref_port_id())) {
16715
16716 memset(&voc_be_media_format, 0,
16717 sizeof(struct media_format_info));
16718
16719 /* Get format info for ec ref port from msm_bedais[] */
16720 voc_be_media_format.port_id = bedai->port_id;
16721 voc_be_media_format.num_channels = bedai->channel;
16722 voc_be_media_format.bits_per_sample = bedai->format;
16723 voc_be_media_format.sample_rate = bedai->sample_rate;
16724 /* Defaulting this to 1 for voice call usecases */
16725 voc_be_media_format.channel_mapping[0] = 1;
16726 voc_set_ext_ec_ref_media_fmt_info(&voc_be_media_format);
16727 pr_debug("%s: EC Ref media format info set to port_id=%d, num_channels=%d, bits_per_sample=%d, sample_rate=%d\n",
16728 __func__, voc_be_media_format.port_id,
16729 voc_be_media_format.num_channels,
16730 voc_be_media_format.bits_per_sample,
16731 voc_be_media_format.sample_rate);
16732 }
16733
16734done:
16735 mutex_unlock(&routing_lock);
16736
16737 return 0;
16738}
16739
16740static int msm_routing_send_device_pp_params(int port_id, int copp_idx,
16741 int fe_id)
16742{
16743 int index, topo_id, be_idx;
16744 unsigned long pp_config = 0;
16745 bool mute_on;
16746 int latency;
16747 bool compr_passthr_mode = true;
16748
16749 pr_debug("%s: port_id %d, copp_idx %d\n", __func__, port_id, copp_idx);
16750
16751 if (port_id != HDMI_RX && port_id != DISPLAY_PORT_RX) {
16752 pr_err("%s: Device pp params on invalid port %d\n",
16753 __func__, port_id);
16754 return -EINVAL;
16755 }
16756
16757 for (be_idx = 0; be_idx < MSM_BACKEND_DAI_MAX; be_idx++) {
16758 if (port_id == msm_bedais[be_idx].port_id)
16759 break;
16760 }
16761
16762 if (be_idx >= MSM_BACKEND_DAI_MAX) {
16763 pr_debug("%s: Invalid be id %d\n", __func__, be_idx);
16764 return -EINVAL;
16765 }
16766
16767 for (index = 0; index < MSM_BACKEND_DAI_PP_PARAMS_REQ_MAX; index++) {
16768 if (msm_bedais_pp_params[index].port_id == port_id)
16769 break;
16770 }
16771 if (index >= MSM_BACKEND_DAI_PP_PARAMS_REQ_MAX) {
16772 pr_err("%s: Invalid backend pp params index %d\n",
16773 __func__, index);
16774 return -EINVAL;
16775 }
16776
16777 topo_id = adm_get_topology_for_port_copp_idx(port_id, copp_idx);
16778 if (topo_id != COMPRESSED_PASSTHROUGH_DEFAULT_TOPOLOGY) {
16779 pr_err("%s: Invalid passthrough topology 0x%x\n",
16780 __func__, topo_id);
16781 return -EINVAL;
16782 }
16783
16784 if ((msm_bedais[be_idx].passthr_mode[fe_id] == LEGACY_PCM) ||
16785 (msm_bedais[be_idx].passthr_mode[fe_id] == LISTEN))
16786 compr_passthr_mode = false;
16787
16788 pp_config = msm_bedais_pp_params[index].pp_params_config;
16789 if (test_bit(ADM_PP_PARAM_MUTE_BIT, &pp_config)) {
16790 pr_debug("%s: ADM_PP_PARAM_MUTE\n", __func__);
16791 clear_bit(ADM_PP_PARAM_MUTE_BIT, &pp_config);
16792 mute_on = msm_bedais_pp_params[index].mute_on;
16793 if ((msm_bedais[be_idx].active) && compr_passthr_mode)
16794 adm_send_compressed_device_mute(port_id,
16795 copp_idx,
16796 mute_on);
16797 }
16798 if (test_bit(ADM_PP_PARAM_LATENCY_BIT, &pp_config)) {
16799 pr_debug("%s: ADM_PP_PARAM_LATENCY\n", __func__);
16800 clear_bit(ADM_PP_PARAM_LATENCY_BIT,
16801 &pp_config);
16802 latency = msm_bedais_pp_params[index].latency;
16803 if ((msm_bedais[be_idx].active) && compr_passthr_mode)
16804 adm_send_compressed_device_latency(port_id,
16805 copp_idx,
16806 latency);
16807 }
16808 return 0;
16809}
16810
16811static int msm_routing_put_device_pp_params_mixer(struct snd_kcontrol *kcontrol,
16812 struct snd_ctl_elem_value *ucontrol)
16813{
16814 int pp_id = ucontrol->value.integer.value[0];
16815 int port_id = 0;
16816 int index, be_idx, i, topo_id, idx;
16817 bool mute;
16818 int latency;
16819 bool compr_passthr_mode = true;
16820
16821 pr_debug("%s: pp_id: 0x%x\n", __func__, pp_id);
16822
16823 for (be_idx = 0; be_idx < MSM_BACKEND_DAI_MAX; be_idx++) {
16824 port_id = msm_bedais[be_idx].port_id;
16825 if (port_id == HDMI_RX || port_id == DISPLAY_PORT_RX)
16826 break;
16827 }
16828
16829 if (be_idx >= MSM_BACKEND_DAI_MAX) {
16830 pr_debug("%s: Invalid be id %d\n", __func__, be_idx);
16831 return -EINVAL;
16832 }
16833
16834 for (index = 0; index < MSM_BACKEND_DAI_PP_PARAMS_REQ_MAX; index++) {
16835 if (msm_bedais_pp_params[index].port_id == port_id)
16836 break;
16837 }
16838 if (index >= MSM_BACKEND_DAI_PP_PARAMS_REQ_MAX) {
16839 pr_err("%s: Invalid pp params backend index %d\n",
16840 __func__, index);
16841 return -EINVAL;
16842 }
16843
16844 for_each_set_bit(i, &msm_bedais[be_idx].fe_sessions[0],
16845 MSM_FRONTEND_DAI_MM_SIZE) {
16846 if ((msm_bedais[be_idx].passthr_mode[i] == LEGACY_PCM) ||
16847 (msm_bedais[be_idx].passthr_mode[i] == LISTEN))
16848 compr_passthr_mode = false;
16849
16850 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++) {
16851 unsigned long copp =
16852 session_copp_map[i]
16853 [SESSION_TYPE_RX][be_idx];
16854 if (!test_bit(idx, &copp))
16855 continue;
16856 topo_id = adm_get_topology_for_port_copp_idx(port_id,
16857 idx);
16858 if (topo_id != COMPRESSED_PASSTHROUGH_DEFAULT_TOPOLOGY)
16859 continue;
16860 pr_debug("%s: port: 0x%x, copp %ld, be active: %d, passt: %d\n",
16861 __func__, port_id, copp, msm_bedais[be_idx].active,
16862 msm_bedais[be_idx].passthr_mode[i]);
16863 switch (pp_id) {
16864 case ADM_PP_PARAM_MUTE_ID:
16865 pr_debug("%s: ADM_PP_PARAM_MUTE\n", __func__);
16866 mute = ucontrol->value.integer.value[1] ? true : false;
16867 msm_bedais_pp_params[index].mute_on = mute;
16868 set_bit(ADM_PP_PARAM_MUTE_BIT,
16869 &msm_bedais_pp_params[index].pp_params_config);
16870 if ((msm_bedais[be_idx].active) && compr_passthr_mode)
16871 adm_send_compressed_device_mute(port_id,
16872 idx, mute);
16873 break;
16874 case ADM_PP_PARAM_LATENCY_ID:
16875 pr_debug("%s: ADM_PP_PARAM_LATENCY\n", __func__);
16876 msm_bedais_pp_params[index].latency =
16877 ucontrol->value.integer.value[1];
16878 set_bit(ADM_PP_PARAM_LATENCY_BIT,
16879 &msm_bedais_pp_params[index].pp_params_config);
16880 latency = msm_bedais_pp_params[index].latency =
16881 ucontrol->value.integer.value[1];
16882 if ((msm_bedais[be_idx].active) && compr_passthr_mode)
16883 adm_send_compressed_device_latency(port_id,
16884 idx, latency);
16885 break;
16886 default:
16887 pr_info("%s, device pp param %d not supported\n",
16888 __func__, pp_id);
16889 break;
16890 }
16891 }
16892 }
16893 return 0;
16894}
16895
16896static int msm_routing_get_device_pp_params_mixer(struct snd_kcontrol *kcontrol,
16897 struct snd_ctl_elem_value *ucontrol)
16898{
16899 pr_debug("%s:msm_routing_get_device_pp_params_mixer", __func__);
16900 return 0;
16901}
16902
16903static const struct snd_kcontrol_new device_pp_params_mixer_controls[] = {
16904 SOC_SINGLE_MULTI_EXT("Device PP Params", SND_SOC_NOPM, 0, 0xFFFFFFFF,
16905 0, 3, msm_routing_get_device_pp_params_mixer,
16906 msm_routing_put_device_pp_params_mixer),
16907};
16908
16909static int msm_aptx_dec_license_control_get(struct snd_kcontrol *kcontrol,
16910 struct snd_ctl_elem_value *ucontrol)
16911{
16912 ucontrol->value.integer.value[0] =
16913 core_get_license_status(ASM_MEDIA_FMT_APTX);
16914 pr_debug("%s: status %ld\n", __func__,
16915 ucontrol->value.integer.value[0]);
16916 return 0;
16917}
16918
16919static int msm_aptx_dec_license_control_put(struct snd_kcontrol *kcontrol,
16920 struct snd_ctl_elem_value *ucontrol)
16921{
16922 int32_t status = 0;
16923
16924 status = core_set_license(ucontrol->value.integer.value[0],
16925 APTX_CLASSIC_DEC_LICENSE_ID);
16926 pr_debug("%s: status %d\n", __func__, status);
16927 return status;
16928}
16929
16930static const struct snd_kcontrol_new aptx_dec_license_controls[] = {
16931 SOC_SINGLE_EXT("APTX Dec License", SND_SOC_NOPM, 0,
16932 0xFFFF, 0, msm_aptx_dec_license_control_get,
16933 msm_aptx_dec_license_control_put),
16934};
16935
16936static int msm_routing_be_dai_name_table_info(struct snd_kcontrol *kcontrol,
16937 struct snd_ctl_elem_info *uinfo)
16938{
16939 uinfo->type = SNDRV_CTL_ELEM_TYPE_BYTES;
16940 uinfo->count = sizeof(be_dai_name_table);
16941 return 0;
16942}
16943
16944static int msm_routing_be_dai_name_table_tlv_get(struct snd_kcontrol *kcontrol,
16945 unsigned int __user *bytes,
16946 unsigned int size)
16947{
16948 int i;
16949 int ret;
16950
16951 if (size < sizeof(be_dai_name_table)) {
16952 pr_err("%s: invalid size %d requested, returning\n",
16953 __func__, size);
16954 ret = -EINVAL;
16955 goto done;
16956 }
16957
16958 /*
16959 * Fill be_dai_name_table from msm_bedais table to reduce code changes
16960 * needed when adding new backends
16961 */
16962 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
16963 be_dai_name_table[i].be_id = i;
16964 strlcpy(be_dai_name_table[i].be_name,
16965 msm_bedais[i].name,
16966 LPASS_BE_NAME_MAX_LENGTH);
16967 }
16968
16969 ret = copy_to_user(bytes, &be_dai_name_table,
16970 sizeof(be_dai_name_table));
16971 if (ret) {
16972 pr_err("%s: failed to copy be_dai_name_table\n", __func__);
16973 ret = -EFAULT;
16974 }
16975
16976done:
16977 return ret;
16978}
16979
16980static const struct snd_kcontrol_new
16981 msm_routing_be_dai_name_table_mixer_controls[] = {
16982 {
16983 .access = SNDRV_CTL_ELEM_ACCESS_TLV_READ |
16984 SNDRV_CTL_ELEM_ACCESS_TLV_CALLBACK,
16985 .info = msm_routing_be_dai_name_table_info,
16986 .name = "Backend DAI Name Table",
16987 .tlv.c = snd_soc_bytes_tlv_callback,
16988 .private_value = (unsigned long) &(struct soc_bytes_ext) {
16989 .max = sizeof(be_dai_name_table),
16990 .get = msm_routing_be_dai_name_table_tlv_get,
16991 }
16992 },
16993};
16994
16995static int msm_routing_stereo_channel_reverse_control_get(
16996 struct snd_kcontrol *kcontrol,
16997 struct snd_ctl_elem_value *ucontrol)
16998{
16999 ucontrol->value.integer.value[0] = swap_ch;
17000 pr_debug("%s: Swap channel value: %ld\n", __func__,
17001 ucontrol->value.integer.value[0]);
17002 return 0;
17003}
17004
17005static int msm_routing_stereo_channel_reverse_control_put(
17006 struct snd_kcontrol *kcontrol,
17007 struct snd_ctl_elem_value *ucontrol)
17008{
17009 int i, idx, be_index, port_id;
17010 int ret = 0;
17011 unsigned long copp;
17012
17013 pr_debug("%s Swap channel value:%ld\n", __func__,
17014 ucontrol->value.integer.value[0]);
17015
17016 swap_ch = ucontrol->value.integer.value[0];
17017
17018 mutex_lock(&routing_lock);
17019 for (be_index = 0; be_index < MSM_BACKEND_DAI_MAX; be_index++) {
17020 port_id = msm_bedais[be_index].port_id;
17021 if (!msm_bedais[be_index].active)
17022 continue;
17023
17024 for_each_set_bit(i, &msm_bedais[be_index].fe_sessions[0],
17025 MSM_FRONTEND_DAI_MM_SIZE) {
17026 copp = session_copp_map[i][SESSION_TYPE_RX][be_index];
17027 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++) {
17028 if (!test_bit(idx, &copp))
17029 continue;
17030
17031 pr_debug("%s: swap channel control of portid:%d, coppid:%d\n",
17032 __func__, port_id, idx);
17033 ret = adm_swap_speaker_channels(
17034 port_id, idx,
17035 msm_bedais[be_index].sample_rate,
17036 swap_ch);
17037 if (ret) {
17038 pr_err("%s:Swap_channel failed, err=%d\n",
17039 __func__, ret);
17040 goto done;
17041 }
17042 }
17043 }
17044 }
17045done:
17046 mutex_unlock(&routing_lock);
17047 return ret;
17048}
17049
17050static const struct snd_kcontrol_new stereo_channel_reverse_control[] = {
17051 SOC_SINGLE_EXT("Swap channel", SND_SOC_NOPM, 0,
17052 1, 0, msm_routing_stereo_channel_reverse_control_get,
17053 msm_routing_stereo_channel_reverse_control_put),
17054};
17055
17056static const struct snd_pcm_ops msm_routing_pcm_ops = {
17057 .hw_params = msm_pcm_routing_hw_params,
17058 .close = msm_pcm_routing_close,
17059 .prepare = msm_pcm_routing_prepare,
17060};
17061
17062/* Not used but frame seems to require it */
17063static int msm_routing_probe(struct snd_soc_platform *platform)
17064{
17065 snd_soc_dapm_new_controls(&platform->component.dapm, msm_qdsp6_widgets,
17066 ARRAY_SIZE(msm_qdsp6_widgets));
17067 snd_soc_dapm_add_routes(&platform->component.dapm, intercon,
17068 ARRAY_SIZE(intercon));
17069
17070 snd_soc_dapm_new_widgets(platform->component.dapm.card);
17071
17072 snd_soc_add_platform_controls(platform, lsm_controls,
17073 ARRAY_SIZE(lsm_controls));
17074
17075 snd_soc_add_platform_controls(platform, aanc_slim_0_rx_mux,
17076 ARRAY_SIZE(aanc_slim_0_rx_mux));
17077
17078 snd_soc_add_platform_controls(platform, msm_voc_session_controls,
17079 ARRAY_SIZE(msm_voc_session_controls));
17080
17081 snd_soc_add_platform_controls(platform, app_type_cfg_controls,
17082 ARRAY_SIZE(app_type_cfg_controls));
17083
17084 snd_soc_add_platform_controls(platform, lsm_app_type_cfg_controls,
17085 ARRAY_SIZE(lsm_app_type_cfg_controls));
17086
Vikram Pandurangaee9c03a2017-09-07 15:06:17 -070017087 snd_soc_add_platform_controls(platform, module_cfg_controls,
17088 ARRAY_SIZE(module_cfg_controls));
17089
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017090 snd_soc_add_platform_controls(platform,
17091 stereo_to_custom_stereo_controls,
17092 ARRAY_SIZE(stereo_to_custom_stereo_controls));
17093
17094 snd_soc_add_platform_controls(platform, ec_ref_param_controls,
17095 ARRAY_SIZE(ec_ref_param_controls));
17096
17097 snd_soc_add_platform_controls(platform, channel_mixer_controls,
17098 ARRAY_SIZE(channel_mixer_controls));
17099
17100 msm_qti_pp_add_controls(platform);
17101
17102 msm_dts_srs_tm_add_controls(platform);
17103
17104 msm_dolby_dap_add_controls(platform);
17105
17106 snd_soc_add_platform_controls(platform,
17107 use_ds1_or_ds2_controls,
17108 ARRAY_SIZE(use_ds1_or_ds2_controls));
17109
17110 snd_soc_add_platform_controls(platform,
17111 device_pp_params_mixer_controls,
17112 ARRAY_SIZE(device_pp_params_mixer_controls));
17113
17114 snd_soc_add_platform_controls(platform,
17115 msm_routing_be_dai_name_table_mixer_controls,
17116 ARRAY_SIZE(msm_routing_be_dai_name_table_mixer_controls));
17117
17118 snd_soc_add_platform_controls(platform, msm_source_tracking_controls,
17119 ARRAY_SIZE(msm_source_tracking_controls));
17120 snd_soc_add_platform_controls(platform, adm_channel_config_controls,
17121 ARRAY_SIZE(adm_channel_config_controls));
17122
17123 snd_soc_add_platform_controls(platform, aptx_dec_license_controls,
17124 ARRAY_SIZE(aptx_dec_license_controls));
17125 snd_soc_add_platform_controls(platform, stereo_channel_reverse_control,
17126 ARRAY_SIZE(stereo_channel_reverse_control));
17127 return 0;
17128}
17129
17130int msm_routing_pcm_new(struct snd_soc_pcm_runtime *runtime)
17131{
17132 return msm_pcm_routing_hwdep_new(runtime, msm_bedais);
17133}
17134
17135void msm_routing_pcm_free(struct snd_pcm *pcm)
17136{
17137 msm_pcm_routing_hwdep_free(pcm);
17138}
17139
17140static struct snd_soc_platform_driver msm_soc_routing_platform = {
17141 .ops = &msm_routing_pcm_ops,
17142 .probe = msm_routing_probe,
17143 .pcm_new = msm_routing_pcm_new,
17144 .pcm_free = msm_routing_pcm_free,
17145};
17146
17147static int msm_routing_pcm_probe(struct platform_device *pdev)
17148{
17149
17150 dev_dbg(&pdev->dev, "dev name %s\n", dev_name(&pdev->dev));
17151 return snd_soc_register_platform(&pdev->dev,
17152 &msm_soc_routing_platform);
17153}
17154
17155static int msm_routing_pcm_remove(struct platform_device *pdev)
17156{
17157 snd_soc_unregister_platform(&pdev->dev);
17158 return 0;
17159}
17160
17161static const struct of_device_id msm_pcm_routing_dt_match[] = {
17162 {.compatible = "qcom,msm-pcm-routing"},
17163 {}
17164};
17165MODULE_DEVICE_TABLE(of, msm_pcm_routing_dt_match);
17166
17167static struct platform_driver msm_routing_pcm_driver = {
17168 .driver = {
17169 .name = "msm-pcm-routing",
17170 .owner = THIS_MODULE,
17171 .of_match_table = msm_pcm_routing_dt_match,
17172 },
17173 .probe = msm_routing_pcm_probe,
17174 .remove = msm_routing_pcm_remove,
17175};
17176
17177int msm_routing_check_backend_enabled(int fedai_id)
17178{
17179 int i;
17180
17181 if (fedai_id > MSM_FRONTEND_DAI_MM_MAX_ID) {
17182 /* bad ID assigned in machine driver */
17183 pr_err("%s: bad MM ID\n", __func__);
17184 return 0;
17185 }
17186 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
17187 if (test_bit(fedai_id, &msm_bedais[i].fe_sessions[0]))
17188 return msm_bedais[i].active;
17189 }
17190 return 0;
17191}
17192
17193static int msm_routing_set_cal(int32_t cal_type,
17194 size_t data_size, void *data)
17195{
17196 int ret = 0;
17197
17198 pr_debug("%s\n", __func__);
17199
17200 ret = cal_utils_set_cal(data_size, data, cal_data, 0, NULL);
17201 if (ret < 0) {
17202 pr_err("%s: cal_utils_set_cal failed, ret = %d, cal type = %d!\n",
17203 __func__, ret, cal_type);
17204 ret = -EINVAL;
17205 goto done;
17206 }
17207done:
17208 return ret;
17209}
17210
17211static void msm_routing_delete_cal_data(void)
17212{
17213 pr_debug("%s\n", __func__);
17214
17215 cal_utils_destroy_cal_types(1, &cal_data);
17216}
17217
17218static int msm_routing_init_cal_data(void)
17219{
17220 int ret = 0;
17221 struct cal_type_info cal_type_info = {
17222 {ADM_TOPOLOGY_CAL_TYPE,
17223 {NULL, NULL, NULL,
17224 msm_routing_set_cal, NULL, NULL} },
17225 {NULL, NULL, cal_utils_match_buf_num}
17226 };
17227 pr_debug("%s\n", __func__);
17228
17229 ret = cal_utils_create_cal_types(1, &cal_data,
17230 &cal_type_info);
17231 if (ret < 0) {
17232 pr_err("%s: could not create cal type!\n",
17233 __func__);
17234 ret = -EINVAL;
17235 goto err;
17236 }
17237
17238 return ret;
17239err:
17240 msm_routing_delete_cal_data();
17241 return ret;
17242}
17243
Laxminath Kasam8b1366a2017-10-05 01:44:16 +053017244int __init msm_soc_routing_platform_init(void)
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017245{
17246 mutex_init(&routing_lock);
17247 if (msm_routing_init_cal_data())
17248 pr_err("%s: could not init cal data!\n", __func__);
17249
17250 afe_set_routing_callback(
17251 (routing_cb)msm_pcm_get_dev_acdb_id_by_port_id);
17252
17253 memset(&be_dai_name_table, 0, sizeof(be_dai_name_table));
17254 memset(&last_be_id_configured, 0, sizeof(last_be_id_configured));
17255
17256 return platform_driver_register(&msm_routing_pcm_driver);
17257}
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017258
Laxminath Kasam8b1366a2017-10-05 01:44:16 +053017259void __exit msm_soc_routing_platform_exit(void)
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017260{
17261 msm_routing_delete_cal_data();
17262 memset(&be_dai_name_table, 0, sizeof(be_dai_name_table));
17263 mutex_destroy(&routing_lock);
17264 platform_driver_unregister(&msm_routing_pcm_driver);
17265}
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017266
17267MODULE_DESCRIPTION("MSM routing platform driver");
17268MODULE_LICENSE("GPL v2");