blob: ff2be80b13e6aac0341db44a6ca99516b8b82538 [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
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053060static struct cal_type_data *cal_data[MAX_ROUTING_CAL_TYPES];
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053061
62static int fm_switch_enable;
63static int hfp_switch_enable;
64static int int0_mi2s_switch_enable;
65static int int4_mi2s_switch_enable;
66static int pri_mi2s_switch_enable;
67static int sec_mi2s_switch_enable;
68static int tert_mi2s_switch_enable;
69static int quat_mi2s_switch_enable;
Rohit Kumara5077932017-09-10 22:05:05 +053070static int quin_mi2s_switch_enable;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053071static int fm_pcmrx_switch_enable;
72static int usb_switch_enable;
73static int lsm_port_index;
74static int slim0_rx_aanc_fb_port;
75static int msm_route_ec_ref_rx;
76static int msm_ec_ref_ch = 4;
77static int msm_ec_ref_bit_format = SNDRV_PCM_FORMAT_S16_LE;
78static int msm_ec_ref_sampling_rate = 48000;
79static uint32_t voc_session_id = ALL_SESSION_VSID;
80static int msm_route_ext_ec_ref;
81static bool is_custom_stereo_on;
82static bool is_ds2_on;
83static bool swap_ch;
84
85#define WEIGHT_0_DB 0x4000
86/* all the FEs which can support channel mixer */
87static struct msm_pcm_channel_mixer channel_mixer[MSM_FRONTEND_DAI_MM_SIZE];
88/* input BE for each FE */
89static int channel_input[MSM_FRONTEND_DAI_MM_SIZE][ADM_MAX_CHANNELS];
90
91enum {
92 MADNONE,
93 MADAUDIO,
94 MADBEACON,
95 MADULTRASOUND,
96 MADSWAUDIO,
97};
98
99#define ADM_LSM_PORT_INDEX 9
100
101#define SLIMBUS_0_TX_TEXT "SLIMBUS_0_TX"
102#define SLIMBUS_1_TX_TEXT "SLIMBUS_1_TX"
103#define SLIMBUS_2_TX_TEXT "SLIMBUS_2_TX"
104#define SLIMBUS_3_TX_TEXT "SLIMBUS_3_TX"
105#define SLIMBUS_4_TX_TEXT "SLIMBUS_4_TX"
106#define SLIMBUS_5_TX_TEXT "SLIMBUS_5_TX"
107#define TERT_MI2S_TX_TEXT "TERT_MI2S_TX"
108#define QUAT_MI2S_TX_TEXT "QUAT_MI2S_TX"
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
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530886static struct cal_block_data *msm_routing_find_topology_by_path(int path,
887 int cal_index)
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530888{
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530889 struct list_head *ptr, *next;
890 struct cal_block_data *cal_block = NULL;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530891 pr_debug("%s\n", __func__);
892
893 list_for_each_safe(ptr, next,
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530894 &cal_data[cal_index]->cal_blocks) {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530895
896 cal_block = list_entry(ptr,
897 struct cal_block_data, list);
898
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530899 if (((struct audio_cal_info_adm_top *)cal_block
900 ->cal_info)->path == path) {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530901 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,
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530910 int acdb_id,
911 int cal_index)
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530912{
913 struct list_head *ptr, *next;
914 struct cal_block_data *cal_block = NULL;
915 struct audio_cal_info_adm_top *cal_info;
916
917 pr_debug("%s\n", __func__);
918
919 list_for_each_safe(ptr, next,
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530920 &cal_data[cal_index]->cal_blocks) {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530921
922 cal_block = list_entry(ptr,
923 struct cal_block_data, list);
924
925 cal_info = (struct audio_cal_info_adm_top *)
926 cal_block->cal_info;
927 if ((cal_info->path == path) &&
928 (cal_info->app_type == app_type) &&
929 (cal_info->acdb_id == acdb_id)) {
930 return cal_block;
931 }
932 }
933 pr_debug("%s: Can't find topology for path %d, app %d, acdb_id %d defaulting to search by path\n",
934 __func__, path, app_type, acdb_id);
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530935 return msm_routing_find_topology_by_path(cal_index, path);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530936}
937
938static int msm_routing_get_adm_topology(int fedai_id, int session_type,
939 int be_id)
940{
941 int topology = NULL_COPP_TOPOLOGY;
942 struct cal_block_data *cal_block = NULL;
943 int app_type = 0, acdb_dev_id = 0;
944
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530945 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
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530951 app_type = fe_dai_app_type_cfg[fedai_id][session_type][be_id].app_type;
952 acdb_dev_id =
953 fe_dai_app_type_cfg[fedai_id][session_type][be_id].acdb_dev_id;
954
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530955 mutex_lock(&cal_data[ADM_TOPOLOGY_CAL_TYPE_IDX]->lock);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530956 cal_block = msm_routing_find_topology(session_type, app_type,
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530957 acdb_dev_id,
958 ADM_TOPOLOGY_CAL_TYPE_IDX);
959 if (cal_block != NULL)
960 topology = ((struct audio_cal_info_adm_top *)
961 cal_block->cal_info)->topology;
962 mutex_unlock(&cal_data[ADM_TOPOLOGY_CAL_TYPE_IDX]->lock);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530963
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530964 if (cal_block == NULL) {
965 pr_debug("%s: Check for LSM topology\n", __func__);
966 mutex_lock(&cal_data[ADM_LSM_TOPOLOGY_CAL_TYPE_IDX]->lock);
967 cal_block = msm_routing_find_topology(session_type, app_type,
968 acdb_dev_id,
969 ADM_LSM_TOPOLOGY_CAL_TYPE_IDX);
970 if (cal_block != NULL)
971 topology = ((struct audio_cal_info_adm_top *)
972 cal_block->cal_info)->topology;
973 mutex_unlock(&cal_data[ADM_LSM_TOPOLOGY_CAL_TYPE_IDX]->lock);
974 }
975
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530976done:
977 pr_debug("%s: Using topology %d\n", __func__, topology);
978 return topology;
979}
980
981static uint8_t is_be_dai_extproc(int be_dai)
982{
983 if (be_dai == MSM_BACKEND_DAI_EXTPROC_RX ||
984 be_dai == MSM_BACKEND_DAI_EXTPROC_TX ||
985 be_dai == MSM_BACKEND_DAI_EXTPROC_EC_TX)
986 return 1;
987 else
988 return 0;
989}
990
991static void msm_pcm_routing_build_matrix(int fedai_id, int sess_type,
992 int path_type, int perf_mode,
993 uint32_t passthr_mode)
994{
995 int i, port_type, j, num_copps = 0;
996 struct route_payload payload;
997
998 port_type = ((path_type == ADM_PATH_PLAYBACK ||
999 path_type == ADM_PATH_COMPRESSED_RX) ?
1000 MSM_AFE_PORT_TYPE_RX : MSM_AFE_PORT_TYPE_TX);
1001
1002 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
1003 if (!is_be_dai_extproc(i) &&
1004 (afe_get_port_type(msm_bedais[i].port_id) == port_type) &&
1005 (msm_bedais[i].active) &&
1006 (test_bit(fedai_id, &msm_bedais[i].fe_sessions[0]))) {
1007 for (j = 0; j < MAX_COPPS_PER_PORT; j++) {
1008 unsigned long copp =
1009 session_copp_map[fedai_id][sess_type][i];
1010 if (test_bit(j, &copp)) {
1011 payload.port_id[num_copps] =
1012 msm_bedais[i].port_id;
1013 payload.copp_idx[num_copps] = j;
1014 payload.app_type[num_copps] =
1015 fe_dai_app_type_cfg
1016 [fedai_id][sess_type][i]
1017 .app_type;
1018 payload.acdb_dev_id[num_copps] =
1019 fe_dai_app_type_cfg
1020 [fedai_id][sess_type][i]
1021 .acdb_dev_id;
1022 payload.sample_rate[num_copps] =
1023 fe_dai_app_type_cfg
1024 [fedai_id][sess_type][i]
1025 .sample_rate;
1026 num_copps++;
1027 }
1028 }
1029 }
1030 }
1031
1032 if (num_copps) {
1033 payload.num_copps = num_copps;
1034 payload.session_id = fe_dai_map[fedai_id][sess_type].strm_id;
1035 adm_matrix_map(path_type, payload, perf_mode, passthr_mode);
1036 msm_pcm_routng_cfg_matrix_map_pp(payload, path_type, perf_mode);
1037 }
1038}
1039
1040void msm_pcm_routing_reg_psthr_stream(int fedai_id, int dspst_id,
1041 int stream_type)
1042{
1043 int i, session_type, path_type, port_type;
1044 u32 mode = 0;
1045
1046 if (fedai_id > MSM_FRONTEND_DAI_MM_MAX_ID) {
1047 /* bad ID assigned in machine driver */
1048 pr_err("%s: bad MM ID\n", __func__);
1049 return;
1050 }
1051
1052 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK) {
1053 session_type = SESSION_TYPE_RX;
1054 path_type = ADM_PATH_PLAYBACK;
1055 port_type = MSM_AFE_PORT_TYPE_RX;
1056 } else {
1057 session_type = SESSION_TYPE_TX;
1058 path_type = ADM_PATH_LIVE_REC;
1059 port_type = MSM_AFE_PORT_TYPE_TX;
1060 }
1061
1062 mutex_lock(&routing_lock);
1063
1064 fe_dai_map[fedai_id][session_type].strm_id = dspst_id;
1065 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
1066 if (!is_be_dai_extproc(i) &&
1067 (afe_get_port_type(msm_bedais[i].port_id) == port_type) &&
1068 (msm_bedais[i].active) &&
1069 (test_bit(fedai_id, &msm_bedais[i].fe_sessions[0]))) {
1070 mode = afe_get_port_type(msm_bedais[i].port_id);
1071 adm_connect_afe_port(mode, dspst_id,
1072 msm_bedais[i].port_id);
1073 break;
1074 }
1075 }
1076 mutex_unlock(&routing_lock);
1077}
1078
1079static bool route_check_fe_id_adm_support(int fe_id)
1080{
1081 bool rc = true;
1082
1083 if ((fe_id >= MSM_FRONTEND_DAI_LSM1) &&
1084 (fe_id <= MSM_FRONTEND_DAI_LSM8)) {
1085 /* fe id is listen while port is set to afe */
1086 if (lsm_port_index != ADM_LSM_PORT_INDEX) {
1087 pr_debug("%s: fe_id %d, lsm mux slim port %d\n",
1088 __func__, fe_id, lsm_port_index);
1089 rc = false;
1090 }
1091 }
1092
1093 return rc;
1094}
1095
1096int msm_pcm_routing_reg_phy_compr_stream(int fe_id, int perf_mode,
1097 int dspst_id, int stream_type,
1098 uint32_t passthr_mode)
1099{
1100 int i, j, session_type, path_type, port_type, topology;
1101 int num_copps = 0;
1102 struct route_payload payload;
1103 u32 channels, sample_rate;
1104 u16 bit_width = 16;
1105 bool is_lsm;
1106
1107 pr_debug("%s:fe_id[%d] perf_mode[%d] id[%d] stream_type[%d] passt[%d]",
1108 __func__, fe_id, perf_mode, dspst_id,
1109 stream_type, passthr_mode);
1110 if (!is_mm_lsm_fe_id(fe_id)) {
1111 /* bad ID assigned in machine driver */
1112 pr_err("%s: bad MM ID %d\n", __func__, fe_id);
1113 return -EINVAL;
1114 }
1115
1116 if (!route_check_fe_id_adm_support(fe_id)) {
1117 /* ignore adm open if not supported for fe_id */
1118 pr_debug("%s: No ADM support for fe id %d\n", __func__, fe_id);
1119 return 0;
1120 }
1121
1122 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK) {
1123 session_type = SESSION_TYPE_RX;
1124 if (passthr_mode != LEGACY_PCM)
1125 path_type = ADM_PATH_COMPRESSED_RX;
1126 else
1127 path_type = ADM_PATH_PLAYBACK;
1128 port_type = MSM_AFE_PORT_TYPE_RX;
1129 } else if (stream_type == SNDRV_PCM_STREAM_CAPTURE) {
1130 session_type = SESSION_TYPE_TX;
Laxminath Kasam38070be2017-08-17 18:21:59 +05301131 if ((passthr_mode != LEGACY_PCM) && (passthr_mode != LISTEN))
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301132 path_type = ADM_PATH_COMPRESSED_TX;
1133 else
1134 path_type = ADM_PATH_LIVE_REC;
1135 port_type = MSM_AFE_PORT_TYPE_TX;
1136 } else {
1137 pr_err("%s: invalid stream type %d\n", __func__, stream_type);
1138 return -EINVAL;
1139 }
1140
1141 is_lsm = (fe_id >= MSM_FRONTEND_DAI_LSM1) &&
1142 (fe_id <= MSM_FRONTEND_DAI_LSM8);
1143 mutex_lock(&routing_lock);
1144
1145 payload.num_copps = 0; /* only RX needs to use payload */
1146 fe_dai_map[fe_id][session_type].strm_id = dspst_id;
1147 /* re-enable EQ if active */
1148 msm_qti_pp_send_eq_values(fe_id);
1149 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
1150 if (test_bit(fe_id, &msm_bedais[i].fe_sessions[0]))
1151 msm_bedais[i].passthr_mode[fe_id] = passthr_mode;
1152
1153 if (!is_be_dai_extproc(i) &&
1154 (afe_get_port_type(msm_bedais[i].port_id) ==
1155 port_type) &&
1156 (msm_bedais[i].active) &&
1157 (test_bit(fe_id, &msm_bedais[i].fe_sessions[0]))) {
1158 int app_type, app_type_idx, copp_idx, acdb_dev_id;
1159
1160 /*
1161 * check if ADM needs to be configured with different
1162 * channel mapping than backend
1163 */
1164 if (!msm_bedais[i].adm_override_ch)
1165 channels = msm_bedais[i].channel;
1166 else
1167 channels = msm_bedais[i].adm_override_ch;
1168
1169 bit_width = msm_routing_get_bit_width(
1170 msm_bedais[i].format);
1171 app_type =
1172 fe_dai_app_type_cfg[fe_id][session_type][i].app_type;
1173 if (app_type && is_lsm) {
1174 app_type_idx =
1175 msm_pcm_routing_get_lsm_app_type_idx(app_type);
1176 sample_rate =
1177 fe_dai_app_type_cfg[fe_id][session_type][i]
1178 .sample_rate;
1179 bit_width =
1180 lsm_app_type_cfg[app_type_idx].bit_width;
1181 } else if (app_type) {
1182 app_type_idx =
1183 msm_pcm_routing_get_app_type_idx(
1184 app_type);
1185 sample_rate =
1186 fe_dai_app_type_cfg[fe_id][session_type][i].sample_rate;
1187 bit_width =
1188 app_type_cfg[app_type_idx].bit_width;
1189 } else {
1190 sample_rate = msm_bedais[i].sample_rate;
1191 }
1192 acdb_dev_id =
1193 fe_dai_app_type_cfg[fe_id][session_type][i].acdb_dev_id;
1194 topology = msm_routing_get_adm_topology(fe_id,
1195 session_type,
1196 i);
1197 if ((passthr_mode == COMPRESSED_PASSTHROUGH_DSD)
1198 || (passthr_mode ==
1199 COMPRESSED_PASSTHROUGH_GEN))
1200 topology = COMPRESSED_PASSTHROUGH_NONE_TOPOLOGY;
1201 pr_debug("%s: Before adm open topology %d\n", __func__,
1202 topology);
1203
1204 copp_idx =
1205 adm_open(msm_bedais[i].port_id,
1206 path_type, sample_rate, channels,
1207 topology, perf_mode, bit_width,
1208 app_type, acdb_dev_id);
1209 if ((copp_idx < 0) ||
1210 (copp_idx >= MAX_COPPS_PER_PORT)) {
1211 pr_err("%s:adm open failed coppid:%d\n",
1212 __func__, copp_idx);
1213 mutex_unlock(&routing_lock);
1214 return -EINVAL;
1215 }
1216 pr_debug("%s: set idx bit of fe:%d, type: %d, be:%d\n",
1217 __func__, fe_id, session_type, i);
1218 set_bit(copp_idx,
1219 &session_copp_map[fe_id][session_type][i]);
1220
1221 if (msm_is_resample_needed(
1222 sample_rate,
1223 msm_bedais[i].sample_rate))
1224 adm_copp_mfc_cfg(
1225 msm_bedais[i].port_id, copp_idx,
1226 msm_bedais[i].sample_rate);
1227
1228 for (j = 0; j < MAX_COPPS_PER_PORT; j++) {
1229 unsigned long copp =
1230 session_copp_map[fe_id][session_type][i];
1231 if (test_bit(j, &copp)) {
1232 payload.port_id[num_copps] =
1233 msm_bedais[i].port_id;
1234 payload.copp_idx[num_copps] = j;
1235 payload.app_type[num_copps] =
1236 fe_dai_app_type_cfg
1237 [fe_id][session_type][i]
1238 .app_type;
1239 payload.acdb_dev_id[num_copps] =
1240 fe_dai_app_type_cfg
1241 [fe_id][session_type][i]
1242 .acdb_dev_id;
1243 payload.sample_rate[num_copps] =
1244 fe_dai_app_type_cfg
1245 [fe_id][session_type][i]
1246 .sample_rate;
1247 num_copps++;
1248 }
1249 }
1250 if (passthr_mode != COMPRESSED_PASSTHROUGH_DSD
1251 && passthr_mode !=
1252 COMPRESSED_PASSTHROUGH_GEN) {
1253 msm_routing_send_device_pp_params(
1254 msm_bedais[i].port_id,
1255 copp_idx, fe_id);
1256 }
1257 }
1258 }
1259 if (num_copps) {
1260 payload.num_copps = num_copps;
1261 payload.session_id = fe_dai_map[fe_id][session_type].strm_id;
1262 adm_matrix_map(path_type, payload, perf_mode, passthr_mode);
1263 msm_pcm_routng_cfg_matrix_map_pp(payload, path_type, perf_mode);
1264 }
1265 mutex_unlock(&routing_lock);
1266 return 0;
1267}
1268
1269static u32 msm_pcm_routing_get_voc_sessionid(u16 val)
1270{
1271 u32 session_id;
1272
1273 switch (val) {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301274 case MSM_FRONTEND_DAI_QCHAT:
1275 session_id = voc_get_session_id(QCHAT_SESSION_NAME);
1276 break;
1277 case MSM_FRONTEND_DAI_VOIP:
1278 session_id = voc_get_session_id(VOIP_SESSION_NAME);
1279 break;
1280 case MSM_FRONTEND_DAI_VOICEMMODE1:
1281 session_id = voc_get_session_id(VOICEMMODE1_NAME);
1282 break;
1283 case MSM_FRONTEND_DAI_VOICEMMODE2:
1284 session_id = voc_get_session_id(VOICEMMODE2_NAME);
1285 break;
1286 default:
1287 session_id = 0;
1288 }
1289
1290 pr_debug("%s session_id 0x%x", __func__, session_id);
1291 return session_id;
1292}
1293
1294static int msm_pcm_routing_channel_mixer(int fe_id, bool perf_mode,
1295 int dspst_id, int stream_type)
1296{
1297 int copp_idx = 0;
1298 int sess_type = 0;
1299 int i = 0, j = 0, be_id;
1300 int ret = 0;
1301
1302 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
1303 pr_err("%s: invalid FE %d\n", __func__, fe_id);
1304 return 0;
1305 }
1306
1307 if (!(channel_mixer[fe_id].enable)) {
1308 pr_debug("%s: channel mixer not enabled for FE %d\n",
1309 __func__, fe_id);
1310 return 0;
1311 }
1312
1313 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK)
1314 sess_type = SESSION_TYPE_RX;
1315 else
1316 sess_type = SESSION_TYPE_TX;
1317
1318 for (i = 0; i < ADM_MAX_CHANNELS && channel_input[fe_id][i] > 0;
1319 ++i) {
1320 be_id = channel_input[fe_id][i] - 1;
1321 channel_mixer[fe_id].input_channels[i] =
1322 msm_bedais[be_id].channel;
1323
1324 if ((msm_bedais[be_id].active) &&
1325 test_bit(fe_id,
1326 &msm_bedais[be_id].fe_sessions[0])) {
1327 unsigned long copp =
1328 session_copp_map[fe_id][sess_type][be_id];
1329 for (j = 0; j < MAX_COPPS_PER_PORT; j++) {
1330 if (test_bit(j, &copp)) {
1331 copp_idx = j;
1332 break;
1333 }
1334 }
1335
1336 pr_debug("%s: fe %d, be %d, channel %d, copp %d\n",
1337 __func__,
1338 fe_id, be_id, msm_bedais[be_id].channel,
1339 copp_idx);
1340 ret = adm_programable_channel_mixer(
1341 msm_bedais[be_id].port_id,
1342 copp_idx, dspst_id, sess_type,
1343 channel_mixer + fe_id, i);
1344 }
1345 }
1346
1347 return ret;
1348}
1349
1350int msm_pcm_routing_reg_phy_stream(int fedai_id, int perf_mode,
1351 int dspst_id, int stream_type)
1352{
1353 int i, j, session_type, path_type, port_type, topology, num_copps = 0;
1354 struct route_payload payload;
1355 u32 channels, sample_rate;
1356 uint16_t bits_per_sample = 16;
1357 uint32_t passthr_mode = LEGACY_PCM;
1358 int ret = 0;
1359
1360 if (fedai_id > MSM_FRONTEND_DAI_MM_MAX_ID) {
1361 /* bad ID assigned in machine driver */
1362 pr_err("%s: bad MM ID %d\n", __func__, fedai_id);
1363 return -EINVAL;
1364 }
1365
1366 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK) {
1367 session_type = SESSION_TYPE_RX;
1368 path_type = ADM_PATH_PLAYBACK;
1369 port_type = MSM_AFE_PORT_TYPE_RX;
1370 } else {
1371 session_type = SESSION_TYPE_TX;
1372 path_type = ADM_PATH_LIVE_REC;
1373 port_type = MSM_AFE_PORT_TYPE_TX;
1374 }
1375
1376 mutex_lock(&routing_lock);
1377
1378 payload.num_copps = 0; /* only RX needs to use payload */
1379 fe_dai_map[fedai_id][session_type].strm_id = dspst_id;
1380 fe_dai_map[fedai_id][session_type].perf_mode = perf_mode;
1381
1382 /* re-enable EQ if active */
1383 msm_qti_pp_send_eq_values(fedai_id);
1384 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
1385 if (!is_be_dai_extproc(i) &&
1386 (afe_get_port_type(msm_bedais[i].port_id) == port_type) &&
1387 (msm_bedais[i].active) &&
1388 (test_bit(fedai_id, &msm_bedais[i].fe_sessions[0]))) {
1389 int app_type, app_type_idx, copp_idx, acdb_dev_id;
1390 /*
1391 * check if ADM needs to be configured with different
1392 * channel mapping than backend
1393 */
1394 if (!msm_bedais[i].adm_override_ch)
1395 channels = msm_bedais[i].channel;
1396 else
1397 channels = msm_bedais[i].adm_override_ch;
1398 msm_bedais[i].passthr_mode[fedai_id] =
1399 LEGACY_PCM;
1400
1401 bits_per_sample = msm_routing_get_bit_width(
1402 msm_bedais[i].format);
1403
1404 app_type =
1405 fe_dai_app_type_cfg[fedai_id][session_type][i].app_type;
1406 if (app_type) {
1407 app_type_idx =
1408 msm_pcm_routing_get_app_type_idx(app_type);
1409 sample_rate =
1410 fe_dai_app_type_cfg[fedai_id][session_type][i]
1411 .sample_rate;
1412 bits_per_sample =
1413 app_type_cfg[app_type_idx].bit_width;
1414 } else
1415 sample_rate = msm_bedais[i].sample_rate;
1416
1417 acdb_dev_id =
1418 fe_dai_app_type_cfg[fedai_id][session_type][i]
1419 .acdb_dev_id;
1420 topology = msm_routing_get_adm_topology(fedai_id,
1421 session_type,
1422 i);
1423 copp_idx = adm_open(msm_bedais[i].port_id, path_type,
1424 sample_rate, channels, topology,
1425 perf_mode, bits_per_sample,
1426 app_type, acdb_dev_id);
1427 if ((copp_idx < 0) ||
1428 (copp_idx >= MAX_COPPS_PER_PORT)) {
1429 pr_err("%s: adm open failed copp_idx:%d\n",
1430 __func__, copp_idx);
1431 mutex_unlock(&routing_lock);
1432 return -EINVAL;
1433 }
1434 pr_debug("%s: setting idx bit of fe:%d, type: %d, be:%d\n",
1435 __func__, fedai_id, session_type, i);
1436 set_bit(copp_idx,
1437 &session_copp_map[fedai_id][session_type][i]);
1438
1439 if (msm_is_resample_needed(
1440 sample_rate,
1441 msm_bedais[i].sample_rate))
1442 adm_copp_mfc_cfg(
1443 msm_bedais[i].port_id, copp_idx,
1444 msm_bedais[i].sample_rate);
1445
1446 for (j = 0; j < MAX_COPPS_PER_PORT; j++) {
1447 unsigned long copp =
1448 session_copp_map[fedai_id][session_type][i];
1449 if (test_bit(j, &copp)) {
1450 payload.port_id[num_copps] =
1451 msm_bedais[i].port_id;
1452 payload.copp_idx[num_copps] = j;
1453 payload.app_type[num_copps] =
1454 fe_dai_app_type_cfg
1455 [fedai_id][session_type]
1456 [i].app_type;
1457 payload.acdb_dev_id[num_copps] =
1458 fe_dai_app_type_cfg
1459 [fedai_id][session_type]
1460 [i].acdb_dev_id;
1461 payload.sample_rate[num_copps] =
1462 fe_dai_app_type_cfg
1463 [fedai_id][session_type]
1464 [i].sample_rate;
1465 num_copps++;
1466 }
1467 }
1468 if ((perf_mode == LEGACY_PCM_MODE) &&
1469 (msm_bedais[i].passthr_mode[fedai_id] ==
1470 LEGACY_PCM))
1471 msm_pcm_routing_cfg_pp(msm_bedais[i].port_id,
1472 copp_idx, topology,
1473 channels);
1474 }
1475 }
1476 if (num_copps) {
1477 payload.num_copps = num_copps;
1478 payload.session_id = fe_dai_map[fedai_id][session_type].strm_id;
1479 adm_matrix_map(path_type, payload, perf_mode, passthr_mode);
1480 msm_pcm_routng_cfg_matrix_map_pp(payload, path_type, perf_mode);
1481 }
1482
1483 ret = msm_pcm_routing_channel_mixer(fedai_id, perf_mode,
1484 dspst_id, stream_type);
1485 mutex_unlock(&routing_lock);
1486 return ret;
1487}
1488
1489int msm_pcm_routing_reg_phy_stream_v2(int fedai_id, int perf_mode,
1490 int dspst_id, int stream_type,
1491 struct msm_pcm_routing_evt event_info)
1492{
1493 if (msm_pcm_routing_reg_phy_stream(fedai_id, perf_mode, dspst_id,
1494 stream_type)) {
1495 pr_err("%s: failed to reg phy stream\n", __func__);
1496 return -EINVAL;
1497 }
1498
1499 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK)
1500 fe_dai_map[fedai_id][SESSION_TYPE_RX].event_info = event_info;
1501 else
1502 fe_dai_map[fedai_id][SESSION_TYPE_TX].event_info = event_info;
1503 return 0;
1504}
1505
1506void msm_pcm_routing_dereg_phy_stream(int fedai_id, int stream_type)
1507{
1508 int i, port_type, session_type, path_type, topology;
1509 struct msm_pcm_routing_fdai_data *fdai;
1510
1511 if (!is_mm_lsm_fe_id(fedai_id)) {
1512 /* bad ID assigned in machine driver */
1513 pr_err("%s: bad MM ID\n", __func__);
1514 return;
1515 }
1516
1517 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK) {
1518 port_type = MSM_AFE_PORT_TYPE_RX;
1519 session_type = SESSION_TYPE_RX;
1520 path_type = ADM_PATH_PLAYBACK;
1521 } else {
1522 port_type = MSM_AFE_PORT_TYPE_TX;
1523 session_type = SESSION_TYPE_TX;
1524 path_type = ADM_PATH_LIVE_REC;
1525 }
1526
1527 mutex_lock(&routing_lock);
1528 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
1529 if (!is_be_dai_extproc(i) &&
1530 (afe_get_port_type(msm_bedais[i].port_id) == port_type) &&
1531 (msm_bedais[i].active) &&
1532 (test_bit(fedai_id, &msm_bedais[i].fe_sessions[0]))) {
1533 int idx;
1534 unsigned long copp =
1535 session_copp_map[fedai_id][session_type][i];
1536 fdai = &fe_dai_map[fedai_id][session_type];
1537
1538 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++)
1539 if (test_bit(idx, &copp))
1540 break;
1541
1542 if (idx >= MAX_COPPS_PER_PORT || idx < 0) {
1543 pr_debug("%s: copp idx is invalid, exiting\n",
1544 __func__);
1545 continue;
1546 }
1547 topology = adm_get_topology_for_port_copp_idx(
1548 msm_bedais[i].port_id, idx);
1549 adm_close(msm_bedais[i].port_id, fdai->perf_mode, idx);
1550 pr_debug("%s:copp:%ld,idx bit fe:%d,type:%d,be:%d\n",
1551 __func__, copp, fedai_id, session_type, i);
1552 clear_bit(idx,
1553 &session_copp_map[fedai_id][session_type][i]);
1554 if ((topology == DOLBY_ADM_COPP_TOPOLOGY_ID ||
1555 topology == DS2_ADM_COPP_TOPOLOGY_ID) &&
1556 (fdai->perf_mode == LEGACY_PCM_MODE) &&
1557 (msm_bedais[i].passthr_mode[fedai_id] ==
1558 LEGACY_PCM))
1559 msm_pcm_routing_deinit_pp(msm_bedais[i].port_id,
1560 topology);
1561 }
1562 }
1563
1564 fe_dai_map[fedai_id][session_type].strm_id = INVALID_SESSION;
1565 fe_dai_map[fedai_id][session_type].be_srate = 0;
1566 mutex_unlock(&routing_lock);
1567}
1568
1569/* Check if FE/BE route is set */
1570static bool msm_pcm_routing_route_is_set(u16 be_id, u16 fe_id)
1571{
1572 bool rc = false;
1573
1574 if (!is_mm_lsm_fe_id(fe_id)) {
1575 /* recheck FE ID in the mixer control defined in this file */
1576 pr_err("%s: bad MM ID\n", __func__);
1577 return rc;
1578 }
1579
1580 if (test_bit(fe_id, &msm_bedais[be_id].fe_sessions[0]))
1581 rc = true;
1582
1583 return rc;
1584}
1585
1586static void msm_pcm_routing_process_audio(u16 reg, u16 val, int set)
1587{
1588 int session_type, path_type, topology;
1589 u32 channels, sample_rate;
1590 uint16_t bits_per_sample = 16;
1591 struct msm_pcm_routing_fdai_data *fdai;
1592 uint32_t passthr_mode;
1593 bool is_lsm;
1594
1595 pr_debug("%s: reg %x val %x set %x\n", __func__, reg, val, set);
1596
1597 if (!is_mm_lsm_fe_id(val)) {
1598 /* recheck FE ID in the mixer control defined in this file */
1599 pr_err("%s: bad MM ID\n", __func__);
1600 return;
1601 }
1602
1603 if (!route_check_fe_id_adm_support(val)) {
1604 /* ignore adm open if not supported for fe_id */
1605 pr_debug("%s: No ADM support for fe id %d\n", __func__, val);
1606 return;
1607 }
1608
1609 passthr_mode = msm_bedais[reg].passthr_mode[val];
1610 if (afe_get_port_type(msm_bedais[reg].port_id) ==
1611 MSM_AFE_PORT_TYPE_RX) {
1612 session_type = SESSION_TYPE_RX;
1613 if (passthr_mode != LEGACY_PCM)
1614 path_type = ADM_PATH_COMPRESSED_RX;
1615 else
1616 path_type = ADM_PATH_PLAYBACK;
1617 } else {
1618 session_type = SESSION_TYPE_TX;
1619 if (passthr_mode != LEGACY_PCM)
1620 path_type = ADM_PATH_COMPRESSED_TX;
1621 else
1622 path_type = ADM_PATH_LIVE_REC;
1623 }
1624 is_lsm = (val >= MSM_FRONTEND_DAI_LSM1) &&
1625 (val <= MSM_FRONTEND_DAI_LSM8);
1626
1627 mutex_lock(&routing_lock);
1628 if (set) {
1629 if (!test_bit(val, &msm_bedais[reg].fe_sessions[0]) &&
1630 ((msm_bedais[reg].port_id == VOICE_PLAYBACK_TX) ||
1631 (msm_bedais[reg].port_id == VOICE2_PLAYBACK_TX)))
1632 voc_start_playback(set, msm_bedais[reg].port_id);
1633
1634 set_bit(val, &msm_bedais[reg].fe_sessions[0]);
1635 fdai = &fe_dai_map[val][session_type];
1636 if (msm_bedais[reg].active && fdai->strm_id !=
1637 INVALID_SESSION) {
1638 int app_type, app_type_idx, copp_idx, acdb_dev_id;
1639 /*
1640 * check if ADM needs to be configured with different
1641 * channel mapping than backend
1642 */
1643 if (!msm_bedais[reg].adm_override_ch)
1644 channels = msm_bedais[reg].channel;
1645 else
1646 channels = msm_bedais[reg].adm_override_ch;
1647 if (session_type == SESSION_TYPE_TX &&
1648 fdai->be_srate &&
1649 (fdai->be_srate != msm_bedais[reg].sample_rate)) {
1650 pr_debug("%s: flush strm %d diff BE rates\n",
1651 __func__, fdai->strm_id);
1652
1653 if (fdai->event_info.event_func)
1654 fdai->event_info.event_func(
1655 MSM_PCM_RT_EVT_BUF_RECFG,
1656 fdai->event_info.priv_data);
1657 fdai->be_srate = 0; /* might not need it */
1658 }
1659
1660 bits_per_sample = msm_routing_get_bit_width(
1661 msm_bedais[reg].format);
1662
1663 app_type =
1664 fe_dai_app_type_cfg[val][session_type][reg].app_type;
1665 if (app_type && is_lsm) {
1666 app_type_idx =
1667 msm_pcm_routing_get_lsm_app_type_idx(app_type);
1668 sample_rate =
1669 fe_dai_app_type_cfg[val][session_type][reg]
1670 .sample_rate;
1671 bits_per_sample =
1672 lsm_app_type_cfg[app_type_idx].bit_width;
1673 } else if (app_type) {
1674 app_type_idx =
1675 msm_pcm_routing_get_app_type_idx(app_type);
1676 sample_rate =
1677 fe_dai_app_type_cfg[val][session_type][reg]
1678 .sample_rate;
1679 bits_per_sample =
1680 app_type_cfg[app_type_idx].bit_width;
1681 } else
1682 sample_rate = msm_bedais[reg].sample_rate;
1683
1684 topology = msm_routing_get_adm_topology(val,
1685 session_type,
1686 reg);
1687 acdb_dev_id =
1688 fe_dai_app_type_cfg[val][session_type][reg].acdb_dev_id;
1689 copp_idx = adm_open(msm_bedais[reg].port_id, path_type,
1690 sample_rate, channels, topology,
1691 fdai->perf_mode, bits_per_sample,
1692 app_type, acdb_dev_id);
1693 if ((copp_idx < 0) ||
1694 (copp_idx >= MAX_COPPS_PER_PORT)) {
1695 pr_err("%s: adm open failed\n", __func__);
1696 mutex_unlock(&routing_lock);
1697 return;
1698 }
1699 pr_debug("%s: setting idx bit of fe:%d, type: %d, be:%d\n",
1700 __func__, val, session_type, reg);
1701 set_bit(copp_idx,
1702 &session_copp_map[val][session_type][reg]);
1703
1704 if (msm_is_resample_needed(
1705 sample_rate,
1706 msm_bedais[reg].sample_rate))
1707 adm_copp_mfc_cfg(
1708 msm_bedais[reg].port_id, copp_idx,
1709 msm_bedais[reg].sample_rate);
1710
1711 if (session_type == SESSION_TYPE_RX &&
1712 fdai->event_info.event_func)
1713 fdai->event_info.event_func(
1714 MSM_PCM_RT_EVT_DEVSWITCH,
1715 fdai->event_info.priv_data);
1716
1717 msm_pcm_routing_build_matrix(val, session_type,
1718 path_type,
1719 fdai->perf_mode,
1720 passthr_mode);
1721 if ((fdai->perf_mode == LEGACY_PCM_MODE) &&
1722 (passthr_mode == LEGACY_PCM))
1723 msm_pcm_routing_cfg_pp(msm_bedais[reg].port_id,
1724 copp_idx, topology,
1725 channels);
1726 }
1727 } else {
1728 if (test_bit(val, &msm_bedais[reg].fe_sessions[0]) &&
1729 ((msm_bedais[reg].port_id == VOICE_PLAYBACK_TX) ||
1730 (msm_bedais[reg].port_id == VOICE2_PLAYBACK_TX)))
1731 voc_start_playback(set, msm_bedais[reg].port_id);
1732 clear_bit(val, &msm_bedais[reg].fe_sessions[0]);
1733 fdai = &fe_dai_map[val][session_type];
1734 if (msm_bedais[reg].active && fdai->strm_id !=
1735 INVALID_SESSION) {
1736 int idx;
1737 int port_id;
1738 unsigned long copp =
1739 session_copp_map[val][session_type][reg];
1740 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++)
1741 if (test_bit(idx, &copp))
1742 break;
1743
1744 port_id = msm_bedais[reg].port_id;
1745 topology = adm_get_topology_for_port_copp_idx(port_id,
1746 idx);
1747 adm_close(msm_bedais[reg].port_id, fdai->perf_mode,
1748 idx);
1749 pr_debug("%s: copp: %ld, reset idx bit fe:%d, type: %d, be:%d topology=0x%x\n",
1750 __func__, copp, val, session_type, reg,
1751 topology);
1752 clear_bit(idx,
1753 &session_copp_map[val][session_type][reg]);
1754 if ((topology == DOLBY_ADM_COPP_TOPOLOGY_ID ||
1755 topology == DS2_ADM_COPP_TOPOLOGY_ID) &&
1756 (fdai->perf_mode == LEGACY_PCM_MODE) &&
1757 (passthr_mode == LEGACY_PCM))
1758 msm_pcm_routing_deinit_pp(
1759 msm_bedais[reg].port_id,
1760 topology);
1761 msm_pcm_routing_build_matrix(val, session_type,
1762 path_type,
1763 fdai->perf_mode,
1764 passthr_mode);
1765 }
1766 }
1767 if ((msm_bedais[reg].port_id == VOICE_RECORD_RX)
1768 || (msm_bedais[reg].port_id == VOICE_RECORD_TX))
1769 voc_start_record(msm_bedais[reg].port_id, set, voc_session_id);
1770
1771 mutex_unlock(&routing_lock);
1772}
1773
1774static int msm_routing_get_audio_mixer(struct snd_kcontrol *kcontrol,
1775 struct snd_ctl_elem_value *ucontrol)
1776{
1777 struct soc_mixer_control *mc =
1778 (struct soc_mixer_control *)kcontrol->private_value;
1779
1780 if (test_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]))
1781 ucontrol->value.integer.value[0] = 1;
1782 else
1783 ucontrol->value.integer.value[0] = 0;
1784
1785 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
1786 ucontrol->value.integer.value[0]);
1787
1788 return 0;
1789}
1790
1791static int msm_routing_put_audio_mixer(struct snd_kcontrol *kcontrol,
1792 struct snd_ctl_elem_value *ucontrol)
1793{
Asish Bhattacharya34504582017-08-08 12:55:01 +05301794 struct snd_soc_dapm_widget *widget =
1795 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301796 struct soc_mixer_control *mc =
1797 (struct soc_mixer_control *)kcontrol->private_value;
1798 struct snd_soc_dapm_update *update = NULL;
1799
1800 if (ucontrol->value.integer.value[0] &&
1801 msm_pcm_routing_route_is_set(mc->reg, mc->shift) == false) {
1802 msm_pcm_routing_process_audio(mc->reg, mc->shift, 1);
1803 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
1804 update);
1805 } else if (!ucontrol->value.integer.value[0] &&
1806 msm_pcm_routing_route_is_set(mc->reg, mc->shift) == true) {
1807 msm_pcm_routing_process_audio(mc->reg, mc->shift, 0);
1808 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
1809 update);
1810 }
1811
1812 return 1;
1813}
1814
1815static int msm_routing_get_listen_mixer(struct snd_kcontrol *kcontrol,
1816 struct snd_ctl_elem_value *ucontrol)
1817{
1818 struct soc_mixer_control *mc =
1819 (struct soc_mixer_control *)kcontrol->private_value;
1820
1821 if (test_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]))
1822 ucontrol->value.integer.value[0] = 1;
1823 else
1824 ucontrol->value.integer.value[0] = 0;
1825
1826 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
1827 ucontrol->value.integer.value[0]);
1828
1829 return 0;
1830}
1831
1832static int msm_routing_put_listen_mixer(struct snd_kcontrol *kcontrol,
1833 struct snd_ctl_elem_value *ucontrol)
1834{
Asish Bhattacharya34504582017-08-08 12:55:01 +05301835 struct snd_soc_dapm_widget *widget =
1836 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301837 struct soc_mixer_control *mc =
1838 (struct soc_mixer_control *)kcontrol->private_value;
1839 struct snd_soc_dapm_update *update = NULL;
1840
1841 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
1842 ucontrol->value.integer.value[0]);
1843
1844 if (ucontrol->value.integer.value[0]) {
1845 if (msm_pcm_routing_route_is_set(mc->reg, mc->shift) == false)
1846 msm_pcm_routing_process_audio(mc->reg, mc->shift, 1);
1847 snd_soc_dapm_mixer_update_power(widget->dapm,
1848 kcontrol, 1, update);
1849 } else if (!ucontrol->value.integer.value[0]) {
1850 if (msm_pcm_routing_route_is_set(mc->reg, mc->shift) == true)
1851 msm_pcm_routing_process_audio(mc->reg, mc->shift, 0);
1852 snd_soc_dapm_mixer_update_power(widget->dapm,
1853 kcontrol, 0, update);
1854 }
1855
1856 return 1;
1857}
1858
1859static void msm_pcm_routing_process_voice(u16 reg, u16 val, int set)
1860{
1861 u32 session_id = 0;
1862 u16 path_type;
1863 struct media_format_info voc_be_media_format;
1864
1865 pr_debug("%s: reg %x val %x set %x\n", __func__, reg, val, set);
1866
1867 session_id = msm_pcm_routing_get_voc_sessionid(val);
1868
1869 pr_debug("%s: FE DAI 0x%x session_id 0x%x\n",
1870 __func__, val, session_id);
1871
1872 mutex_lock(&routing_lock);
1873
1874 if (set)
1875 set_bit(val, &msm_bedais[reg].fe_sessions[0]);
1876 else
1877 clear_bit(val, &msm_bedais[reg].fe_sessions[0]);
1878
1879 if (val == MSM_FRONTEND_DAI_DTMF_RX &&
1880 afe_get_port_type(msm_bedais[reg].port_id) ==
1881 MSM_AFE_PORT_TYPE_RX) {
1882 pr_debug("%s(): set=%d port id=0x%x for dtmf generation\n",
1883 __func__, set, msm_bedais[reg].port_id);
1884 afe_set_dtmf_gen_rx_portid(msm_bedais[reg].port_id, set);
1885 }
1886
1887 if (afe_get_port_type(msm_bedais[reg].port_id) ==
1888 MSM_AFE_PORT_TYPE_RX)
1889 path_type = RX_PATH;
1890 else
1891 path_type = TX_PATH;
1892
1893 if (set) {
1894 if (msm_bedais[reg].active) {
1895 voc_set_route_flag(session_id, path_type, 1);
1896
1897 memset(&voc_be_media_format, 0,
1898 sizeof(struct media_format_info));
1899
1900 voc_be_media_format.port_id = msm_bedais[reg].port_id;
1901 voc_be_media_format.num_channels =
1902 msm_bedais[reg].channel;
1903 voc_be_media_format.sample_rate =
1904 msm_bedais[reg].sample_rate;
1905 voc_be_media_format.bits_per_sample =
1906 msm_bedais[reg].format;
1907 /* Defaulting this to 1 for voice call usecases */
1908 voc_be_media_format.channel_mapping[0] = 1;
1909
1910 voc_set_device_config(session_id, path_type,
1911 &voc_be_media_format);
1912
1913 if (voc_get_route_flag(session_id, TX_PATH) &&
1914 voc_get_route_flag(session_id, RX_PATH))
1915 voc_enable_device(session_id);
1916 } else {
1917 pr_debug("%s BE is not active\n", __func__);
1918 }
1919 } else {
1920 voc_set_route_flag(session_id, path_type, 0);
1921 voc_disable_device(session_id);
1922 }
1923
1924 mutex_unlock(&routing_lock);
1925
1926}
1927
1928static int msm_routing_get_voice_mixer(struct snd_kcontrol *kcontrol,
1929 struct snd_ctl_elem_value *ucontrol)
1930{
1931 struct soc_mixer_control *mc =
1932 (struct soc_mixer_control *)kcontrol->private_value;
1933
1934 mutex_lock(&routing_lock);
1935
1936 if (test_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]))
1937 ucontrol->value.integer.value[0] = 1;
1938 else
1939 ucontrol->value.integer.value[0] = 0;
1940
1941 mutex_unlock(&routing_lock);
1942
1943 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
1944 ucontrol->value.integer.value[0]);
1945
1946 return 0;
1947}
1948
1949static int msm_routing_put_voice_mixer(struct snd_kcontrol *kcontrol,
1950 struct snd_ctl_elem_value *ucontrol)
1951{
Asish Bhattacharya34504582017-08-08 12:55:01 +05301952 struct snd_soc_dapm_widget *widget =
1953 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301954 struct soc_mixer_control *mc =
1955 (struct soc_mixer_control *)kcontrol->private_value;
1956 struct snd_soc_dapm_update *update = NULL;
1957
1958 if (ucontrol->value.integer.value[0]) {
1959 msm_pcm_routing_process_voice(mc->reg, mc->shift, 1);
1960 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
1961 update);
1962 } else {
1963 msm_pcm_routing_process_voice(mc->reg, mc->shift, 0);
1964 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
1965 update);
1966 }
1967
1968 return 1;
1969}
1970
1971static int msm_routing_get_voice_stub_mixer(struct snd_kcontrol *kcontrol,
1972 struct snd_ctl_elem_value *ucontrol)
1973{
1974 struct soc_mixer_control *mc =
1975 (struct soc_mixer_control *)kcontrol->private_value;
1976
1977 mutex_lock(&routing_lock);
1978
1979 if (test_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]))
1980 ucontrol->value.integer.value[0] = 1;
1981 else
1982 ucontrol->value.integer.value[0] = 0;
1983
1984 mutex_unlock(&routing_lock);
1985
1986 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
1987 ucontrol->value.integer.value[0]);
1988
1989 return 0;
1990}
1991
1992static int msm_routing_put_voice_stub_mixer(struct snd_kcontrol *kcontrol,
1993 struct snd_ctl_elem_value *ucontrol)
1994{
Asish Bhattacharya34504582017-08-08 12:55:01 +05301995 struct snd_soc_dapm_widget *widget =
1996 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301997 struct soc_mixer_control *mc =
1998 (struct soc_mixer_control *)kcontrol->private_value;
1999 struct snd_soc_dapm_update *update = NULL;
2000
2001 if (ucontrol->value.integer.value[0]) {
2002 mutex_lock(&routing_lock);
2003 set_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]);
2004 mutex_unlock(&routing_lock);
2005
2006 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2007 update);
2008 } else {
2009 mutex_lock(&routing_lock);
2010 clear_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]);
2011 mutex_unlock(&routing_lock);
2012
2013 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2014 update);
2015 }
2016
2017 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
2018 ucontrol->value.integer.value[0]);
2019
2020 return 1;
2021}
2022
2023/*
2024 * Return the mapping between port ID and backend ID to enable the AFE callback
2025 * to determine the acdb_dev_id from the port id
2026 */
2027int msm_pcm_get_be_id_from_port_id(int port_id)
2028{
2029 int i;
2030 int be_id = -EINVAL;
2031
2032 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
2033 if (msm_bedais[i].port_id == port_id) {
2034 be_id = i;
2035 break;
2036 }
2037 }
2038
2039 return be_id;
2040}
2041
2042/*
2043 * Return the registered dev_acdb_id given a port ID to enable identifying the
2044 * correct AFE calibration information by comparing the header information.
2045 */
2046static int msm_pcm_get_dev_acdb_id_by_port_id(int port_id)
2047{
2048 int acdb_id = -EINVAL;
2049 int i = 0;
2050 int session;
2051 int port_type = afe_get_port_type(port_id);
2052 int be_id = msm_pcm_get_be_id_from_port_id(port_id);
2053
2054 pr_debug("%s:port_id %d be_id %d, port_type 0x%x\n",
2055 __func__, port_id, be_id, port_type);
2056
2057 if (port_type == MSM_AFE_PORT_TYPE_TX) {
2058 session = SESSION_TYPE_TX;
2059 } else if (port_type == MSM_AFE_PORT_TYPE_RX) {
2060 session = SESSION_TYPE_RX;
2061 } else {
2062 pr_err("%s: Invalid port type %d\n", __func__, port_type);
2063 acdb_id = -EINVAL;
2064 goto exit;
2065 }
2066
2067 if (be_id < 0) {
2068 pr_err("%s: Error getting backend id %d\n", __func__, be_id);
2069 goto exit;
2070 }
2071
2072 mutex_lock(&routing_lock);
2073 i = find_first_bit(&msm_bedais[be_id].fe_sessions[0],
2074 MSM_FRONTEND_DAI_MAX);
2075 if (i < MSM_FRONTEND_DAI_MAX)
2076 acdb_id = fe_dai_app_type_cfg[i][session][be_id].acdb_dev_id;
2077
2078 pr_debug("%s: FE[%d] session[%d] BE[%d] acdb_id(%d)\n",
2079 __func__, i, session, be_id, acdb_id);
2080 mutex_unlock(&routing_lock);
2081exit:
2082 return acdb_id;
2083}
2084
2085static int msm_routing_get_switch_mixer(struct snd_kcontrol *kcontrol,
2086 struct snd_ctl_elem_value *ucontrol)
2087{
2088 ucontrol->value.integer.value[0] = fm_switch_enable;
2089 pr_debug("%s: FM Switch enable %ld\n", __func__,
2090 ucontrol->value.integer.value[0]);
2091 return 0;
2092}
2093
2094static int msm_routing_put_switch_mixer(struct snd_kcontrol *kcontrol,
2095 struct snd_ctl_elem_value *ucontrol)
2096{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302097 struct snd_soc_dapm_widget *widget =
2098 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302099 struct snd_soc_dapm_update *update = NULL;
2100
2101 pr_debug("%s: FM Switch enable %ld\n", __func__,
2102 ucontrol->value.integer.value[0]);
2103 if (ucontrol->value.integer.value[0])
2104 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2105 update);
2106 else
2107 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2108 update);
2109 fm_switch_enable = ucontrol->value.integer.value[0];
2110 return 1;
2111}
2112
2113static int msm_routing_get_hfp_switch_mixer(struct snd_kcontrol *kcontrol,
2114 struct snd_ctl_elem_value *ucontrol)
2115{
2116 ucontrol->value.integer.value[0] = hfp_switch_enable;
2117 pr_debug("%s: HFP Switch enable %ld\n", __func__,
2118 ucontrol->value.integer.value[0]);
2119 return 0;
2120}
2121
2122static int msm_routing_put_hfp_switch_mixer(struct snd_kcontrol *kcontrol,
2123 struct snd_ctl_elem_value *ucontrol)
2124{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302125 struct snd_soc_dapm_widget *widget =
2126 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302127 struct snd_soc_dapm_update *update = NULL;
2128
2129 pr_debug("%s: HFP Switch enable %ld\n", __func__,
2130 ucontrol->value.integer.value[0]);
2131 if (ucontrol->value.integer.value[0])
2132 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol,
2133 1, update);
2134 else
2135 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol,
2136 0, update);
2137 hfp_switch_enable = ucontrol->value.integer.value[0];
2138 return 1;
2139}
2140
2141static int msm_routing_get_int0_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2142 struct snd_ctl_elem_value *ucontrol)
2143{
2144 ucontrol->value.integer.value[0] = int0_mi2s_switch_enable;
2145 pr_debug("%s: INT0 MI2S Switch enable %ld\n", __func__,
2146 ucontrol->value.integer.value[0]);
2147 return 0;
2148}
2149
2150static int msm_routing_put_int0_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2151 struct snd_ctl_elem_value *ucontrol)
2152{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302153 struct snd_soc_dapm_widget *widget =
2154 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302155 struct snd_soc_dapm_update *update = NULL;
2156
2157 pr_debug("%s: INT0 MI2S Switch enable %ld\n", __func__,
2158 ucontrol->value.integer.value[0]);
2159 if (ucontrol->value.integer.value[0])
2160 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2161 update);
2162 else
2163 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2164 update);
2165 int0_mi2s_switch_enable = ucontrol->value.integer.value[0];
2166 return 1;
2167}
2168
2169static int msm_routing_get_int4_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2170 struct snd_ctl_elem_value *ucontrol)
2171{
2172 ucontrol->value.integer.value[0] = int4_mi2s_switch_enable;
2173 pr_debug("%s: INT4 MI2S Switch enable %ld\n", __func__,
2174 ucontrol->value.integer.value[0]);
2175 return 0;
2176}
2177
2178static int msm_routing_put_int4_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2179 struct snd_ctl_elem_value *ucontrol)
2180{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302181 struct snd_soc_dapm_widget *widget =
2182 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302183 struct snd_soc_dapm_update *update = NULL;
2184
2185 pr_debug("%s: INT4 MI2S Switch enable %ld\n", __func__,
2186 ucontrol->value.integer.value[0]);
2187 if (ucontrol->value.integer.value[0])
2188 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2189 update);
2190 else
2191 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2192 update);
2193 int4_mi2s_switch_enable = ucontrol->value.integer.value[0];
2194 return 1;
2195}
2196
2197static int msm_routing_get_usb_switch_mixer(struct snd_kcontrol *kcontrol,
2198 struct snd_ctl_elem_value *ucontrol)
2199{
2200 ucontrol->value.integer.value[0] = usb_switch_enable;
2201 pr_debug("%s: HFP Switch enable %ld\n", __func__,
2202 ucontrol->value.integer.value[0]);
2203 return 0;
2204}
2205
2206static int msm_routing_put_usb_switch_mixer(struct snd_kcontrol *kcontrol,
2207 struct snd_ctl_elem_value *ucontrol)
2208{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302209 struct snd_soc_dapm_widget *widget =
2210 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302211 struct snd_soc_dapm_update *update = NULL;
2212
2213 pr_debug("%s: USB Switch enable %ld\n", __func__,
2214 ucontrol->value.integer.value[0]);
2215 if (ucontrol->value.integer.value[0])
2216 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol,
2217 1, update);
2218 else
2219 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol,
2220 0, update);
2221 usb_switch_enable = ucontrol->value.integer.value[0];
2222 return 1;
2223}
2224
2225static int msm_routing_get_pri_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2226 struct snd_ctl_elem_value *ucontrol)
2227{
2228 ucontrol->value.integer.value[0] = pri_mi2s_switch_enable;
2229 pr_debug("%s: PRI MI2S Switch enable %ld\n", __func__,
2230 ucontrol->value.integer.value[0]);
2231 return 0;
2232}
2233
2234static int msm_routing_put_pri_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2235 struct snd_ctl_elem_value *ucontrol)
2236{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302237 struct snd_soc_dapm_widget *widget =
2238 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302239 struct snd_soc_dapm_update *update = NULL;
2240
2241 pr_debug("%s: PRI MI2S Switch enable %ld\n", __func__,
2242 ucontrol->value.integer.value[0]);
2243 if (ucontrol->value.integer.value[0])
2244 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2245 update);
2246 else
2247 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2248 update);
2249 pri_mi2s_switch_enable = ucontrol->value.integer.value[0];
2250 return 1;
2251}
2252
2253static int msm_routing_get_sec_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2254 struct snd_ctl_elem_value *ucontrol)
2255{
2256 ucontrol->value.integer.value[0] = sec_mi2s_switch_enable;
2257 pr_debug("%s: SEC MI2S Switch enable %ld\n", __func__,
2258 ucontrol->value.integer.value[0]);
2259 return 0;
2260}
2261
2262static int msm_routing_put_sec_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2263 struct snd_ctl_elem_value *ucontrol)
2264{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302265 struct snd_soc_dapm_widget *widget =
2266 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302267 struct snd_soc_dapm_update *update = NULL;
2268
2269 pr_debug("%s: SEC MI2S Switch enable %ld\n", __func__,
2270 ucontrol->value.integer.value[0]);
2271 if (ucontrol->value.integer.value[0])
2272 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2273 update);
2274 else
2275 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2276 update);
2277 sec_mi2s_switch_enable = ucontrol->value.integer.value[0];
2278 return 1;
2279}
2280
2281static int msm_routing_get_tert_mi2s_switch_mixer(
2282 struct snd_kcontrol *kcontrol,
2283 struct snd_ctl_elem_value *ucontrol)
2284{
2285 ucontrol->value.integer.value[0] = tert_mi2s_switch_enable;
2286 pr_debug("%s: TERT MI2S Switch enable %ld\n", __func__,
2287 ucontrol->value.integer.value[0]);
2288 return 0;
2289}
2290
2291static int msm_routing_put_tert_mi2s_switch_mixer(
2292 struct snd_kcontrol *kcontrol,
2293 struct snd_ctl_elem_value *ucontrol)
2294{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302295 struct snd_soc_dapm_widget *widget =
2296 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302297 struct snd_soc_dapm_update *update = NULL;
2298
2299 pr_debug("%s: TERT MI2S Switch enable %ld\n", __func__,
2300 ucontrol->value.integer.value[0]);
2301 if (ucontrol->value.integer.value[0])
2302 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2303 update);
2304 else
2305 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2306 update);
2307 tert_mi2s_switch_enable = ucontrol->value.integer.value[0];
2308 return 1;
2309}
2310
2311static int msm_routing_get_quat_mi2s_switch_mixer(
2312 struct snd_kcontrol *kcontrol,
2313 struct snd_ctl_elem_value *ucontrol)
2314{
2315 ucontrol->value.integer.value[0] = quat_mi2s_switch_enable;
2316 pr_debug("%s: QUAT MI2S Switch enable %ld\n", __func__,
2317 ucontrol->value.integer.value[0]);
2318 return 0;
2319}
2320
2321static int msm_routing_put_quat_mi2s_switch_mixer(
2322 struct snd_kcontrol *kcontrol,
2323 struct snd_ctl_elem_value *ucontrol)
2324{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302325 struct snd_soc_dapm_widget *widget =
2326 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302327 struct snd_soc_dapm_update *update = NULL;
2328
2329 pr_debug("%s: QUAT MI2S Switch enable %ld\n", __func__,
2330 ucontrol->value.integer.value[0]);
2331 if (ucontrol->value.integer.value[0])
2332 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2333 update);
2334 else
2335 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2336 update);
2337 quat_mi2s_switch_enable = ucontrol->value.integer.value[0];
2338 return 1;
2339}
2340
Rohit Kumara5077932017-09-10 22:05:05 +05302341static int msm_routing_get_quin_mi2s_switch_mixer(
2342 struct snd_kcontrol *kcontrol,
2343 struct snd_ctl_elem_value *ucontrol)
2344{
2345 ucontrol->value.integer.value[0] = quin_mi2s_switch_enable;
2346 pr_debug("%s: QUIN MI2S Switch enable %ld\n", __func__,
2347 ucontrol->value.integer.value[0]);
2348 return 0;
2349}
2350
2351static int msm_routing_put_quin_mi2s_switch_mixer(
2352 struct snd_kcontrol *kcontrol,
2353 struct snd_ctl_elem_value *ucontrol)
2354{
2355 struct snd_soc_dapm_widget *widget =
2356 snd_soc_dapm_kcontrol_widget(kcontrol);
2357 struct snd_soc_dapm_update *update = NULL;
2358
2359 pr_debug("%s: QUIN MI2S Switch enable %ld\n", __func__,
2360 ucontrol->value.integer.value[0]);
2361 if (ucontrol->value.integer.value[0])
2362 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2363 update);
2364 else
2365 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2366 update);
2367 quin_mi2s_switch_enable = ucontrol->value.integer.value[0];
2368 return 1;
2369}
2370
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302371static int msm_routing_get_fm_pcmrx_switch_mixer(struct snd_kcontrol *kcontrol,
2372 struct snd_ctl_elem_value *ucontrol)
2373{
2374 ucontrol->value.integer.value[0] = fm_pcmrx_switch_enable;
2375 pr_debug("%s: FM Switch enable %ld\n", __func__,
2376 ucontrol->value.integer.value[0]);
2377 return 0;
2378}
2379
2380static int msm_routing_put_fm_pcmrx_switch_mixer(struct snd_kcontrol *kcontrol,
2381 struct snd_ctl_elem_value *ucontrol)
2382{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302383 struct snd_soc_dapm_widget *widget =
2384 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302385 struct snd_soc_dapm_update *update = NULL;
2386
2387 pr_debug("%s: FM Switch enable %ld\n", __func__,
2388 ucontrol->value.integer.value[0]);
2389 if (ucontrol->value.integer.value[0])
2390 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2391 update);
2392 else
2393 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2394 update);
2395 fm_pcmrx_switch_enable = ucontrol->value.integer.value[0];
2396 return 1;
2397}
2398
2399static int msm_routing_lsm_port_get(struct snd_kcontrol *kcontrol,
2400 struct snd_ctl_elem_value *ucontrol)
2401{
2402 ucontrol->value.integer.value[0] = lsm_port_index;
2403 return 0;
2404}
2405
2406static int msm_routing_lsm_port_put(struct snd_kcontrol *kcontrol,
2407 struct snd_ctl_elem_value *ucontrol)
2408{
2409 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
2410 int mux = ucontrol->value.enumerated.item[0];
2411 int lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_5_TX;
2412
2413 if (mux >= e->items) {
2414 pr_err("%s: Invalid mux value %d\n", __func__, mux);
2415 return -EINVAL;
2416 }
2417
2418 pr_debug("%s: LSM enable %ld\n", __func__,
2419 ucontrol->value.integer.value[0]);
2420 switch (ucontrol->value.integer.value[0]) {
2421 case 1:
2422 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_0_TX;
2423 break;
2424 case 2:
2425 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_1_TX;
2426 break;
2427 case 3:
2428 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_2_TX;
2429 break;
2430 case 4:
2431 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_3_TX;
2432 break;
2433 case 5:
2434 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_4_TX;
2435 break;
2436 case 6:
2437 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_5_TX;
2438 break;
2439 case 7:
2440 lsm_port = AFE_PORT_ID_TERTIARY_MI2S_TX;
2441 break;
2442 case 8:
2443 lsm_port = AFE_PORT_ID_QUATERNARY_MI2S_TX;
2444 break;
2445 case 9:
2446 lsm_port = ADM_LSM_PORT_ID;
2447 break;
2448 case 10:
2449 lsm_port = AFE_PORT_ID_INT3_MI2S_TX;
2450 break;
2451 default:
2452 pr_err("Default lsm port");
2453 break;
2454 }
2455 set_lsm_port(lsm_port);
2456 lsm_port_index = ucontrol->value.integer.value[0];
2457
2458 return 0;
2459}
2460
2461static int msm_routing_lsm_func_get(struct snd_kcontrol *kcontrol,
2462 struct snd_ctl_elem_value *ucontrol)
2463{
2464 int i;
2465 u16 port_id;
2466 enum afe_mad_type mad_type;
2467
2468 pr_debug("%s: enter\n", __func__);
2469 for (i = 0; i < ARRAY_SIZE(lsm_port_text); i++)
2470 if (!strnstr(kcontrol->id.name, lsm_port_text[i],
2471 strlen(lsm_port_text[i])))
2472 break;
2473
2474 if (i-- == ARRAY_SIZE(lsm_port_text)) {
2475 WARN(1, "Invalid id name %s\n", kcontrol->id.name);
2476 return -EINVAL;
2477 }
2478
2479 port_id = i * 2 + 1 + SLIMBUS_0_RX;
2480
2481 /*Check for Tertiary/Quaternary/INT3 TX port*/
2482 if (strnstr(kcontrol->id.name, lsm_port_text[7],
2483 strlen(lsm_port_text[7])))
2484 port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
2485
2486 if (strnstr(kcontrol->id.name, lsm_port_text[8],
2487 strlen(lsm_port_text[8])))
2488 port_id = AFE_PORT_ID_QUATERNARY_MI2S_TX;
2489
2490 if (strnstr(kcontrol->id.name, lsm_port_text[10],
2491 strlen(lsm_port_text[10])))
2492 port_id = AFE_PORT_ID_INT3_MI2S_TX;
2493
2494 mad_type = afe_port_get_mad_type(port_id);
2495 pr_debug("%s: port_id 0x%x, mad_type %d\n", __func__, port_id,
2496 mad_type);
2497 switch (mad_type) {
2498 case MAD_HW_NONE:
2499 ucontrol->value.integer.value[0] = MADNONE;
2500 break;
2501 case MAD_HW_AUDIO:
2502 ucontrol->value.integer.value[0] = MADAUDIO;
2503 break;
2504 case MAD_HW_BEACON:
2505 ucontrol->value.integer.value[0] = MADBEACON;
2506 break;
2507 case MAD_HW_ULTRASOUND:
2508 ucontrol->value.integer.value[0] = MADULTRASOUND;
2509 break;
2510 case MAD_SW_AUDIO:
2511 ucontrol->value.integer.value[0] = MADSWAUDIO;
2512 break;
2513 default:
2514 WARN(1, "Unknown\n");
2515 return -EINVAL;
2516 }
2517 return 0;
2518}
2519
2520static int msm_routing_lsm_func_put(struct snd_kcontrol *kcontrol,
2521 struct snd_ctl_elem_value *ucontrol)
2522{
2523 int i;
2524 u16 port_id;
2525 enum afe_mad_type mad_type;
2526
2527 pr_debug("%s: enter\n", __func__);
2528 for (i = 0; i < ARRAY_SIZE(lsm_port_text); i++)
2529 if (strnstr(kcontrol->id.name, lsm_port_text[i],
2530 strlen(lsm_port_text[i])))
2531 break;
2532
2533 if (i-- == ARRAY_SIZE(lsm_port_text)) {
2534 WARN(1, "Invalid id name %s\n", kcontrol->id.name);
2535 return -EINVAL;
2536 }
2537
2538 port_id = i * 2 + 1 + SLIMBUS_0_RX;
2539 switch (ucontrol->value.integer.value[0]) {
2540 case MADNONE:
2541 mad_type = MAD_HW_NONE;
2542 break;
2543 case MADAUDIO:
2544 mad_type = MAD_HW_AUDIO;
2545 break;
2546 case MADBEACON:
2547 mad_type = MAD_HW_BEACON;
2548 break;
2549 case MADULTRASOUND:
2550 mad_type = MAD_HW_ULTRASOUND;
2551 break;
2552 case MADSWAUDIO:
2553 mad_type = MAD_SW_AUDIO;
2554 break;
2555 default:
2556 WARN(1, "Unknown\n");
2557 return -EINVAL;
2558 }
2559
2560 /*Check for Tertiary/Quaternary/INT3 TX port*/
2561 if (strnstr(kcontrol->id.name, lsm_port_text[7],
2562 strlen(lsm_port_text[7])))
2563 port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
2564
2565 if (strnstr(kcontrol->id.name, lsm_port_text[8],
2566 strlen(lsm_port_text[8])))
2567 port_id = AFE_PORT_ID_QUATERNARY_MI2S_TX;
2568
2569 if (strnstr(kcontrol->id.name, lsm_port_text[10],
2570 strlen(lsm_port_text[10])))
2571 port_id = AFE_PORT_ID_INT3_MI2S_TX;
2572
2573 pr_debug("%s: port_id 0x%x, mad_type %d\n", __func__, port_id,
2574 mad_type);
2575 return afe_port_set_mad_type(port_id, mad_type);
2576}
2577
2578static const char *const adm_override_chs_text[] = {"Zero", "One", "Two"};
2579
2580static SOC_ENUM_SINGLE_EXT_DECL(slim_7_rx_adm_override_chs,
2581 adm_override_chs_text);
2582
2583static int msm_routing_adm_get_backend_idx(struct snd_kcontrol *kcontrol)
2584{
2585 int backend_id;
2586
2587 if (strnstr(kcontrol->id.name, "SLIM7_RX", sizeof("SLIM7_RX"))) {
2588 backend_id = MSM_BACKEND_DAI_SLIMBUS_7_RX;
2589 } else {
2590 pr_err("%s: unsupported backend id: %s",
2591 __func__, kcontrol->id.name);
2592 return -EINVAL;
2593 }
2594
2595 return backend_id;
2596}
2597static int msm_routing_adm_channel_config_get(
2598 struct snd_kcontrol *kcontrol,
2599 struct snd_ctl_elem_value *ucontrol)
2600{
2601 int backend_id = msm_routing_adm_get_backend_idx(kcontrol);
2602
2603 if (backend_id >= 0) {
2604 mutex_lock(&routing_lock);
2605 ucontrol->value.integer.value[0] =
2606 msm_bedais[backend_id].adm_override_ch;
2607 pr_debug("%s: adm channel count %ld for BE:%d\n", __func__,
2608 ucontrol->value.integer.value[0], backend_id);
2609 mutex_unlock(&routing_lock);
2610 }
2611
2612 return 0;
2613}
2614
2615static int msm_routing_adm_channel_config_put(
2616 struct snd_kcontrol *kcontrol,
2617 struct snd_ctl_elem_value *ucontrol)
2618{
2619 int backend_id = msm_routing_adm_get_backend_idx(kcontrol);
2620
2621 if (backend_id >= 0) {
2622 mutex_lock(&routing_lock);
2623 msm_bedais[backend_id].adm_override_ch =
2624 ucontrol->value.integer.value[0];
2625 pr_debug("%s:updating BE :%d adm channels: %d\n",
2626 __func__, backend_id,
2627 msm_bedais[backend_id].adm_override_ch);
2628 mutex_unlock(&routing_lock);
2629 }
2630
2631 return 0;
2632}
2633
2634static const struct snd_kcontrol_new adm_channel_config_controls[] = {
2635 SOC_ENUM_EXT("SLIM7_RX ADM Channels", slim_7_rx_adm_override_chs,
2636 msm_routing_adm_channel_config_get,
2637 msm_routing_adm_channel_config_put),
2638};
2639
2640static int msm_routing_slim_0_rx_aanc_mux_get(struct snd_kcontrol *kcontrol,
2641 struct snd_ctl_elem_value *ucontrol)
2642{
2643
2644 mutex_lock(&routing_lock);
2645 ucontrol->value.integer.value[0] = slim0_rx_aanc_fb_port;
2646 mutex_unlock(&routing_lock);
2647 pr_debug("%s: AANC Mux Port %ld\n", __func__,
2648 ucontrol->value.integer.value[0]);
2649 return 0;
2650};
2651
2652static int msm_routing_slim_0_rx_aanc_mux_put(struct snd_kcontrol *kcontrol,
2653 struct snd_ctl_elem_value *ucontrol)
2654{
2655 struct aanc_data aanc_info;
2656
2657 mutex_lock(&routing_lock);
2658 memset(&aanc_info, 0x00, sizeof(aanc_info));
2659 pr_debug("%s: AANC Mux Port %ld\n", __func__,
2660 ucontrol->value.integer.value[0]);
2661 slim0_rx_aanc_fb_port = ucontrol->value.integer.value[0];
2662 if (ucontrol->value.integer.value[0] == 0) {
2663 aanc_info.aanc_active = false;
2664 aanc_info.aanc_tx_port = 0;
2665 aanc_info.aanc_rx_port = 0;
2666 } else {
2667 aanc_info.aanc_active = true;
2668 aanc_info.aanc_rx_port = SLIMBUS_0_RX;
2669 aanc_info.aanc_tx_port =
2670 (SLIMBUS_0_RX - 1 + (slim0_rx_aanc_fb_port * 2));
2671 }
2672 afe_set_aanc_info(&aanc_info);
2673 mutex_unlock(&routing_lock);
2674 return 0;
2675};
2676static int msm_routing_get_port_mixer(struct snd_kcontrol *kcontrol,
2677 struct snd_ctl_elem_value *ucontrol)
2678{
2679 int idx = 0, shift = 0;
2680 struct soc_mixer_control *mc =
2681 (struct soc_mixer_control *)kcontrol->private_value;
2682
2683 idx = mc->shift/(sizeof(msm_bedais[mc->reg].port_sessions[0]) * 8);
2684 shift = mc->shift%(sizeof(msm_bedais[mc->reg].port_sessions[0]) * 8);
2685
2686 if (idx >= BE_DAI_PORT_SESSIONS_IDX_MAX) {
2687 pr_err("%s: Invalid idx = %d\n", __func__, idx);
2688 return -EINVAL;
2689 }
2690
2691 if (test_bit(shift,
2692 (unsigned long *)&msm_bedais[mc->reg].port_sessions[idx]))
2693 ucontrol->value.integer.value[0] = 1;
2694 else
2695 ucontrol->value.integer.value[0] = 0;
2696
2697 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
2698 ucontrol->value.integer.value[0]);
2699
2700 return 0;
2701}
2702
2703static int msm_routing_put_port_mixer(struct snd_kcontrol *kcontrol,
2704 struct snd_ctl_elem_value *ucontrol)
2705{
2706 int idx = 0, shift = 0;
2707 struct soc_mixer_control *mc =
2708 (struct soc_mixer_control *)kcontrol->private_value;
2709
2710 idx = mc->shift/(sizeof(msm_bedais[mc->reg].port_sessions[0]) * 8);
2711 shift = mc->shift%(sizeof(msm_bedais[mc->reg].port_sessions[0]) * 8);
2712
2713 if (idx >= BE_DAI_PORT_SESSIONS_IDX_MAX) {
2714 pr_err("%s: Invalid idx = %d\n", __func__, idx);
2715 return -EINVAL;
2716 }
2717
2718 pr_debug("%s: reg 0x%x shift 0x%x val %ld idx %d reminder shift %d\n",
2719 __func__, mc->reg, mc->shift,
2720 ucontrol->value.integer.value[0], idx, shift);
2721
2722 if (ucontrol->value.integer.value[0]) {
2723 afe_loopback(1, msm_bedais[mc->reg].port_id,
2724 msm_bedais[mc->shift].port_id);
2725 set_bit(shift,
2726 (unsigned long *)&msm_bedais[mc->reg].port_sessions[idx]);
2727 } else {
2728 afe_loopback(0, msm_bedais[mc->reg].port_id,
2729 msm_bedais[mc->shift].port_id);
2730 clear_bit(shift,
2731 (unsigned long *)&msm_bedais[mc->reg].port_sessions[idx]);
2732 }
2733
2734 return 1;
2735}
2736
2737static int msm_pcm_get_channel_rule_index(struct snd_kcontrol *kcontrol,
2738 struct snd_ctl_elem_value *ucontrol)
2739{
2740 u16 fe_id = 0;
2741
2742 fe_id = ((struct soc_mixer_control *)
2743 kcontrol->private_value)->shift;
2744 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2745 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2746 return -EINVAL;
2747 }
2748
2749 ucontrol->value.integer.value[0] = channel_mixer[fe_id].rule;
2750
2751 return 0;
2752}
2753
2754static int msm_pcm_put_channel_rule_index(struct snd_kcontrol *kcontrol,
2755 struct snd_ctl_elem_value *ucontrol)
2756{
2757 u16 fe_id = 0;
2758
2759 fe_id = ((struct soc_mixer_control *)
2760 kcontrol->private_value)->shift;
2761 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2762 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2763 return -EINVAL;
2764 }
2765
2766 channel_mixer[fe_id].rule = ucontrol->value.integer.value[0];
2767
2768 return 1;
2769}
2770
2771static int msm_pcm_get_out_chs(struct snd_kcontrol *kcontrol,
2772 struct snd_ctl_elem_value *ucontrol)
2773{
2774 u16 fe_id = 0;
2775
2776 fe_id = ((struct soc_multi_mixer_control *)
2777 kcontrol->private_value)->shift;
2778 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2779 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2780 return -EINVAL;
2781 }
2782
2783 ucontrol->value.integer.value[0] =
2784 channel_mixer[fe_id].output_channel;
2785 return 0;
2786}
2787
2788static int msm_pcm_put_out_chs(struct snd_kcontrol *kcontrol,
2789 struct snd_ctl_elem_value *ucontrol)
2790{
2791 u16 fe_id = 0;
2792
2793 fe_id = ((struct soc_multi_mixer_control *)
2794 kcontrol->private_value)->shift;
2795 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2796 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2797 return -EINVAL;
2798 }
2799
2800 pr_debug("%s: fe_id is %d, output channels = %d\n", __func__,
2801 fe_id,
2802 (unsigned int)(ucontrol->value.integer.value[0]));
2803 channel_mixer[fe_id].output_channel =
2804 (unsigned int)(ucontrol->value.integer.value[0]);
2805
2806 return 1;
2807}
2808
2809static const char *const ch_mixer[] = {"Disable", "Enable"};
2810
2811/* If new backend is added, need update this array */
2812static const char *const be_name[] = {
2813"ZERO", "PRI_I2S_RX", "PRI_I2S_TX", "SLIM_0_RX",
2814"SLIM_0_TX", "HDMI_RX", "INT_BT_SCO_RX", "INT_BT_SCO_TX",
2815"INT_FM_RX", "INT_FM_TX", "AFE_PCM_RX", "AFE_PCM_TX",
2816"AUXPCM_RX", "AUXPCM_TX", "VOICE_PLAYBACK_TX", "VOICE2_PLAYBACK_TX",
2817"INCALL_RECORD_RX", "INCALL_RECORD_TX", "MI2S_RX", "MI2S_TX",
2818"SEC_I2S_RX", "SLIM_1_RX", "SLIM_1_TX", "SLIM_2_RX",
2819"SLIM_2_TX", "SLIM_3_RX", "SLIM_3_TX", "SLIM_4_RX",
2820"SLIM_4_TX", "SLIM_5_RX", "SLIM_5_TX", "SLIM_6_RX",
2821"SLIM_6_TX", "SLIM_7_RX", "SLIM_7_TX", "SLIM_8_RX",
2822"SLIM_8_TX", "EXTPROC_RX", "EXTPROC_TX", "EXPROC_EC_TX",
2823"QUAT_MI2S_RX", "QUAT_MI2S_TX", "SECOND_MI2S_RX", "SECOND_MI2S_TX",
2824"PRI_MI2S_RX", "PRI_MI2S_TX", "TERT_MI2S_RX", "TERT_MI2S_TX",
2825"AUDIO_I2S_RX", "SEC_AUXPCM_RX", "SEC_AUXPCM_TX", "SPDIF_RX",
2826"SECOND_MI2S_RX_SD1", "QUIN_MI2S_RX", "QUIN_MI2S_TX", "SENARY_MI2S_TX",
2827"PRI_TDM_RX_0", "PRI_TDM_TX_0", "PRI_TDM_RX_1", "PRI_TDM_TX_1",
2828"PRI_TDM_RX_2", "PRI_TDM_TX_2", "PRI_TDM_RX_3", "PRI_TDM_TX_3",
2829"PRI_TDM_RX_4", "PRI_TDM_TX_4", "PRI_TDM_RX_5", "PRI_TDM_TX_5",
2830"PRI_TDM_RX_6", "PRI_TDM_TX_6", "PRI_TDM_RX_7", "PRI_TDM_TX_7",
2831"SEC_TDM_RX_0", "SEC_TDM_TX_0", "SEC_TDM_RX_1", "SEC_TDM_TX_1",
2832"SEC_TDM_RX_2", "SEC_TDM_TX_2", "SEC_TDM_RX_3", "SEC_TDM_TX_3",
2833"SEC_TDM_RX_4", "SEC_TDM_TX_4", "SEC_TDM_RX_5", "SEC_TDM_TX_5",
2834"SEC_TDM_RX_6", "SEC_TDM_TX_6", "SEC_TDM_RX_7", "SEC_TDM_TX_7",
2835"TERT_TDM_RX_0", "TERT_TDM_TX_0", "TERT_TDM_RX_1", "TERT_TDM_TX_1",
2836"TERT_TDM_RX_2", "TERT_TDM_TX_2", "TERT_TDM_RX_3", "TERT_TDM_TX_3",
2837"TERT_TDM_RX_4", "TERT_TDM_TX_4", "TERT_TDM_RX_5", "TERT_TDM_TX_5",
2838"TERT_TDM_RX_6", "TERT_TDM_TX_6", "TERT_TDM_RX_7", "TERT_TDM_TX_7",
2839"QUAT_TDM_RX_0", "QUAT_TDM_TX_0", "QUAT_TDM_RX_1", "QUAT_TDM_TX_1",
2840"QUAT_TDM_RX_2", "QUAT_TDM_TX_2", "QUAT_TDM_RX_3", "QUAT_TDM_TX_3",
2841"QUAT_TDM_RX_4", "QUAT_TDM_TX_4", "QUAT_TDM_RX_5", "QUAT_TDM_TX_5",
2842"QUAT_TDM_RX_6", "QUAT_TDM_TX_6", "QUAT_TDM_RX_7", "QUAT_TDM_TX_7",
Rohit Kumara5077932017-09-10 22:05:05 +05302843"QUIN_TDM_RX_0", "QUIN_TDM_TX_0", "QUIN_TDM_RX_1", "QUIN_TDM_TX_1",
2844"QUIN_TDM_RX_2", "QUIN_TDM_TX_2", "QUIN_TDM_RX_3", "QUIN_TDM_TX_3",
2845"QUIN_TDM_RX_4", "QUIN_TDM_TX_4", "QUIN_TDM_RX_5", "QUIN_TDM_TX_5",
2846"QUIN_TDM_RX_6", "QUIN_TDM_TX_6", "QUIN_TDM_RX_7", "QUIN_TDM_TX_7",
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302847"INT_BT_A2DP_RX", "USB_RX", "USB_TX", "DISPLAY_PORT_RX",
2848"TERT_AUXPCM_RX", "TERT_AUXPCM_TX", "QUAT_AUXPCM_RX", "QUAT_AUXPCM_TX",
Rohit Kumara5077932017-09-10 22:05:05 +05302849"QUIN_AUXPCM_RX", "QUIN_AUXPCM_TX",
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302850"INT0_MI2S_RX", "INT0_MI2S_TX", "INT1_MI2S_RX", "INT1_MI2S_TX",
2851"INT2_MI2S_RX", "INT2_MI2S_TX", "INT3_MI2S_RX", "INT3_MI2S_TX",
2852"INT4_MI2S_RX", "INT4_MI2S_TX", "INT5_MI2S_RX", "INT5_MI2S_TX",
2853"INT6_MI2S_RX", "INT6_MI2S_TX"
2854};
2855
2856static SOC_ENUM_SINGLE_DECL(mm1_channel_mux,
2857 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, ch_mixer);
2858static SOC_ENUM_SINGLE_DECL(mm2_channel_mux,
2859 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA2, ch_mixer);
2860static SOC_ENUM_SINGLE_DECL(mm3_channel_mux,
2861 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA3, ch_mixer);
2862static SOC_ENUM_SINGLE_DECL(mm4_channel_mux,
2863 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA4, ch_mixer);
2864
2865static SOC_ENUM_DOUBLE_DECL(mm1_ch1_enum,
2866 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 0, be_name);
2867static SOC_ENUM_DOUBLE_DECL(mm1_ch2_enum,
2868 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 1, be_name);
2869static SOC_ENUM_DOUBLE_DECL(mm1_ch3_enum,
2870 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 2, be_name);
2871static SOC_ENUM_DOUBLE_DECL(mm1_ch4_enum,
2872 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 3, be_name);
2873static SOC_ENUM_DOUBLE_DECL(mm1_ch5_enum,
2874 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 4, be_name);
2875static SOC_ENUM_DOUBLE_DECL(mm1_ch6_enum,
2876 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 5, be_name);
2877static SOC_ENUM_DOUBLE_DECL(mm1_ch7_enum,
2878 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 6, be_name);
2879static SOC_ENUM_DOUBLE_DECL(mm1_ch8_enum,
2880 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 7, be_name);
2881
2882static int msm_pcm_get_ctl_enum_info(struct snd_ctl_elem_info *uinfo,
2883 unsigned int channels,
2884 unsigned int items, const char *const names[])
2885{
2886 if (uinfo->value.enumerated.item >= items)
2887 uinfo->value.enumerated.item = items - 1;
2888
2889 WARN(strlen(names[uinfo->value.enumerated.item]) >=
2890 sizeof(uinfo->value.enumerated.name),
2891 "ALSA: too long item name '%s'\n",
2892 names[uinfo->value.enumerated.item]);
2893 strlcpy(uinfo->value.enumerated.name,
2894 names[uinfo->value.enumerated.item],
2895 sizeof(uinfo->value.enumerated.name));
2896 return 0;
2897}
2898
2899static int msm_pcm_channel_mixer_info(struct snd_kcontrol *kcontrol,
2900 struct snd_ctl_elem_info *uinfo)
2901{
2902 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
2903
2904 uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED;
2905 uinfo->count = 1;
2906
2907 uinfo->value.enumerated.items = ARRAY_SIZE(ch_mixer);
2908 msm_pcm_get_ctl_enum_info(uinfo, 1, e->items, e->texts);
2909
2910 return 0;
2911}
2912static int msm_pcm_channel_mixer_get(struct snd_kcontrol *kcontrol,
2913 struct snd_ctl_elem_value *ucontrol)
2914{
2915 u16 fe_id = 0;
2916
2917 fe_id = ((struct soc_enum *)
2918 kcontrol->private_value)->shift_l;
2919 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2920 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2921 return -EINVAL;
2922 }
2923
2924 pr_debug("%s: FE %d %s\n", __func__,
2925 fe_id,
2926 channel_mixer[fe_id].enable ? "Enabled" : "Disabled");
2927 ucontrol->value.enumerated.item[0] = channel_mixer[fe_id].enable;
2928 return 0;
2929}
2930
2931static int msm_pcm_channel_mixer_put(struct snd_kcontrol *kcontrol,
2932 struct snd_ctl_elem_value *ucontrol)
2933{
2934 u16 fe_id = 0;
2935
2936 fe_id = ((struct soc_enum *)
2937 kcontrol->private_value)->shift_l;
2938 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2939 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2940 return -EINVAL;
2941 }
2942
2943 channel_mixer[fe_id].enable = ucontrol->value.enumerated.item[0];
2944 pr_debug("%s: %s FE %d\n", __func__,
2945 channel_mixer[fe_id].enable ? "Enable" : "Disable",
2946 fe_id);
2947 return 0;
2948}
2949
2950static int msm_pcm_channel_input_be_info(struct snd_kcontrol *kcontrol,
2951 struct snd_ctl_elem_info *uinfo)
2952{
2953 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
2954
2955 uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED;
2956 uinfo->count = 1;
2957
2958 uinfo->value.enumerated.items = ARRAY_SIZE(be_name);
2959 msm_pcm_get_ctl_enum_info(uinfo, 1, e->items, e->texts);
2960
2961 return 0;
2962}
2963
2964static int msm_pcm_channel_input_be_put(struct snd_kcontrol *kcontrol,
2965 struct snd_ctl_elem_value *ucontrol)
2966{
2967 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
2968 u16 fe_id = 0, in_ch = 0;
2969
2970 fe_id = e->shift_l;
2971 in_ch = e->shift_r;
2972 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2973 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2974 return -EINVAL;
2975 }
2976 if (in_ch >= ADM_MAX_CHANNELS) {
2977 pr_err("%s: invalid input channel %d\n", __func__, in_ch);
2978 return -EINVAL;
2979 }
2980
2981 channel_input[fe_id][in_ch] = ucontrol->value.enumerated.item[0];
2982 return 1;
2983}
2984
2985static int msm_pcm_channel_input_be_get(struct snd_kcontrol *kcontrol,
2986 struct snd_ctl_elem_value *ucontrol)
2987{
2988 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
2989 u16 fe_id = 0, in_ch = 0;
2990
2991 fe_id = e->shift_l;
2992 in_ch = e->shift_r;
2993 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2994 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2995 return -EINVAL;
2996 }
2997 if (in_ch >= ADM_MAX_CHANNELS) {
2998 pr_err("%s: invalid input channel %d\n", __func__, in_ch);
2999 return -EINVAL;
3000 }
3001
3002 ucontrol->value.enumerated.item[0] = channel_input[fe_id][in_ch];
3003 return 1;
3004}
3005
3006
3007static int msm_pcm_channel_weight_info(struct snd_kcontrol *kcontrol,
3008 struct snd_ctl_elem_info *uinfo)
3009{
3010 uinfo->type = SNDRV_CTL_ELEM_TYPE_INTEGER;
3011 uinfo->count = ADM_MAX_CHANNELS;
3012 uinfo->value.integer.min = 0;
3013 uinfo->value.integer.max = WEIGHT_0_DB;
3014
3015 return 0;
3016}
3017
3018static int msm_pcm_channel_weight_put(struct snd_kcontrol *kcontrol,
3019 struct snd_ctl_elem_value *ucontrol)
3020{
3021 u16 fe_id = 0, out_ch = 0;
3022 int i, weight;
3023
3024 fe_id = ((struct soc_multi_mixer_control *)
3025 kcontrol->private_value)->shift;
3026 out_ch = ((struct soc_multi_mixer_control *)
3027 kcontrol->private_value)->rshift;
3028 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
3029 pr_err("%s: invalid FE %d\n", __func__, fe_id);
3030 return -EINVAL;
3031 }
3032 if (out_ch >= ADM_MAX_CHANNELS) {
3033 pr_err("%s: invalid input channel %d\n", __func__, out_ch);
3034 return -EINVAL;
3035 }
3036
3037 pr_debug("%s: FE_ID: %d, channel weight %ld, %ld, %ld, %ld, %ld, %ld, %ld, %ld\n",
3038 __func__, fe_id,
3039 ucontrol->value.integer.value[0],
3040 ucontrol->value.integer.value[1],
3041 ucontrol->value.integer.value[2],
3042 ucontrol->value.integer.value[3],
3043 ucontrol->value.integer.value[4],
3044 ucontrol->value.integer.value[5],
3045 ucontrol->value.integer.value[6],
3046 ucontrol->value.integer.value[7]);
3047
3048 for (i = 0; i < ADM_MAX_CHANNELS; ++i) {
3049 weight = ucontrol->value.integer.value[i];
3050 channel_mixer[fe_id].channel_weight[out_ch][i] = weight;
3051 pr_debug("%s: FE_ID %d, output %d input %d weight %d\n",
3052 __func__, fe_id, out_ch, i,
3053 channel_mixer[fe_id].channel_weight[out_ch][i]);
3054 }
3055
3056 return 0;
3057}
3058
3059static int msm_pcm_channel_weight_get(struct snd_kcontrol *kcontrol,
3060 struct snd_ctl_elem_value *ucontrol)
3061{
3062 u16 fe_id = 0, out_ch = 0;
3063 int i;
3064
3065 fe_id = ((struct soc_multi_mixer_control *)
3066 kcontrol->private_value)->shift;
3067 out_ch = ((struct soc_multi_mixer_control *)
3068 kcontrol->private_value)->rshift;
3069 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
3070 pr_err("%s: invalid FE %d\n", __func__, fe_id);
3071 return -EINVAL;
3072 }
3073 if (out_ch >= ADM_MAX_CHANNELS) {
3074 pr_err("%s: invalid input channel %d\n", __func__, out_ch);
3075 return -EINVAL;
3076 }
3077
3078 for (i = 0; i < ADM_MAX_CHANNELS; ++i)
3079 ucontrol->value.integer.value[i] =
3080 channel_mixer[fe_id].channel_weight[out_ch][i];
3081
3082 pr_debug("%s: FE_ID: %d, weight %ld, %ld, %ld, %ld, %ld, %ld, %ld, %ld",
3083 __func__, fe_id,
3084 ucontrol->value.integer.value[0],
3085 ucontrol->value.integer.value[1],
3086 ucontrol->value.integer.value[2],
3087 ucontrol->value.integer.value[3],
3088 ucontrol->value.integer.value[4],
3089 ucontrol->value.integer.value[5],
3090 ucontrol->value.integer.value[6],
3091 ucontrol->value.integer.value[7]);
3092
3093 return 0;
3094}
3095
3096static const struct snd_kcontrol_new channel_mixer_controls[] = {
3097 SOC_SINGLE_EXT("MultiMedia1 Channel Rule", SND_SOC_NOPM,
3098 MSM_FRONTEND_DAI_MULTIMEDIA1, 8, 0,
3099 msm_pcm_get_channel_rule_index,
3100 msm_pcm_put_channel_rule_index),
3101 SOC_SINGLE_EXT("MultiMedia2 Channel Rule", SND_SOC_NOPM,
3102 MSM_FRONTEND_DAI_MULTIMEDIA2, 8, 0,
3103 msm_pcm_get_channel_rule_index,
3104 msm_pcm_put_channel_rule_index),
3105 SOC_SINGLE_EXT("MultiMedia3 Channel Rule", SND_SOC_NOPM,
3106 MSM_FRONTEND_DAI_MULTIMEDIA3, 8, 0,
3107 msm_pcm_get_channel_rule_index,
3108 msm_pcm_put_channel_rule_index),
3109 SOC_SINGLE_EXT("MultiMedia4 Channel Rule", SND_SOC_NOPM,
3110 MSM_FRONTEND_DAI_MULTIMEDIA4, 8, 0,
3111 msm_pcm_get_channel_rule_index,
3112 msm_pcm_put_channel_rule_index),
3113 SOC_SINGLE_EXT("MultiMedia5 Channel Rule", SND_SOC_NOPM,
3114 MSM_FRONTEND_DAI_MULTIMEDIA5, 8, 0,
3115 msm_pcm_get_channel_rule_index,
3116 msm_pcm_put_channel_rule_index),
3117 SOC_SINGLE_EXT("MultiMedia6 Channel Rule", SND_SOC_NOPM,
3118 MSM_FRONTEND_DAI_MULTIMEDIA6, 8, 0,
3119 msm_pcm_get_channel_rule_index,
3120 msm_pcm_put_channel_rule_index),
3121
3122 SOC_SINGLE_EXT("MultiMedia1 Channels", SND_SOC_NOPM,
3123 MSM_FRONTEND_DAI_MULTIMEDIA1, 8, 0,
3124 msm_pcm_get_out_chs,
3125 msm_pcm_put_out_chs),
3126 SOC_SINGLE_EXT("MultiMedia2 Channels", SND_SOC_NOPM,
3127 MSM_FRONTEND_DAI_MULTIMEDIA2, 8, 0,
3128 msm_pcm_get_out_chs,
3129 msm_pcm_put_out_chs),
3130 SOC_SINGLE_EXT("MultiMedia3 Channels", SND_SOC_NOPM,
3131 MSM_FRONTEND_DAI_MULTIMEDIA3, 8, 0,
3132 msm_pcm_get_out_chs,
3133 msm_pcm_put_out_chs),
3134 SOC_SINGLE_EXT("MultiMedia4 Channels", SND_SOC_NOPM,
3135 MSM_FRONTEND_DAI_MULTIMEDIA4, 8, 0,
3136 msm_pcm_get_out_chs,
3137 msm_pcm_put_out_chs),
3138 SOC_SINGLE_EXT("MultiMedia5 Channels", SND_SOC_NOPM,
3139 MSM_FRONTEND_DAI_MULTIMEDIA5, 8, 0,
3140 msm_pcm_get_out_chs,
3141 msm_pcm_put_out_chs),
3142 SOC_SINGLE_EXT("MultiMedia6 Channels", SND_SOC_NOPM,
3143 MSM_FRONTEND_DAI_MULTIMEDIA6, 8, 0,
3144 msm_pcm_get_out_chs,
3145 msm_pcm_put_out_chs),
3146 {
3147 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3148 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3149 .name = "MultiMedia1 Channel Mixer",
3150 .info = msm_pcm_channel_mixer_info,
3151 .get = msm_pcm_channel_mixer_get,
3152 .put = msm_pcm_channel_mixer_put,
3153 .private_value = (unsigned long)&(mm1_channel_mux)
3154 },
3155 {
3156 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3157 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3158 .name = "MultiMedia2 Channel Mixer",
3159 .info = msm_pcm_channel_mixer_info,
3160 .get = msm_pcm_channel_mixer_get,
3161 .put = msm_pcm_channel_mixer_put,
3162 .private_value = (unsigned long)&(mm2_channel_mux)
3163 },
3164 {
3165 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3166 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3167 .name = "MultiMedia3 Channel Mixer",
3168 .info = msm_pcm_channel_mixer_info,
3169 .get = msm_pcm_channel_mixer_get,
3170 .put = msm_pcm_channel_mixer_put,
3171 .private_value = (unsigned long)&(mm3_channel_mux)
3172 },
3173 {
3174 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3175 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3176 .name = "MultiMedia4 Channel Mixer",
3177 .info = msm_pcm_channel_mixer_info,
3178 .get = msm_pcm_channel_mixer_get,
3179 .put = msm_pcm_channel_mixer_put,
3180 .private_value = (unsigned long)&(mm4_channel_mux)
3181 },
3182 {
3183 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3184 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3185 .name = "MultiMedia1 Output Channel1",
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 = 0,}
3191 },
3192 {
3193 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3194 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3195 .name = "MultiMedia1 Output Channel2",
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 = 1, }
3201 },
3202 {
3203 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3204 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3205 .name = "MultiMedia1 Output Channel3",
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 = 2,}
3211 },
3212 {
3213 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3214 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3215 .name = "MultiMedia1 Output Channel4",
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 = 3,}
3221 },
3222 {
3223 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3224 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3225 .name = "MultiMedia1 Output Channel5",
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 = 4,}
3231 },
3232 {
3233 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3234 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3235 .name = "MultiMedia1 Output Channel6",
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 = 5,}
3241 },
3242 {
3243 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3244 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3245 .name = "MultiMedia1 Output Channel7",
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 = 6,}
3251 },
3252 {
3253 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3254 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3255 .name = "MultiMedia1 Output Channel8",
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_MULTIMEDIA1, .rshift = 7,}
3261 },
3262 {
3263 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3264 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3265 .name = "MultiMedia2 Output Channel1",
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 = 0,}
3271 },
3272 {
3273 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3274 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3275 .name = "MultiMedia2 Output Channel2",
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 = 1,}
3281 },
3282 {
3283 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3284 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3285 .name = "MultiMedia2 Output Channel3",
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_MULTIMEDIA2, .rshift = 2,}
3291 },
3292 {
3293 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3294 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3295 .name = "MultiMedia3 Output Channel1",
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 = 0,}
3301 },
3302 {
3303 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3304 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3305 .name = "MultiMedia3 Output Channel2",
3306 .info = msm_pcm_channel_weight_info,
3307 .get = msm_pcm_channel_weight_get,
3308 .put = msm_pcm_channel_weight_put,
3309 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3310 {.shift = MSM_FRONTEND_DAI_MULTIMEDIA3, .rshift = 1,}
3311 },
3312 {
3313 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3314 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3315 .name = "MultiMedia1 Channel1",
3316 .info = msm_pcm_channel_input_be_info,
3317 .get = msm_pcm_channel_input_be_get,
3318 .put = msm_pcm_channel_input_be_put,
3319 .private_value = (unsigned long)&(mm1_ch1_enum)
3320 },
3321 {
3322 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3323 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3324 .name = "MultiMedia1 Channel2",
3325 .info = msm_pcm_channel_input_be_info,
3326 .get = msm_pcm_channel_input_be_get,
3327 .put = msm_pcm_channel_input_be_put,
3328 .private_value = (unsigned long)&(mm1_ch2_enum)
3329 },
3330 {
3331 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3332 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3333 .name = "MultiMedia1 Channel3",
3334 .info = msm_pcm_channel_input_be_info,
3335 .get = msm_pcm_channel_input_be_get,
3336 .put = msm_pcm_channel_input_be_put,
3337 .private_value = (unsigned long)&(mm1_ch3_enum)
3338 },
3339 {
3340 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3341 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3342 .name = "MultiMedia1 Channel4",
3343 .info = msm_pcm_channel_input_be_info,
3344 .get = msm_pcm_channel_input_be_get,
3345 .put = msm_pcm_channel_input_be_put,
3346 .private_value = (unsigned long)&(mm1_ch4_enum)
3347 },
3348 {
3349 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3350 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3351 .name = "MultiMedia1 Channel5",
3352 .info = msm_pcm_channel_input_be_info,
3353 .get = msm_pcm_channel_input_be_get,
3354 .put = msm_pcm_channel_input_be_put,
3355 .private_value = (unsigned long)&(mm1_ch5_enum)
3356 },
3357 {
3358 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3359 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3360 .name = "MultiMedia1 Channel6",
3361 .info = msm_pcm_channel_input_be_info,
3362 .get = msm_pcm_channel_input_be_get,
3363 .put = msm_pcm_channel_input_be_put,
3364 .private_value = (unsigned long)&(mm1_ch6_enum)
3365 },
3366 {
3367 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3368 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3369 .name = "MultiMedia1 Channel7",
3370 .info = msm_pcm_channel_input_be_info,
3371 .get = msm_pcm_channel_input_be_get,
3372 .put = msm_pcm_channel_input_be_put,
3373 .private_value = (unsigned long)&(mm1_ch7_enum)
3374 },
3375 {
3376 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3377 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3378 .name = "MultiMedia1 Channel8",
3379 .info = msm_pcm_channel_input_be_info,
3380 .get = msm_pcm_channel_input_be_get,
3381 .put = msm_pcm_channel_input_be_put,
3382 .private_value = (unsigned long)&(mm1_ch8_enum)
3383 },
3384};
3385static int msm_ec_ref_ch_get(struct snd_kcontrol *kcontrol,
3386 struct snd_ctl_elem_value *ucontrol)
3387{
3388 ucontrol->value.integer.value[0] = msm_ec_ref_ch;
3389 pr_debug("%s: msm_ec_ref_ch = %ld\n", __func__,
3390 ucontrol->value.integer.value[0]);
3391 return 0;
3392}
3393
3394static int msm_ec_ref_ch_put(struct snd_kcontrol *kcontrol,
3395 struct snd_ctl_elem_value *ucontrol)
3396{
3397 msm_ec_ref_ch = ucontrol->value.integer.value[0];
3398 pr_debug("%s: msm_ec_ref_ch = %d\n", __func__, msm_ec_ref_ch);
3399 adm_num_ec_ref_rx_chans(msm_ec_ref_ch);
3400 return 0;
3401}
3402
3403static const char *const ec_ref_ch_text[] = {"Zero", "One", "Two", "Three",
3404 "Four", "Five", "Six", "Seven", "Eight"};
3405
3406static int msm_ec_ref_bit_format_get(struct snd_kcontrol *kcontrol,
3407 struct snd_ctl_elem_value *ucontrol)
3408{
3409 switch (msm_ec_ref_bit_format) {
3410 case SNDRV_PCM_FORMAT_S24_LE:
3411 ucontrol->value.integer.value[0] = 2;
3412 break;
3413 case SNDRV_PCM_FORMAT_S16_LE:
3414 ucontrol->value.integer.value[0] = 1;
3415 break;
3416 default:
3417 ucontrol->value.integer.value[0] = 0;
3418 break;
3419 }
3420 pr_debug("%s: msm_ec_ref_bit_format = %ld\n",
3421 __func__, ucontrol->value.integer.value[0]);
3422 return 0;
3423}
3424
3425static int msm_ec_ref_bit_format_put(struct snd_kcontrol *kcontrol,
3426 struct snd_ctl_elem_value *ucontrol)
3427{
3428 u16 bit_width = 0;
3429
3430 switch (ucontrol->value.integer.value[0]) {
3431 case 2:
3432 msm_ec_ref_bit_format = SNDRV_PCM_FORMAT_S24_LE;
3433 break;
3434 case 1:
3435 msm_ec_ref_bit_format = SNDRV_PCM_FORMAT_S16_LE;
3436 break;
3437 default:
3438 msm_ec_ref_bit_format = 0;
3439 break;
3440 }
3441
3442 if (msm_ec_ref_bit_format == SNDRV_PCM_FORMAT_S16_LE)
3443 bit_width = 16;
3444 else if (msm_ec_ref_bit_format == SNDRV_PCM_FORMAT_S24_LE)
3445 bit_width = 24;
3446
3447 pr_debug("%s: msm_ec_ref_bit_format = %d\n",
3448 __func__, msm_ec_ref_bit_format);
3449 adm_ec_ref_rx_bit_width(bit_width);
3450 return 0;
3451}
3452
3453static char const *ec_ref_bit_format_text[] = {"0", "S16_LE", "S24_LE"};
3454
3455static int msm_ec_ref_rate_get(struct snd_kcontrol *kcontrol,
3456 struct snd_ctl_elem_value *ucontrol)
3457{
3458 ucontrol->value.integer.value[0] = msm_ec_ref_sampling_rate;
3459 pr_debug("%s: msm_ec_ref_sampling_rate = %ld\n",
3460 __func__, ucontrol->value.integer.value[0]);
3461 return 0;
3462}
3463
3464static int msm_ec_ref_rate_put(struct snd_kcontrol *kcontrol,
3465 struct snd_ctl_elem_value *ucontrol)
3466{
3467 switch (ucontrol->value.integer.value[0]) {
3468 case 0:
3469 msm_ec_ref_sampling_rate = 0;
3470 break;
3471 case 1:
3472 msm_ec_ref_sampling_rate = 8000;
3473 break;
3474 case 2:
3475 msm_ec_ref_sampling_rate = 16000;
3476 break;
3477 case 3:
3478 msm_ec_ref_sampling_rate = 32000;
3479 break;
3480 case 4:
3481 msm_ec_ref_sampling_rate = 44100;
3482 break;
3483 case 5:
3484 msm_ec_ref_sampling_rate = 48000;
3485 break;
3486 case 6:
3487 msm_ec_ref_sampling_rate = 96000;
3488 break;
3489 case 7:
3490 msm_ec_ref_sampling_rate = 192000;
3491 break;
3492 case 8:
3493 msm_ec_ref_sampling_rate = 384000;
3494 break;
3495 default:
3496 msm_ec_ref_sampling_rate = 48000;
3497 break;
3498 }
3499 pr_debug("%s: msm_ec_ref_sampling_rate = %d\n",
3500 __func__, msm_ec_ref_sampling_rate);
3501 adm_ec_ref_rx_sampling_rate(msm_ec_ref_sampling_rate);
3502 return 0;
3503}
3504
3505static const char *const ec_ref_rate_text[] = {"0", "8000", "16000",
3506 "32000", "44100", "48000", "96000", "192000", "384000"};
3507
3508static const struct soc_enum msm_route_ec_ref_params_enum[] = {
3509 SOC_ENUM_SINGLE_EXT(9, ec_ref_ch_text),
3510 SOC_ENUM_SINGLE_EXT(3, ec_ref_bit_format_text),
3511 SOC_ENUM_SINGLE_EXT(9, ec_ref_rate_text),
3512};
3513
3514static const struct snd_kcontrol_new ec_ref_param_controls[] = {
3515 SOC_ENUM_EXT("EC Reference Channels", msm_route_ec_ref_params_enum[0],
3516 msm_ec_ref_ch_get, msm_ec_ref_ch_put),
3517 SOC_ENUM_EXT("EC Reference Bit Format", msm_route_ec_ref_params_enum[1],
3518 msm_ec_ref_bit_format_get, msm_ec_ref_bit_format_put),
3519 SOC_ENUM_EXT("EC Reference SampleRate", msm_route_ec_ref_params_enum[2],
3520 msm_ec_ref_rate_get, msm_ec_ref_rate_put),
3521};
3522
3523static int msm_routing_ec_ref_rx_get(struct snd_kcontrol *kcontrol,
3524 struct snd_ctl_elem_value *ucontrol)
3525{
3526 pr_debug("%s: ec_ref_rx = %d", __func__, msm_route_ec_ref_rx);
3527 mutex_lock(&routing_lock);
3528 ucontrol->value.integer.value[0] = msm_route_ec_ref_rx;
3529 mutex_unlock(&routing_lock);
3530 return 0;
3531}
3532
3533static int msm_routing_ec_ref_rx_put(struct snd_kcontrol *kcontrol,
3534 struct snd_ctl_elem_value *ucontrol)
3535{
3536 int ec_ref_port_id;
Asish Bhattacharya34504582017-08-08 12:55:01 +05303537 struct snd_soc_dapm_widget *widget =
3538 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303539 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
3540 struct snd_soc_dapm_update *update = NULL;
3541
3542
3543 mutex_lock(&routing_lock);
3544 switch (ucontrol->value.integer.value[0]) {
3545 case 0:
3546 msm_route_ec_ref_rx = 0;
3547 ec_ref_port_id = AFE_PORT_INVALID;
3548 break;
3549 case 1:
3550 msm_route_ec_ref_rx = 1;
3551 ec_ref_port_id = SLIMBUS_0_RX;
3552 break;
3553 case 2:
3554 msm_route_ec_ref_rx = 2;
3555 ec_ref_port_id = AFE_PORT_ID_PRIMARY_MI2S_RX;
3556 break;
3557 case 3:
3558 msm_route_ec_ref_rx = 3;
3559 ec_ref_port_id = AFE_PORT_ID_PRIMARY_MI2S_TX;
3560 break;
3561 case 4:
3562 msm_route_ec_ref_rx = 4;
3563 ec_ref_port_id = AFE_PORT_ID_SECONDARY_MI2S_TX;
3564 break;
3565 case 5:
3566 msm_route_ec_ref_rx = 5;
3567 ec_ref_port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
3568 break;
3569 case 6:
3570 msm_route_ec_ref_rx = 6;
3571 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_MI2S_TX;
3572 break;
3573 case 7:
3574 msm_route_ec_ref_rx = 7;
3575 ec_ref_port_id = AFE_PORT_ID_SECONDARY_MI2S_RX;
3576 break;
3577 case 9:
3578 msm_route_ec_ref_rx = 9;
3579 ec_ref_port_id = SLIMBUS_5_RX;
3580 break;
3581 case 10:
3582 msm_route_ec_ref_rx = 10;
3583 ec_ref_port_id = SLIMBUS_1_TX;
3584 break;
3585 case 11:
3586 msm_route_ec_ref_rx = 11;
3587 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_TDM_TX_1;
3588 break;
3589 case 12:
3590 msm_route_ec_ref_rx = 12;
3591 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_TDM_RX;
3592 break;
3593 case 13:
3594 msm_route_ec_ref_rx = 13;
3595 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_TDM_RX_1;
3596 break;
3597 case 14:
3598 msm_route_ec_ref_rx = 14;
3599 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_TDM_RX_2;
3600 break;
3601 case 15:
3602 msm_route_ec_ref_rx = 15;
3603 ec_ref_port_id = SLIMBUS_6_RX;
3604 break;
3605 case 16:
3606 msm_route_ec_ref_rx = 16;
3607 ec_ref_port_id = AFE_PORT_ID_TERTIARY_MI2S_RX;
3608 break;
3609 case 17:
3610 msm_route_ec_ref_rx = 17;
3611 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_MI2S_RX;
3612 break;
3613 case 18:
3614 msm_route_ec_ref_rx = 18;
3615 ec_ref_port_id = AFE_PORT_ID_TERTIARY_TDM_TX;
3616 break;
3617 case 19:
3618 msm_route_ec_ref_rx = 19;
3619 ec_ref_port_id = AFE_PORT_ID_USB_RX;
3620 break;
3621 case 20:
3622 msm_route_ec_ref_rx = 20;
3623 ec_ref_port_id = AFE_PORT_ID_INT0_MI2S_RX;
3624 break;
3625 case 21:
3626 msm_route_ec_ref_rx = 21;
3627 ec_ref_port_id = AFE_PORT_ID_INT4_MI2S_RX;
3628 break;
3629 case 22:
3630 msm_route_ec_ref_rx = 22;
3631 ec_ref_port_id = AFE_PORT_ID_INT3_MI2S_TX;
3632 break;
Aalique Grahamee4fd7d52017-11-28 13:24:13 -08003633 case 23:
3634 msm_route_ec_ref_rx = 23;
3635 ec_ref_port_id = AFE_PORT_ID_HDMI_OVER_DP_RX;
3636 break;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303637 default:
3638 msm_route_ec_ref_rx = 0; /* NONE */
3639 pr_err("%s EC ref rx %ld not valid\n",
3640 __func__, ucontrol->value.integer.value[0]);
3641 ec_ref_port_id = AFE_PORT_INVALID;
3642 break;
3643 }
3644 adm_ec_ref_rx_id(ec_ref_port_id);
3645 pr_debug("%s: msm_route_ec_ref_rx = %d\n",
3646 __func__, msm_route_ec_ref_rx);
3647 mutex_unlock(&routing_lock);
3648 snd_soc_dapm_mux_update_power(widget->dapm, kcontrol,
3649 msm_route_ec_ref_rx, e, update);
3650 return 0;
3651}
3652
3653static const char *const ec_ref_rx[] = { "None", "SLIM_RX", "I2S_RX",
3654 "PRI_MI2S_TX", "SEC_MI2S_TX",
3655 "TERT_MI2S_TX", "QUAT_MI2S_TX", "SEC_I2S_RX", "PROXY_RX",
3656 "SLIM_5_RX", "SLIM_1_TX", "QUAT_TDM_TX_1",
3657 "QUAT_TDM_RX_0", "QUAT_TDM_RX_1", "QUAT_TDM_RX_2", "SLIM_6_RX",
3658 "TERT_MI2S_RX", "QUAT_MI2S_RX", "TERT_TDM_TX_0", "USB_AUDIO_RX",
Aalique Grahamee4fd7d52017-11-28 13:24:13 -08003659 "INT0_MI2S_RX", "INT4_MI2S_RX", "INT3_MI2S_TX", "DISPLAY_PORT"};
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303660
3661static const struct soc_enum msm_route_ec_ref_rx_enum[] = {
3662 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(ec_ref_rx), ec_ref_rx),
3663};
3664
3665static const struct snd_kcontrol_new ext_ec_ref_mux_ul1 =
3666 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL1 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_ul2 =
3671 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL2 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_ul3 =
3676 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL3 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_ul4 =
3681 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL4 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_ul5 =
3686 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL5 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_ul6 =
3691 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL6 MUX Mux",
3692 msm_route_ec_ref_rx_enum[0],
3693 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3694
3695static const struct snd_kcontrol_new ext_ec_ref_mux_ul8 =
3696 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL8 MUX Mux",
3697 msm_route_ec_ref_rx_enum[0],
3698 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3699
3700static const struct snd_kcontrol_new ext_ec_ref_mux_ul9 =
3701 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL9 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 Bhattacharya34504582017-08-08 12:55:01 +05303705static const struct snd_kcontrol_new ext_ec_ref_mux_ul16 =
3706 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL16 MUX Mux",
3707 msm_route_ec_ref_rx_enum[0],
3708 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3709
Laxminath Kasam38070be2017-08-17 18:21:59 +05303710static const struct snd_kcontrol_new ext_ec_ref_mux_ul10 =
3711 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL10 MUX Mux",
3712 msm_route_ec_ref_rx_enum[0],
3713 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3714
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303715static const struct snd_kcontrol_new ext_ec_ref_mux_ul17 =
3716 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL17 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 const struct snd_kcontrol_new ext_ec_ref_mux_ul18 =
3721 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL18 MUX Mux",
3722 msm_route_ec_ref_rx_enum[0],
3723 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3724
3725static const struct snd_kcontrol_new ext_ec_ref_mux_ul19 =
3726 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL19 MUX Mux",
3727 msm_route_ec_ref_rx_enum[0],
3728 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3729
3730static int msm_routing_ext_ec_get(struct snd_kcontrol *kcontrol,
3731 struct snd_ctl_elem_value *ucontrol)
3732{
3733 pr_debug("%s: ext_ec_ref_rx = %x\n", __func__, msm_route_ext_ec_ref);
3734
3735 mutex_lock(&routing_lock);
3736 ucontrol->value.integer.value[0] = msm_route_ext_ec_ref;
3737 mutex_unlock(&routing_lock);
3738 return 0;
3739}
3740
3741static int msm_routing_ext_ec_put(struct snd_kcontrol *kcontrol,
3742 struct snd_ctl_elem_value *ucontrol)
3743{
Asish Bhattacharya34504582017-08-08 12:55:01 +05303744 struct snd_soc_dapm_widget *widget =
3745 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303746 int mux = ucontrol->value.enumerated.item[0];
3747 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
3748 int ret = 1;
3749 bool state = true;
3750 uint16_t ext_ec_ref_port_id;
3751 struct snd_soc_dapm_update *update = NULL;
3752
3753 if (mux >= e->items) {
3754 pr_err("%s: Invalid mux value %d\n", __func__, mux);
3755 return -EINVAL;
3756 }
3757
3758 mutex_lock(&routing_lock);
3759 msm_route_ext_ec_ref = ucontrol->value.integer.value[0];
3760
3761 switch (msm_route_ext_ec_ref) {
3762 case EXT_EC_REF_PRI_MI2S_TX:
3763 ext_ec_ref_port_id = AFE_PORT_ID_PRIMARY_MI2S_TX;
3764 break;
3765 case EXT_EC_REF_SEC_MI2S_TX:
3766 ext_ec_ref_port_id = AFE_PORT_ID_SECONDARY_MI2S_TX;
3767 break;
3768 case EXT_EC_REF_TERT_MI2S_TX:
3769 ext_ec_ref_port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
3770 break;
3771 case EXT_EC_REF_QUAT_MI2S_TX:
3772 ext_ec_ref_port_id = AFE_PORT_ID_QUATERNARY_MI2S_TX;
3773 break;
3774 case EXT_EC_REF_QUIN_MI2S_TX:
3775 ext_ec_ref_port_id = AFE_PORT_ID_QUINARY_MI2S_TX;
3776 break;
3777 case EXT_EC_REF_SLIM_1_TX:
3778 ext_ec_ref_port_id = SLIMBUS_1_TX;
3779 break;
3780 case EXT_EC_REF_NONE:
3781 default:
3782 ext_ec_ref_port_id = AFE_PORT_INVALID;
3783 state = false;
3784 break;
3785 }
3786
3787 pr_debug("%s: val = %d ext_ec_ref_port_id = 0x%0x state = %d\n",
3788 __func__, msm_route_ext_ec_ref, ext_ec_ref_port_id, state);
3789
3790 if (!voc_set_ext_ec_ref_port_id(ext_ec_ref_port_id, state)) {
3791 mutex_unlock(&routing_lock);
3792 snd_soc_dapm_mux_update_power(widget->dapm, kcontrol, mux, e,
3793 update);
3794 } else {
3795 ret = -EINVAL;
3796 mutex_unlock(&routing_lock);
3797 }
3798 return ret;
3799}
3800
3801static const char * const ext_ec_ref_rx[] = {"NONE", "PRI_MI2S_TX",
3802 "SEC_MI2S_TX", "TERT_MI2S_TX",
3803 "QUAT_MI2S_TX", "QUIN_MI2S_TX",
3804 "SLIM_1_TX"};
3805
3806static const struct soc_enum msm_route_ext_ec_ref_rx_enum[] = {
3807 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(ext_ec_ref_rx), ext_ec_ref_rx),
3808};
3809
3810static const struct snd_kcontrol_new voc_ext_ec_mux =
3811 SOC_DAPM_ENUM_EXT("VOC_EXT_EC MUX Mux", msm_route_ext_ec_ref_rx_enum[0],
3812 msm_routing_ext_ec_get, msm_routing_ext_ec_put);
3813
3814
3815static const struct snd_kcontrol_new pri_i2s_rx_mixer_controls[] = {
3816 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_I2S_RX,
3817 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
3818 msm_routing_put_audio_mixer),
3819 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_I2S_RX,
3820 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
3821 msm_routing_put_audio_mixer),
3822 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_I2S_RX,
3823 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
3824 msm_routing_put_audio_mixer),
3825 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_I2S_RX,
3826 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
3827 msm_routing_put_audio_mixer),
3828 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_I2S_RX,
3829 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
3830 msm_routing_put_audio_mixer),
3831 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_I2S_RX,
3832 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
3833 msm_routing_put_audio_mixer),
3834 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_I2S_RX,
3835 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
3836 msm_routing_put_audio_mixer),
3837 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_I2S_RX,
3838 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
3839 msm_routing_put_audio_mixer),
3840 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_I2S_RX,
3841 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
3842 msm_routing_put_audio_mixer),
3843 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_I2S_RX,
3844 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
3845 msm_routing_put_audio_mixer),
3846 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_I2S_RX,
3847 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
3848 msm_routing_put_audio_mixer),
3849 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_I2S_RX,
3850 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
3851 msm_routing_put_audio_mixer),
3852 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_I2S_RX,
3853 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
3854 msm_routing_put_audio_mixer),
3855 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_I2S_RX,
3856 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
3857 msm_routing_put_audio_mixer),
3858 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_I2S_RX,
3859 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
3860 msm_routing_put_audio_mixer),
3861 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_I2S_RX,
3862 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
3863 msm_routing_put_audio_mixer),
3864 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_PRI_I2S_RX,
3865 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
3866 msm_routing_put_audio_mixer),
3867 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_PRI_I2S_RX,
3868 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
3869 msm_routing_put_audio_mixer),
3870 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_PRI_I2S_RX,
3871 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
3872 msm_routing_put_audio_mixer),
3873};
3874
3875static const struct snd_kcontrol_new sec_i2s_rx_mixer_controls[] = {
3876 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_I2S_RX,
3877 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
3878 msm_routing_put_audio_mixer),
3879 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_I2S_RX,
3880 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
3881 msm_routing_put_audio_mixer),
3882 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_I2S_RX,
3883 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
3884 msm_routing_put_audio_mixer),
3885 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_I2S_RX,
3886 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
3887 msm_routing_put_audio_mixer),
3888 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_I2S_RX,
3889 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
3890 msm_routing_put_audio_mixer),
3891 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_I2S_RX,
3892 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
3893 msm_routing_put_audio_mixer),
3894 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_I2S_RX,
3895 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
3896 msm_routing_put_audio_mixer),
3897 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_I2S_RX,
3898 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
3899 msm_routing_put_audio_mixer),
3900 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_I2S_RX,
3901 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
3902 msm_routing_put_audio_mixer),
3903 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_I2S_RX,
3904 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
3905 msm_routing_put_audio_mixer),
3906 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_I2S_RX,
3907 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
3908 msm_routing_put_audio_mixer),
3909 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_I2S_RX,
3910 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
3911 msm_routing_put_audio_mixer),
3912 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_I2S_RX,
3913 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
3914 msm_routing_put_audio_mixer),
3915 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_I2S_RX,
3916 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
3917 msm_routing_put_audio_mixer),
3918 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_I2S_RX,
3919 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
3920 msm_routing_put_audio_mixer),
3921 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_I2S_RX,
3922 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
3923 msm_routing_put_audio_mixer),
3924 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SEC_I2S_RX,
3925 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
3926 msm_routing_put_audio_mixer),
3927 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SEC_I2S_RX,
3928 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
3929 msm_routing_put_audio_mixer),
3930 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SEC_I2S_RX,
3931 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
3932 msm_routing_put_audio_mixer),
3933};
3934
3935static const struct snd_kcontrol_new spdif_rx_mixer_controls[] = {
3936 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SPDIF_RX,
3937 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
3938 msm_routing_put_audio_mixer),
3939 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SPDIF_RX,
3940 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
3941 msm_routing_put_audio_mixer),
3942 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SPDIF_RX,
3943 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
3944 msm_routing_put_audio_mixer),
3945 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SPDIF_RX,
3946 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
3947 msm_routing_put_audio_mixer),
3948 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SPDIF_RX,
3949 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
3950 msm_routing_put_audio_mixer),
3951 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SPDIF_RX,
3952 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
3953 msm_routing_put_audio_mixer),
3954 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SPDIF_RX,
3955 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
3956 msm_routing_put_audio_mixer),
3957 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SPDIF_RX,
3958 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
3959 msm_routing_put_audio_mixer),
3960 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SPDIF_RX,
3961 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
3962 msm_routing_put_audio_mixer),
3963 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SPDIF_RX,
3964 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
3965 msm_routing_put_audio_mixer),
3966 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SPDIF_RX,
3967 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
3968 msm_routing_put_audio_mixer),
3969 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SPDIF_RX,
3970 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
3971 msm_routing_put_audio_mixer),
3972 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SPDIF_RX,
3973 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
3974 msm_routing_put_audio_mixer),
3975 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SPDIF_RX,
3976 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
3977 msm_routing_put_audio_mixer),
3978 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SPDIF_RX,
3979 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
3980 msm_routing_put_audio_mixer),
3981 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SPDIF_RX,
3982 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
3983 msm_routing_put_audio_mixer),
3984 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SPDIF_RX,
3985 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
3986 msm_routing_put_audio_mixer),
3987 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SPDIF_RX,
3988 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
3989 msm_routing_put_audio_mixer),
3990 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SPDIF_RX,
3991 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
3992 msm_routing_put_audio_mixer),
3993
3994};
3995
3996static const struct snd_kcontrol_new slimbus_2_rx_mixer_controls[] = {
3997 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_2_RX,
3998 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
3999 msm_routing_put_audio_mixer),
4000 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4001 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4002 msm_routing_put_audio_mixer),
4003 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4004 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4005 msm_routing_put_audio_mixer),
4006 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4007 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4008 msm_routing_put_audio_mixer),
4009 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4010 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4011 msm_routing_put_audio_mixer),
4012 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4013 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4014 msm_routing_put_audio_mixer),
4015 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4016 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4017 msm_routing_put_audio_mixer),
4018 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4019 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4020 msm_routing_put_audio_mixer),
4021 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4022 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4023 msm_routing_put_audio_mixer),
4024 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4025 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4026 msm_routing_put_audio_mixer),
4027 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4028 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4029 msm_routing_put_audio_mixer),
4030 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4031 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4032 msm_routing_put_audio_mixer),
4033 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4034 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4035 msm_routing_put_audio_mixer),
4036 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4037 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4038 msm_routing_put_audio_mixer),
4039 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4040 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4041 msm_routing_put_audio_mixer),
4042 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4043 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4044 msm_routing_put_audio_mixer),
4045};
4046
4047static const struct snd_kcontrol_new slimbus_5_rx_mixer_controls[] = {
4048 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4049 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4050 msm_routing_put_audio_mixer),
4051 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4052 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4053 msm_routing_put_audio_mixer),
4054 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4055 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4056 msm_routing_put_audio_mixer),
4057 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4058 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4059 msm_routing_put_audio_mixer),
4060 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4061 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4062 msm_routing_put_audio_mixer),
4063 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4064 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4065 msm_routing_put_audio_mixer),
4066 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4067 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4068 msm_routing_put_audio_mixer),
4069 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4070 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4071 msm_routing_put_audio_mixer),
4072 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4073 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4074 msm_routing_put_audio_mixer),
4075 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4076 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4077 msm_routing_put_audio_mixer),
4078 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4079 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4080 msm_routing_put_audio_mixer),
4081 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4082 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4083 msm_routing_put_audio_mixer),
4084 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4085 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4086 msm_routing_put_audio_mixer),
4087 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4088 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4089 msm_routing_put_audio_mixer),
4090 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4091 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4092 msm_routing_put_audio_mixer),
4093 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4094 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4095 msm_routing_put_audio_mixer),
4096 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4097 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4098 msm_routing_put_audio_mixer),
4099 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4100 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4101 msm_routing_put_audio_mixer),
4102 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4103 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4104 msm_routing_put_audio_mixer),
4105};
4106
4107static const struct snd_kcontrol_new slimbus_rx_mixer_controls[] = {
4108 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4109 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4110 msm_routing_put_audio_mixer),
4111 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4112 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4113 msm_routing_put_audio_mixer),
4114 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4115 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4116 msm_routing_put_audio_mixer),
4117 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4118 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4119 msm_routing_put_audio_mixer),
4120 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4121 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4122 msm_routing_put_audio_mixer),
4123 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4124 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4125 msm_routing_put_audio_mixer),
4126 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4127 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4128 msm_routing_put_audio_mixer),
4129 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4130 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4131 msm_routing_put_audio_mixer),
4132 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4133 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4134 msm_routing_put_audio_mixer),
4135 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4136 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4137 msm_routing_put_audio_mixer),
4138 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4139 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4140 msm_routing_put_audio_mixer),
4141 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4142 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4143 msm_routing_put_audio_mixer),
4144 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4145 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4146 msm_routing_put_audio_mixer),
4147 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4148 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4149 msm_routing_put_audio_mixer),
4150 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4151 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4152 msm_routing_put_audio_mixer),
4153 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4154 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4155 msm_routing_put_audio_mixer),
4156 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4157 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4158 msm_routing_put_audio_mixer),
4159 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4160 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4161 msm_routing_put_audio_mixer),
4162 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4163 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4164 msm_routing_put_audio_mixer),
4165};
4166
4167static const struct snd_kcontrol_new mi2s_rx_mixer_controls[] = {
4168 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_MI2S_RX,
4169 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4170 msm_routing_put_audio_mixer),
4171 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_MI2S_RX,
4172 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4173 msm_routing_put_audio_mixer),
4174 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_MI2S_RX,
4175 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4176 msm_routing_put_audio_mixer),
4177 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_MI2S_RX,
4178 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4179 msm_routing_put_audio_mixer),
4180 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_MI2S_RX,
4181 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4182 msm_routing_put_audio_mixer),
4183 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_MI2S_RX,
4184 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4185 msm_routing_put_audio_mixer),
4186 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_MI2S_RX,
4187 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4188 msm_routing_put_audio_mixer),
4189 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_MI2S_RX,
4190 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4191 msm_routing_put_audio_mixer),
4192 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_MI2S_RX,
4193 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4194 msm_routing_put_audio_mixer),
4195 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_MI2S_RX,
4196 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4197 msm_routing_put_audio_mixer),
4198 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_MI2S_RX,
4199 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4200 msm_routing_put_audio_mixer),
4201 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_MI2S_RX,
4202 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4203 msm_routing_put_audio_mixer),
4204 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_MI2S_RX,
4205 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4206 msm_routing_put_audio_mixer),
4207 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_MI2S_RX,
4208 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4209 msm_routing_put_audio_mixer),
4210 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_MI2S_RX,
4211 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4212 msm_routing_put_audio_mixer),
4213 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_MI2S_RX,
4214 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4215 msm_routing_put_audio_mixer),
4216 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_MI2S_RX,
4217 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4218 msm_routing_put_audio_mixer),
4219 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_MI2S_RX,
4220 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4221 msm_routing_put_audio_mixer),
4222 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_MI2S_RX,
4223 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4224 msm_routing_put_audio_mixer),
4225};
4226
4227static const struct snd_kcontrol_new quaternary_mi2s_rx_mixer_controls[] = {
4228 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4229 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4230 msm_routing_put_audio_mixer),
4231 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4232 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4233 msm_routing_put_audio_mixer),
4234 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4235 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4236 msm_routing_put_audio_mixer),
4237 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4238 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4239 msm_routing_put_audio_mixer),
4240 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4241 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4242 msm_routing_put_audio_mixer),
4243 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4244 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4245 msm_routing_put_audio_mixer),
4246 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4247 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4248 msm_routing_put_audio_mixer),
4249 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4250 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4251 msm_routing_put_audio_mixer),
4252 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4253 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4254 msm_routing_put_audio_mixer),
4255 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4256 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4257 msm_routing_put_audio_mixer),
4258 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4259 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4260 msm_routing_put_audio_mixer),
4261 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4262 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4263 msm_routing_put_audio_mixer),
4264 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4265 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4266 msm_routing_put_audio_mixer),
4267 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4268 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4269 msm_routing_put_audio_mixer),
4270 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4271 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4272 msm_routing_put_audio_mixer),
4273 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4274 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4275 msm_routing_put_audio_mixer),
4276 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4277 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4278 msm_routing_put_audio_mixer),
4279 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4280 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4281 msm_routing_put_audio_mixer),
4282 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4283 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4284 msm_routing_put_audio_mixer),
4285};
4286
4287static const struct snd_kcontrol_new quinary_mi2s_rx_mixer_controls[] = {
4288 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4289 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4290 msm_routing_put_audio_mixer),
4291 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4292 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4293 msm_routing_put_audio_mixer),
4294 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4295 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4296 msm_routing_put_audio_mixer),
4297 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4298 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4299 msm_routing_put_audio_mixer),
4300 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4301 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4302 msm_routing_put_audio_mixer),
4303 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4304 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4305 msm_routing_put_audio_mixer),
4306 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4307 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4308 msm_routing_put_audio_mixer),
4309 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4310 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4311 msm_routing_put_audio_mixer),
4312 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4313 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4314 msm_routing_put_audio_mixer),
4315 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4316 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4317 msm_routing_put_audio_mixer),
4318 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4319 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4320 msm_routing_put_audio_mixer),
4321 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4322 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4323 msm_routing_put_audio_mixer),
4324 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4325 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4326 msm_routing_put_audio_mixer),
4327 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4328 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4329 msm_routing_put_audio_mixer),
4330 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4331 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4332 msm_routing_put_audio_mixer),
4333 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4334 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4335 msm_routing_put_audio_mixer),
4336 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4337 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4338 msm_routing_put_audio_mixer),
4339 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4340 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4341 msm_routing_put_audio_mixer),
4342 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4343 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4344 msm_routing_put_audio_mixer),
4345};
4346
4347static const struct snd_kcontrol_new tertiary_mi2s_rx_mixer_controls[] = {
4348 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4349 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4350 msm_routing_put_audio_mixer),
4351 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4352 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4353 msm_routing_put_audio_mixer),
4354 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4355 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4356 msm_routing_put_audio_mixer),
4357 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4358 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4359 msm_routing_put_audio_mixer),
4360 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4361 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4362 msm_routing_put_audio_mixer),
4363 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4364 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4365 msm_routing_put_audio_mixer),
4366 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4367 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4368 msm_routing_put_audio_mixer),
4369 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4370 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4371 msm_routing_put_audio_mixer),
4372 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4373 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4374 msm_routing_put_audio_mixer),
4375 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4376 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4377 msm_routing_put_audio_mixer),
4378 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4379 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4380 msm_routing_put_audio_mixer),
4381 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4382 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4383 msm_routing_put_audio_mixer),
4384 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4385 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4386 msm_routing_put_audio_mixer),
4387 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4388 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4389 msm_routing_put_audio_mixer),
4390 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4391 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4392 msm_routing_put_audio_mixer),
4393 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4394 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4395 msm_routing_put_audio_mixer),
4396 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4397 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4398 msm_routing_put_audio_mixer),
4399};
4400
4401static const struct snd_kcontrol_new secondary_mi2s_rx2_mixer_controls[] = {
4402 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SECONDARY_MI2S_RX_SD1,
4403 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4404 msm_routing_put_audio_mixer),
4405};
4406
4407static const struct snd_kcontrol_new secondary_mi2s_rx_mixer_controls[] = {
4408 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4409 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4410 msm_routing_put_audio_mixer),
4411 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4412 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4413 msm_routing_put_audio_mixer),
4414 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4415 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4416 msm_routing_put_audio_mixer),
4417 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4418 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4419 msm_routing_put_audio_mixer),
4420 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4421 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4422 msm_routing_put_audio_mixer),
4423 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4424 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4425 msm_routing_put_audio_mixer),
4426 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4427 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4428 msm_routing_put_audio_mixer),
4429 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4430 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4431 msm_routing_put_audio_mixer),
4432 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4433 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4434 msm_routing_put_audio_mixer),
4435 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4436 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4437 msm_routing_put_audio_mixer),
4438 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4439 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4440 msm_routing_put_audio_mixer),
4441 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4442 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4443 msm_routing_put_audio_mixer),
4444 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4445 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4446 msm_routing_put_audio_mixer),
4447 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4448 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4449 msm_routing_put_audio_mixer),
4450 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4451 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4452 msm_routing_put_audio_mixer),
4453 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4454 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4455 msm_routing_put_audio_mixer),
4456 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4457 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4458 msm_routing_put_audio_mixer),
4459 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4460 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4461 msm_routing_put_audio_mixer),
4462 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4463 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4464 msm_routing_put_audio_mixer),
4465};
4466
4467static const struct snd_kcontrol_new primary_mi2s_rx_mixer_controls[] = {
4468 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_MI2S_RX,
4469 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4470 msm_routing_put_audio_mixer),
4471 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_MI2S_RX,
4472 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4473 msm_routing_put_audio_mixer),
4474 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_MI2S_RX,
4475 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4476 msm_routing_put_audio_mixer),
4477 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_MI2S_RX,
4478 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4479 msm_routing_put_audio_mixer),
4480 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_MI2S_RX,
4481 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4482 msm_routing_put_audio_mixer),
4483 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_MI2S_RX,
4484 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4485 msm_routing_put_audio_mixer),
4486 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_MI2S_RX,
4487 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4488 msm_routing_put_audio_mixer),
4489 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_MI2S_RX,
4490 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4491 msm_routing_put_audio_mixer),
4492 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_MI2S_RX,
4493 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4494 msm_routing_put_audio_mixer),
4495 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_MI2S_RX,
4496 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4497 msm_routing_put_audio_mixer),
4498 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_MI2S_RX,
4499 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4500 msm_routing_put_audio_mixer),
4501 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_MI2S_RX,
4502 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4503 msm_routing_put_audio_mixer),
4504 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_MI2S_RX,
4505 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4506 msm_routing_put_audio_mixer),
4507 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_MI2S_RX,
4508 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4509 msm_routing_put_audio_mixer),
4510 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_MI2S_RX,
4511 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4512 msm_routing_put_audio_mixer),
4513 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_MI2S_RX,
4514 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4515 msm_routing_put_audio_mixer),
4516 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_PRI_MI2S_RX,
4517 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4518 msm_routing_put_audio_mixer),
4519 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_PRI_MI2S_RX,
4520 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4521 msm_routing_put_audio_mixer),
4522 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_PRI_MI2S_RX,
4523 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4524 msm_routing_put_audio_mixer),
4525};
4526
4527static const struct snd_kcontrol_new int0_mi2s_rx_mixer_controls[] = {
4528 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_INT0_MI2S_RX,
4529 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4530 msm_routing_put_audio_mixer),
4531 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_INT0_MI2S_RX,
4532 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4533 msm_routing_put_audio_mixer),
4534 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_INT0_MI2S_RX,
4535 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4536 msm_routing_put_audio_mixer),
4537 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_INT0_MI2S_RX,
4538 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4539 msm_routing_put_audio_mixer),
4540 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_INT0_MI2S_RX,
4541 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4542 msm_routing_put_audio_mixer),
4543 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_INT0_MI2S_RX,
4544 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4545 msm_routing_put_audio_mixer),
4546 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_INT0_MI2S_RX,
4547 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4548 msm_routing_put_audio_mixer),
4549 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_INT0_MI2S_RX,
4550 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4551 msm_routing_put_audio_mixer),
4552 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_INT0_MI2S_RX,
4553 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4554 msm_routing_put_audio_mixer),
4555 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_INT0_MI2S_RX,
4556 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4557 msm_routing_put_audio_mixer),
4558 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_INT0_MI2S_RX,
4559 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4560 msm_routing_put_audio_mixer),
4561 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_INT0_MI2S_RX,
4562 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4563 msm_routing_put_audio_mixer),
4564 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_INT0_MI2S_RX,
4565 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4566 msm_routing_put_audio_mixer),
4567 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_INT0_MI2S_RX,
4568 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4569 msm_routing_put_audio_mixer),
4570 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_INT0_MI2S_RX,
4571 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4572 msm_routing_put_audio_mixer),
4573 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_INT0_MI2S_RX,
4574 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4575 msm_routing_put_audio_mixer),
4576};
4577
4578static const struct snd_kcontrol_new int4_mi2s_rx_mixer_controls[] = {
4579 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_INT4_MI2S_RX,
4580 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4581 msm_routing_put_audio_mixer),
4582 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_INT4_MI2S_RX,
4583 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4584 msm_routing_put_audio_mixer),
4585 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_INT4_MI2S_RX,
4586 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4587 msm_routing_put_audio_mixer),
4588 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_INT4_MI2S_RX,
4589 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4590 msm_routing_put_audio_mixer),
4591 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_INT4_MI2S_RX,
4592 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4593 msm_routing_put_audio_mixer),
4594 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_INT4_MI2S_RX,
4595 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4596 msm_routing_put_audio_mixer),
4597 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_INT4_MI2S_RX,
4598 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4599 msm_routing_put_audio_mixer),
4600 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_INT4_MI2S_RX,
4601 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4602 msm_routing_put_audio_mixer),
4603 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_INT4_MI2S_RX,
4604 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4605 msm_routing_put_audio_mixer),
4606 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_INT4_MI2S_RX,
4607 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4608 msm_routing_put_audio_mixer),
4609 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_INT4_MI2S_RX,
4610 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4611 msm_routing_put_audio_mixer),
4612 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_INT4_MI2S_RX,
4613 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4614 msm_routing_put_audio_mixer),
4615 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_INT4_MI2S_RX,
4616 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4617 msm_routing_put_audio_mixer),
4618 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_INT4_MI2S_RX,
4619 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4620 msm_routing_put_audio_mixer),
4621 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_INT4_MI2S_RX,
4622 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4623 msm_routing_put_audio_mixer),
4624 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_INT4_MI2S_RX,
4625 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4626 msm_routing_put_audio_mixer),
4627};
4628
4629static const struct snd_kcontrol_new hdmi_mixer_controls[] = {
4630 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_HDMI_RX,
4631 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4632 msm_routing_put_audio_mixer),
4633 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_HDMI_RX,
4634 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4635 msm_routing_put_audio_mixer),
4636 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_HDMI_RX,
4637 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4638 msm_routing_put_audio_mixer),
4639 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_HDMI_RX,
4640 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4641 msm_routing_put_audio_mixer),
4642 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_HDMI_RX,
4643 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4644 msm_routing_put_audio_mixer),
4645 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_HDMI_RX,
4646 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4647 msm_routing_put_audio_mixer),
4648 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_HDMI_RX,
4649 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4650 msm_routing_put_audio_mixer),
4651 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_HDMI_RX,
4652 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4653 msm_routing_put_audio_mixer),
4654 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_HDMI_RX,
4655 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4656 msm_routing_put_audio_mixer),
4657 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_HDMI_RX,
4658 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4659 msm_routing_put_audio_mixer),
4660 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_HDMI_RX,
4661 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4662 msm_routing_put_audio_mixer),
4663 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_HDMI_RX,
4664 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4665 msm_routing_put_audio_mixer),
4666 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_HDMI_RX,
4667 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4668 msm_routing_put_audio_mixer),
4669 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_HDMI_RX,
4670 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4671 msm_routing_put_audio_mixer),
4672 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_HDMI_RX,
4673 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4674 msm_routing_put_audio_mixer),
4675 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_HDMI_RX,
4676 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4677 msm_routing_put_audio_mixer),
4678 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_HDMI_RX,
4679 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4680 msm_routing_put_audio_mixer),
4681 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_HDMI_RX,
4682 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4683 msm_routing_put_audio_mixer),
4684 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_HDMI_RX,
4685 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4686 msm_routing_put_audio_mixer),
4687};
4688
4689static const struct snd_kcontrol_new display_port_mixer_controls[] = {
4690 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4691 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4692 msm_routing_put_audio_mixer),
4693 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4694 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4695 msm_routing_put_audio_mixer),
4696 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4697 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4698 msm_routing_put_audio_mixer),
4699 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4700 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4701 msm_routing_put_audio_mixer),
4702 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4703 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4704 msm_routing_put_audio_mixer),
4705 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4706 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4707 msm_routing_put_audio_mixer),
4708 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4709 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4710 msm_routing_put_audio_mixer),
4711 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4712 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4713 msm_routing_put_audio_mixer),
4714 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4715 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4716 msm_routing_put_audio_mixer),
4717 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4718 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4719 msm_routing_put_audio_mixer),
4720 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4721 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4722 msm_routing_put_audio_mixer),
4723 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4724 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4725 msm_routing_put_audio_mixer),
4726 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4727 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4728 msm_routing_put_audio_mixer),
4729 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4730 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4731 msm_routing_put_audio_mixer),
4732 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4733 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4734 msm_routing_put_audio_mixer),
4735 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4736 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4737 msm_routing_put_audio_mixer),
4738};
4739
4740 /* incall music delivery mixer */
4741static const struct snd_kcontrol_new incall_music_delivery_mixer_controls[] = {
4742 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_VOICE_PLAYBACK_TX,
4743 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4744 msm_routing_put_audio_mixer),
4745 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_VOICE_PLAYBACK_TX,
4746 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4747 msm_routing_put_audio_mixer),
4748 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_VOICE_PLAYBACK_TX,
4749 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4750 msm_routing_put_audio_mixer),
4751 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_VOICE_PLAYBACK_TX,
4752 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4753 msm_routing_put_audio_mixer),
4754};
4755
4756static const struct snd_kcontrol_new incall_music2_delivery_mixer_controls[] = {
4757 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_VOICE2_PLAYBACK_TX,
4758 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4759 msm_routing_put_audio_mixer),
4760 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_VOICE2_PLAYBACK_TX,
4761 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4762 msm_routing_put_audio_mixer),
4763 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_VOICE2_PLAYBACK_TX,
4764 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4765 msm_routing_put_audio_mixer),
4766 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_VOICE2_PLAYBACK_TX,
4767 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4768 msm_routing_put_audio_mixer),
4769};
4770
4771static const struct snd_kcontrol_new slimbus_4_rx_mixer_controls[] = {
4772 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_4_RX,
4773 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4774 msm_routing_put_audio_mixer),
4775 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_4_RX,
4776 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4777 msm_routing_put_audio_mixer),
4778 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_4_RX,
4779 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4780 msm_routing_put_audio_mixer),
4781 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_4_RX,
4782 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4783 msm_routing_put_audio_mixer),
4784};
4785
4786static const struct snd_kcontrol_new slimbus_6_rx_mixer_controls[] = {
4787 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4788 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4789 msm_routing_put_audio_mixer),
4790 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4791 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4792 msm_routing_put_audio_mixer),
4793 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4794 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4795 msm_routing_put_audio_mixer),
4796 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4797 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4798 msm_routing_put_audio_mixer),
4799 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4800 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4801 msm_routing_put_audio_mixer),
4802 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4803 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4804 msm_routing_put_audio_mixer),
4805 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4806 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4807 msm_routing_put_audio_mixer),
4808 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4809 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4810 msm_routing_put_audio_mixer),
4811 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4812 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4813 msm_routing_put_audio_mixer),
4814 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4815 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4816 msm_routing_put_audio_mixer),
4817 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4818 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4819 msm_routing_put_audio_mixer),
4820 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4821 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4822 msm_routing_put_audio_mixer),
4823 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4824 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4825 msm_routing_put_audio_mixer),
4826 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4827 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4828 msm_routing_put_audio_mixer),
4829 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4830 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4831 msm_routing_put_audio_mixer),
4832 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4833 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4834 msm_routing_put_audio_mixer),
4835};
4836
4837static const struct snd_kcontrol_new slimbus_7_rx_mixer_controls[] = {
4838 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4839 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4840 msm_routing_put_audio_mixer),
4841 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4842 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4843 msm_routing_put_audio_mixer),
4844 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4845 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4846 msm_routing_put_audio_mixer),
4847 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4848 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4849 msm_routing_put_audio_mixer),
4850 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4851 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4852 msm_routing_put_audio_mixer),
4853 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4854 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4855 msm_routing_put_audio_mixer),
4856 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4857 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4858 msm_routing_put_audio_mixer),
4859 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4860 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4861 msm_routing_put_audio_mixer),
4862 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4863 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4864 msm_routing_put_audio_mixer),
4865 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4866 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4867 msm_routing_put_audio_mixer),
4868 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4869 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4870 msm_routing_put_audio_mixer),
4871 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4872 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4873 msm_routing_put_audio_mixer),
4874 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4875 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4876 msm_routing_put_audio_mixer),
4877 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4878 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4879 msm_routing_put_audio_mixer),
4880 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4881 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4882 msm_routing_put_audio_mixer),
4883 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4884 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4885 msm_routing_put_audio_mixer),
4886};
4887
4888static const struct snd_kcontrol_new usb_audio_rx_mixer_controls[] = {
4889 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_USB_RX,
4890 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4891 msm_routing_put_audio_mixer),
4892 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_USB_RX,
4893 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4894 msm_routing_put_audio_mixer),
4895 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_USB_RX,
4896 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4897 msm_routing_put_audio_mixer),
4898 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_USB_RX,
4899 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4900 msm_routing_put_audio_mixer),
4901 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_USB_RX,
4902 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4903 msm_routing_put_audio_mixer),
4904 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_USB_RX,
4905 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4906 msm_routing_put_audio_mixer),
4907 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_USB_RX,
4908 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4909 msm_routing_put_audio_mixer),
4910 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_USB_RX,
4911 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4912 msm_routing_put_audio_mixer),
4913 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_USB_RX,
4914 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4915 msm_routing_put_audio_mixer),
4916 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_USB_RX,
4917 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4918 msm_routing_put_audio_mixer),
4919 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_USB_RX,
4920 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4921 msm_routing_put_audio_mixer),
4922 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_USB_RX,
4923 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4924 msm_routing_put_audio_mixer),
4925 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_USB_RX,
4926 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4927 msm_routing_put_audio_mixer),
4928 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_USB_RX,
4929 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4930 msm_routing_put_audio_mixer),
4931 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_USB_RX,
4932 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4933 msm_routing_put_audio_mixer),
4934 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_USB_RX,
4935 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4936 msm_routing_put_audio_mixer),
4937};
4938
4939static const struct snd_kcontrol_new int_bt_sco_rx_mixer_controls[] = {
4940 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4941 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4942 msm_routing_put_audio_mixer),
4943 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4944 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4945 msm_routing_put_audio_mixer),
4946 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4947 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4948 msm_routing_put_audio_mixer),
4949 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4950 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4951 msm_routing_put_audio_mixer),
4952 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4953 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4954 msm_routing_put_audio_mixer),
4955 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4956 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4957 msm_routing_put_audio_mixer),
4958 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4959 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4960 msm_routing_put_audio_mixer),
4961 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4962 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4963 msm_routing_put_audio_mixer),
4964 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4965 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4966 msm_routing_put_audio_mixer),
4967 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4968 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4969 msm_routing_put_audio_mixer),
4970 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4971 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4972 msm_routing_put_audio_mixer),
4973 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4974 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4975 msm_routing_put_audio_mixer),
4976 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4977 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4978 msm_routing_put_audio_mixer),
4979 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4980 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4981 msm_routing_put_audio_mixer),
4982 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4983 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4984 msm_routing_put_audio_mixer),
4985 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4986 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4987 msm_routing_put_audio_mixer),
4988 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4989 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4990 msm_routing_put_audio_mixer),
4991 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4992 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4993 msm_routing_put_audio_mixer),
4994 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4995 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4996 msm_routing_put_audio_mixer),
4997};
4998
4999static const struct snd_kcontrol_new int_bt_a2dp_rx_mixer_controls[] = {
5000 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5001 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5002 msm_routing_put_audio_mixer),
5003 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5004 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5005 msm_routing_put_audio_mixer),
5006 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5007 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5008 msm_routing_put_audio_mixer),
5009 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5010 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5011 msm_routing_put_audio_mixer),
5012 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5013 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5014 msm_routing_put_audio_mixer),
5015 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5016 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5017 msm_routing_put_audio_mixer),
5018 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5019 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5020 msm_routing_put_audio_mixer),
5021 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5022 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5023 msm_routing_put_audio_mixer),
5024 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5025 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5026 msm_routing_put_audio_mixer),
5027 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5028 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5029 msm_routing_put_audio_mixer),
5030 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5031 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5032 msm_routing_put_audio_mixer),
5033 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5034 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5035 msm_routing_put_audio_mixer),
5036 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5037 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5038 msm_routing_put_audio_mixer),
5039 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5040 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5041 msm_routing_put_audio_mixer),
5042 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5043 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5044 msm_routing_put_audio_mixer),
5045 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5046 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5047 msm_routing_put_audio_mixer),
5048};
5049
5050static const struct snd_kcontrol_new int_fm_rx_mixer_controls[] = {
5051 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_INT_FM_RX,
5052 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5053 msm_routing_put_audio_mixer),
5054 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_INT_FM_RX,
5055 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5056 msm_routing_put_audio_mixer),
5057 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_INT_FM_RX,
5058 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5059 msm_routing_put_audio_mixer),
5060 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_INT_FM_RX,
5061 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5062 msm_routing_put_audio_mixer),
5063 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_INT_FM_RX,
5064 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5065 msm_routing_put_audio_mixer),
5066 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_INT_FM_RX,
5067 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5068 msm_routing_put_audio_mixer),
5069 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_INT_FM_RX,
5070 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5071 msm_routing_put_audio_mixer),
5072 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_INT_FM_RX,
5073 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5074 msm_routing_put_audio_mixer),
5075 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_INT_FM_RX,
5076 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5077 msm_routing_put_audio_mixer),
5078 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_INT_FM_RX,
5079 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5080 msm_routing_put_audio_mixer),
5081 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_INT_FM_RX,
5082 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5083 msm_routing_put_audio_mixer),
5084 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_INT_FM_RX,
5085 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5086 msm_routing_put_audio_mixer),
5087 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_INT_FM_RX,
5088 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5089 msm_routing_put_audio_mixer),
5090 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_INT_FM_RX,
5091 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5092 msm_routing_put_audio_mixer),
5093 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_INT_FM_RX,
5094 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5095 msm_routing_put_audio_mixer),
5096 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_INT_FM_RX,
5097 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5098 msm_routing_put_audio_mixer),
5099 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_INT_FM_RX,
5100 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
5101 msm_routing_put_audio_mixer),
5102 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_INT_FM_RX,
5103 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
5104 msm_routing_put_audio_mixer),
5105 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_INT_FM_RX,
5106 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
5107 msm_routing_put_audio_mixer),
5108};
5109
5110static const struct snd_kcontrol_new afe_pcm_rx_mixer_controls[] = {
5111 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_AFE_PCM_RX,
5112 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5113 msm_routing_put_audio_mixer),
5114 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_AFE_PCM_RX,
5115 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5116 msm_routing_put_audio_mixer),
5117 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_AFE_PCM_RX,
5118 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5119 msm_routing_put_audio_mixer),
5120 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_AFE_PCM_RX,
5121 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5122 msm_routing_put_audio_mixer),
5123 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_AFE_PCM_RX,
5124 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5125 msm_routing_put_audio_mixer),
5126 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_AFE_PCM_RX,
5127 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5128 msm_routing_put_audio_mixer),
5129 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_AFE_PCM_RX,
5130 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5131 msm_routing_put_audio_mixer),
5132 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_AFE_PCM_RX,
5133 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5134 msm_routing_put_audio_mixer),
5135 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_AFE_PCM_RX,
5136 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5137 msm_routing_put_audio_mixer),
5138 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_AFE_PCM_RX,
5139 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5140 msm_routing_put_audio_mixer),
5141 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_AFE_PCM_RX,
5142 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5143 msm_routing_put_audio_mixer),
5144 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_AFE_PCM_RX,
5145 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5146 msm_routing_put_audio_mixer),
5147 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_AFE_PCM_RX,
5148 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5149 msm_routing_put_audio_mixer),
5150 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_AFE_PCM_RX,
5151 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5152 msm_routing_put_audio_mixer),
5153 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_AFE_PCM_RX,
5154 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5155 msm_routing_put_audio_mixer),
5156 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_AFE_PCM_RX,
5157 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5158 msm_routing_put_audio_mixer),
5159 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_AFE_PCM_RX,
5160 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
5161 msm_routing_put_audio_mixer),
5162 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_AFE_PCM_RX,
5163 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
5164 msm_routing_put_audio_mixer),
5165 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_AFE_PCM_RX,
5166 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
5167 msm_routing_put_audio_mixer),
5168};
5169
5170static const struct snd_kcontrol_new auxpcm_rx_mixer_controls[] = {
5171 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_AUXPCM_RX,
5172 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5173 msm_routing_put_audio_mixer),
5174 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_AUXPCM_RX,
5175 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5176 msm_routing_put_audio_mixer),
5177 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_AUXPCM_RX,
5178 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5179 msm_routing_put_audio_mixer),
5180 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_AUXPCM_RX,
5181 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5182 msm_routing_put_audio_mixer),
5183 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_AUXPCM_RX,
5184 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5185 msm_routing_put_audio_mixer),
5186 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_AUXPCM_RX,
5187 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5188 msm_routing_put_audio_mixer),
5189 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_AUXPCM_RX,
5190 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5191 msm_routing_put_audio_mixer),
5192 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_AUXPCM_RX,
5193 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5194 msm_routing_put_audio_mixer),
5195 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_AUXPCM_RX,
5196 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5197 msm_routing_put_audio_mixer),
5198 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_AUXPCM_RX,
5199 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5200 msm_routing_put_audio_mixer),
5201 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_AUXPCM_RX,
5202 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5203 msm_routing_put_audio_mixer),
5204 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_AUXPCM_RX,
5205 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5206 msm_routing_put_audio_mixer),
5207 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_AUXPCM_RX,
5208 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5209 msm_routing_put_audio_mixer),
5210 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_AUXPCM_RX,
5211 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5212 msm_routing_put_audio_mixer),
5213 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_AUXPCM_RX,
5214 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5215 msm_routing_put_audio_mixer),
5216 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_AUXPCM_RX,
5217 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5218 msm_routing_put_audio_mixer),
5219 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_AUXPCM_RX,
5220 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
5221 msm_routing_put_audio_mixer),
5222 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_AUXPCM_RX,
5223 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
5224 msm_routing_put_audio_mixer),
5225 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_AUXPCM_RX,
5226 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
5227 msm_routing_put_audio_mixer),
5228};
5229
5230static const struct snd_kcontrol_new sec_auxpcm_rx_mixer_controls[] = {
5231 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5232 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5233 msm_routing_put_audio_mixer),
5234 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5235 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5236 msm_routing_put_audio_mixer),
5237 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5238 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5239 msm_routing_put_audio_mixer),
5240 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5241 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5242 msm_routing_put_audio_mixer),
5243 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5244 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5245 msm_routing_put_audio_mixer),
5246 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5247 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5248 msm_routing_put_audio_mixer),
5249 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5250 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5251 msm_routing_put_audio_mixer),
5252 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5253 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5254 msm_routing_put_audio_mixer),
5255 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5256 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5257 msm_routing_put_audio_mixer),
5258 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5259 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5260 msm_routing_put_audio_mixer),
5261 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5262 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5263 msm_routing_put_audio_mixer),
5264 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5265 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5266 msm_routing_put_audio_mixer),
5267 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5268 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5269 msm_routing_put_audio_mixer),
5270 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5271 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5272 msm_routing_put_audio_mixer),
5273 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5274 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5275 msm_routing_put_audio_mixer),
5276 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5277 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5278 msm_routing_put_audio_mixer),
5279 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5280 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
5281 msm_routing_put_audio_mixer),
5282 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5283 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
5284 msm_routing_put_audio_mixer),
5285 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5286 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
5287 msm_routing_put_audio_mixer),
5288};
5289
5290static const struct snd_kcontrol_new tert_auxpcm_rx_mixer_controls[] = {
5291 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5292 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5293 msm_routing_put_audio_mixer),
5294 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5295 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5296 msm_routing_put_audio_mixer),
5297 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5298 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5299 msm_routing_put_audio_mixer),
5300 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5301 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5302 msm_routing_put_audio_mixer),
5303 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5304 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5305 msm_routing_put_audio_mixer),
5306 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5307 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5308 msm_routing_put_audio_mixer),
5309 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5310 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5311 msm_routing_put_audio_mixer),
5312 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5313 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5314 msm_routing_put_audio_mixer),
5315 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5316 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5317 msm_routing_put_audio_mixer),
5318 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5319 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5320 msm_routing_put_audio_mixer),
5321 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5322 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5323 msm_routing_put_audio_mixer),
5324 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5325 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5326 msm_routing_put_audio_mixer),
5327 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5328 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5329 msm_routing_put_audio_mixer),
5330 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5331 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5332 msm_routing_put_audio_mixer),
5333 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5334 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5335 msm_routing_put_audio_mixer),
5336 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5337 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5338 msm_routing_put_audio_mixer),
5339};
5340
5341static const struct snd_kcontrol_new quat_auxpcm_rx_mixer_controls[] = {
5342 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5343 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5344 msm_routing_put_audio_mixer),
5345 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5346 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5347 msm_routing_put_audio_mixer),
5348 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5349 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5350 msm_routing_put_audio_mixer),
5351 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5352 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5353 msm_routing_put_audio_mixer),
5354 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5355 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5356 msm_routing_put_audio_mixer),
5357 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5358 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5359 msm_routing_put_audio_mixer),
5360 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5361 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5362 msm_routing_put_audio_mixer),
5363 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5364 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5365 msm_routing_put_audio_mixer),
5366 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5367 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5368 msm_routing_put_audio_mixer),
5369 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5370 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5371 msm_routing_put_audio_mixer),
5372 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5373 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5374 msm_routing_put_audio_mixer),
5375 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5376 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5377 msm_routing_put_audio_mixer),
5378 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5379 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5380 msm_routing_put_audio_mixer),
5381 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5382 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5383 msm_routing_put_audio_mixer),
5384 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5385 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5386 msm_routing_put_audio_mixer),
5387 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5388 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5389 msm_routing_put_audio_mixer),
5390};
5391
Rohit Kumara5077932017-09-10 22:05:05 +05305392static const struct snd_kcontrol_new quin_auxpcm_rx_mixer_controls[] = {
5393 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5394 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5395 msm_routing_put_audio_mixer),
5396 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5397 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5398 msm_routing_put_audio_mixer),
5399 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5400 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5401 msm_routing_put_audio_mixer),
5402 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5403 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5404 msm_routing_put_audio_mixer),
5405 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5406 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5407 msm_routing_put_audio_mixer),
5408 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5409 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5410 msm_routing_put_audio_mixer),
5411 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5412 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5413 msm_routing_put_audio_mixer),
5414 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5415 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5416 msm_routing_put_audio_mixer),
5417 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5418 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5419 msm_routing_put_audio_mixer),
5420 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5421 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5422 msm_routing_put_audio_mixer),
5423 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5424 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5425 msm_routing_put_audio_mixer),
5426 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5427 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5428 msm_routing_put_audio_mixer),
5429 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5430 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5431 msm_routing_put_audio_mixer),
5432 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5433 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5434 msm_routing_put_audio_mixer),
5435 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5436 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5437 msm_routing_put_audio_mixer),
5438 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5439 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5440 msm_routing_put_audio_mixer),
5441};
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305442static const struct snd_kcontrol_new pri_tdm_rx_0_mixer_controls[] = {
5443 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5444 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5445 msm_routing_put_audio_mixer),
5446 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5447 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5448 msm_routing_put_audio_mixer),
5449 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5450 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5451 msm_routing_put_audio_mixer),
5452 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5453 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5454 msm_routing_put_audio_mixer),
5455 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5456 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5457 msm_routing_put_audio_mixer),
5458 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5459 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5460 msm_routing_put_audio_mixer),
5461 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5462 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5463 msm_routing_put_audio_mixer),
5464 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5465 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5466 msm_routing_put_audio_mixer),
5467 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5468 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5469 msm_routing_put_audio_mixer),
5470 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5471 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5472 msm_routing_put_audio_mixer),
5473 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5474 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5475 msm_routing_put_audio_mixer),
5476 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5477 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5478 msm_routing_put_audio_mixer),
5479 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5480 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5481 msm_routing_put_audio_mixer),
5482 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5483 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5484 msm_routing_put_audio_mixer),
5485 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5486 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5487 msm_routing_put_audio_mixer),
5488 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5489 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5490 msm_routing_put_audio_mixer),
5491};
5492
5493static const struct snd_kcontrol_new pri_tdm_rx_1_mixer_controls[] = {
5494 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5495 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5496 msm_routing_put_audio_mixer),
5497 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5498 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5499 msm_routing_put_audio_mixer),
5500 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5501 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5502 msm_routing_put_audio_mixer),
5503 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5504 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5505 msm_routing_put_audio_mixer),
5506 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5507 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5508 msm_routing_put_audio_mixer),
5509 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5510 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5511 msm_routing_put_audio_mixer),
5512 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5513 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5514 msm_routing_put_audio_mixer),
5515 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5516 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5517 msm_routing_put_audio_mixer),
5518 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5519 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5520 msm_routing_put_audio_mixer),
5521 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5522 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5523 msm_routing_put_audio_mixer),
5524 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5525 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5526 msm_routing_put_audio_mixer),
5527 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5528 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5529 msm_routing_put_audio_mixer),
5530 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5531 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5532 msm_routing_put_audio_mixer),
5533 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5534 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5535 msm_routing_put_audio_mixer),
5536 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5537 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5538 msm_routing_put_audio_mixer),
5539 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5540 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5541 msm_routing_put_audio_mixer),
5542};
5543
5544static const struct snd_kcontrol_new pri_tdm_rx_2_mixer_controls[] = {
5545 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5546 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5547 msm_routing_put_audio_mixer),
5548 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5549 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5550 msm_routing_put_audio_mixer),
5551 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5552 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5553 msm_routing_put_audio_mixer),
5554 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5555 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5556 msm_routing_put_audio_mixer),
5557 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5558 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5559 msm_routing_put_audio_mixer),
5560 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5561 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5562 msm_routing_put_audio_mixer),
5563 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5564 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5565 msm_routing_put_audio_mixer),
5566 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5567 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5568 msm_routing_put_audio_mixer),
5569 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5570 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5571 msm_routing_put_audio_mixer),
5572 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5573 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5574 msm_routing_put_audio_mixer),
5575 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5576 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5577 msm_routing_put_audio_mixer),
5578 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5579 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5580 msm_routing_put_audio_mixer),
5581 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5582 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5583 msm_routing_put_audio_mixer),
5584 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5585 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5586 msm_routing_put_audio_mixer),
5587 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5588 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5589 msm_routing_put_audio_mixer),
5590 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5591 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5592 msm_routing_put_audio_mixer),
5593};
5594
5595static const struct snd_kcontrol_new pri_tdm_rx_3_mixer_controls[] = {
5596 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5597 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5598 msm_routing_put_audio_mixer),
5599 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5600 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5601 msm_routing_put_audio_mixer),
5602 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5603 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5604 msm_routing_put_audio_mixer),
5605 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5606 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5607 msm_routing_put_audio_mixer),
5608 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5609 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5610 msm_routing_put_audio_mixer),
5611 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5612 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5613 msm_routing_put_audio_mixer),
5614 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5615 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5616 msm_routing_put_audio_mixer),
5617 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5618 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5619 msm_routing_put_audio_mixer),
5620 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5621 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5622 msm_routing_put_audio_mixer),
5623 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5624 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5625 msm_routing_put_audio_mixer),
5626 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5627 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5628 msm_routing_put_audio_mixer),
5629 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5630 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5631 msm_routing_put_audio_mixer),
5632 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5633 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5634 msm_routing_put_audio_mixer),
5635 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5636 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5637 msm_routing_put_audio_mixer),
5638 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5639 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5640 msm_routing_put_audio_mixer),
5641 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5642 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5643 msm_routing_put_audio_mixer),
5644};
5645
5646static const struct snd_kcontrol_new pri_tdm_tx_0_mixer_controls[] = {
5647 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5648 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5649 msm_routing_put_audio_mixer),
5650 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5651 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5652 msm_routing_put_audio_mixer),
5653 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5654 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5655 msm_routing_put_audio_mixer),
5656 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5657 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5658 msm_routing_put_audio_mixer),
5659 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5660 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5661 msm_routing_put_audio_mixer),
5662 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5663 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5664 msm_routing_put_audio_mixer),
5665 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5666 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5667 msm_routing_put_audio_mixer),
5668 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5669 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5670 msm_routing_put_audio_mixer),
5671 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5672 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5673 msm_routing_put_audio_mixer),
5674 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5675 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5676 msm_routing_put_audio_mixer),
5677 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5678 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5679 msm_routing_put_audio_mixer),
5680 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5681 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5682 msm_routing_put_audio_mixer),
5683 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5684 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5685 msm_routing_put_audio_mixer),
5686 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5687 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5688 msm_routing_put_audio_mixer),
5689 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5690 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5691 msm_routing_put_audio_mixer),
5692 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5693 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5694 msm_routing_put_audio_mixer),
5695};
5696
5697static const struct snd_kcontrol_new sec_tdm_rx_0_mixer_controls[] = {
5698 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5699 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5700 msm_routing_put_audio_mixer),
5701 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5702 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5703 msm_routing_put_audio_mixer),
5704 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5705 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5706 msm_routing_put_audio_mixer),
5707 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5708 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5709 msm_routing_put_audio_mixer),
5710 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5711 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5712 msm_routing_put_audio_mixer),
5713 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5714 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5715 msm_routing_put_audio_mixer),
5716 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5717 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5718 msm_routing_put_audio_mixer),
5719 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5720 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5721 msm_routing_put_audio_mixer),
5722 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5723 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5724 msm_routing_put_audio_mixer),
5725 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5726 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5727 msm_routing_put_audio_mixer),
5728 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5729 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5730 msm_routing_put_audio_mixer),
5731 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5732 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5733 msm_routing_put_audio_mixer),
5734 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5735 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5736 msm_routing_put_audio_mixer),
5737 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5738 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5739 msm_routing_put_audio_mixer),
5740 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5741 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5742 msm_routing_put_audio_mixer),
5743 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5744 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5745 msm_routing_put_audio_mixer),
5746};
5747
5748static const struct snd_kcontrol_new sec_tdm_rx_1_mixer_controls[] = {
5749 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5750 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5751 msm_routing_put_audio_mixer),
5752 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5753 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5754 msm_routing_put_audio_mixer),
5755 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5756 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5757 msm_routing_put_audio_mixer),
5758 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5759 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5760 msm_routing_put_audio_mixer),
5761 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5762 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5763 msm_routing_put_audio_mixer),
5764 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5765 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5766 msm_routing_put_audio_mixer),
5767 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5768 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5769 msm_routing_put_audio_mixer),
5770 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5771 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5772 msm_routing_put_audio_mixer),
5773 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5774 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5775 msm_routing_put_audio_mixer),
5776 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5777 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5778 msm_routing_put_audio_mixer),
5779 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5780 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5781 msm_routing_put_audio_mixer),
5782 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5783 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5784 msm_routing_put_audio_mixer),
5785 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5786 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5787 msm_routing_put_audio_mixer),
5788 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5789 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5790 msm_routing_put_audio_mixer),
5791 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5792 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5793 msm_routing_put_audio_mixer),
5794 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5795 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5796 msm_routing_put_audio_mixer),
5797};
5798
5799static const struct snd_kcontrol_new sec_tdm_rx_2_mixer_controls[] = {
5800 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5801 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5802 msm_routing_put_audio_mixer),
5803 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5804 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5805 msm_routing_put_audio_mixer),
5806 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5807 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5808 msm_routing_put_audio_mixer),
5809 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5810 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5811 msm_routing_put_audio_mixer),
5812 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5813 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5814 msm_routing_put_audio_mixer),
5815 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5816 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5817 msm_routing_put_audio_mixer),
5818 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5819 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5820 msm_routing_put_audio_mixer),
5821 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5822 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5823 msm_routing_put_audio_mixer),
5824 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5825 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5826 msm_routing_put_audio_mixer),
5827 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5828 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5829 msm_routing_put_audio_mixer),
5830 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5831 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5832 msm_routing_put_audio_mixer),
5833 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5834 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5835 msm_routing_put_audio_mixer),
5836 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5837 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5838 msm_routing_put_audio_mixer),
5839 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5840 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5841 msm_routing_put_audio_mixer),
5842 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5843 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5844 msm_routing_put_audio_mixer),
5845 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5846 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5847 msm_routing_put_audio_mixer),
5848};
5849
5850static const struct snd_kcontrol_new sec_tdm_rx_3_mixer_controls[] = {
5851 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5852 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5853 msm_routing_put_audio_mixer),
5854 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5855 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5856 msm_routing_put_audio_mixer),
5857 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5858 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5859 msm_routing_put_audio_mixer),
5860 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5861 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5862 msm_routing_put_audio_mixer),
5863 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5864 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5865 msm_routing_put_audio_mixer),
5866 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5867 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5868 msm_routing_put_audio_mixer),
5869 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5870 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5871 msm_routing_put_audio_mixer),
5872 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5873 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5874 msm_routing_put_audio_mixer),
5875 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5876 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5877 msm_routing_put_audio_mixer),
5878 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5879 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5880 msm_routing_put_audio_mixer),
5881 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5882 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5883 msm_routing_put_audio_mixer),
5884 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5885 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5886 msm_routing_put_audio_mixer),
5887 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5888 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5889 msm_routing_put_audio_mixer),
5890 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5891 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5892 msm_routing_put_audio_mixer),
5893 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5894 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5895 msm_routing_put_audio_mixer),
5896 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5897 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5898 msm_routing_put_audio_mixer),
5899};
5900
5901static const struct snd_kcontrol_new sec_tdm_tx_0_mixer_controls[] = {
5902 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5903 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5904 msm_routing_put_audio_mixer),
5905 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5906 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5907 msm_routing_put_audio_mixer),
5908 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5909 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5910 msm_routing_put_audio_mixer),
5911 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5912 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5913 msm_routing_put_audio_mixer),
5914 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5915 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5916 msm_routing_put_audio_mixer),
5917 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5918 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5919 msm_routing_put_audio_mixer),
5920 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5921 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5922 msm_routing_put_audio_mixer),
5923 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5924 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5925 msm_routing_put_audio_mixer),
5926 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5927 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5928 msm_routing_put_audio_mixer),
5929 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5930 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5931 msm_routing_put_audio_mixer),
5932 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5933 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5934 msm_routing_put_audio_mixer),
5935 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5936 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5937 msm_routing_put_audio_mixer),
5938 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5939 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5940 msm_routing_put_audio_mixer),
5941 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5942 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5943 msm_routing_put_audio_mixer),
5944 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5945 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5946 msm_routing_put_audio_mixer),
5947 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5948 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5949 msm_routing_put_audio_mixer),
5950};
5951
5952static const struct snd_kcontrol_new tert_tdm_rx_0_mixer_controls[] = {
5953 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5954 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5955 msm_routing_put_audio_mixer),
5956 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5957 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5958 msm_routing_put_audio_mixer),
5959 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5960 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5961 msm_routing_put_audio_mixer),
5962 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5963 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5964 msm_routing_put_audio_mixer),
5965 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5966 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5967 msm_routing_put_audio_mixer),
5968 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5969 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5970 msm_routing_put_audio_mixer),
5971 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5972 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5973 msm_routing_put_audio_mixer),
5974 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5975 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5976 msm_routing_put_audio_mixer),
5977 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5978 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5979 msm_routing_put_audio_mixer),
5980 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5981 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5982 msm_routing_put_audio_mixer),
5983 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5984 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5985 msm_routing_put_audio_mixer),
5986 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5987 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5988 msm_routing_put_audio_mixer),
5989 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5990 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5991 msm_routing_put_audio_mixer),
5992 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5993 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5994 msm_routing_put_audio_mixer),
5995 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5996 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5997 msm_routing_put_audio_mixer),
5998 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5999 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6000 msm_routing_put_audio_mixer),
6001};
6002
6003static const struct snd_kcontrol_new tert_tdm_tx_0_mixer_controls[] = {
6004 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6005 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6006 msm_routing_put_audio_mixer),
6007 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6008 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6009 msm_routing_put_audio_mixer),
6010 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6011 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6012 msm_routing_put_audio_mixer),
6013 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6014 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6015 msm_routing_put_audio_mixer),
6016 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6017 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6018 msm_routing_put_audio_mixer),
6019 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6020 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6021 msm_routing_put_audio_mixer),
6022 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6023 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6024 msm_routing_put_audio_mixer),
6025 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6026 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6027 msm_routing_put_audio_mixer),
6028 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6029 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6030 msm_routing_put_audio_mixer),
6031 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6032 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6033 msm_routing_put_audio_mixer),
6034 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6035 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6036 msm_routing_put_audio_mixer),
6037 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6038 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6039 msm_routing_put_audio_mixer),
6040 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6041 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6042 msm_routing_put_audio_mixer),
6043 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6044 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6045 msm_routing_put_audio_mixer),
6046 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6047 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6048 msm_routing_put_audio_mixer),
6049 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6050 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6051 msm_routing_put_audio_mixer),
6052};
6053
6054static const struct snd_kcontrol_new tert_tdm_rx_1_mixer_controls[] = {
6055 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6056 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6057 msm_routing_put_audio_mixer),
6058 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6059 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6060 msm_routing_put_audio_mixer),
6061 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6062 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6063 msm_routing_put_audio_mixer),
6064 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6065 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6066 msm_routing_put_audio_mixer),
6067 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6068 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6069 msm_routing_put_audio_mixer),
6070 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6071 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6072 msm_routing_put_audio_mixer),
6073 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6074 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6075 msm_routing_put_audio_mixer),
6076 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6077 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6078 msm_routing_put_audio_mixer),
6079 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6080 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6081 msm_routing_put_audio_mixer),
6082 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6083 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6084 msm_routing_put_audio_mixer),
6085 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6086 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6087 msm_routing_put_audio_mixer),
6088 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6089 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6090 msm_routing_put_audio_mixer),
6091 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6092 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6093 msm_routing_put_audio_mixer),
6094 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6095 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6096 msm_routing_put_audio_mixer),
6097 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6098 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6099 msm_routing_put_audio_mixer),
6100 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6101 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6102 msm_routing_put_audio_mixer),
6103};
6104
6105static const struct snd_kcontrol_new tert_tdm_rx_2_mixer_controls[] = {
6106 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6107 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6108 msm_routing_put_audio_mixer),
6109 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6110 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6111 msm_routing_put_audio_mixer),
6112 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6113 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6114 msm_routing_put_audio_mixer),
6115 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6116 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6117 msm_routing_put_audio_mixer),
6118 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6119 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6120 msm_routing_put_audio_mixer),
6121 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6122 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6123 msm_routing_put_audio_mixer),
6124 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6125 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6126 msm_routing_put_audio_mixer),
6127 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6128 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6129 msm_routing_put_audio_mixer),
6130 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6131 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6132 msm_routing_put_audio_mixer),
6133 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6134 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6135 msm_routing_put_audio_mixer),
6136 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6137 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6138 msm_routing_put_audio_mixer),
6139 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6140 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6141 msm_routing_put_audio_mixer),
6142 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6143 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6144 msm_routing_put_audio_mixer),
6145 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6146 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6147 msm_routing_put_audio_mixer),
6148 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6149 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6150 msm_routing_put_audio_mixer),
6151 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6152 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6153 msm_routing_put_audio_mixer),
6154};
6155
6156static const struct snd_kcontrol_new tert_tdm_rx_3_mixer_controls[] = {
6157 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6158 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6159 msm_routing_put_audio_mixer),
6160 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6161 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6162 msm_routing_put_audio_mixer),
6163 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6164 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6165 msm_routing_put_audio_mixer),
6166 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6167 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6168 msm_routing_put_audio_mixer),
6169 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6170 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6171 msm_routing_put_audio_mixer),
6172 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6173 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6174 msm_routing_put_audio_mixer),
6175 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6176 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6177 msm_routing_put_audio_mixer),
6178 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6179 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6180 msm_routing_put_audio_mixer),
6181 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6182 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6183 msm_routing_put_audio_mixer),
6184 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6185 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6186 msm_routing_put_audio_mixer),
6187 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6188 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6189 msm_routing_put_audio_mixer),
6190 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6191 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6192 msm_routing_put_audio_mixer),
6193 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6194 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6195 msm_routing_put_audio_mixer),
6196 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6197 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6198 msm_routing_put_audio_mixer),
6199 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6200 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6201 msm_routing_put_audio_mixer),
6202 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6203 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6204 msm_routing_put_audio_mixer),
6205};
6206
6207static const struct snd_kcontrol_new tert_tdm_rx_4_mixer_controls[] = {
6208 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6209 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6210 msm_routing_put_audio_mixer),
6211 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6212 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6213 msm_routing_put_audio_mixer),
6214 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6215 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6216 msm_routing_put_audio_mixer),
6217 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6218 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6219 msm_routing_put_audio_mixer),
6220 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6221 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6222 msm_routing_put_audio_mixer),
6223 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6224 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6225 msm_routing_put_audio_mixer),
6226 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6227 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6228 msm_routing_put_audio_mixer),
6229 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6230 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6231 msm_routing_put_audio_mixer),
6232 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6233 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6234 msm_routing_put_audio_mixer),
6235 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6236 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6237 msm_routing_put_audio_mixer),
6238 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6239 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6240 msm_routing_put_audio_mixer),
6241 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6242 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6243 msm_routing_put_audio_mixer),
6244 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6245 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6246 msm_routing_put_audio_mixer),
6247 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6248 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6249 msm_routing_put_audio_mixer),
6250 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6251 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6252 msm_routing_put_audio_mixer),
6253 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6254 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6255 msm_routing_put_audio_mixer),
6256};
6257
6258static const struct snd_kcontrol_new quat_tdm_rx_0_mixer_controls[] = {
6259 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6260 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6261 msm_routing_put_audio_mixer),
6262 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6263 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6264 msm_routing_put_audio_mixer),
6265 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6266 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6267 msm_routing_put_audio_mixer),
6268 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6269 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6270 msm_routing_put_audio_mixer),
6271 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6272 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6273 msm_routing_put_audio_mixer),
6274 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6275 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6276 msm_routing_put_audio_mixer),
6277 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6278 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6279 msm_routing_put_audio_mixer),
6280 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6281 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6282 msm_routing_put_audio_mixer),
6283 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6284 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6285 msm_routing_put_audio_mixer),
6286 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6287 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6288 msm_routing_put_audio_mixer),
6289 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6290 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6291 msm_routing_put_audio_mixer),
6292 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6293 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6294 msm_routing_put_audio_mixer),
6295 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6296 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6297 msm_routing_put_audio_mixer),
6298 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6299 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6300 msm_routing_put_audio_mixer),
6301 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6302 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6303 msm_routing_put_audio_mixer),
6304 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6305 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6306 msm_routing_put_audio_mixer),
6307 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6308 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6309 msm_routing_put_audio_mixer),
6310};
6311
6312static const struct snd_kcontrol_new quat_tdm_tx_0_mixer_controls[] = {
6313 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6314 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6315 msm_routing_put_audio_mixer),
6316 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6317 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6318 msm_routing_put_audio_mixer),
6319 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6320 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6321 msm_routing_put_audio_mixer),
6322 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6323 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6324 msm_routing_put_audio_mixer),
6325 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6326 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6327 msm_routing_put_audio_mixer),
6328 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6329 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6330 msm_routing_put_audio_mixer),
6331 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6332 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6333 msm_routing_put_audio_mixer),
6334 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6335 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6336 msm_routing_put_audio_mixer),
6337 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6338 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6339 msm_routing_put_audio_mixer),
6340 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6341 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6342 msm_routing_put_audio_mixer),
6343 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6344 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6345 msm_routing_put_audio_mixer),
6346 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6347 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6348 msm_routing_put_audio_mixer),
6349 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6350 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6351 msm_routing_put_audio_mixer),
6352 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6353 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6354 msm_routing_put_audio_mixer),
6355 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6356 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6357 msm_routing_put_audio_mixer),
6358 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6359 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6360 msm_routing_put_audio_mixer),
6361};
6362
6363static const struct snd_kcontrol_new quat_tdm_rx_1_mixer_controls[] = {
6364 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6365 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6366 msm_routing_put_audio_mixer),
6367 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6368 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6369 msm_routing_put_audio_mixer),
6370 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6371 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6372 msm_routing_put_audio_mixer),
6373 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6374 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6375 msm_routing_put_audio_mixer),
6376 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6377 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6378 msm_routing_put_audio_mixer),
6379 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6380 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6381 msm_routing_put_audio_mixer),
6382 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6383 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6384 msm_routing_put_audio_mixer),
6385 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6386 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6387 msm_routing_put_audio_mixer),
6388 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6389 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6390 msm_routing_put_audio_mixer),
6391 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6392 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6393 msm_routing_put_audio_mixer),
6394 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6395 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6396 msm_routing_put_audio_mixer),
6397 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6398 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6399 msm_routing_put_audio_mixer),
6400 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6401 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6402 msm_routing_put_audio_mixer),
6403 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6404 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6405 msm_routing_put_audio_mixer),
6406 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6407 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6408 msm_routing_put_audio_mixer),
6409 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6410 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6411 msm_routing_put_audio_mixer),
6412 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6413 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6414 msm_routing_put_audio_mixer),
6415};
6416
6417static const struct snd_kcontrol_new quat_tdm_rx_2_mixer_controls[] = {
6418 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6419 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6420 msm_routing_put_audio_mixer),
6421 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6422 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6423 msm_routing_put_audio_mixer),
6424 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6425 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6426 msm_routing_put_audio_mixer),
6427 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6428 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6429 msm_routing_put_audio_mixer),
6430 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6431 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6432 msm_routing_put_audio_mixer),
6433 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6434 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6435 msm_routing_put_audio_mixer),
6436 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6437 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6438 msm_routing_put_audio_mixer),
6439 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6440 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6441 msm_routing_put_audio_mixer),
6442 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6443 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6444 msm_routing_put_audio_mixer),
6445 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6446 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6447 msm_routing_put_audio_mixer),
6448 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6449 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6450 msm_routing_put_audio_mixer),
6451 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6452 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6453 msm_routing_put_audio_mixer),
6454 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6455 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6456 msm_routing_put_audio_mixer),
6457 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6458 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6459 msm_routing_put_audio_mixer),
6460 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6461 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6462 msm_routing_put_audio_mixer),
6463 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6464 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6465 msm_routing_put_audio_mixer),
6466 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6467 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6468 msm_routing_put_audio_mixer),
6469};
6470
6471static const struct snd_kcontrol_new quat_tdm_rx_3_mixer_controls[] = {
6472 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6473 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6474 msm_routing_put_audio_mixer),
6475 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6476 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6477 msm_routing_put_audio_mixer),
6478 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6479 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6480 msm_routing_put_audio_mixer),
6481 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6482 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6483 msm_routing_put_audio_mixer),
6484 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6485 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6486 msm_routing_put_audio_mixer),
6487 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6488 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6489 msm_routing_put_audio_mixer),
6490 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6491 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6492 msm_routing_put_audio_mixer),
6493 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6494 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6495 msm_routing_put_audio_mixer),
6496 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6497 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6498 msm_routing_put_audio_mixer),
6499 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6500 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6501 msm_routing_put_audio_mixer),
6502 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6503 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6504 msm_routing_put_audio_mixer),
6505 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6506 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6507 msm_routing_put_audio_mixer),
6508 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6509 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6510 msm_routing_put_audio_mixer),
6511 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6512 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6513 msm_routing_put_audio_mixer),
6514 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6515 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6516 msm_routing_put_audio_mixer),
6517 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6518 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6519 msm_routing_put_audio_mixer),
6520 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6521 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6522 msm_routing_put_audio_mixer),
6523};
6524
Rohit Kumara5077932017-09-10 22:05:05 +05306525static const struct snd_kcontrol_new quin_tdm_rx_0_mixer_controls[] = {
6526 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6527 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6528 msm_routing_put_audio_mixer),
6529 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6530 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6531 msm_routing_put_audio_mixer),
6532 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6533 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6534 msm_routing_put_audio_mixer),
6535 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6536 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6537 msm_routing_put_audio_mixer),
6538 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6539 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6540 msm_routing_put_audio_mixer),
6541 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6542 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6543 msm_routing_put_audio_mixer),
6544 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6545 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6546 msm_routing_put_audio_mixer),
6547 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6548 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6549 msm_routing_put_audio_mixer),
6550 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6551 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6552 msm_routing_put_audio_mixer),
6553 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6554 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6555 msm_routing_put_audio_mixer),
6556 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6557 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6558 msm_routing_put_audio_mixer),
6559 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6560 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6561 msm_routing_put_audio_mixer),
6562 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6563 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6564 msm_routing_put_audio_mixer),
6565 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6566 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6567 msm_routing_put_audio_mixer),
6568 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6569 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6570 msm_routing_put_audio_mixer),
6571 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6572 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6573 msm_routing_put_audio_mixer),
6574 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6575 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6576 msm_routing_put_audio_mixer),
6577};
6578
6579static const struct snd_kcontrol_new quin_tdm_tx_0_mixer_controls[] = {
6580 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6581 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6582 msm_routing_put_audio_mixer),
6583 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6584 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6585 msm_routing_put_audio_mixer),
6586 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6587 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6588 msm_routing_put_audio_mixer),
6589 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6590 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6591 msm_routing_put_audio_mixer),
6592 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6593 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6594 msm_routing_put_audio_mixer),
6595 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6596 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6597 msm_routing_put_audio_mixer),
6598 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6599 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6600 msm_routing_put_audio_mixer),
6601 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6602 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6603 msm_routing_put_audio_mixer),
6604 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6605 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6606 msm_routing_put_audio_mixer),
6607 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6608 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6609 msm_routing_put_audio_mixer),
6610 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6611 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6612 msm_routing_put_audio_mixer),
6613 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6614 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6615 msm_routing_put_audio_mixer),
6616 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6617 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6618 msm_routing_put_audio_mixer),
6619 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6620 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6621 msm_routing_put_audio_mixer),
6622 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6623 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6624 msm_routing_put_audio_mixer),
6625 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6626 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6627 msm_routing_put_audio_mixer),
6628};
6629
6630static const struct snd_kcontrol_new quin_tdm_rx_1_mixer_controls[] = {
6631 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6632 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6633 msm_routing_put_audio_mixer),
6634 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6635 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6636 msm_routing_put_audio_mixer),
6637 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6638 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6639 msm_routing_put_audio_mixer),
6640 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6641 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6642 msm_routing_put_audio_mixer),
6643 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6644 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6645 msm_routing_put_audio_mixer),
6646 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6647 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6648 msm_routing_put_audio_mixer),
6649 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6650 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6651 msm_routing_put_audio_mixer),
6652 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6653 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6654 msm_routing_put_audio_mixer),
6655 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6656 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6657 msm_routing_put_audio_mixer),
6658 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6659 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6660 msm_routing_put_audio_mixer),
6661 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6662 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6663 msm_routing_put_audio_mixer),
6664 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6665 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6666 msm_routing_put_audio_mixer),
6667 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6668 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6669 msm_routing_put_audio_mixer),
6670 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6671 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6672 msm_routing_put_audio_mixer),
6673 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6674 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6675 msm_routing_put_audio_mixer),
6676 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6677 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6678 msm_routing_put_audio_mixer),
6679 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6680 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6681 msm_routing_put_audio_mixer),
6682};
6683
6684static const struct snd_kcontrol_new quin_tdm_rx_2_mixer_controls[] = {
6685 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6686 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6687 msm_routing_put_audio_mixer),
6688 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6689 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6690 msm_routing_put_audio_mixer),
6691 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6692 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6693 msm_routing_put_audio_mixer),
6694 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6695 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6696 msm_routing_put_audio_mixer),
6697 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6698 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6699 msm_routing_put_audio_mixer),
6700 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6701 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6702 msm_routing_put_audio_mixer),
6703 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6704 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6705 msm_routing_put_audio_mixer),
6706 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6707 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6708 msm_routing_put_audio_mixer),
6709 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6710 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6711 msm_routing_put_audio_mixer),
6712 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6713 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6714 msm_routing_put_audio_mixer),
6715 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6716 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6717 msm_routing_put_audio_mixer),
6718 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6719 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6720 msm_routing_put_audio_mixer),
6721 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6722 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6723 msm_routing_put_audio_mixer),
6724 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6725 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6726 msm_routing_put_audio_mixer),
6727 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6728 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6729 msm_routing_put_audio_mixer),
6730 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6731 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6732 msm_routing_put_audio_mixer),
6733 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6734 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6735 msm_routing_put_audio_mixer),
6736};
6737
6738static const struct snd_kcontrol_new quin_tdm_rx_3_mixer_controls[] = {
6739 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6740 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6741 msm_routing_put_audio_mixer),
6742 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6743 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6744 msm_routing_put_audio_mixer),
6745 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6746 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6747 msm_routing_put_audio_mixer),
6748 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6749 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6750 msm_routing_put_audio_mixer),
6751 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6752 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6753 msm_routing_put_audio_mixer),
6754 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6755 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6756 msm_routing_put_audio_mixer),
6757 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6758 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6759 msm_routing_put_audio_mixer),
6760 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6761 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6762 msm_routing_put_audio_mixer),
6763 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6764 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6765 msm_routing_put_audio_mixer),
6766 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6767 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6768 msm_routing_put_audio_mixer),
6769 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6770 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6771 msm_routing_put_audio_mixer),
6772 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6773 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6774 msm_routing_put_audio_mixer),
6775 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6776 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6777 msm_routing_put_audio_mixer),
6778 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6779 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6780 msm_routing_put_audio_mixer),
6781 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6782 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6783 msm_routing_put_audio_mixer),
6784 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6785 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6786 msm_routing_put_audio_mixer),
6787 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6788 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6789 msm_routing_put_audio_mixer),
6790};
6791
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306792static const struct snd_kcontrol_new mmul1_mixer_controls[] = {
6793 SOC_SINGLE_EXT("PRI_TX", MSM_BACKEND_DAI_PRI_I2S_TX,
6794 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6795 msm_routing_put_audio_mixer),
6796 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
6797 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6798 msm_routing_put_audio_mixer),
6799 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
6800 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6801 msm_routing_put_audio_mixer),
6802 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
6803 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6804 msm_routing_put_audio_mixer),
6805 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
6806 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6807 msm_routing_put_audio_mixer),
6808 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
6809 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6810 msm_routing_put_audio_mixer),
6811 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
6812 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6813 msm_routing_put_audio_mixer),
6814 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
6815 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6816 msm_routing_put_audio_mixer),
6817 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
6818 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6819 msm_routing_put_audio_mixer),
6820 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
6821 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6822 msm_routing_put_audio_mixer),
6823 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
6824 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6825 msm_routing_put_audio_mixer),
6826 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
6827 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6828 msm_routing_put_audio_mixer),
6829 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
6830 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6831 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05306832 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
6833 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6834 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306835 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
6836 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6837 msm_routing_put_audio_mixer),
6838 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
6839 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6840 msm_routing_put_audio_mixer),
6841 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
6842 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6843 msm_routing_put_audio_mixer),
6844 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
6845 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6846 msm_routing_put_audio_mixer),
6847 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
6848 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6849 msm_routing_put_audio_mixer),
6850 SOC_SINGLE_EXT("SLIM_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
6851 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6852 msm_routing_put_audio_mixer),
6853 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
6854 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6855 msm_routing_put_audio_mixer),
6856 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_TX,
6857 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6858 msm_routing_put_audio_mixer),
6859 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
6860 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6861 msm_routing_put_audio_mixer),
6862 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
6863 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6864 msm_routing_put_audio_mixer),
6865 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
6866 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6867 msm_routing_put_audio_mixer),
6868 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
6869 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6870 msm_routing_put_audio_mixer),
6871 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6872 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6873 msm_routing_put_audio_mixer),
6874 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
6875 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6876 msm_routing_put_audio_mixer),
6877 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
6878 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6879 msm_routing_put_audio_mixer),
6880 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
6881 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6882 msm_routing_put_audio_mixer),
6883 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6884 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6885 msm_routing_put_audio_mixer),
6886 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
6887 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6888 msm_routing_put_audio_mixer),
6889 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
6890 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6891 msm_routing_put_audio_mixer),
6892 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
6893 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6894 msm_routing_put_audio_mixer),
6895 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6896 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6897 msm_routing_put_audio_mixer),
6898 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
6899 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6900 msm_routing_put_audio_mixer),
6901 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
6902 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6903 msm_routing_put_audio_mixer),
6904 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
6905 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6906 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05306907 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6908 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6909 msm_routing_put_audio_mixer),
6910 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
6911 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6912 msm_routing_put_audio_mixer),
6913 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
6914 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6915 msm_routing_put_audio_mixer),
6916 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
6917 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6918 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306919 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
6920 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6921 msm_routing_put_audio_mixer),
6922 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
6923 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6924 msm_routing_put_audio_mixer),
6925 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
6926 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6927 msm_routing_put_audio_mixer),
6928};
6929
6930static const struct snd_kcontrol_new mmul2_mixer_controls[] = {
6931 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
6932 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6933 msm_routing_put_audio_mixer),
6934 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
6935 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6936 msm_routing_put_audio_mixer),
6937 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
6938 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6939 msm_routing_put_audio_mixer),
6940 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
6941 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6942 msm_routing_put_audio_mixer),
6943 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
6944 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6945 msm_routing_put_audio_mixer),
6946 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
6947 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6948 msm_routing_put_audio_mixer),
6949 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
6950 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6951 msm_routing_put_audio_mixer),
6952 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
6953 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6954 msm_routing_put_audio_mixer),
6955 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
6956 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6957 msm_routing_put_audio_mixer),
6958 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
6959 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6960 msm_routing_put_audio_mixer),
6961 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
6962 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6963 msm_routing_put_audio_mixer),
6964 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_TX,
6965 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6966 msm_routing_put_audio_mixer),
6967 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
6968 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6969 msm_routing_put_audio_mixer),
6970 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
6971 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6972 msm_routing_put_audio_mixer),
6973 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
6974 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6975 msm_routing_put_audio_mixer),
6976 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
6977 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6978 msm_routing_put_audio_mixer),
6979 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6980 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6981 msm_routing_put_audio_mixer),
6982 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
6983 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6984 msm_routing_put_audio_mixer),
6985 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
6986 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6987 msm_routing_put_audio_mixer),
6988 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
6989 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6990 msm_routing_put_audio_mixer),
6991 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6992 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6993 msm_routing_put_audio_mixer),
6994 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
6995 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6996 msm_routing_put_audio_mixer),
6997 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
6998 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6999 msm_routing_put_audio_mixer),
7000 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7001 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7002 msm_routing_put_audio_mixer),
7003 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7004 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7005 msm_routing_put_audio_mixer),
7006 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7007 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7008 msm_routing_put_audio_mixer),
7009 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7010 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7011 msm_routing_put_audio_mixer),
7012 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7013 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7014 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307015 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7016 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7017 msm_routing_put_audio_mixer),
7018 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7019 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7020 msm_routing_put_audio_mixer),
7021 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7022 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7023 msm_routing_put_audio_mixer),
7024 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7025 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7026 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307027 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
7028 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7029 msm_routing_put_audio_mixer),
7030 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7031 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7032 msm_routing_put_audio_mixer),
7033};
7034
7035static const struct snd_kcontrol_new mmul3_mixer_controls[] = {
7036 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7037 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7038 msm_routing_put_audio_mixer),
7039 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7040 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7041 msm_routing_put_audio_mixer),
7042 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
7043 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7044 msm_routing_put_audio_mixer),
7045 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7046 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7047 msm_routing_put_audio_mixer),
7048 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7049 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7050 msm_routing_put_audio_mixer),
7051 SOC_SINGLE_EXT("AUX_PCM_TX", MSM_BACKEND_DAI_AUXPCM_TX,
7052 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7053 msm_routing_put_audio_mixer),
7054 SOC_SINGLE_EXT("SEC_AUX_PCM_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
7055 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7056 msm_routing_put_audio_mixer),
7057 SOC_SINGLE_EXT("TERT_AUX_PCM_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
7058 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7059 msm_routing_put_audio_mixer),
7060 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
7061 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7062 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307063 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
7064 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7065 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307066 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7067 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7068 msm_routing_put_audio_mixer),
7069 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7070 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7071 msm_routing_put_audio_mixer),
7072 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7073 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7074 msm_routing_put_audio_mixer),
7075 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7076 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7077 msm_routing_put_audio_mixer),
7078 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7079 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7080 msm_routing_put_audio_mixer),
7081 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7082 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7083 msm_routing_put_audio_mixer),
7084 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7085 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7086 msm_routing_put_audio_mixer),
7087 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7088 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7089 msm_routing_put_audio_mixer),
7090 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7091 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7092 msm_routing_put_audio_mixer),
7093 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7094 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7095 msm_routing_put_audio_mixer),
7096 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7097 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7098 msm_routing_put_audio_mixer),
7099 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7100 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7101 msm_routing_put_audio_mixer),
7102 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7103 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7104 msm_routing_put_audio_mixer),
7105 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7106 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7107 msm_routing_put_audio_mixer),
7108 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7109 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7110 msm_routing_put_audio_mixer),
7111 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7112 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7113 msm_routing_put_audio_mixer),
7114 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7115 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7116 msm_routing_put_audio_mixer),
7117 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7118 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7119 msm_routing_put_audio_mixer),
7120 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7121 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7122 msm_routing_put_audio_mixer),
7123 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7124 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7125 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307126 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7127 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7128 msm_routing_put_audio_mixer),
7129 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7130 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7131 msm_routing_put_audio_mixer),
7132 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7133 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7134 msm_routing_put_audio_mixer),
7135 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7136 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7137 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307138};
7139
7140static const struct snd_kcontrol_new mmul4_mixer_controls[] = {
7141 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7142 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7143 msm_routing_put_audio_mixer),
7144 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7145 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7146 msm_routing_put_audio_mixer),
7147 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7148 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7149 msm_routing_put_audio_mixer),
7150 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7151 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7152 msm_routing_put_audio_mixer),
7153 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7154 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7155 msm_routing_put_audio_mixer),
7156 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7157 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7158 msm_routing_put_audio_mixer),
7159 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7160 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7161 msm_routing_put_audio_mixer),
7162 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7163 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7164 msm_routing_put_audio_mixer),
7165 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7166 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7167 msm_routing_put_audio_mixer),
7168 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7169 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7170 msm_routing_put_audio_mixer),
7171 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7172 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7173 msm_routing_put_audio_mixer),
7174 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7175 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7176 msm_routing_put_audio_mixer),
7177 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7178 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7179 msm_routing_put_audio_mixer),
7180 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7181 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7182 msm_routing_put_audio_mixer),
7183 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7184 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7185 msm_routing_put_audio_mixer),
7186 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7187 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7188 msm_routing_put_audio_mixer),
7189 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7190 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7191 msm_routing_put_audio_mixer),
7192 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7193 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7194 msm_routing_put_audio_mixer),
7195 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7196 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7197 msm_routing_put_audio_mixer),
7198 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7199 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7200 msm_routing_put_audio_mixer),
7201 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7202 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7203 msm_routing_put_audio_mixer),
7204 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7205 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7206 msm_routing_put_audio_mixer),
7207 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7208 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7209 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307210 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7211 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7212 msm_routing_put_audio_mixer),
7213 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7214 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7215 msm_routing_put_audio_mixer),
7216 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7217 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7218 msm_routing_put_audio_mixer),
7219 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7220 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7221 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307222 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7223 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7224 msm_routing_put_audio_mixer),
7225 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7226 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7227 msm_routing_put_audio_mixer),
7228 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7229 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7230 msm_routing_put_audio_mixer),
7231 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7232 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7233 msm_routing_put_audio_mixer),
7234 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7235 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7236 msm_routing_put_audio_mixer),
7237 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7238 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7239 msm_routing_put_audio_mixer),
7240};
7241
7242static const struct snd_kcontrol_new mmul5_mixer_controls[] = {
7243 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7244 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7245 msm_routing_put_audio_mixer),
7246 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7247 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7248 msm_routing_put_audio_mixer),
7249 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
7250 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7251 msm_routing_put_audio_mixer),
7252 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7253 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7254 msm_routing_put_audio_mixer),
7255 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7256 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7257 msm_routing_put_audio_mixer),
7258 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
7259 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7260 msm_routing_put_audio_mixer),
7261 SOC_SINGLE_EXT("SEC_AUX_PCM_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
7262 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7263 msm_routing_put_audio_mixer),
7264 SOC_SINGLE_EXT("TERT_AUX_PCM_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
7265 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7266 msm_routing_put_audio_mixer),
7267 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
7268 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7269 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307270 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
7271 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7272 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307273 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7274 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7275 msm_routing_put_audio_mixer),
7276 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7277 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7278 msm_routing_put_audio_mixer),
7279 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7280 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7281 msm_routing_put_audio_mixer),
7282 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7283 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7284 msm_routing_put_audio_mixer),
7285 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7286 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7287 msm_routing_put_audio_mixer),
7288 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7289 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7290 msm_routing_put_audio_mixer),
7291 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7292 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7293 msm_routing_put_audio_mixer),
7294 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7295 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7296 msm_routing_put_audio_mixer),
7297 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7298 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7299 msm_routing_put_audio_mixer),
7300 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7301 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7302 msm_routing_put_audio_mixer),
7303 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7304 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7305 msm_routing_put_audio_mixer),
7306 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7307 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7308 msm_routing_put_audio_mixer),
7309 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7310 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7311 msm_routing_put_audio_mixer),
7312 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7313 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7314 msm_routing_put_audio_mixer),
7315 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7316 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7317 msm_routing_put_audio_mixer),
7318 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7319 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7320 msm_routing_put_audio_mixer),
7321 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7322 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7323 msm_routing_put_audio_mixer),
7324 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7325 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7326 msm_routing_put_audio_mixer),
7327 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7328 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7329 msm_routing_put_audio_mixer),
7330 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7331 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7332 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307333 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7334 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7335 msm_routing_put_audio_mixer),
7336 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7337 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7338 msm_routing_put_audio_mixer),
7339 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7340 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7341 msm_routing_put_audio_mixer),
7342 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7343 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7344 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307345 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7346 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7347 msm_routing_put_audio_mixer),
7348 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7349 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7350 msm_routing_put_audio_mixer),
7351 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
7352 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7353 msm_routing_put_audio_mixer),
7354 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
7355 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7356 msm_routing_put_audio_mixer),
7357 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7358 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7359 msm_routing_put_audio_mixer),
7360};
7361
7362static const struct snd_kcontrol_new mmul6_mixer_controls[] = {
7363 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7364 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7365 msm_routing_put_audio_mixer),
7366 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7367 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7368 msm_routing_put_audio_mixer),
7369 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7370 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7371 msm_routing_put_audio_mixer),
7372 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7373 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7374 msm_routing_put_audio_mixer),
7375 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7376 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7377 msm_routing_put_audio_mixer),
7378 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7379 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7380 msm_routing_put_audio_mixer),
7381 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7382 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7383 msm_routing_put_audio_mixer),
7384 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7385 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7386 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307387 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_TX,
7388 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7389 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307390 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
7391 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7392 msm_routing_put_audio_mixer),
7393 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
7394 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7395 msm_routing_put_audio_mixer),
7396 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
7397 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7398 msm_routing_put_audio_mixer),
7399 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
7400 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7401 msm_routing_put_audio_mixer),
7402 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7403 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7404 msm_routing_put_audio_mixer),
7405 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7406 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7407 msm_routing_put_audio_mixer),
7408 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7409 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7410 msm_routing_put_audio_mixer),
7411 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7412 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7413 msm_routing_put_audio_mixer),
7414 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7415 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7416 msm_routing_put_audio_mixer),
7417 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7418 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7419 msm_routing_put_audio_mixer),
7420 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7421 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7422 msm_routing_put_audio_mixer),
7423 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7424 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7425 msm_routing_put_audio_mixer),
7426 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7427 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7428 msm_routing_put_audio_mixer),
7429 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7430 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7431 msm_routing_put_audio_mixer),
7432 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7433 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7434 msm_routing_put_audio_mixer),
7435 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7436 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7437 msm_routing_put_audio_mixer),
7438 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7439 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7440 msm_routing_put_audio_mixer),
7441 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7442 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7443 msm_routing_put_audio_mixer),
7444 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7445 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7446 msm_routing_put_audio_mixer),
7447 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7448 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7449 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307450 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7451 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7452 msm_routing_put_audio_mixer),
7453 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7454 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7455 msm_routing_put_audio_mixer),
7456 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7457 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7458 msm_routing_put_audio_mixer),
7459 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7460 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7461 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307462 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7463 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7464 msm_routing_put_audio_mixer),
7465};
7466
7467static const struct snd_kcontrol_new mmul8_mixer_controls[] = {
7468 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7469 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7470 msm_routing_put_audio_mixer),
7471 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7472 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7473 msm_routing_put_audio_mixer),
7474 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7475 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7476 msm_routing_put_audio_mixer),
7477 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7478 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7479 msm_routing_put_audio_mixer),
7480 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7481 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7482 msm_routing_put_audio_mixer),
7483 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7484 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7485 msm_routing_put_audio_mixer),
7486 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7487 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7488 msm_routing_put_audio_mixer),
7489 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7490 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7491 msm_routing_put_audio_mixer),
7492 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7493 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7494 msm_routing_put_audio_mixer),
7495 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7496 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7497 msm_routing_put_audio_mixer),
7498 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7499 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7500 msm_routing_put_audio_mixer),
7501 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7502 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7503 msm_routing_put_audio_mixer),
7504 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
7505 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7506 msm_routing_put_audio_mixer),
7507 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7508 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7509 msm_routing_put_audio_mixer),
7510 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7511 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7512 msm_routing_put_audio_mixer),
7513 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7514 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7515 msm_routing_put_audio_mixer),
7516 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7517 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7518 msm_routing_put_audio_mixer),
7519 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7520 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7521 msm_routing_put_audio_mixer),
7522 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7523 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7524 msm_routing_put_audio_mixer),
7525 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7526 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7527 msm_routing_put_audio_mixer),
7528 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7529 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7530 msm_routing_put_audio_mixer),
7531 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7532 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7533 msm_routing_put_audio_mixer),
7534 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7535 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7536 msm_routing_put_audio_mixer),
7537 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7538 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7539 msm_routing_put_audio_mixer),
7540 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7541 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7542 msm_routing_put_audio_mixer),
7543 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7544 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7545 msm_routing_put_audio_mixer),
7546 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7547 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7548 msm_routing_put_audio_mixer),
7549 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7550 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7551 msm_routing_put_audio_mixer),
7552 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7553 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7554 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307555 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7556 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7557 msm_routing_put_audio_mixer),
7558 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7559 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7560 msm_routing_put_audio_mixer),
7561 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7562 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7563 msm_routing_put_audio_mixer),
7564 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7565 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7566 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307567 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
7568 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7569 msm_routing_put_audio_mixer),
7570 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7571 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7572 msm_routing_put_audio_mixer),
7573};
7574
Asish Bhattacharya34504582017-08-08 12:55:01 +05307575static const struct snd_kcontrol_new mmul16_mixer_controls[] = {
7576 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7577 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7578 msm_routing_put_audio_mixer),
7579 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7580 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7581 msm_routing_put_audio_mixer),
7582 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7583 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7584 msm_routing_put_audio_mixer),
7585 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7586 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7587 msm_routing_put_audio_mixer),
7588 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7589 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7590 msm_routing_put_audio_mixer),
7591 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7592 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7593 msm_routing_put_audio_mixer),
7594 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7595 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7596 msm_routing_put_audio_mixer),
7597 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7598 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7599 msm_routing_put_audio_mixer),
7600 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7601 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7602 msm_routing_put_audio_mixer),
7603 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7604 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7605 msm_routing_put_audio_mixer),
7606 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7607 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7608 msm_routing_put_audio_mixer),
7609 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7610 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7611 msm_routing_put_audio_mixer),
7612 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
7613 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7614 msm_routing_put_audio_mixer),
7615 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7616 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7617 msm_routing_put_audio_mixer),
7618 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7619 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7620 msm_routing_put_audio_mixer),
7621 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7622 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7623 msm_routing_put_audio_mixer),
7624 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7625 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7626 msm_routing_put_audio_mixer),
7627 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7628 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7629 msm_routing_put_audio_mixer),
7630 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7631 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7632 msm_routing_put_audio_mixer),
7633 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7634 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7635 msm_routing_put_audio_mixer),
7636 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7637 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7638 msm_routing_put_audio_mixer),
7639 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7640 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7641 msm_routing_put_audio_mixer),
7642 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7643 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7644 msm_routing_put_audio_mixer),
7645 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7646 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7647 msm_routing_put_audio_mixer),
7648 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7649 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7650 msm_routing_put_audio_mixer),
7651 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7652 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7653 msm_routing_put_audio_mixer),
7654 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7655 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7656 msm_routing_put_audio_mixer),
7657 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7658 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7659 msm_routing_put_audio_mixer),
7660 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7661 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7662 msm_routing_put_audio_mixer),
7663 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
7664 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7665 msm_routing_put_audio_mixer),
7666 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7667 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7668 msm_routing_put_audio_mixer),
7669 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
7670 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7671 msm_routing_put_audio_mixer),
7672 SOC_SINGLE_EXT("AUX_PCM_TX", MSM_BACKEND_DAI_AUXPCM_TX,
7673 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7674 msm_routing_put_audio_mixer),
7675 SOC_SINGLE_EXT("SEC_AUX_PCM_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
7676 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7677 msm_routing_put_audio_mixer),
7678 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
7679 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7680 msm_routing_put_audio_mixer),
7681};
7682
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307683static const struct snd_kcontrol_new mmul9_mixer_controls[] = {
7684 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7685 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7686 msm_routing_put_audio_mixer),
7687 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7688 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7689 msm_routing_put_audio_mixer),
7690 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7691 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7692 msm_routing_put_audio_mixer),
7693 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7694 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7695 msm_routing_put_audio_mixer),
7696 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7697 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7698 msm_routing_put_audio_mixer),
7699 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7700 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7701 msm_routing_put_audio_mixer),
7702 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7703 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7704 msm_routing_put_audio_mixer),
7705 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
7706 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7707 msm_routing_put_audio_mixer),
7708 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7709 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7710 msm_routing_put_audio_mixer),
7711 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7712 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7713 msm_routing_put_audio_mixer),
7714 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7715 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7716 msm_routing_put_audio_mixer),
7717 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7718 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7719 msm_routing_put_audio_mixer),
7720 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7721 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7722 msm_routing_put_audio_mixer),
7723 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7724 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7725 msm_routing_put_audio_mixer),
7726 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7727 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7728 msm_routing_put_audio_mixer),
7729 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7730 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7731 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307732 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7733 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7734 msm_routing_put_audio_mixer),
7735 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7736 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7737 msm_routing_put_audio_mixer),
7738 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7739 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7740 msm_routing_put_audio_mixer),
7741 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7742 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7743 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307744};
7745
Laxminath Kasam38070be2017-08-17 18:21:59 +05307746static const struct snd_kcontrol_new mmul10_mixer_controls[] = {
7747 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7748 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7749 msm_routing_put_audio_mixer),
7750 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7751 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7752 msm_routing_put_audio_mixer),
7753 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7754 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7755 msm_routing_put_audio_mixer),
7756 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7757 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7758 msm_routing_put_audio_mixer),
7759 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7760 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7761 msm_routing_put_audio_mixer),
7762 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7763 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7764 msm_routing_put_audio_mixer),
7765 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7766 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7767 msm_routing_put_audio_mixer),
7768 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
7769 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7770 msm_routing_put_audio_mixer),
Vikram Panduranga72863152017-09-06 15:47:35 -07007771 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
7772 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7773 msm_routing_put_audio_mixer),
Laxminath Kasam38070be2017-08-17 18:21:59 +05307774 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7775 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7776 msm_routing_put_audio_mixer),
7777 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7778 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7779 msm_routing_put_audio_mixer),
7780 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7781 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7782 msm_routing_put_audio_mixer),
7783 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7784 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7785 msm_routing_put_audio_mixer),
7786 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7787 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7788 msm_routing_put_audio_mixer),
7789 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7790 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7791 msm_routing_put_audio_mixer),
7792 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7793 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7794 msm_routing_put_audio_mixer),
7795 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7796 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7797 msm_routing_put_audio_mixer),
7798 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7799 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7800 msm_routing_put_audio_mixer),
Vikram Panduranga016c49f2017-09-11 15:15:56 -07007801 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
7802 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7803 msm_routing_put_audio_mixer),
7804 SOC_SINGLE_EXT("AUX_PCM_TX", MSM_BACKEND_DAI_AUXPCM_TX,
7805 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7806 msm_routing_put_audio_mixer),
7807 SOC_SINGLE_EXT("SEC_AUX_PCM_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
7808 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7809 msm_routing_put_audio_mixer),
7810 SOC_SINGLE_EXT("TERT_AUX_PCM_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
7811 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7812 msm_routing_put_audio_mixer),
7813 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
7814 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7815 msm_routing_put_audio_mixer),
7816 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7817 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7818 msm_routing_put_audio_mixer),
7819 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7820 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7821 msm_routing_put_audio_mixer),
7822 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7823 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7824 msm_routing_put_audio_mixer),
Laxminath Kasam38070be2017-08-17 18:21:59 +05307825};
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307826static const struct snd_kcontrol_new mmul17_mixer_controls[] = {
7827 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7828 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7829 msm_routing_put_audio_mixer),
7830 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7831 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7832 msm_routing_put_audio_mixer),
7833 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7834 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7835 msm_routing_put_audio_mixer),
7836 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7837 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7838 msm_routing_put_audio_mixer),
7839 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7840 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7841 msm_routing_put_audio_mixer),
7842 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7843 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7844 msm_routing_put_audio_mixer),
7845 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7846 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7847 msm_routing_put_audio_mixer),
7848};
7849
7850static const struct snd_kcontrol_new mmul18_mixer_controls[] = {
7851 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7852 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
7853 msm_routing_put_audio_mixer),
7854 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7855 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
7856 msm_routing_put_audio_mixer),
7857 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7858 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
7859 msm_routing_put_audio_mixer),
7860 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7861 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
7862 msm_routing_put_audio_mixer),
7863 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7864 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
7865 msm_routing_put_audio_mixer),
7866 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7867 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
7868 msm_routing_put_audio_mixer),
7869 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7870 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
7871 msm_routing_put_audio_mixer),
7872 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7873 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
7874 msm_routing_put_audio_mixer),
7875};
7876
7877static const struct snd_kcontrol_new mmul19_mixer_controls[] = {
7878 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7879 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
7880 msm_routing_put_audio_mixer),
7881 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7882 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
7883 msm_routing_put_audio_mixer),
7884 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7885 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
7886 msm_routing_put_audio_mixer),
7887 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7888 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
7889 msm_routing_put_audio_mixer),
7890 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7891 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
7892 msm_routing_put_audio_mixer),
7893 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7894 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
7895 msm_routing_put_audio_mixer),
7896 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7897 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
7898 msm_routing_put_audio_mixer),
7899};
7900
7901static const struct snd_kcontrol_new mmul20_mixer_controls[] = {
7902 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7903 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7904 msm_routing_put_audio_mixer),
7905 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7906 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7907 msm_routing_put_audio_mixer),
7908 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7909 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7910 msm_routing_put_audio_mixer),
7911 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7912 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7913 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307914 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_TX,
7915 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7916 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307917 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7918 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7919 msm_routing_put_audio_mixer),
7920 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7921 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7922 msm_routing_put_audio_mixer),
7923 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7924 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7925 msm_routing_put_audio_mixer),
7926 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7927 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7928 msm_routing_put_audio_mixer),
7929 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7930 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7931 msm_routing_put_audio_mixer),
7932 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7933 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7934 msm_routing_put_audio_mixer),
7935 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7936 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7937 msm_routing_put_audio_mixer),
7938 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7939 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7940 msm_routing_put_audio_mixer),
7941 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7942 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7943 msm_routing_put_audio_mixer),
7944 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7945 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7946 msm_routing_put_audio_mixer),
7947 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7948 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7949 msm_routing_put_audio_mixer),
7950 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7951 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7952 msm_routing_put_audio_mixer),
7953 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7954 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7955 msm_routing_put_audio_mixer),
7956 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7957 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7958 msm_routing_put_audio_mixer),
7959 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7960 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7961 msm_routing_put_audio_mixer),
7962 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7963 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7964 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307965 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7966 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7967 msm_routing_put_audio_mixer),
7968 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7969 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7970 msm_routing_put_audio_mixer),
7971 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7972 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7973 msm_routing_put_audio_mixer),
7974 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7975 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7976 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307977};
7978
7979static const struct snd_kcontrol_new pri_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307980 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_PRI_I2S_RX,
7981 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
7982 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307983 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_PRI_I2S_RX,
7984 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
7985 msm_routing_put_voice_mixer),
7986 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_PRI_I2S_RX,
7987 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
7988 msm_routing_put_voice_mixer),
7989 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_PRI_I2S_RX,
7990 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
7991 msm_routing_put_voice_mixer),
7992 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_PRI_I2S_RX,
7993 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
7994 msm_routing_put_voice_mixer),
7995};
7996
7997static const struct snd_kcontrol_new sec_i2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307998 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SEC_I2S_RX,
7999 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8000 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308001 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SEC_I2S_RX,
8002 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8003 msm_routing_put_voice_mixer),
8004 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SEC_I2S_RX,
8005 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8006 msm_routing_put_voice_mixer),
8007};
8008
8009static const struct snd_kcontrol_new sec_mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308010 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
8011 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8012 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308013 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
8014 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8015 msm_routing_put_voice_mixer),
8016 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
8017 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8018 msm_routing_put_voice_mixer),
8019 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
8020 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8021 msm_routing_put_voice_mixer),
8022 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
8023 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8024 msm_routing_put_voice_mixer),
8025};
8026
8027static const struct snd_kcontrol_new slimbus_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308028 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8029 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8030 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308031 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8032 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8033 msm_routing_put_voice_mixer),
8034 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8035 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8036 msm_routing_put_voice_mixer),
8037 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8038 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8039 msm_routing_put_voice_mixer),
8040 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8041 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8042 msm_routing_put_voice_mixer),
8043};
8044
8045static const struct snd_kcontrol_new slimbus_6_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308046 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8047 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8048 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308049 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8050 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8051 msm_routing_put_voice_mixer),
8052 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8053 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8054 msm_routing_put_voice_mixer),
8055 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8056 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8057 msm_routing_put_voice_mixer),
8058 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8059 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8060 msm_routing_put_voice_mixer),
8061};
8062
8063static const struct snd_kcontrol_new usb_audio_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308064 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_USB_RX,
8065 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8066 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308067 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_USB_RX,
8068 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8069 msm_routing_put_voice_mixer),
8070 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_USB_RX,
8071 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8072 msm_routing_put_voice_mixer),
8073 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_USB_RX,
8074 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8075 msm_routing_put_voice_mixer),
8076 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_USB_RX,
8077 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8078 msm_routing_put_voice_mixer),
8079};
8080
Aalique Grahamee4fd7d52017-11-28 13:24:13 -08008081static const struct snd_kcontrol_new display_port_rx_voice_mixer_controls[] = {
8082 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
8083 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8084 msm_routing_put_voice_mixer),
Aalique Grahamee4fd7d52017-11-28 13:24:13 -08008085 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
8086 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8087 msm_routing_put_voice_mixer),
8088 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
8089 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8090 msm_routing_put_voice_mixer),
8091 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
8092 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8093 msm_routing_put_voice_mixer),
8094 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
8095 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8096 msm_routing_put_voice_mixer),
8097};
8098
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308099static const struct snd_kcontrol_new bt_sco_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308100 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8101 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8102 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308103 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8104 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8105 msm_routing_put_voice_mixer),
8106 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8107 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8108 msm_routing_put_voice_mixer),
8109 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8110 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8111 msm_routing_put_voice_mixer),
8112 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8113 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8114 msm_routing_put_voice_mixer),
8115};
8116
8117static const struct snd_kcontrol_new mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308118 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_MI2S_RX,
8119 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8120 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308121 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_MI2S_RX,
8122 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8123 msm_routing_put_voice_mixer),
8124 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_MI2S_RX,
8125 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8126 msm_routing_put_voice_mixer),
8127 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_MI2S_RX,
8128 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8129 msm_routing_put_voice_mixer),
8130 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_MI2S_RX,
8131 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8132 msm_routing_put_voice_mixer),
8133};
8134
8135static const struct snd_kcontrol_new pri_mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308136 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_PRI_MI2S_RX,
8137 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8138 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308139 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_PRI_MI2S_RX,
8140 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8141 msm_routing_put_voice_mixer),
8142 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_PRI_MI2S_RX,
8143 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8144 msm_routing_put_voice_mixer),
8145 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_PRI_MI2S_RX,
8146 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8147 msm_routing_put_voice_mixer),
8148 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_PRI_MI2S_RX,
8149 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8150 msm_routing_put_voice_mixer),
8151};
8152
8153static const struct snd_kcontrol_new int0_mi2s_rx_voice_mixer_controls[] = {
8154 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_INT0_MI2S_RX,
8155 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8156 msm_routing_put_voice_mixer),
8157 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_INT0_MI2S_RX,
8158 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8159 msm_routing_put_voice_mixer),
8160 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_INT0_MI2S_RX,
8161 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8162 msm_routing_put_voice_mixer),
8163 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_INT0_MI2S_RX,
8164 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8165 msm_routing_put_voice_mixer),
8166 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_INT0_MI2S_RX,
8167 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8168 msm_routing_put_voice_mixer),
8169};
8170
8171static const struct snd_kcontrol_new int4_mi2s_rx_voice_mixer_controls[] = {
8172 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_INT4_MI2S_RX,
8173 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8174 msm_routing_put_voice_mixer),
8175 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_INT4_MI2S_RX,
8176 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8177 msm_routing_put_voice_mixer),
8178 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_INT4_MI2S_RX,
8179 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8180 msm_routing_put_voice_mixer),
8181 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_INT4_MI2S_RX,
8182 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8183 msm_routing_put_voice_mixer),
8184 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_INT4_MI2S_RX,
8185 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8186 msm_routing_put_voice_mixer),
8187};
8188
8189static const struct snd_kcontrol_new tert_mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308190 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8191 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8192 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308193 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8194 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8195 msm_routing_put_voice_mixer),
8196 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8197 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8198 msm_routing_put_voice_mixer),
8199 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8200 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8201 msm_routing_put_voice_mixer),
8202 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8203 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8204 msm_routing_put_voice_mixer),
8205};
8206
8207static const struct snd_kcontrol_new quat_mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308208 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8209 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8210 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308211 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8212 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8213 msm_routing_put_voice_mixer),
8214 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8215 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8216 msm_routing_put_voice_mixer),
8217 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8218 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8219 msm_routing_put_voice_mixer),
8220 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8221 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8222 msm_routing_put_voice_mixer),
8223};
8224
8225static const struct snd_kcontrol_new quin_mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308226 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8227 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8228 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308229 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8230 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8231 msm_routing_put_voice_mixer),
8232 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8233 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8234 msm_routing_put_voice_mixer),
8235 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8236 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8237 msm_routing_put_voice_mixer),
8238 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8239 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8240 msm_routing_put_voice_mixer),
8241};
8242
8243static const struct snd_kcontrol_new afe_pcm_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308244 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_AFE_PCM_RX,
8245 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8246 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308247 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_AFE_PCM_RX,
8248 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8249 msm_routing_put_voice_mixer),
8250 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_AFE_PCM_RX,
8251 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8252 msm_routing_put_voice_mixer),
8253 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_AFE_PCM_RX,
8254 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8255 msm_routing_put_voice_mixer),
8256 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_AFE_PCM_RX,
8257 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8258 msm_routing_put_voice_mixer),
8259};
8260
8261static const struct snd_kcontrol_new aux_pcm_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308262 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_AUXPCM_RX,
8263 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8264 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308265 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_AUXPCM_RX,
8266 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8267 msm_routing_put_voice_mixer),
8268 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_AUXPCM_RX,
8269 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8270 msm_routing_put_voice_mixer),
8271 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_AUXPCM_RX,
8272 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8273 msm_routing_put_voice_mixer),
8274 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_AUXPCM_RX,
8275 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8276 msm_routing_put_voice_mixer),
8277};
8278
8279static const struct snd_kcontrol_new sec_aux_pcm_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308280 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8281 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8282 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308283 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8284 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8285 msm_routing_put_voice_mixer),
8286 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8287 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8288 msm_routing_put_voice_mixer),
8289 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8290 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8291 msm_routing_put_voice_mixer),
8292 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8293 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8294 msm_routing_put_voice_mixer),
8295};
8296
8297static const struct snd_kcontrol_new tert_aux_pcm_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308298 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8299 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8300 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308301 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8302 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8303 msm_routing_put_voice_mixer),
8304 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8305 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8306 msm_routing_put_voice_mixer),
8307 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8308 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8309 msm_routing_put_voice_mixer),
8310 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8311 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8312 msm_routing_put_voice_mixer),
8313};
8314
8315static const struct snd_kcontrol_new quat_aux_pcm_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308316 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8317 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8318 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308319 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8320 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8321 msm_routing_put_voice_mixer),
8322 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8323 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8324 msm_routing_put_voice_mixer),
8325 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8326 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8327 msm_routing_put_voice_mixer),
8328 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8329 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8330 msm_routing_put_voice_mixer),
8331};
8332
Rohit Kumara5077932017-09-10 22:05:05 +05308333static const struct snd_kcontrol_new quin_aux_pcm_rx_voice_mixer_controls[] = {
Rohit Kumara5077932017-09-10 22:05:05 +05308334 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
8335 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8336 msm_routing_put_voice_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308337 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
8338 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8339 msm_routing_put_voice_mixer),
8340 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
8341 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8342 msm_routing_put_voice_mixer),
8343 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
8344 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8345 msm_routing_put_voice_mixer),
8346 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
8347 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8348 msm_routing_put_voice_mixer),
8349};
8350
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308351static const struct snd_kcontrol_new hdmi_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308352 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_HDMI_RX,
8353 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8354 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308355 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_HDMI_RX,
8356 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8357 msm_routing_put_voice_mixer),
8358 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_HDMI_RX,
8359 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8360 msm_routing_put_voice_mixer),
8361 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_HDMI_RX,
8362 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8363 msm_routing_put_voice_mixer),
8364 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_HDMI_RX,
8365 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8366 msm_routing_put_voice_mixer),
8367};
8368
8369static const struct snd_kcontrol_new slimbus_7_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308370 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8371 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8372 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308373 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8374 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8375 msm_routing_put_voice_mixer),
8376 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8377 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8378 msm_routing_put_voice_mixer),
8379 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8380 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8381 msm_routing_put_voice_mixer),
8382 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8383 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8384 msm_routing_put_voice_mixer),
8385};
8386
8387static const struct snd_kcontrol_new slimbus_8_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308388 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8389 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8390 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308391 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8392 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8393 msm_routing_put_voice_mixer),
8394 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8395 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8396 msm_routing_put_voice_mixer),
8397 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8398 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8399 msm_routing_put_voice_mixer),
8400 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8401 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8402 msm_routing_put_voice_mixer),
8403};
8404
8405static const struct snd_kcontrol_new quat_tdm_rx_2_voice_mixer_controls[] = {
8406 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
8407 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8408 msm_routing_put_voice_mixer),
8409};
8410
8411static const struct snd_kcontrol_new stub_rx_mixer_controls[] = {
kunleizdf5a00a2017-11-27 15:27:36 +08008412 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_EXTPROC_RX,
8413 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8414 msm_routing_put_voice_mixer),
8415 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_EXTPROC_RX,
8416 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8417 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308418};
8419
8420static const struct snd_kcontrol_new slimbus_1_rx_mixer_controls[] = {
kunleizdf5a00a2017-11-27 15:27:36 +08008421 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_1_RX,
8422 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8423 msm_routing_put_voice_mixer),
8424 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_1_RX,
8425 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8426 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308427};
8428
8429static const struct snd_kcontrol_new slimbus_3_rx_mixer_controls[] = {
kunleizdf5a00a2017-11-27 15:27:36 +08008430 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_3_RX,
8431 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8432 msm_routing_put_voice_mixer),
8433 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_3_RX,
8434 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8435 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308436};
8437
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308438static const struct snd_kcontrol_new tx_voicemmode1_mixer_controls[] = {
8439 SOC_SINGLE_EXT("PRI_TX_MMode1", MSM_BACKEND_DAI_PRI_I2S_TX,
8440 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8441 msm_routing_put_voice_mixer),
8442 SOC_SINGLE_EXT("MI2S_TX_MMode1", MSM_BACKEND_DAI_MI2S_TX,
8443 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8444 msm_routing_put_voice_mixer),
8445 SOC_SINGLE_EXT("SLIM_0_TX_MMode1",
8446 MSM_BACKEND_DAI_SLIMBUS_0_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8447 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8448 SOC_SINGLE_EXT("INT_BT_SCO_TX_MMode1",
8449 MSM_BACKEND_DAI_INT_BT_SCO_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8450 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8451 SOC_SINGLE_EXT("AFE_PCM_TX_MMode1",
8452 MSM_BACKEND_DAI_AFE_PCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0,
8453 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8454 SOC_SINGLE_EXT("AUX_PCM_TX_MMode1",
8455 MSM_BACKEND_DAI_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0,
8456 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8457 SOC_SINGLE_EXT("SEC_AUX_PCM_TX_MMode1",
8458 MSM_BACKEND_DAI_SEC_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8459 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8460 SOC_SINGLE_EXT("TERT_AUX_PCM_TX_MMode1",
8461 MSM_BACKEND_DAI_TERT_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8462 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8463 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX_MMode1",
8464 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8465 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308466 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX_MMode1",
8467 MSM_BACKEND_DAI_QUIN_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8468 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308469 SOC_SINGLE_EXT("PRI_MI2S_TX_MMode1",
8470 MSM_BACKEND_DAI_PRI_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0,
8471 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8472 SOC_SINGLE_EXT("TERT_MI2S_TX_MMode1",
8473 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE1,
8474 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8475 SOC_SINGLE_EXT("INT3_MI2S_TX_MMode1",
8476 MSM_BACKEND_DAI_INT3_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE1,
8477 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8478 SOC_SINGLE_EXT("SLIM_7_TX_MMode1",
8479 MSM_BACKEND_DAI_SLIMBUS_7_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8480 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8481 SOC_SINGLE_EXT("SLIM_8_TX_MMode1",
8482 MSM_BACKEND_DAI_SLIMBUS_8_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8483 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8484 SOC_SINGLE_EXT("USB_AUDIO_TX_MMode1", MSM_BACKEND_DAI_USB_TX,
8485 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8486 msm_routing_put_voice_mixer),
8487 SOC_SINGLE_EXT("QUAT_TDM_TX_0_MMode1",
8488 MSM_BACKEND_DAI_QUAT_TDM_TX_0, MSM_FRONTEND_DAI_VOICEMMODE1,
8489 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8490};
8491
8492static const struct snd_kcontrol_new tx_voicemmode2_mixer_controls[] = {
8493 SOC_SINGLE_EXT("PRI_TX_MMode2", MSM_BACKEND_DAI_PRI_I2S_TX,
8494 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8495 msm_routing_put_voice_mixer),
8496 SOC_SINGLE_EXT("MI2S_TX_MMode2", MSM_BACKEND_DAI_MI2S_TX,
8497 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8498 msm_routing_put_voice_mixer),
8499 SOC_SINGLE_EXT("SLIM_0_TX_MMode2",
8500 MSM_BACKEND_DAI_SLIMBUS_0_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8501 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8502 SOC_SINGLE_EXT("INT_BT_SCO_TX_MMode2",
8503 MSM_BACKEND_DAI_INT_BT_SCO_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8504 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8505 SOC_SINGLE_EXT("AFE_PCM_TX_MMode2",
8506 MSM_BACKEND_DAI_AFE_PCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0,
8507 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8508 SOC_SINGLE_EXT("AUX_PCM_TX_MMode2",
8509 MSM_BACKEND_DAI_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0,
8510 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8511 SOC_SINGLE_EXT("SEC_AUX_PCM_TX_MMode2",
8512 MSM_BACKEND_DAI_SEC_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8513 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8514 SOC_SINGLE_EXT("TERT_AUX_PCM_TX_MMode2",
8515 MSM_BACKEND_DAI_TERT_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8516 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8517 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX_MMode2",
8518 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8519 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308520 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX_MMode2",
8521 MSM_BACKEND_DAI_QUIN_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8522 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308523 SOC_SINGLE_EXT("PRI_MI2S_TX_MMode2",
8524 MSM_BACKEND_DAI_PRI_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0,
8525 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8526 SOC_SINGLE_EXT("TERT_MI2S_TX_MMode2",
8527 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE2,
8528 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8529 SOC_SINGLE_EXT("INT3_MI2S_TX_MMode2",
8530 MSM_BACKEND_DAI_INT3_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE2,
8531 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8532 SOC_SINGLE_EXT("SLIM_7_TX_MMode2",
8533 MSM_BACKEND_DAI_SLIMBUS_7_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8534 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8535 SOC_SINGLE_EXT("SLIM_8_TX_MMode2",
8536 MSM_BACKEND_DAI_SLIMBUS_8_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8537 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8538 SOC_SINGLE_EXT("USB_AUDIO_TX_MMode2",
8539 MSM_BACKEND_DAI_USB_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8540 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8541};
8542
8543static const struct snd_kcontrol_new tx_voip_mixer_controls[] = {
8544 SOC_SINGLE_EXT("PRI_TX_Voip", MSM_BACKEND_DAI_PRI_I2S_TX,
8545 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8546 msm_routing_put_voice_mixer),
8547 SOC_SINGLE_EXT("MI2S_TX_Voip", MSM_BACKEND_DAI_MI2S_TX,
8548 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8549 msm_routing_put_voice_mixer),
8550 SOC_SINGLE_EXT("SLIM_0_TX_Voip", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8551 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8552 msm_routing_put_voice_mixer),
8553 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX_Voip", MSM_BACKEND_DAI_INT_BT_SCO_TX,
8554 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8555 msm_routing_put_voice_mixer),
8556 SOC_SINGLE_EXT("AFE_PCM_TX_Voip", MSM_BACKEND_DAI_AFE_PCM_TX,
8557 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8558 msm_routing_put_voice_mixer),
8559 SOC_SINGLE_EXT("AUX_PCM_TX_Voip", MSM_BACKEND_DAI_AUXPCM_TX,
8560 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8561 msm_routing_put_voice_mixer),
8562 SOC_SINGLE_EXT("SEC_AUX_PCM_TX_Voip", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
8563 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8564 msm_routing_put_voice_mixer),
8565 SOC_SINGLE_EXT("TERT_AUX_PCM_TX_Voip", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
8566 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8567 msm_routing_put_voice_mixer),
8568 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX_Voip", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
8569 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8570 msm_routing_put_voice_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308571 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX_Voip", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
8572 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8573 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308574 SOC_SINGLE_EXT("PRI_MI2S_TX_Voip", MSM_BACKEND_DAI_PRI_MI2S_TX,
8575 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8576 msm_routing_put_voice_mixer),
8577 SOC_SINGLE_EXT("TERT_MI2S_TX_Voip", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
8578 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8579 msm_routing_put_voice_mixer),
8580 SOC_SINGLE_EXT("INT3_MI2S_TX_Voip", MSM_BACKEND_DAI_INT3_MI2S_TX,
8581 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8582 msm_routing_put_voice_mixer),
8583 SOC_SINGLE_EXT("SLIM_7_TX_Voip", MSM_BACKEND_DAI_SLIMBUS_7_TX,
8584 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8585 msm_routing_put_voice_mixer),
8586 SOC_SINGLE_EXT("SLIM_8_TX_Voip", MSM_BACKEND_DAI_SLIMBUS_8_TX,
8587 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8588 msm_routing_put_voice_mixer),
8589 SOC_SINGLE_EXT("USB_AUDIO_TX_Voip", MSM_BACKEND_DAI_USB_TX,
8590 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8591 msm_routing_put_voice_mixer),
8592};
8593
8594static const struct snd_kcontrol_new tx_voice_stub_mixer_controls[] = {
8595 SOC_SINGLE_EXT("STUB_TX_HL", MSM_BACKEND_DAI_EXTPROC_TX,
8596 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8597 msm_routing_put_voice_stub_mixer),
8598 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
8599 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8600 msm_routing_put_voice_stub_mixer),
8601 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
8602 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8603 msm_routing_put_voice_stub_mixer),
8604 SOC_SINGLE_EXT("STUB_1_TX_HL", MSM_BACKEND_DAI_EXTPROC_EC_TX,
8605 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8606 msm_routing_put_voice_stub_mixer),
8607 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
8608 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8609 msm_routing_put_voice_stub_mixer),
8610 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
8611 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8612 msm_routing_put_voice_stub_mixer),
8613 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
8614 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8615 msm_routing_put_voice_stub_mixer),
8616 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
8617 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8618 msm_routing_put_voice_stub_mixer),
8619 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
8620 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8621 msm_routing_put_voice_stub_mixer),
8622 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
8623 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8624 msm_routing_put_voice_stub_mixer),
8625 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
8626 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8627 msm_routing_put_voice_stub_mixer),
8628 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
8629 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8630 msm_routing_put_voice_stub_mixer),
8631 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
8632 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8633 msm_routing_put_voice_stub_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308634 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
8635 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8636 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308637 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8638 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8639 msm_routing_put_voice_stub_mixer),
8640 SOC_SINGLE_EXT("SLIM_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
8641 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8642 msm_routing_put_voice_stub_mixer),
8643 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
8644 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8645 msm_routing_put_voice_stub_mixer),
8646 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
8647 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8648 msm_routing_put_voice_stub_mixer),
8649 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
8650 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8651 msm_routing_put_voice_stub_mixer),
8652};
8653
8654static const struct snd_kcontrol_new tx_voice2_stub_mixer_controls[] = {
8655 SOC_SINGLE_EXT("STUB_TX_HL", MSM_BACKEND_DAI_EXTPROC_TX,
8656 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8657 msm_routing_put_voice_stub_mixer),
8658 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
8659 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8660 msm_routing_put_voice_stub_mixer),
8661 SOC_SINGLE_EXT("STUB_1_TX_HL", MSM_BACKEND_DAI_EXTPROC_EC_TX,
8662 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8663 msm_routing_put_voice_stub_mixer),
8664 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
8665 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8666 msm_routing_put_voice_stub_mixer),
8667 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
8668 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8669 msm_routing_put_voice_stub_mixer),
8670 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
8671 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8672 msm_routing_put_voice_stub_mixer),
8673 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
8674 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8675 msm_routing_put_voice_stub_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308676 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
8677 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8678 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308679 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8680 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8681 msm_routing_put_voice_stub_mixer),
8682 SOC_SINGLE_EXT("SLIM_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
8683 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8684 msm_routing_put_voice_stub_mixer),
8685 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
8686 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8687 msm_routing_put_voice_stub_mixer),
8688 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
8689 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8690 msm_routing_put_voice_stub_mixer),
8691 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
8692 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8693 msm_routing_put_voice_stub_mixer),
8694 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
8695 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8696 msm_routing_put_voice_stub_mixer),
8697 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
8698 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8699 msm_routing_put_voice_stub_mixer),
8700};
8701
8702static const struct snd_kcontrol_new tx_volte_stub_mixer_controls[] = {
8703 SOC_SINGLE_EXT("STUB_TX_HL", MSM_BACKEND_DAI_EXTPROC_TX,
8704 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8705 msm_routing_put_voice_stub_mixer),
8706 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
8707 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8708 msm_routing_put_voice_stub_mixer),
8709 SOC_SINGLE_EXT("STUB_1_TX_HL", MSM_BACKEND_DAI_EXTPROC_EC_TX,
8710 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8711 msm_routing_put_voice_stub_mixer),
8712 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
8713 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8714 msm_routing_put_voice_stub_mixer),
8715 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
8716 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8717 msm_routing_put_voice_stub_mixer),
8718 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
8719 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8720 msm_routing_put_voice_stub_mixer),
8721 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
8722 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8723 msm_routing_put_voice_stub_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308724 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
8725 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8726 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308727 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8728 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8729 msm_routing_put_voice_stub_mixer),
8730 SOC_SINGLE_EXT("SLIM_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
8731 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8732 msm_routing_put_voice_stub_mixer),
8733 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
8734 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8735 msm_routing_put_voice_stub_mixer),
8736 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
8737 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8738 msm_routing_put_voice_stub_mixer),
8739 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
8740 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8741 msm_routing_put_voice_stub_mixer),
8742 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
8743 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8744 msm_routing_put_voice_stub_mixer),
8745 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
8746 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8747 msm_routing_put_voice_stub_mixer),
8748};
8749
8750static const struct snd_kcontrol_new tx_qchat_mixer_controls[] = {
8751 SOC_SINGLE_EXT("PRI_TX_QCHAT", MSM_BACKEND_DAI_PRI_I2S_TX,
8752 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8753 msm_routing_put_voice_mixer),
8754 SOC_SINGLE_EXT("SLIM_0_TX_QCHAT", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8755 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8756 msm_routing_put_voice_mixer),
8757 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX_QCHAT",
8758 MSM_BACKEND_DAI_INT_BT_SCO_TX, MSM_FRONTEND_DAI_QCHAT, 1, 0,
8759 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8760 SOC_SINGLE_EXT("AFE_PCM_TX_QCHAT", MSM_BACKEND_DAI_AFE_PCM_TX,
8761 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8762 msm_routing_put_voice_mixer),
8763 SOC_SINGLE_EXT("AUX_PCM_TX_QCHAT", MSM_BACKEND_DAI_AUXPCM_TX,
8764 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8765 msm_routing_put_voice_mixer),
8766 SOC_SINGLE_EXT("SEC_AUX_PCM_TX_QCHAT", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
8767 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8768 msm_routing_put_voice_mixer),
8769 SOC_SINGLE_EXT("TERT_AUX_PCM_TX_QCHAT", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
8770 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8771 msm_routing_put_voice_mixer),
8772 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX_QCHAT", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
8773 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8774 msm_routing_put_voice_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308775 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX_QCHAT", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
8776 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8777 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308778 SOC_SINGLE_EXT("MI2S_TX_QCHAT", MSM_BACKEND_DAI_MI2S_TX,
8779 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8780 msm_routing_put_voice_mixer),
8781 SOC_SINGLE_EXT("PRI_MI2S_TX_QCHAT", MSM_BACKEND_DAI_PRI_MI2S_TX,
8782 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8783 msm_routing_put_voice_mixer),
8784 SOC_SINGLE_EXT("TERT_MI2S_TX_QCHAT", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
8785 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8786 msm_routing_put_voice_mixer),
8787 SOC_SINGLE_EXT("INT3_MI2S_TX_QCHAT", MSM_BACKEND_DAI_INT3_MI2S_TX,
8788 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8789 msm_routing_put_voice_mixer),
8790 SOC_SINGLE_EXT("SLIM_7_TX_QCHAT", MSM_BACKEND_DAI_SLIMBUS_7_TX,
8791 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8792 msm_routing_put_voice_mixer),
8793 SOC_SINGLE_EXT("SLIM_8_TX_QCHAT", MSM_BACKEND_DAI_SLIMBUS_8_TX,
8794 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8795 msm_routing_put_voice_mixer),
8796 SOC_SINGLE_EXT("USB_AUDIO_TX_QCHAT", MSM_BACKEND_DAI_USB_TX,
8797 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8798 msm_routing_put_voice_mixer),
8799};
8800
8801static const struct snd_kcontrol_new int0_mi2s_rx_port_mixer_controls[] = {
8802 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
8803 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8804 msm_routing_put_port_mixer),
8805 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
8806 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8807 msm_routing_put_port_mixer),
8808 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
8809 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8810 msm_routing_put_port_mixer),
8811 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
8812 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8813 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308814 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
8815 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8816 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308817 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
8818 MSM_BACKEND_DAI_INT3_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8819 msm_routing_put_port_mixer),
8820 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
8821 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
8822 msm_routing_put_port_mixer),
8823 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
8824 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
8825 msm_routing_put_port_mixer),
8826 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
8827 MSM_BACKEND_DAI_SLIMBUS_7_TX, 1, 0, msm_routing_get_port_mixer,
8828 msm_routing_put_port_mixer),
8829 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
8830 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
8831 msm_routing_put_port_mixer),
8832};
8833
8834static const struct snd_kcontrol_new int4_mi2s_rx_port_mixer_controls[] = {
8835 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
8836 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8837 msm_routing_put_port_mixer),
8838 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
8839 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8840 msm_routing_put_port_mixer),
8841 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
8842 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8843 msm_routing_put_port_mixer),
8844 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
8845 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8846 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308847 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
8848 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8849 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308850 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
8851 MSM_BACKEND_DAI_INT3_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8852 msm_routing_put_port_mixer),
8853 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
8854 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
8855 msm_routing_put_port_mixer),
8856 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
8857 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
8858 msm_routing_put_port_mixer),
8859 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
8860 MSM_BACKEND_DAI_SLIMBUS_7_TX, 1, 0, msm_routing_get_port_mixer,
8861 msm_routing_put_port_mixer),
8862 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
8863 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
8864 msm_routing_put_port_mixer),
8865};
8866
8867static const struct snd_kcontrol_new sbus_0_rx_port_mixer_controls[] = {
8868 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8869 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
8870 msm_routing_put_port_mixer),
8871 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8872 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
8873 msm_routing_put_port_mixer),
8874 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8875 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
8876 msm_routing_put_port_mixer),
8877 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8878 MSM_BACKEND_DAI_SLIMBUS_7_TX, 1, 0, msm_routing_get_port_mixer,
8879 msm_routing_put_port_mixer),
8880 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8881 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
8882 msm_routing_put_port_mixer),
8883 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8884 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
8885 msm_routing_put_port_mixer),
8886 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8887 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
8888 msm_routing_put_port_mixer),
8889 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8890 MSM_BACKEND_DAI_TERT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
8891 msm_routing_put_port_mixer),
8892 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8893 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
8894 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308895 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8896 MSM_BACKEND_DAI_QUIN_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
8897 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308898 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8899 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8900 msm_routing_put_port_mixer),
8901 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8902 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8903 msm_routing_put_port_mixer),
8904 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8905 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8906 msm_routing_put_port_mixer),
8907 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8908 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8909 msm_routing_put_port_mixer),
8910 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8911 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8912 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308913 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8914 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8915 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308916 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8917 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
8918 msm_routing_put_port_mixer),
8919 SOC_SINGLE_EXT("PRI_MI2S_RX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8920 MSM_BACKEND_DAI_PRI_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
8921 msm_routing_put_port_mixer),
8922 SOC_SINGLE_EXT("SEC_MI2S_RX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8923 MSM_BACKEND_DAI_SECONDARY_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
8924 msm_routing_put_port_mixer),
8925 SOC_SINGLE_EXT("TERT_MI2S_RX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8926 MSM_BACKEND_DAI_TERTIARY_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
8927 msm_routing_put_port_mixer),
8928 SOC_SINGLE_EXT("QUAT_MI2S_RX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8929 MSM_BACKEND_DAI_QUATERNARY_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
8930 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308931 SOC_SINGLE_EXT("QUIN_MI2S_RX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8932 MSM_BACKEND_DAI_QUINARY_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
8933 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308934};
8935
8936static const struct snd_kcontrol_new aux_pcm_rx_port_mixer_controls[] = {
8937 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_RX,
8938 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
8939 msm_routing_put_port_mixer),
8940 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_AUXPCM_RX,
8941 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
8942 msm_routing_put_port_mixer),
8943 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_AUXPCM_RX,
8944 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
8945 msm_routing_put_port_mixer),
8946 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_RX,
8947 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
8948 msm_routing_put_port_mixer),
8949 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_AUXPCM_RX,
8950 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0, msm_routing_get_port_mixer,
8951 msm_routing_put_port_mixer),
Karthikeyan Mani9f66f6f2017-12-13 13:38:46 -08008952 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_AUXPCM_RX,
8953 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8954 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308955};
8956
8957static const struct snd_kcontrol_new sec_auxpcm_rx_port_mixer_controls[] = {
8958 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8959 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
8960 msm_routing_put_port_mixer),
8961 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8962 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
8963 msm_routing_put_port_mixer),
8964 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8965 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
8966 msm_routing_put_port_mixer),
Karthikeyan Mani9f66f6f2017-12-13 13:38:46 -08008967 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8968 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8969 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308970};
8971
8972static const struct snd_kcontrol_new tert_auxpcm_rx_port_mixer_controls[] = {
8973 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8974 MSM_BACKEND_DAI_TERT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
8975 msm_routing_put_port_mixer),
8976 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8977 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
8978 msm_routing_put_port_mixer),
8979 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8980 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
8981 msm_routing_put_port_mixer),
8982};
8983
8984static const struct snd_kcontrol_new quat_auxpcm_rx_port_mixer_controls[] = {
8985 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8986 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
8987 msm_routing_put_port_mixer),
8988 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8989 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
8990 msm_routing_put_port_mixer),
8991 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8992 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
8993 msm_routing_put_port_mixer),
8994};
8995
Rohit Kumara5077932017-09-10 22:05:05 +05308996static const struct snd_kcontrol_new quin_auxpcm_rx_port_mixer_controls[] = {
8997 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
8998 MSM_BACKEND_DAI_QUIN_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
8999 msm_routing_put_port_mixer),
9000 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
9001 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9002 msm_routing_put_port_mixer),
9003 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
9004 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9005 msm_routing_put_port_mixer),
9006};
9007
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309008static const struct snd_kcontrol_new sbus_1_rx_port_mixer_controls[] = {
9009 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9010 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
9011 msm_routing_put_port_mixer),
9012 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9013 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0, msm_routing_get_port_mixer,
9014 msm_routing_put_port_mixer),
9015 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9016 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9017 msm_routing_put_port_mixer),
9018 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9019 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9020 msm_routing_put_port_mixer),
9021 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9022 MSM_BACKEND_DAI_TERT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9023 msm_routing_put_port_mixer),
9024 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9025 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9026 msm_routing_put_port_mixer),
9027};
9028
9029static const struct snd_kcontrol_new sbus_3_rx_port_mixer_controls[] = {
9030 SOC_SINGLE_EXT("INTERNAL_BT_SCO_RX", MSM_BACKEND_DAI_SLIMBUS_3_RX,
9031 MSM_BACKEND_DAI_INT_BT_SCO_RX, 1, 0, msm_routing_get_port_mixer,
9032 msm_routing_put_port_mixer),
9033 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_3_RX,
9034 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9035 msm_routing_put_port_mixer),
9036 SOC_SINGLE_EXT("AFE_PCM_RX", MSM_BACKEND_DAI_SLIMBUS_3_RX,
9037 MSM_BACKEND_DAI_AFE_PCM_RX, 1, 0, msm_routing_get_port_mixer,
9038 msm_routing_put_port_mixer),
9039 SOC_SINGLE_EXT("AUX_PCM_RX", MSM_BACKEND_DAI_SLIMBUS_3_RX,
9040 MSM_BACKEND_DAI_AUXPCM_RX, 1, 0, msm_routing_get_port_mixer,
9041 msm_routing_put_port_mixer),
9042 SOC_SINGLE_EXT("SLIM_0_RX", MSM_BACKEND_DAI_SLIMBUS_3_RX,
9043 MSM_BACKEND_DAI_SLIMBUS_0_RX, 1, 0, msm_routing_get_port_mixer,
9044 msm_routing_put_port_mixer),
9045};
9046
9047static const struct snd_kcontrol_new sbus_6_rx_port_mixer_controls[] = {
9048 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9049 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9050 msm_routing_put_port_mixer),
9051 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9052 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9053 msm_routing_put_port_mixer),
9054 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9055 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9056 msm_routing_put_port_mixer),
9057 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9058 MSM_BACKEND_DAI_SLIMBUS_7_TX, 1, 0, msm_routing_get_port_mixer,
9059 msm_routing_put_port_mixer),
9060 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9061 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9062 msm_routing_put_port_mixer),
9063 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9064 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9065 msm_routing_put_port_mixer),
9066 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9067 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9068 msm_routing_put_port_mixer),
9069 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9070 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9071 msm_routing_put_port_mixer),
9072 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9073 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9074 msm_routing_put_port_mixer),
9075 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9076 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9077 msm_routing_put_port_mixer),
9078 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9079 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9080 msm_routing_put_port_mixer),
9081 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9082 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
9083 msm_routing_put_port_mixer),
9084};
9085
9086static const struct snd_kcontrol_new bt_sco_rx_port_mixer_controls[] = {
9087 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_INT_BT_SCO_RX,
9088 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9089 msm_routing_put_port_mixer),
9090 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_INT_BT_SCO_RX,
9091 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9092 msm_routing_put_port_mixer),
9093};
9094
9095static const struct snd_kcontrol_new afe_pcm_rx_port_mixer_controls[] = {
9096 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_AFE_PCM_RX,
9097 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9098 msm_routing_put_port_mixer),
9099 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_AFE_PCM_RX,
9100 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9101 msm_routing_put_port_mixer),
9102};
9103
9104
9105static const struct snd_kcontrol_new hdmi_rx_port_mixer_controls[] = {
9106 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_HDMI_RX,
9107 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9108 msm_routing_put_port_mixer),
9109};
9110
9111static const struct snd_kcontrol_new display_port_rx_port_mixer_controls[] = {
9112 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
9113 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9114 msm_routing_put_port_mixer),
9115};
9116
9117static const struct snd_kcontrol_new sec_i2s_rx_port_mixer_controls[] = {
9118 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_SEC_I2S_RX,
9119 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9120 msm_routing_put_port_mixer),
9121};
9122
9123static const struct snd_kcontrol_new mi2s_rx_port_mixer_controls[] = {
9124 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_MI2S_RX,
9125 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9126 msm_routing_put_port_mixer),
9127 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_RX,
9128 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9129 msm_routing_put_port_mixer),
9130};
9131
9132static const struct snd_kcontrol_new primary_mi2s_rx_port_mixer_controls[] = {
9133 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9134 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9135 msm_routing_put_port_mixer),
9136 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9137 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9138 msm_routing_put_port_mixer),
9139 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9140 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9141 msm_routing_put_port_mixer),
9142 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9143 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9144 msm_routing_put_port_mixer),
9145 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9146 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
9147 msm_routing_put_port_mixer),
9148 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9149 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9150 msm_routing_put_port_mixer),
9151 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9152 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9153 msm_routing_put_port_mixer),
9154 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9155 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9156 msm_routing_put_port_mixer),
9157 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9158 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9159 msm_routing_put_port_mixer),
Karthikeyan Mani9f66f6f2017-12-13 13:38:46 -08009160 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9161 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9162 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309163};
9164
9165static const struct snd_kcontrol_new usb_rx_port_mixer_controls[] = {
9166 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_RX,
9167 MSM_BACKEND_DAI_USB_TX, 1, 0, msm_routing_get_port_mixer,
9168 msm_routing_put_port_mixer),
9169};
9170
9171static const struct snd_kcontrol_new quat_mi2s_rx_port_mixer_controls[] = {
9172 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9173 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9174 msm_routing_put_port_mixer),
9175 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9176 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9177 msm_routing_put_port_mixer),
9178 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9179 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9180 msm_routing_put_port_mixer),
9181 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9182 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9183 msm_routing_put_port_mixer),
9184 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9185 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9186 msm_routing_put_port_mixer),
9187 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9188 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9189 msm_routing_put_port_mixer),
9190 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9191 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9192 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309193 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9194 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9195 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309196 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9197 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9198 msm_routing_put_port_mixer),
9199};
9200
Rohit Kumara5077932017-09-10 22:05:05 +05309201static const struct snd_kcontrol_new quin_mi2s_rx_port_mixer_controls[] = {
9202 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9203 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9204 msm_routing_put_port_mixer),
9205 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9206 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9207 msm_routing_put_port_mixer),
9208 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9209 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9210 msm_routing_put_port_mixer),
9211 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9212 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9213 msm_routing_put_port_mixer),
9214 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9215 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9216 msm_routing_put_port_mixer),
9217 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9218 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9219 msm_routing_put_port_mixer),
9220 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9221 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9222 msm_routing_put_port_mixer),
9223};
9224
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309225static const struct snd_kcontrol_new pri_tdm_rx_0_port_mixer_controls[] = {
9226 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9227 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9228 msm_routing_get_port_mixer,
9229 msm_routing_put_port_mixer),
9230 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9231 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9232 msm_routing_get_port_mixer,
9233 msm_routing_put_port_mixer),
9234 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9235 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9236 msm_routing_get_port_mixer,
9237 msm_routing_put_port_mixer),
9238 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9239 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9240 msm_routing_get_port_mixer,
9241 msm_routing_put_port_mixer),
9242 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9243 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9244 msm_routing_get_port_mixer,
9245 msm_routing_put_port_mixer),
9246 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9247 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9248 msm_routing_get_port_mixer,
9249 msm_routing_put_port_mixer),
9250 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9251 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9252 msm_routing_get_port_mixer,
9253 msm_routing_put_port_mixer),
9254 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9255 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9256 msm_routing_get_port_mixer,
9257 msm_routing_put_port_mixer),
9258 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9259 MSM_BACKEND_DAI_PRI_TDM_TX_0, 1, 0,
9260 msm_routing_get_port_mixer,
9261 msm_routing_put_port_mixer),
9262 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9263 MSM_BACKEND_DAI_PRI_TDM_TX_1, 1, 0,
9264 msm_routing_get_port_mixer,
9265 msm_routing_put_port_mixer),
9266 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9267 MSM_BACKEND_DAI_PRI_TDM_TX_2, 1, 0,
9268 msm_routing_get_port_mixer,
9269 msm_routing_put_port_mixer),
9270 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9271 MSM_BACKEND_DAI_PRI_TDM_TX_3, 1, 0,
9272 msm_routing_get_port_mixer,
9273 msm_routing_put_port_mixer),
9274 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9275 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9276 msm_routing_get_port_mixer,
9277 msm_routing_put_port_mixer),
9278 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9279 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9280 msm_routing_get_port_mixer,
9281 msm_routing_put_port_mixer),
9282 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9283 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9284 msm_routing_get_port_mixer,
9285 msm_routing_put_port_mixer),
9286 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9287 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9288 msm_routing_get_port_mixer,
9289 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309290 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9291 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9292 msm_routing_get_port_mixer,
9293 msm_routing_put_port_mixer),
9294 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9295 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9296 msm_routing_get_port_mixer,
9297 msm_routing_put_port_mixer),
9298 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9299 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9300 msm_routing_get_port_mixer,
9301 msm_routing_put_port_mixer),
9302 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9303 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9304 msm_routing_get_port_mixer,
9305 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309306};
9307
9308static const struct snd_kcontrol_new pri_tdm_rx_1_port_mixer_controls[] = {
9309 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9310 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9311 msm_routing_get_port_mixer,
9312 msm_routing_put_port_mixer),
9313 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9314 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9315 msm_routing_get_port_mixer,
9316 msm_routing_put_port_mixer),
9317 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9318 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9319 msm_routing_get_port_mixer,
9320 msm_routing_put_port_mixer),
9321 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9322 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9323 msm_routing_get_port_mixer,
9324 msm_routing_put_port_mixer),
9325 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9326 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9327 msm_routing_get_port_mixer,
9328 msm_routing_put_port_mixer),
9329 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9330 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9331 msm_routing_get_port_mixer,
9332 msm_routing_put_port_mixer),
9333 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9334 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9335 msm_routing_get_port_mixer,
9336 msm_routing_put_port_mixer),
9337 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9338 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9339 msm_routing_get_port_mixer,
9340 msm_routing_put_port_mixer),
9341 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9342 MSM_BACKEND_DAI_PRI_TDM_TX_0, 1, 0,
9343 msm_routing_get_port_mixer,
9344 msm_routing_put_port_mixer),
9345 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9346 MSM_BACKEND_DAI_PRI_TDM_TX_1, 1, 0,
9347 msm_routing_get_port_mixer,
9348 msm_routing_put_port_mixer),
9349 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9350 MSM_BACKEND_DAI_PRI_TDM_TX_2, 1, 0,
9351 msm_routing_get_port_mixer,
9352 msm_routing_put_port_mixer),
9353 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9354 MSM_BACKEND_DAI_PRI_TDM_TX_3, 1, 0,
9355 msm_routing_get_port_mixer,
9356 msm_routing_put_port_mixer),
9357 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9358 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9359 msm_routing_get_port_mixer,
9360 msm_routing_put_port_mixer),
9361 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9362 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9363 msm_routing_get_port_mixer,
9364 msm_routing_put_port_mixer),
9365 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9366 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9367 msm_routing_get_port_mixer,
9368 msm_routing_put_port_mixer),
9369 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9370 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9371 msm_routing_get_port_mixer,
9372 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309373 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9374 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9375 msm_routing_get_port_mixer,
9376 msm_routing_put_port_mixer),
9377 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9378 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9379 msm_routing_get_port_mixer,
9380 msm_routing_put_port_mixer),
9381 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9382 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9383 msm_routing_get_port_mixer,
9384 msm_routing_put_port_mixer),
9385 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9386 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9387 msm_routing_get_port_mixer,
9388 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309389};
9390
9391static const struct snd_kcontrol_new pri_tdm_rx_2_port_mixer_controls[] = {
9392 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9393 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9394 msm_routing_get_port_mixer,
9395 msm_routing_put_port_mixer),
9396 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9397 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9398 msm_routing_get_port_mixer,
9399 msm_routing_put_port_mixer),
9400 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9401 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9402 msm_routing_get_port_mixer,
9403 msm_routing_put_port_mixer),
9404 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9405 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9406 msm_routing_get_port_mixer,
9407 msm_routing_put_port_mixer),
9408 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9409 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9410 msm_routing_get_port_mixer,
9411 msm_routing_put_port_mixer),
9412 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9413 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9414 msm_routing_get_port_mixer,
9415 msm_routing_put_port_mixer),
9416 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9417 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9418 msm_routing_get_port_mixer,
9419 msm_routing_put_port_mixer),
9420 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9421 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9422 msm_routing_get_port_mixer,
9423 msm_routing_put_port_mixer),
9424 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9425 MSM_BACKEND_DAI_PRI_TDM_TX_0, 1, 0,
9426 msm_routing_get_port_mixer,
9427 msm_routing_put_port_mixer),
9428 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9429 MSM_BACKEND_DAI_PRI_TDM_TX_1, 1, 0,
9430 msm_routing_get_port_mixer,
9431 msm_routing_put_port_mixer),
9432 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9433 MSM_BACKEND_DAI_PRI_TDM_TX_2, 1, 0,
9434 msm_routing_get_port_mixer,
9435 msm_routing_put_port_mixer),
9436 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9437 MSM_BACKEND_DAI_PRI_TDM_TX_3, 1, 0,
9438 msm_routing_get_port_mixer,
9439 msm_routing_put_port_mixer),
9440 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9441 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9442 msm_routing_get_port_mixer,
9443 msm_routing_put_port_mixer),
9444 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9445 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9446 msm_routing_get_port_mixer,
9447 msm_routing_put_port_mixer),
9448 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9449 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9450 msm_routing_get_port_mixer,
9451 msm_routing_put_port_mixer),
9452 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9453 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9454 msm_routing_get_port_mixer,
9455 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309456 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9457 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9458 msm_routing_get_port_mixer,
9459 msm_routing_put_port_mixer),
9460 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9461 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9462 msm_routing_get_port_mixer,
9463 msm_routing_put_port_mixer),
9464 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9465 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9466 msm_routing_get_port_mixer,
9467 msm_routing_put_port_mixer),
9468 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9469 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9470 msm_routing_get_port_mixer,
9471 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309472};
9473
9474static const struct snd_kcontrol_new pri_tdm_rx_3_port_mixer_controls[] = {
9475 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9476 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9477 msm_routing_get_port_mixer,
9478 msm_routing_put_port_mixer),
9479 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9480 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9481 msm_routing_get_port_mixer,
9482 msm_routing_put_port_mixer),
9483 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9484 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9485 msm_routing_get_port_mixer,
9486 msm_routing_put_port_mixer),
9487 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9488 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9489 msm_routing_get_port_mixer,
9490 msm_routing_put_port_mixer),
9491 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9492 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9493 msm_routing_get_port_mixer,
9494 msm_routing_put_port_mixer),
9495 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9496 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9497 msm_routing_get_port_mixer,
9498 msm_routing_put_port_mixer),
9499 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9500 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9501 msm_routing_get_port_mixer,
9502 msm_routing_put_port_mixer),
9503 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9504 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9505 msm_routing_get_port_mixer,
9506 msm_routing_put_port_mixer),
9507 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9508 MSM_BACKEND_DAI_PRI_TDM_TX_0, 1, 0,
9509 msm_routing_get_port_mixer,
9510 msm_routing_put_port_mixer),
9511 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9512 MSM_BACKEND_DAI_PRI_TDM_TX_1, 1, 0,
9513 msm_routing_get_port_mixer,
9514 msm_routing_put_port_mixer),
9515 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9516 MSM_BACKEND_DAI_PRI_TDM_TX_2, 1, 0,
9517 msm_routing_get_port_mixer,
9518 msm_routing_put_port_mixer),
9519 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9520 MSM_BACKEND_DAI_PRI_TDM_TX_3, 1, 0,
9521 msm_routing_get_port_mixer,
9522 msm_routing_put_port_mixer),
9523 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9524 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9525 msm_routing_get_port_mixer,
9526 msm_routing_put_port_mixer),
9527 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9528 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9529 msm_routing_get_port_mixer,
9530 msm_routing_put_port_mixer),
9531 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9532 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9533 msm_routing_get_port_mixer,
9534 msm_routing_put_port_mixer),
9535 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9536 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9537 msm_routing_get_port_mixer,
9538 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309539 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9540 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9541 msm_routing_get_port_mixer,
9542 msm_routing_put_port_mixer),
9543 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9544 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9545 msm_routing_get_port_mixer,
9546 msm_routing_put_port_mixer),
9547 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9548 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9549 msm_routing_get_port_mixer,
9550 msm_routing_put_port_mixer),
9551 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9552 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9553 msm_routing_get_port_mixer,
9554 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309555};
9556
9557static const struct snd_kcontrol_new sec_tdm_rx_0_port_mixer_controls[] = {
9558 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9559 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9560 msm_routing_get_port_mixer,
9561 msm_routing_put_port_mixer),
9562 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9563 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9564 msm_routing_get_port_mixer,
9565 msm_routing_put_port_mixer),
9566 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9567 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9568 msm_routing_get_port_mixer,
9569 msm_routing_put_port_mixer),
9570 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9571 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9572 msm_routing_get_port_mixer,
9573 msm_routing_put_port_mixer),
9574 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9575 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9576 msm_routing_get_port_mixer,
9577 msm_routing_put_port_mixer),
9578 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9579 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9580 msm_routing_get_port_mixer,
9581 msm_routing_put_port_mixer),
9582 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9583 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9584 msm_routing_get_port_mixer,
9585 msm_routing_put_port_mixer),
9586 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9587 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9588 msm_routing_get_port_mixer,
9589 msm_routing_put_port_mixer),
9590 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9591 MSM_BACKEND_DAI_SEC_TDM_TX_0, 1, 0,
9592 msm_routing_get_port_mixer,
9593 msm_routing_put_port_mixer),
9594 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9595 MSM_BACKEND_DAI_SEC_TDM_TX_1, 1, 0,
9596 msm_routing_get_port_mixer,
9597 msm_routing_put_port_mixer),
9598 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9599 MSM_BACKEND_DAI_SEC_TDM_TX_2, 1, 0,
9600 msm_routing_get_port_mixer,
9601 msm_routing_put_port_mixer),
9602 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9603 MSM_BACKEND_DAI_SEC_TDM_TX_3, 1, 0,
9604 msm_routing_get_port_mixer,
9605 msm_routing_put_port_mixer),
9606 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9607 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9608 msm_routing_get_port_mixer,
9609 msm_routing_put_port_mixer),
9610 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9611 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9612 msm_routing_get_port_mixer,
9613 msm_routing_put_port_mixer),
9614 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9615 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9616 msm_routing_get_port_mixer,
9617 msm_routing_put_port_mixer),
9618 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9619 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9620 msm_routing_get_port_mixer,
9621 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309622 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9623 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9624 msm_routing_get_port_mixer,
9625 msm_routing_put_port_mixer),
9626 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9627 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9628 msm_routing_get_port_mixer,
9629 msm_routing_put_port_mixer),
9630 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9631 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9632 msm_routing_get_port_mixer,
9633 msm_routing_put_port_mixer),
9634 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9635 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9636 msm_routing_get_port_mixer,
9637 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309638};
9639
9640static const struct snd_kcontrol_new sec_tdm_rx_1_port_mixer_controls[] = {
9641 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9642 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9643 msm_routing_get_port_mixer,
9644 msm_routing_put_port_mixer),
9645 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9646 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9647 msm_routing_get_port_mixer,
9648 msm_routing_put_port_mixer),
9649 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9650 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9651 msm_routing_get_port_mixer,
9652 msm_routing_put_port_mixer),
9653 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9654 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9655 msm_routing_get_port_mixer,
9656 msm_routing_put_port_mixer),
9657 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9658 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9659 msm_routing_get_port_mixer,
9660 msm_routing_put_port_mixer),
9661 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9662 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9663 msm_routing_get_port_mixer,
9664 msm_routing_put_port_mixer),
9665 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9666 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9667 msm_routing_get_port_mixer,
9668 msm_routing_put_port_mixer),
9669 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9670 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9671 msm_routing_get_port_mixer,
9672 msm_routing_put_port_mixer),
9673 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9674 MSM_BACKEND_DAI_SEC_TDM_TX_0, 1, 0,
9675 msm_routing_get_port_mixer,
9676 msm_routing_put_port_mixer),
9677 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9678 MSM_BACKEND_DAI_SEC_TDM_TX_1, 1, 0,
9679 msm_routing_get_port_mixer,
9680 msm_routing_put_port_mixer),
9681 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9682 MSM_BACKEND_DAI_SEC_TDM_TX_2, 1, 0,
9683 msm_routing_get_port_mixer,
9684 msm_routing_put_port_mixer),
9685 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9686 MSM_BACKEND_DAI_SEC_TDM_TX_3, 1, 0,
9687 msm_routing_get_port_mixer,
9688 msm_routing_put_port_mixer),
9689 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9690 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9691 msm_routing_get_port_mixer,
9692 msm_routing_put_port_mixer),
9693 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9694 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9695 msm_routing_get_port_mixer,
9696 msm_routing_put_port_mixer),
9697 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9698 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9699 msm_routing_get_port_mixer,
9700 msm_routing_put_port_mixer),
9701 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9702 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9703 msm_routing_get_port_mixer,
9704 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309705 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9706 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9707 msm_routing_get_port_mixer,
9708 msm_routing_put_port_mixer),
9709 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9710 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9711 msm_routing_get_port_mixer,
9712 msm_routing_put_port_mixer),
9713 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9714 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9715 msm_routing_get_port_mixer,
9716 msm_routing_put_port_mixer),
9717 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9718 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9719 msm_routing_get_port_mixer,
9720 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309721};
9722
9723static const struct snd_kcontrol_new sec_tdm_rx_2_port_mixer_controls[] = {
9724 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9725 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9726 msm_routing_get_port_mixer,
9727 msm_routing_put_port_mixer),
9728 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9729 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9730 msm_routing_get_port_mixer,
9731 msm_routing_put_port_mixer),
9732 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9733 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9734 msm_routing_get_port_mixer,
9735 msm_routing_put_port_mixer),
9736 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9737 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9738 msm_routing_get_port_mixer,
9739 msm_routing_put_port_mixer),
9740 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9741 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9742 msm_routing_get_port_mixer,
9743 msm_routing_put_port_mixer),
9744 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9745 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9746 msm_routing_get_port_mixer,
9747 msm_routing_put_port_mixer),
9748 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9749 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9750 msm_routing_get_port_mixer,
9751 msm_routing_put_port_mixer),
9752 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9753 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9754 msm_routing_get_port_mixer,
9755 msm_routing_put_port_mixer),
9756 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9757 MSM_BACKEND_DAI_SEC_TDM_TX_0, 1, 0,
9758 msm_routing_get_port_mixer,
9759 msm_routing_put_port_mixer),
9760 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9761 MSM_BACKEND_DAI_SEC_TDM_TX_1, 1, 0,
9762 msm_routing_get_port_mixer,
9763 msm_routing_put_port_mixer),
9764 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9765 MSM_BACKEND_DAI_SEC_TDM_TX_2, 1, 0,
9766 msm_routing_get_port_mixer,
9767 msm_routing_put_port_mixer),
9768 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9769 MSM_BACKEND_DAI_SEC_TDM_TX_3, 1, 0,
9770 msm_routing_get_port_mixer,
9771 msm_routing_put_port_mixer),
9772 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9773 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9774 msm_routing_get_port_mixer,
9775 msm_routing_put_port_mixer),
9776 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9777 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9778 msm_routing_get_port_mixer,
9779 msm_routing_put_port_mixer),
9780 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9781 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9782 msm_routing_get_port_mixer,
9783 msm_routing_put_port_mixer),
9784 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9785 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9786 msm_routing_get_port_mixer,
9787 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309788 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9789 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9790 msm_routing_get_port_mixer,
9791 msm_routing_put_port_mixer),
9792 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9793 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9794 msm_routing_get_port_mixer,
9795 msm_routing_put_port_mixer),
9796 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9797 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9798 msm_routing_get_port_mixer,
9799 msm_routing_put_port_mixer),
9800 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9801 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9802 msm_routing_get_port_mixer,
9803 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309804};
9805
9806static const struct snd_kcontrol_new sec_tdm_rx_3_port_mixer_controls[] = {
9807 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9808 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9809 msm_routing_get_port_mixer,
9810 msm_routing_put_port_mixer),
9811 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9812 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9813 msm_routing_get_port_mixer,
9814 msm_routing_put_port_mixer),
9815 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9816 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9817 msm_routing_get_port_mixer,
9818 msm_routing_put_port_mixer),
9819 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9820 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9821 msm_routing_get_port_mixer,
9822 msm_routing_put_port_mixer),
9823 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9824 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9825 msm_routing_get_port_mixer,
9826 msm_routing_put_port_mixer),
9827 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9828 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9829 msm_routing_get_port_mixer,
9830 msm_routing_put_port_mixer),
9831 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9832 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9833 msm_routing_get_port_mixer,
9834 msm_routing_put_port_mixer),
9835 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9836 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9837 msm_routing_get_port_mixer,
9838 msm_routing_put_port_mixer),
9839 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9840 MSM_BACKEND_DAI_SEC_TDM_TX_0, 1, 0,
9841 msm_routing_get_port_mixer,
9842 msm_routing_put_port_mixer),
9843 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9844 MSM_BACKEND_DAI_SEC_TDM_TX_1, 1, 0,
9845 msm_routing_get_port_mixer,
9846 msm_routing_put_port_mixer),
9847 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9848 MSM_BACKEND_DAI_SEC_TDM_TX_2, 1, 0,
9849 msm_routing_get_port_mixer,
9850 msm_routing_put_port_mixer),
9851 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9852 MSM_BACKEND_DAI_SEC_TDM_TX_3, 1, 0,
9853 msm_routing_get_port_mixer,
9854 msm_routing_put_port_mixer),
9855 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9856 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9857 msm_routing_get_port_mixer,
9858 msm_routing_put_port_mixer),
9859 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9860 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9861 msm_routing_get_port_mixer,
9862 msm_routing_put_port_mixer),
9863 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9864 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9865 msm_routing_get_port_mixer,
9866 msm_routing_put_port_mixer),
9867 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9868 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9869 msm_routing_get_port_mixer,
9870 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309871 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9872 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9873 msm_routing_get_port_mixer,
9874 msm_routing_put_port_mixer),
9875 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9876 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9877 msm_routing_get_port_mixer,
9878 msm_routing_put_port_mixer),
9879 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9880 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9881 msm_routing_get_port_mixer,
9882 msm_routing_put_port_mixer),
9883 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9884 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9885 msm_routing_get_port_mixer,
9886 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309887};
9888
9889static const struct snd_kcontrol_new tert_tdm_rx_0_port_mixer_controls[] = {
9890 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
9891 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9892 msm_routing_get_port_mixer,
9893 msm_routing_put_port_mixer),
9894 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
9895 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9896 msm_routing_get_port_mixer,
9897 msm_routing_put_port_mixer),
9898 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
9899 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9900 msm_routing_get_port_mixer,
9901 msm_routing_put_port_mixer),
9902 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
9903 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9904 msm_routing_get_port_mixer,
9905 msm_routing_put_port_mixer),
9906 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
9907 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9908 msm_routing_get_port_mixer,
9909 msm_routing_put_port_mixer),
9910 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
9911 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9912 msm_routing_get_port_mixer,
9913 msm_routing_put_port_mixer),
9914 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
9915 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9916 msm_routing_get_port_mixer,
9917 msm_routing_put_port_mixer),
9918 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
9919 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9920 msm_routing_get_port_mixer,
9921 msm_routing_put_port_mixer),
9922 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_0,
9923 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
9924 msm_routing_get_port_mixer,
9925 msm_routing_put_port_mixer),
9926 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_0,
9927 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
9928 msm_routing_get_port_mixer,
9929 msm_routing_put_port_mixer),
9930 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_0,
9931 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
9932 msm_routing_get_port_mixer,
9933 msm_routing_put_port_mixer),
9934 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_0,
9935 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
9936 msm_routing_get_port_mixer,
9937 msm_routing_put_port_mixer),
9938 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_0,
9939 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9940 msm_routing_get_port_mixer,
9941 msm_routing_put_port_mixer),
9942 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_0,
9943 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9944 msm_routing_get_port_mixer,
9945 msm_routing_put_port_mixer),
9946 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_0,
9947 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9948 msm_routing_get_port_mixer,
9949 msm_routing_put_port_mixer),
9950 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_0,
9951 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9952 msm_routing_get_port_mixer,
9953 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309954 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_0,
9955 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9956 msm_routing_get_port_mixer,
9957 msm_routing_put_port_mixer),
9958 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_0,
9959 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9960 msm_routing_get_port_mixer,
9961 msm_routing_put_port_mixer),
9962 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_0,
9963 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9964 msm_routing_get_port_mixer,
9965 msm_routing_put_port_mixer),
9966 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_0,
9967 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9968 msm_routing_get_port_mixer,
9969 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309970};
9971
9972static const struct snd_kcontrol_new tert_tdm_rx_1_port_mixer_controls[] = {
9973 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
9974 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9975 msm_routing_get_port_mixer,
9976 msm_routing_put_port_mixer),
9977 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
9978 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9979 msm_routing_get_port_mixer,
9980 msm_routing_put_port_mixer),
9981 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
9982 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9983 msm_routing_get_port_mixer,
9984 msm_routing_put_port_mixer),
9985 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
9986 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9987 msm_routing_get_port_mixer,
9988 msm_routing_put_port_mixer),
9989 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
9990 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9991 msm_routing_get_port_mixer,
9992 msm_routing_put_port_mixer),
9993 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
9994 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9995 msm_routing_get_port_mixer,
9996 msm_routing_put_port_mixer),
9997 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
9998 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9999 msm_routing_get_port_mixer,
10000 msm_routing_put_port_mixer),
10001 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10002 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10003 msm_routing_get_port_mixer,
10004 msm_routing_put_port_mixer),
10005 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10006 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10007 msm_routing_get_port_mixer,
10008 msm_routing_put_port_mixer),
10009 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10010 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10011 msm_routing_get_port_mixer,
10012 msm_routing_put_port_mixer),
10013 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10014 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10015 msm_routing_get_port_mixer,
10016 msm_routing_put_port_mixer),
10017 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10018 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10019 msm_routing_get_port_mixer,
10020 msm_routing_put_port_mixer),
10021 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10022 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10023 msm_routing_get_port_mixer,
10024 msm_routing_put_port_mixer),
10025 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10026 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10027 msm_routing_get_port_mixer,
10028 msm_routing_put_port_mixer),
10029 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10030 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10031 msm_routing_get_port_mixer,
10032 msm_routing_put_port_mixer),
10033 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10034 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10035 msm_routing_get_port_mixer,
10036 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010037 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10038 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10039 msm_routing_get_port_mixer,
10040 msm_routing_put_port_mixer),
10041 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10042 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10043 msm_routing_get_port_mixer,
10044 msm_routing_put_port_mixer),
10045 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10046 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10047 msm_routing_get_port_mixer,
10048 msm_routing_put_port_mixer),
10049 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10050 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10051 msm_routing_get_port_mixer,
10052 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010053};
10054
10055static const struct snd_kcontrol_new tert_tdm_rx_2_port_mixer_controls[] = {
10056 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10057 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10058 msm_routing_get_port_mixer,
10059 msm_routing_put_port_mixer),
10060 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10061 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10062 msm_routing_get_port_mixer,
10063 msm_routing_put_port_mixer),
10064 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10065 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
10066 msm_routing_get_port_mixer,
10067 msm_routing_put_port_mixer),
10068 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10069 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10070 msm_routing_get_port_mixer,
10071 msm_routing_put_port_mixer),
10072 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10073 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10074 msm_routing_get_port_mixer,
10075 msm_routing_put_port_mixer),
10076 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10077 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10078 msm_routing_get_port_mixer,
10079 msm_routing_put_port_mixer),
10080 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10081 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10082 msm_routing_get_port_mixer,
10083 msm_routing_put_port_mixer),
10084 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10085 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10086 msm_routing_get_port_mixer,
10087 msm_routing_put_port_mixer),
10088 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10089 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10090 msm_routing_get_port_mixer,
10091 msm_routing_put_port_mixer),
10092 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10093 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10094 msm_routing_get_port_mixer,
10095 msm_routing_put_port_mixer),
10096 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10097 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10098 msm_routing_get_port_mixer,
10099 msm_routing_put_port_mixer),
10100 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10101 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10102 msm_routing_get_port_mixer,
10103 msm_routing_put_port_mixer),
10104 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10105 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10106 msm_routing_get_port_mixer,
10107 msm_routing_put_port_mixer),
10108 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10109 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10110 msm_routing_get_port_mixer,
10111 msm_routing_put_port_mixer),
10112 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10113 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10114 msm_routing_get_port_mixer,
10115 msm_routing_put_port_mixer),
10116 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10117 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10118 msm_routing_get_port_mixer,
10119 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010120 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10121 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10122 msm_routing_get_port_mixer,
10123 msm_routing_put_port_mixer),
10124 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10125 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10126 msm_routing_get_port_mixer,
10127 msm_routing_put_port_mixer),
10128 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10129 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10130 msm_routing_get_port_mixer,
10131 msm_routing_put_port_mixer),
10132 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10133 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10134 msm_routing_get_port_mixer,
10135 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010136};
10137
10138static const struct snd_kcontrol_new tert_tdm_rx_3_port_mixer_controls[] = {
10139 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10140 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10141 msm_routing_get_port_mixer,
10142 msm_routing_put_port_mixer),
10143 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10144 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10145 msm_routing_get_port_mixer,
10146 msm_routing_put_port_mixer),
10147 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10148 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
10149 msm_routing_get_port_mixer,
10150 msm_routing_put_port_mixer),
10151 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10152 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10153 msm_routing_get_port_mixer,
10154 msm_routing_put_port_mixer),
10155 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10156 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10157 msm_routing_get_port_mixer,
10158 msm_routing_put_port_mixer),
10159 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10160 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10161 msm_routing_get_port_mixer,
10162 msm_routing_put_port_mixer),
10163 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10164 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10165 msm_routing_get_port_mixer,
10166 msm_routing_put_port_mixer),
10167 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10168 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10169 msm_routing_get_port_mixer,
10170 msm_routing_put_port_mixer),
10171 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10172 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10173 msm_routing_get_port_mixer,
10174 msm_routing_put_port_mixer),
10175 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10176 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10177 msm_routing_get_port_mixer,
10178 msm_routing_put_port_mixer),
10179 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10180 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10181 msm_routing_get_port_mixer,
10182 msm_routing_put_port_mixer),
10183 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10184 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10185 msm_routing_get_port_mixer,
10186 msm_routing_put_port_mixer),
10187 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10188 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10189 msm_routing_get_port_mixer,
10190 msm_routing_put_port_mixer),
10191 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10192 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10193 msm_routing_get_port_mixer,
10194 msm_routing_put_port_mixer),
10195 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10196 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10197 msm_routing_get_port_mixer,
10198 msm_routing_put_port_mixer),
10199 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10200 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10201 msm_routing_get_port_mixer,
10202 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010203 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10204 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10205 msm_routing_get_port_mixer,
10206 msm_routing_put_port_mixer),
10207 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10208 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10209 msm_routing_get_port_mixer,
10210 msm_routing_put_port_mixer),
10211 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10212 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10213 msm_routing_get_port_mixer,
10214 msm_routing_put_port_mixer),
10215 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10216 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10217 msm_routing_get_port_mixer,
10218 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010219};
10220
10221static const struct snd_kcontrol_new quat_tdm_rx_0_port_mixer_controls[] = {
10222 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10223 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10224 msm_routing_get_port_mixer,
10225 msm_routing_put_port_mixer),
10226 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10227 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10228 msm_routing_get_port_mixer,
10229 msm_routing_put_port_mixer),
10230 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10231 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10232 msm_routing_get_port_mixer,
10233 msm_routing_put_port_mixer),
10234 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10235 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10236 msm_routing_get_port_mixer,
10237 msm_routing_put_port_mixer),
10238 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10239 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10240 msm_routing_get_port_mixer,
10241 msm_routing_put_port_mixer),
10242 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10243 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10244 msm_routing_get_port_mixer,
10245 msm_routing_put_port_mixer),
10246 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10247 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10248 msm_routing_get_port_mixer,
10249 msm_routing_put_port_mixer),
10250 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10251 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10252 msm_routing_get_port_mixer,
10253 msm_routing_put_port_mixer),
10254 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10255 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10256 msm_routing_get_port_mixer,
10257 msm_routing_put_port_mixer),
10258 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10259 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10260 msm_routing_get_port_mixer,
10261 msm_routing_put_port_mixer),
10262 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10263 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10264 msm_routing_get_port_mixer,
10265 msm_routing_put_port_mixer),
10266 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10267 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10268 msm_routing_get_port_mixer,
10269 msm_routing_put_port_mixer),
10270 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10271 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10272 msm_routing_get_port_mixer,
10273 msm_routing_put_port_mixer),
10274 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10275 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10276 msm_routing_get_port_mixer,
10277 msm_routing_put_port_mixer),
10278 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10279 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10280 msm_routing_get_port_mixer,
10281 msm_routing_put_port_mixer),
10282 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10283 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10284 msm_routing_get_port_mixer,
10285 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010286 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10287 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10288 msm_routing_get_port_mixer,
10289 msm_routing_put_port_mixer),
10290 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10291 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10292 msm_routing_get_port_mixer,
10293 msm_routing_put_port_mixer),
10294 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10295 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10296 msm_routing_get_port_mixer,
10297 msm_routing_put_port_mixer),
10298 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10299 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10300 msm_routing_get_port_mixer,
10301 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010302};
10303
10304static const struct snd_kcontrol_new quat_tdm_rx_1_port_mixer_controls[] = {
10305 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10306 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10307 msm_routing_get_port_mixer,
10308 msm_routing_put_port_mixer),
10309 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10310 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10311 msm_routing_get_port_mixer,
10312 msm_routing_put_port_mixer),
10313 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10314 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10315 msm_routing_get_port_mixer,
10316 msm_routing_put_port_mixer),
10317 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10318 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10319 msm_routing_get_port_mixer,
10320 msm_routing_put_port_mixer),
10321 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10322 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10323 msm_routing_get_port_mixer,
10324 msm_routing_put_port_mixer),
10325 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10326 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10327 msm_routing_get_port_mixer,
10328 msm_routing_put_port_mixer),
10329 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10330 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10331 msm_routing_get_port_mixer,
10332 msm_routing_put_port_mixer),
10333 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10334 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10335 msm_routing_get_port_mixer,
10336 msm_routing_put_port_mixer),
10337 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10338 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10339 msm_routing_get_port_mixer,
10340 msm_routing_put_port_mixer),
10341 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10342 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10343 msm_routing_get_port_mixer,
10344 msm_routing_put_port_mixer),
10345 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10346 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10347 msm_routing_get_port_mixer,
10348 msm_routing_put_port_mixer),
10349 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10350 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10351 msm_routing_get_port_mixer,
10352 msm_routing_put_port_mixer),
10353 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10354 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10355 msm_routing_get_port_mixer,
10356 msm_routing_put_port_mixer),
10357 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10358 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10359 msm_routing_get_port_mixer,
10360 msm_routing_put_port_mixer),
10361 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10362 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10363 msm_routing_get_port_mixer,
10364 msm_routing_put_port_mixer),
10365 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10366 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10367 msm_routing_get_port_mixer,
10368 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010369 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10370 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10371 msm_routing_get_port_mixer,
10372 msm_routing_put_port_mixer),
10373 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10374 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10375 msm_routing_get_port_mixer,
10376 msm_routing_put_port_mixer),
10377 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10378 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10379 msm_routing_get_port_mixer,
10380 msm_routing_put_port_mixer),
10381 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10382 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10383 msm_routing_get_port_mixer,
10384 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010385};
10386
10387static const struct snd_kcontrol_new quat_tdm_rx_2_port_mixer_controls[] = {
10388 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10389 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10390 msm_routing_get_port_mixer,
10391 msm_routing_put_port_mixer),
10392 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10393 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10394 msm_routing_get_port_mixer,
10395 msm_routing_put_port_mixer),
10396 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10397 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10398 msm_routing_get_port_mixer,
10399 msm_routing_put_port_mixer),
10400 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10401 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10402 msm_routing_get_port_mixer,
10403 msm_routing_put_port_mixer),
10404 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10405 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10406 msm_routing_get_port_mixer,
10407 msm_routing_put_port_mixer),
10408 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10409 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10410 msm_routing_get_port_mixer,
10411 msm_routing_put_port_mixer),
10412 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10413 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10414 msm_routing_get_port_mixer,
10415 msm_routing_put_port_mixer),
10416 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10417 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10418 msm_routing_get_port_mixer,
10419 msm_routing_put_port_mixer),
10420 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10421 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10422 msm_routing_get_port_mixer,
10423 msm_routing_put_port_mixer),
10424 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10425 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10426 msm_routing_get_port_mixer,
10427 msm_routing_put_port_mixer),
10428 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10429 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10430 msm_routing_get_port_mixer,
10431 msm_routing_put_port_mixer),
10432 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10433 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10434 msm_routing_get_port_mixer,
10435 msm_routing_put_port_mixer),
10436 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10437 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10438 msm_routing_get_port_mixer,
10439 msm_routing_put_port_mixer),
10440 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10441 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10442 msm_routing_get_port_mixer,
10443 msm_routing_put_port_mixer),
10444 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10445 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10446 msm_routing_get_port_mixer,
10447 msm_routing_put_port_mixer),
10448 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10449 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10450 msm_routing_get_port_mixer,
10451 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010452 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10453 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10454 msm_routing_get_port_mixer,
10455 msm_routing_put_port_mixer),
10456 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10457 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10458 msm_routing_get_port_mixer,
10459 msm_routing_put_port_mixer),
10460 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10461 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10462 msm_routing_get_port_mixer,
10463 msm_routing_put_port_mixer),
10464 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10465 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10466 msm_routing_get_port_mixer,
10467 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010468};
10469
10470static const struct snd_kcontrol_new quat_tdm_rx_3_port_mixer_controls[] = {
10471 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10472 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10473 msm_routing_get_port_mixer,
10474 msm_routing_put_port_mixer),
10475 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10476 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10477 msm_routing_get_port_mixer,
10478 msm_routing_put_port_mixer),
10479 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10480 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10481 msm_routing_get_port_mixer,
10482 msm_routing_put_port_mixer),
10483 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10484 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10485 msm_routing_get_port_mixer,
10486 msm_routing_put_port_mixer),
10487 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10488 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10489 msm_routing_get_port_mixer,
10490 msm_routing_put_port_mixer),
10491 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10492 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10493 msm_routing_get_port_mixer,
10494 msm_routing_put_port_mixer),
10495 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10496 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10497 msm_routing_get_port_mixer,
10498 msm_routing_put_port_mixer),
10499 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10500 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10501 msm_routing_get_port_mixer,
10502 msm_routing_put_port_mixer),
10503 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10504 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10505 msm_routing_get_port_mixer,
10506 msm_routing_put_port_mixer),
10507 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10508 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10509 msm_routing_get_port_mixer,
10510 msm_routing_put_port_mixer),
10511 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10512 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10513 msm_routing_get_port_mixer,
10514 msm_routing_put_port_mixer),
10515 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10516 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10517 msm_routing_get_port_mixer,
10518 msm_routing_put_port_mixer),
10519 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10520 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10521 msm_routing_get_port_mixer,
10522 msm_routing_put_port_mixer),
10523 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10524 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10525 msm_routing_get_port_mixer,
10526 msm_routing_put_port_mixer),
10527 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10528 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10529 msm_routing_get_port_mixer,
10530 msm_routing_put_port_mixer),
10531 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10532 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10533 msm_routing_get_port_mixer,
10534 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010535 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10536 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10537 msm_routing_get_port_mixer,
10538 msm_routing_put_port_mixer),
10539 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10540 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10541 msm_routing_get_port_mixer,
10542 msm_routing_put_port_mixer),
10543 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10544 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10545 msm_routing_get_port_mixer,
10546 msm_routing_put_port_mixer),
10547 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10548 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10549 msm_routing_get_port_mixer,
10550 msm_routing_put_port_mixer),
10551};
10552
10553static const struct snd_kcontrol_new quin_tdm_rx_0_port_mixer_controls[] = {
10554 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10555 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10556 msm_routing_get_port_mixer,
10557 msm_routing_put_port_mixer),
10558 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10559 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10560 msm_routing_get_port_mixer,
10561 msm_routing_put_port_mixer),
10562 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10563 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10564 msm_routing_get_port_mixer,
10565 msm_routing_put_port_mixer),
10566 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10567 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10568 msm_routing_get_port_mixer,
10569 msm_routing_put_port_mixer),
10570 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10571 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10572 msm_routing_get_port_mixer,
10573 msm_routing_put_port_mixer),
10574 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10575 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10576 msm_routing_get_port_mixer,
10577 msm_routing_put_port_mixer),
10578 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10579 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10580 msm_routing_get_port_mixer,
10581 msm_routing_put_port_mixer),
10582 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10583 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10584 msm_routing_get_port_mixer,
10585 msm_routing_put_port_mixer),
10586 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10587 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10588 msm_routing_get_port_mixer,
10589 msm_routing_put_port_mixer),
10590 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10591 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10592 msm_routing_get_port_mixer,
10593 msm_routing_put_port_mixer),
10594 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10595 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10596 msm_routing_get_port_mixer,
10597 msm_routing_put_port_mixer),
10598 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10599 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10600 msm_routing_get_port_mixer,
10601 msm_routing_put_port_mixer),
10602 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10603 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10604 msm_routing_get_port_mixer,
10605 msm_routing_put_port_mixer),
10606 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10607 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10608 msm_routing_get_port_mixer,
10609 msm_routing_put_port_mixer),
10610 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10611 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10612 msm_routing_get_port_mixer,
10613 msm_routing_put_port_mixer),
10614 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10615 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10616 msm_routing_get_port_mixer,
10617 msm_routing_put_port_mixer),
10618 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10619 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10620 msm_routing_get_port_mixer,
10621 msm_routing_put_port_mixer),
10622 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10623 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10624 msm_routing_get_port_mixer,
10625 msm_routing_put_port_mixer),
10626 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10627 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10628 msm_routing_get_port_mixer,
10629 msm_routing_put_port_mixer),
10630 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10631 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10632 msm_routing_get_port_mixer,
10633 msm_routing_put_port_mixer),
10634};
10635
10636static const struct snd_kcontrol_new quin_tdm_rx_1_port_mixer_controls[] = {
10637 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10638 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10639 msm_routing_get_port_mixer,
10640 msm_routing_put_port_mixer),
10641 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10642 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10643 msm_routing_get_port_mixer,
10644 msm_routing_put_port_mixer),
10645 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10646 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10647 msm_routing_get_port_mixer,
10648 msm_routing_put_port_mixer),
10649 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10650 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10651 msm_routing_get_port_mixer,
10652 msm_routing_put_port_mixer),
10653 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10654 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10655 msm_routing_get_port_mixer,
10656 msm_routing_put_port_mixer),
10657 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10658 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10659 msm_routing_get_port_mixer,
10660 msm_routing_put_port_mixer),
10661 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10662 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10663 msm_routing_get_port_mixer,
10664 msm_routing_put_port_mixer),
10665 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10666 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10667 msm_routing_get_port_mixer,
10668 msm_routing_put_port_mixer),
10669 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10670 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10671 msm_routing_get_port_mixer,
10672 msm_routing_put_port_mixer),
10673 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10674 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10675 msm_routing_get_port_mixer,
10676 msm_routing_put_port_mixer),
10677 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10678 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10679 msm_routing_get_port_mixer,
10680 msm_routing_put_port_mixer),
10681 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10682 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10683 msm_routing_get_port_mixer,
10684 msm_routing_put_port_mixer),
10685 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10686 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10687 msm_routing_get_port_mixer,
10688 msm_routing_put_port_mixer),
10689 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10690 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10691 msm_routing_get_port_mixer,
10692 msm_routing_put_port_mixer),
10693 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10694 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10695 msm_routing_get_port_mixer,
10696 msm_routing_put_port_mixer),
10697 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10698 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10699 msm_routing_get_port_mixer,
10700 msm_routing_put_port_mixer),
10701 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10702 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10703 msm_routing_get_port_mixer,
10704 msm_routing_put_port_mixer),
10705 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10706 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10707 msm_routing_get_port_mixer,
10708 msm_routing_put_port_mixer),
10709 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10710 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10711 msm_routing_get_port_mixer,
10712 msm_routing_put_port_mixer),
10713 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10714 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10715 msm_routing_get_port_mixer,
10716 msm_routing_put_port_mixer),
10717};
10718
10719static const struct snd_kcontrol_new quin_tdm_rx_2_port_mixer_controls[] = {
10720 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10721 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10722 msm_routing_get_port_mixer,
10723 msm_routing_put_port_mixer),
10724 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10725 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10726 msm_routing_get_port_mixer,
10727 msm_routing_put_port_mixer),
10728 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10729 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10730 msm_routing_get_port_mixer,
10731 msm_routing_put_port_mixer),
10732 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10733 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10734 msm_routing_get_port_mixer,
10735 msm_routing_put_port_mixer),
10736 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10737 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10738 msm_routing_get_port_mixer,
10739 msm_routing_put_port_mixer),
10740 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10741 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10742 msm_routing_get_port_mixer,
10743 msm_routing_put_port_mixer),
10744 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10745 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10746 msm_routing_get_port_mixer,
10747 msm_routing_put_port_mixer),
10748 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10749 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10750 msm_routing_get_port_mixer,
10751 msm_routing_put_port_mixer),
10752 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10753 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10754 msm_routing_get_port_mixer,
10755 msm_routing_put_port_mixer),
10756 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10757 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10758 msm_routing_get_port_mixer,
10759 msm_routing_put_port_mixer),
10760 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10761 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10762 msm_routing_get_port_mixer,
10763 msm_routing_put_port_mixer),
10764 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10765 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10766 msm_routing_get_port_mixer,
10767 msm_routing_put_port_mixer),
10768 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10769 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10770 msm_routing_get_port_mixer,
10771 msm_routing_put_port_mixer),
10772 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10773 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10774 msm_routing_get_port_mixer,
10775 msm_routing_put_port_mixer),
10776 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10777 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10778 msm_routing_get_port_mixer,
10779 msm_routing_put_port_mixer),
10780 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10781 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10782 msm_routing_get_port_mixer,
10783 msm_routing_put_port_mixer),
10784 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10785 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10786 msm_routing_get_port_mixer,
10787 msm_routing_put_port_mixer),
10788 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10789 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10790 msm_routing_get_port_mixer,
10791 msm_routing_put_port_mixer),
10792 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10793 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10794 msm_routing_get_port_mixer,
10795 msm_routing_put_port_mixer),
10796 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10797 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10798 msm_routing_get_port_mixer,
10799 msm_routing_put_port_mixer),
10800};
10801
10802static const struct snd_kcontrol_new quin_tdm_rx_3_port_mixer_controls[] = {
10803 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10804 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10805 msm_routing_get_port_mixer,
10806 msm_routing_put_port_mixer),
10807 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10808 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10809 msm_routing_get_port_mixer,
10810 msm_routing_put_port_mixer),
10811 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10812 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10813 msm_routing_get_port_mixer,
10814 msm_routing_put_port_mixer),
10815 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10816 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10817 msm_routing_get_port_mixer,
10818 msm_routing_put_port_mixer),
10819 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10820 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10821 msm_routing_get_port_mixer,
10822 msm_routing_put_port_mixer),
10823 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10824 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10825 msm_routing_get_port_mixer,
10826 msm_routing_put_port_mixer),
10827 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10828 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10829 msm_routing_get_port_mixer,
10830 msm_routing_put_port_mixer),
10831 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10832 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10833 msm_routing_get_port_mixer,
10834 msm_routing_put_port_mixer),
10835 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10836 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10837 msm_routing_get_port_mixer,
10838 msm_routing_put_port_mixer),
10839 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10840 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10841 msm_routing_get_port_mixer,
10842 msm_routing_put_port_mixer),
10843 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10844 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10845 msm_routing_get_port_mixer,
10846 msm_routing_put_port_mixer),
10847 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10848 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10849 msm_routing_get_port_mixer,
10850 msm_routing_put_port_mixer),
10851 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10852 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10853 msm_routing_get_port_mixer,
10854 msm_routing_put_port_mixer),
10855 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10856 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10857 msm_routing_get_port_mixer,
10858 msm_routing_put_port_mixer),
10859 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10860 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10861 msm_routing_get_port_mixer,
10862 msm_routing_put_port_mixer),
10863 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10864 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10865 msm_routing_get_port_mixer,
10866 msm_routing_put_port_mixer),
10867 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10868 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10869 msm_routing_get_port_mixer,
10870 msm_routing_put_port_mixer),
10871 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10872 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10873 msm_routing_get_port_mixer,
10874 msm_routing_put_port_mixer),
10875 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10876 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10877 msm_routing_get_port_mixer,
10878 msm_routing_put_port_mixer),
10879 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10880 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10881 msm_routing_get_port_mixer,
10882 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010883};
10884
10885static const struct snd_kcontrol_new tert_mi2s_rx_port_mixer_controls[] = {
10886 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
10887 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
10888 msm_routing_put_port_mixer),
10889 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
10890 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
10891 msm_routing_put_port_mixer),
10892 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
10893 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
10894 msm_routing_put_port_mixer),
10895 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
10896 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
10897 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010898 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
10899 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
10900 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010901 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
10902 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
10903 msm_routing_put_port_mixer),
10904 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
10905 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
10906 msm_routing_put_port_mixer),
10907};
10908
10909static const struct snd_kcontrol_new sec_mi2s_rx_port_mixer_controls[] = {
10910 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
10911 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
10912 msm_routing_put_port_mixer),
10913 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
10914 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
10915 msm_routing_put_port_mixer),
10916 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
10917 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
10918 msm_routing_put_port_mixer),
10919 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
10920 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
10921 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010922 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
10923 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
10924 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010925 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
10926 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
10927 msm_routing_put_port_mixer),
10928 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
10929 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
10930 msm_routing_put_port_mixer),
10931 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
10932 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
10933 msm_routing_put_port_mixer),
Karthikeyan Mani9f66f6f2017-12-13 13:38:46 -080010934 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
10935 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
10936 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010937};
10938
10939static const struct snd_kcontrol_new lsm1_mixer_controls[] = {
10940 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
10941 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
10942 msm_routing_put_listen_mixer),
10943 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
10944 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
10945 msm_routing_put_listen_mixer),
10946 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
10947 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
10948 msm_routing_put_listen_mixer),
10949 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
10950 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
10951 msm_routing_put_listen_mixer),
10952 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
10953 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
10954 msm_routing_put_listen_mixer),
10955 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
10956 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
10957 msm_routing_put_listen_mixer),
10958 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
10959 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
10960 msm_routing_put_listen_mixer),
10961 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
10962 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
10963 msm_routing_put_listen_mixer),
10964};
10965
10966static const struct snd_kcontrol_new lsm2_mixer_controls[] = {
10967 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
10968 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
10969 msm_routing_put_listen_mixer),
10970 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
10971 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
10972 msm_routing_put_listen_mixer),
10973 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
10974 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
10975 msm_routing_put_listen_mixer),
10976 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
10977 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
10978 msm_routing_put_listen_mixer),
10979 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
10980 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
10981 msm_routing_put_listen_mixer),
10982 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
10983 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
10984 msm_routing_put_listen_mixer),
10985 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
10986 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
10987 msm_routing_put_listen_mixer),
10988 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
10989 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
10990 msm_routing_put_listen_mixer),
10991};
10992
10993static const struct snd_kcontrol_new lsm3_mixer_controls[] = {
10994 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
10995 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
10996 msm_routing_put_listen_mixer),
10997 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
10998 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
10999 msm_routing_put_listen_mixer),
11000 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11001 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11002 msm_routing_put_listen_mixer),
11003 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11004 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11005 msm_routing_put_listen_mixer),
11006 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11007 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11008 msm_routing_put_listen_mixer),
11009 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11010 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11011 msm_routing_put_listen_mixer),
11012 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11013 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11014 msm_routing_put_listen_mixer),
11015 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11016 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11017 msm_routing_put_listen_mixer),
11018};
11019
11020static const struct snd_kcontrol_new lsm4_mixer_controls[] = {
11021 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11022 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11023 msm_routing_put_listen_mixer),
11024 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11025 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11026 msm_routing_put_listen_mixer),
11027 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11028 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11029 msm_routing_put_listen_mixer),
11030 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11031 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11032 msm_routing_put_listen_mixer),
11033 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11034 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11035 msm_routing_put_listen_mixer),
11036 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11037 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11038 msm_routing_put_listen_mixer),
11039 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11040 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11041 msm_routing_put_listen_mixer),
11042 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11043 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11044 msm_routing_put_listen_mixer),
11045};
11046
11047static const struct snd_kcontrol_new lsm5_mixer_controls[] = {
11048 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11049 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11050 msm_routing_put_listen_mixer),
11051 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11052 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11053 msm_routing_put_listen_mixer),
11054 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11055 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11056 msm_routing_put_listen_mixer),
11057 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11058 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11059 msm_routing_put_listen_mixer),
11060 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11061 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11062 msm_routing_put_listen_mixer),
11063 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11064 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11065 msm_routing_put_listen_mixer),
11066 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11067 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11068 msm_routing_put_listen_mixer),
11069 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11070 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11071 msm_routing_put_listen_mixer),
11072};
11073
11074static const struct snd_kcontrol_new lsm6_mixer_controls[] = {
11075 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11076 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11077 msm_routing_put_listen_mixer),
11078 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11079 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11080 msm_routing_put_listen_mixer),
11081 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11082 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11083 msm_routing_put_listen_mixer),
11084 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11085 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11086 msm_routing_put_listen_mixer),
11087 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11088 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11089 msm_routing_put_listen_mixer),
11090 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11091 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11092 msm_routing_put_listen_mixer),
11093 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11094 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11095 msm_routing_put_listen_mixer),
11096 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11097 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11098 msm_routing_put_listen_mixer),
11099};
11100
11101static const struct snd_kcontrol_new lsm7_mixer_controls[] = {
11102 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11103 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11104 msm_routing_put_listen_mixer),
11105 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11106 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11107 msm_routing_put_listen_mixer),
11108 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11109 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11110 msm_routing_put_listen_mixer),
11111 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11112 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11113 msm_routing_put_listen_mixer),
11114 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11115 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11116 msm_routing_put_listen_mixer),
11117 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11118 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11119 msm_routing_put_listen_mixer),
11120 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11121 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11122 msm_routing_put_listen_mixer),
11123 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11124 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11125 msm_routing_put_listen_mixer),
11126};
11127
11128static const struct snd_kcontrol_new lsm8_mixer_controls[] = {
11129 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11130 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11131 msm_routing_put_listen_mixer),
11132 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11133 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11134 msm_routing_put_listen_mixer),
11135 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11136 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11137 msm_routing_put_listen_mixer),
11138 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11139 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11140 msm_routing_put_listen_mixer),
11141 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11142 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11143 msm_routing_put_listen_mixer),
11144 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11145 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11146 msm_routing_put_listen_mixer),
11147 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11148 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11149 msm_routing_put_listen_mixer),
11150 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11151 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11152 msm_routing_put_listen_mixer),
11153};
11154
11155static const struct snd_kcontrol_new slim_fm_switch_mixer_controls =
11156 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11157 0, 1, 0, msm_routing_get_switch_mixer,
11158 msm_routing_put_switch_mixer);
11159
11160static const struct snd_kcontrol_new slim1_fm_switch_mixer_controls =
11161 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11162 0, 1, 0, msm_routing_get_switch_mixer,
11163 msm_routing_put_switch_mixer);
11164
11165static const struct snd_kcontrol_new slim3_fm_switch_mixer_controls =
11166 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11167 0, 1, 0, msm_routing_get_switch_mixer,
11168 msm_routing_put_switch_mixer);
11169
11170static const struct snd_kcontrol_new slim4_fm_switch_mixer_controls =
11171 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11172 0, 1, 0, msm_routing_get_switch_mixer,
11173 msm_routing_put_switch_mixer);
11174
11175static const struct snd_kcontrol_new slim6_fm_switch_mixer_controls =
11176 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11177 0, 1, 0, msm_routing_get_switch_mixer,
11178 msm_routing_put_switch_mixer);
11179
11180static const struct snd_kcontrol_new pcm_rx_switch_mixer_controls =
11181 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11182 0, 1, 0, msm_routing_get_fm_pcmrx_switch_mixer,
11183 msm_routing_put_fm_pcmrx_switch_mixer);
11184
11185static const struct snd_kcontrol_new int0_mi2s_rx_switch_mixer_controls =
11186 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11187 0, 1, 0, msm_routing_get_int0_mi2s_switch_mixer,
11188 msm_routing_put_int0_mi2s_switch_mixer);
11189
11190static const struct snd_kcontrol_new int4_mi2s_rx_switch_mixer_controls =
11191 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11192 0, 1, 0, msm_routing_get_int4_mi2s_switch_mixer,
11193 msm_routing_put_int4_mi2s_switch_mixer);
11194
11195static const struct snd_kcontrol_new pri_mi2s_rx_switch_mixer_controls =
11196 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11197 0, 1, 0, msm_routing_get_pri_mi2s_switch_mixer,
11198 msm_routing_put_pri_mi2s_switch_mixer);
11199
11200static const struct snd_kcontrol_new sec_mi2s_rx_switch_mixer_controls =
11201 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11202 0, 1, 0, msm_routing_get_sec_mi2s_switch_mixer,
11203 msm_routing_put_sec_mi2s_switch_mixer);
11204
11205static const struct snd_kcontrol_new tert_mi2s_rx_switch_mixer_controls =
11206 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11207 0, 1, 0, msm_routing_get_tert_mi2s_switch_mixer,
11208 msm_routing_put_tert_mi2s_switch_mixer);
11209
11210static const struct snd_kcontrol_new quat_mi2s_rx_switch_mixer_controls =
11211 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11212 0, 1, 0, msm_routing_get_quat_mi2s_switch_mixer,
11213 msm_routing_put_quat_mi2s_switch_mixer);
11214
Rohit Kumara5077932017-09-10 22:05:05 +053011215static const struct snd_kcontrol_new quin_mi2s_rx_switch_mixer_controls =
11216 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11217 0, 1, 0, msm_routing_get_quin_mi2s_switch_mixer,
11218 msm_routing_put_quin_mi2s_switch_mixer);
11219
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011220static const struct snd_kcontrol_new hfp_pri_aux_switch_mixer_controls =
11221 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11222 0, 1, 0, msm_routing_get_hfp_switch_mixer,
11223 msm_routing_put_hfp_switch_mixer);
11224
11225static const struct snd_kcontrol_new hfp_aux_switch_mixer_controls =
11226 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11227 0, 1, 0, msm_routing_get_hfp_switch_mixer,
11228 msm_routing_put_hfp_switch_mixer);
11229
11230static const struct snd_kcontrol_new hfp_int_switch_mixer_controls =
11231 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11232 0, 1, 0, msm_routing_get_hfp_switch_mixer,
11233 msm_routing_put_hfp_switch_mixer);
11234
11235static const struct snd_kcontrol_new hfp_slim7_switch_mixer_controls =
11236 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11237 0, 1, 0, msm_routing_get_hfp_switch_mixer,
11238 msm_routing_put_hfp_switch_mixer);
11239
11240static const struct snd_kcontrol_new usb_switch_mixer_controls =
11241 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11242 0, 1, 0, msm_routing_get_usb_switch_mixer,
11243 msm_routing_put_usb_switch_mixer);
11244
11245static const struct soc_enum lsm_port_enum =
11246 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(lsm_port_text), lsm_port_text);
11247
11248static const char * const lsm_func_text[] = {
11249 "None", "AUDIO", "BEACON", "ULTRASOUND", "SWAUDIO",
11250};
11251static const struct soc_enum lsm_func_enum =
11252 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(lsm_func_text), lsm_func_text);
11253
11254static const struct snd_kcontrol_new lsm_controls[] = {
11255 /* kcontrol of lsm_function */
11256 SOC_ENUM_EXT(SLIMBUS_0_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11257 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11258 SOC_ENUM_EXT(SLIMBUS_1_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11259 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11260 SOC_ENUM_EXT(SLIMBUS_2_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11261 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11262 SOC_ENUM_EXT(SLIMBUS_3_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11263 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11264 SOC_ENUM_EXT(SLIMBUS_4_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11265 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11266 SOC_ENUM_EXT(SLIMBUS_5_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11267 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11268 SOC_ENUM_EXT(TERT_MI2S_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11269 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11270 SOC_ENUM_EXT(QUAT_MI2S_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11271 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11272 SOC_ENUM_EXT(INT3_MI2S_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11273 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11274 /* kcontrol of lsm_port */
11275 SOC_ENUM_EXT("LSM1 Port", lsm_port_enum,
11276 msm_routing_lsm_port_get,
11277 msm_routing_lsm_port_put),
11278 SOC_ENUM_EXT("LSM2 Port", lsm_port_enum,
11279 msm_routing_lsm_port_get,
11280 msm_routing_lsm_port_put),
11281 SOC_ENUM_EXT("LSM3 Port", lsm_port_enum,
11282 msm_routing_lsm_port_get,
11283 msm_routing_lsm_port_put),
11284 SOC_ENUM_EXT("LSM4 Port", lsm_port_enum,
11285 msm_routing_lsm_port_get,
11286 msm_routing_lsm_port_put),
11287 SOC_ENUM_EXT("LSM5 Port", lsm_port_enum,
11288 msm_routing_lsm_port_get,
11289 msm_routing_lsm_port_put),
11290 SOC_ENUM_EXT("LSM6 Port", lsm_port_enum,
11291 msm_routing_lsm_port_get,
11292 msm_routing_lsm_port_put),
11293 SOC_ENUM_EXT("LSM7 Port", lsm_port_enum,
11294 msm_routing_lsm_port_get,
11295 msm_routing_lsm_port_put),
11296 SOC_ENUM_EXT("LSM8 Port", lsm_port_enum,
11297 msm_routing_lsm_port_get,
11298 msm_routing_lsm_port_put),
11299};
11300
11301static const char * const aanc_slim_0_rx_text[] = {
11302 "ZERO", "SLIMBUS_0_TX", "SLIMBUS_1_TX", "SLIMBUS_2_TX", "SLIMBUS_3_TX",
11303 "SLIMBUS_4_TX", "SLIMBUS_5_TX", "SLIMBUS_6_TX"
11304};
11305
11306static const struct soc_enum aanc_slim_0_rx_enum =
11307 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(aanc_slim_0_rx_text),
11308 aanc_slim_0_rx_text);
11309
11310static const struct snd_kcontrol_new aanc_slim_0_rx_mux[] = {
11311 SOC_ENUM_EXT("AANC_SLIM_0_RX MUX", aanc_slim_0_rx_enum,
11312 msm_routing_slim_0_rx_aanc_mux_get,
11313 msm_routing_slim_0_rx_aanc_mux_put)
11314};
11315
11316static int msm_routing_get_stereo_to_custom_stereo_control(
11317 struct snd_kcontrol *kcontrol,
11318 struct snd_ctl_elem_value *ucontrol)
11319{
11320 ucontrol->value.integer.value[0] = is_custom_stereo_on;
11321 return 0;
11322}
11323
11324static int msm_routing_put_stereo_to_custom_stereo_control(
11325 struct snd_kcontrol *kcontrol,
11326 struct snd_ctl_elem_value *ucontrol)
11327{
11328 int flag = 0, i = 0, rc = 0, idx = 0;
11329 int be_index = 0, port_id, topo_id;
11330 unsigned int session_id = 0;
11331 uint16_t op_FL_ip_FL_weight = 0;
11332 uint16_t op_FL_ip_FR_weight = 0;
11333 uint16_t op_FR_ip_FL_weight = 0;
11334 uint16_t op_FR_ip_FR_weight = 0;
11335
11336 flag = ucontrol->value.integer.value[0];
11337 pr_debug("%s E flag %d\n", __func__, flag);
11338
11339 if ((is_custom_stereo_on && flag) || (!is_custom_stereo_on && !flag)) {
11340 pr_err("%s: is_custom_stereo_on %d, flag %d\n",
11341 __func__, is_custom_stereo_on, flag);
11342 return 0;
11343 }
11344 is_custom_stereo_on = flag ? true : false;
11345 pr_debug("%s:is_custom_stereo_on %d\n", __func__, is_custom_stereo_on);
11346 for (be_index = 0; be_index < MSM_BACKEND_DAI_MAX; be_index++) {
11347 port_id = msm_bedais[be_index].port_id;
11348 if (!msm_bedais[be_index].active)
11349 continue;
11350 if ((port_id != SLIMBUS_0_RX) &&
11351 (port_id != RT_PROXY_PORT_001_RX) &&
11352 (port_id != AFE_PORT_ID_PRIMARY_MI2S_RX) &&
11353 (port_id != AFE_PORT_ID_INT4_MI2S_RX))
11354 continue;
11355
11356 for_each_set_bit(i, &msm_bedais[be_index].fe_sessions[0],
11357 MSM_FRONTEND_DAI_MM_SIZE) {
11358 if (fe_dai_map[i][SESSION_TYPE_RX].perf_mode !=
11359 LEGACY_PCM_MODE)
11360 goto skip_send_custom_stereo;
11361 session_id =
11362 fe_dai_map[i][SESSION_TYPE_RX].strm_id;
11363 if (is_custom_stereo_on) {
11364 op_FL_ip_FL_weight =
11365 Q14_GAIN_ZERO_POINT_FIVE;
11366 op_FL_ip_FR_weight =
11367 Q14_GAIN_ZERO_POINT_FIVE;
11368 op_FR_ip_FL_weight =
11369 Q14_GAIN_ZERO_POINT_FIVE;
11370 op_FR_ip_FR_weight =
11371 Q14_GAIN_ZERO_POINT_FIVE;
11372 } else {
11373 op_FL_ip_FL_weight = Q14_GAIN_UNITY;
11374 op_FL_ip_FR_weight = 0;
11375 op_FR_ip_FL_weight = 0;
11376 op_FR_ip_FR_weight = Q14_GAIN_UNITY;
11377 }
11378 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++) {
11379 unsigned long copp =
11380 session_copp_map[i]
11381 [SESSION_TYPE_RX][be_index];
11382 if (!test_bit(idx, &copp))
11383 goto skip_send_custom_stereo;
11384 topo_id = adm_get_topology_for_port_copp_idx(
11385 msm_bedais[be_index].port_id, idx);
11386 if (topo_id < 0)
11387 pr_debug("%s:Err:custom stereo topo %d",
11388 __func__, topo_id);
11389 pr_debug("idx %d\n", idx);
11390 if (topo_id == DS2_ADM_COPP_TOPOLOGY_ID)
11391 rc = msm_ds2_dap_set_custom_stereo_onoff
11392 (msm_bedais[be_index].port_id,
11393 idx, is_custom_stereo_on);
11394 else if (topo_id == DOLBY_ADM_COPP_TOPOLOGY_ID)
11395 rc = dolby_dap_set_custom_stereo_onoff(
11396 msm_bedais[be_index].port_id,
11397 idx, is_custom_stereo_on);
11398 else
11399 rc = msm_qti_pp_send_stereo_to_custom_stereo_cmd
11400 (msm_bedais[be_index].port_id,
11401 idx, session_id,
11402 op_FL_ip_FL_weight,
11403 op_FL_ip_FR_weight,
11404 op_FR_ip_FL_weight,
11405 op_FR_ip_FR_weight);
11406 if (rc < 0)
11407skip_send_custom_stereo:
11408 pr_err("%s: err setting custom stereo\n",
11409 __func__);
11410 }
11411
11412 }
11413 }
11414 return 0;
11415}
11416
11417static const struct snd_kcontrol_new stereo_to_custom_stereo_controls[] = {
11418 SOC_SINGLE_EXT("Set Custom Stereo OnOff", SND_SOC_NOPM, 0,
11419 1, 0, msm_routing_get_stereo_to_custom_stereo_control,
11420 msm_routing_put_stereo_to_custom_stereo_control),
11421};
11422
11423static int msm_routing_get_app_type_cfg_control(struct snd_kcontrol *kcontrol,
11424 struct snd_ctl_elem_value *ucontrol)
11425{
11426 return 0;
11427}
11428
11429static int msm_routing_put_app_type_cfg_control(struct snd_kcontrol *kcontrol,
11430 struct snd_ctl_elem_value *ucontrol)
11431{
11432 int i = 0, j;
11433 int num_app_types = ucontrol->value.integer.value[i++];
11434
11435 pr_debug("%s\n", __func__);
11436
11437 memset(app_type_cfg, 0, MAX_APP_TYPES*
11438 sizeof(struct msm_pcm_routing_app_type_data));
11439 if (num_app_types > MAX_APP_TYPES) {
11440 pr_err("%s: number of app types exceed the max supported\n",
11441 __func__);
11442 return -EINVAL;
11443 }
11444 for (j = 0; j < num_app_types; j++) {
11445 app_type_cfg[j].app_type =
11446 ucontrol->value.integer.value[i++];
11447 app_type_cfg[j].sample_rate =
11448 ucontrol->value.integer.value[i++];
11449 app_type_cfg[j].bit_width =
11450 ucontrol->value.integer.value[i++];
11451 }
11452
11453 return 0;
11454}
11455
11456static int msm_routing_put_app_type_gain_control(struct snd_kcontrol *kcontrol,
11457 struct snd_ctl_elem_value *ucontrol)
11458{
11459 int j, fe_id, be_id, port_type;
11460 int ret = 0;
11461 unsigned long copp;
11462 struct msm_pcm_routing_bdai_data *bedai;
11463 int dir = ucontrol->value.integer.value[0] ? SESSION_TYPE_TX :
11464 SESSION_TYPE_RX;
11465 int app_type = ucontrol->value.integer.value[1];
11466 int gain = (ucontrol->value.integer.value[2] +
11467 ucontrol->value.integer.value[3])/2;
11468
11469 port_type = (dir == SESSION_TYPE_RX) ? MSM_AFE_PORT_TYPE_RX :
11470 MSM_AFE_PORT_TYPE_TX;
11471
11472 mutex_lock(&routing_lock);
11473 for (be_id = 0; be_id < MSM_BACKEND_DAI_MAX; be_id++) {
11474 if (is_be_dai_extproc(be_id))
11475 continue;
11476
11477 bedai = &msm_bedais[be_id];
11478 if (afe_get_port_type(bedai->port_id) != port_type)
11479 continue;
11480
11481 if (!bedai->active)
11482 continue;
11483
11484 for (fe_id = 0; fe_id < MSM_FRONTEND_DAI_MAX; fe_id++) {
11485 if (!test_bit(fe_id, &bedai->fe_sessions[0]))
11486 continue;
11487
11488 if (app_type !=
11489 fe_dai_app_type_cfg[fe_id][dir][be_id].app_type)
11490 continue;
11491
11492 copp = session_copp_map[fe_id][dir][be_id];
11493 for (j = 0; j < MAX_COPPS_PER_PORT; j++) {
11494 if (!test_bit(j, &copp))
11495 continue;
11496 ret |= adm_set_volume(bedai->port_id, j, gain);
11497 }
11498 }
11499 }
11500 mutex_unlock(&routing_lock);
11501 return ret ? -EINVAL : 0;
11502}
11503
11504static const struct snd_kcontrol_new app_type_cfg_controls[] = {
11505 SOC_SINGLE_MULTI_EXT("App Type Config", SND_SOC_NOPM, 0,
11506 0xFFFFFFFF, 0, 128, msm_routing_get_app_type_cfg_control,
11507 msm_routing_put_app_type_cfg_control),
11508 SOC_SINGLE_MULTI_EXT("App Type Gain", SND_SOC_NOPM, 0,
11509 0x2000, 0, 4, NULL, msm_routing_put_app_type_gain_control)
11510};
11511
Vikram Pandurangaee9c03a2017-09-07 15:06:17 -070011512static int msm_routing_put_module_cfg_control(struct snd_kcontrol *kcontrol,
11513 struct snd_ctl_elem_value *ucontrol)
11514{
11515 int copp_idx, fe_id, be_id, port_type;
11516 int ret = 0;
11517 unsigned long copp;
11518 struct msm_pcm_routing_bdai_data *bedai;
11519 char *param_data = NULL;
11520 uint32_t *update_param_data = NULL;
11521 uint32_t param_size = sizeof(uint32_t) +
11522 sizeof(struct adm_param_data_v5);
11523 int dir = ucontrol->value.integer.value[0] ? SESSION_TYPE_TX :
11524 SESSION_TYPE_RX;
11525 int app_type = ucontrol->value.integer.value[1];
11526 int module_id = ucontrol->value.integer.value[2];
11527 int instance_id = ucontrol->value.integer.value[3];
11528 int param_id = ucontrol->value.integer.value[4];
11529 int param_value = ucontrol->value.integer.value[5];
11530
11531 port_type = (dir == SESSION_TYPE_RX) ? MSM_AFE_PORT_TYPE_RX :
11532 MSM_AFE_PORT_TYPE_TX;
11533 pr_debug("%s app_type:%d mod_id:%d instance_id:%d param_id:%d value:%d\n",
11534 __func__, app_type, module_id,
11535 instance_id, param_id, param_value);
11536
11537 param_data = kzalloc(param_size, GFP_KERNEL);
11538 if (!param_data)
11539 return -ENOMEM;
11540
11541 update_param_data = (uint32_t *)param_data;
11542 *update_param_data++ = module_id;
11543 *update_param_data++ = param_id;
11544 *update_param_data++ = sizeof(uint32_t);
11545 *update_param_data++ = param_value;
11546
11547 mutex_lock(&routing_lock);
11548 for (be_id = 0; be_id < MSM_BACKEND_DAI_MAX; be_id++) {
11549 if (is_be_dai_extproc(be_id))
11550 continue;
11551
11552 bedai = &msm_bedais[be_id];
11553 if (afe_get_port_type(bedai->port_id) != port_type)
11554 continue;
11555
11556 if (!bedai->active)
11557 continue;
11558
11559 for (fe_id = 0; fe_id < MSM_FRONTEND_DAI_MAX; fe_id++) {
11560 if (!test_bit(fe_id, &bedai->fe_sessions[0]))
11561 continue;
11562
11563 if (app_type !=
11564 fe_dai_app_type_cfg[fe_id][dir][be_id].app_type)
11565 continue;
11566
11567 copp = session_copp_map[fe_id][dir][be_id];
11568 for (copp_idx = 0; copp_idx < MAX_COPPS_PER_PORT;
11569 copp_idx++) {
11570 if (!test_bit(copp_idx, &copp))
11571 continue;
11572
11573 ret = adm_send_params_v5(bedai->port_id,
11574 copp_idx,
11575 param_data,
11576 param_size);
11577 if (ret) {
11578 pr_err("%s: Setting param failed with err=%d\n",
11579 __func__, ret);
11580 ret = -EINVAL;
11581 goto done;
11582 }
11583 }
11584 }
11585 }
11586done:
11587 mutex_unlock(&routing_lock);
11588 kfree(param_data);
11589 return ret;
11590}
11591
11592static const struct snd_kcontrol_new module_cfg_controls[] = {
11593 SOC_SINGLE_MULTI_EXT("Audio Effect", SND_SOC_NOPM, 0,
11594 0x2000, 0, 6, NULL, msm_routing_put_module_cfg_control)
11595};
11596
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011597static int msm_routing_get_lsm_app_type_cfg_control(
11598 struct snd_kcontrol *kcontrol,
11599 struct snd_ctl_elem_value *ucontrol)
11600{
11601 return 0;
11602}
11603
11604static int msm_routing_put_lsm_app_type_cfg_control(
11605 struct snd_kcontrol *kcontrol,
11606 struct snd_ctl_elem_value *ucontrol)
11607{
11608 int i = 0, j;
11609 int num_app_types = ucontrol->value.integer.value[i++];
11610
11611 memset(lsm_app_type_cfg, 0, MAX_APP_TYPES*
11612 sizeof(struct msm_pcm_routing_app_type_data));
11613 if (num_app_types > MAX_APP_TYPES) {
11614 pr_err("%s: number of app types exceed the max supported\n",
11615 __func__);
11616 return -EINVAL;
11617 }
11618 for (j = 0; j < num_app_types; j++) {
11619 lsm_app_type_cfg[j].app_type =
11620 ucontrol->value.integer.value[i++];
11621 lsm_app_type_cfg[j].sample_rate =
11622 ucontrol->value.integer.value[i++];
11623 lsm_app_type_cfg[j].bit_width =
11624 ucontrol->value.integer.value[i++];
11625 }
11626
11627 return 0;
11628}
11629
11630static const struct snd_kcontrol_new lsm_app_type_cfg_controls[] = {
11631 SOC_SINGLE_MULTI_EXT("Listen App Type Config", SND_SOC_NOPM, 0,
11632 0xFFFFFFFF, 0, 128, msm_routing_get_lsm_app_type_cfg_control,
11633 msm_routing_put_lsm_app_type_cfg_control),
11634};
11635
11636static int msm_routing_get_use_ds1_or_ds2_control(
11637 struct snd_kcontrol *kcontrol,
11638 struct snd_ctl_elem_value *ucontrol)
11639{
11640 ucontrol->value.integer.value[0] = is_ds2_on;
11641 return 0;
11642}
11643
11644static int msm_routing_put_use_ds1_or_ds2_control(
11645 struct snd_kcontrol *kcontrol,
11646 struct snd_ctl_elem_value *ucontrol)
11647{
11648 is_ds2_on = ucontrol->value.integer.value[0];
11649 return 0;
11650}
11651
11652static const struct snd_kcontrol_new use_ds1_or_ds2_controls[] = {
11653 SOC_SINGLE_EXT("DS2 OnOff", SND_SOC_NOPM, 0,
11654 1, 0, msm_routing_get_use_ds1_or_ds2_control,
11655 msm_routing_put_use_ds1_or_ds2_control),
11656};
11657
11658int msm_routing_get_rms_value_control(struct snd_kcontrol *kcontrol,
11659 struct snd_ctl_elem_value *ucontrol) {
11660 int rc = 0;
11661 int be_idx = 0;
11662 char *param_value;
11663 int *update_param_value;
11664 uint32_t param_length = sizeof(uint32_t);
11665 uint32_t param_payload_len = RMS_PAYLOAD_LEN * sizeof(uint32_t);
11666
11667 param_value = kzalloc(param_length + param_payload_len, GFP_KERNEL);
11668 if (!param_value)
11669 return -ENOMEM;
11670
11671 for (be_idx = 0; be_idx < MSM_BACKEND_DAI_MAX; be_idx++)
11672 if (msm_bedais[be_idx].port_id == SLIMBUS_0_TX)
11673 break;
11674 if ((be_idx < MSM_BACKEND_DAI_MAX) && msm_bedais[be_idx].active) {
11675 rc = adm_get_params(SLIMBUS_0_TX, 0,
11676 RMS_MODULEID_APPI_PASSTHRU,
11677 RMS_PARAM_FIRST_SAMPLE,
11678 param_length + param_payload_len,
11679 param_value);
11680 if (rc) {
11681 pr_err("%s: get parameters failed:%d\n", __func__, rc);
11682 kfree(param_value);
11683 return -EINVAL;
11684 }
11685 update_param_value = (int *)param_value;
11686 ucontrol->value.integer.value[0] = update_param_value[0];
11687
11688 pr_debug("%s: FROM DSP value[0] 0x%x\n",
11689 __func__, update_param_value[0]);
11690 }
11691 kfree(param_value);
11692 return 0;
11693}
11694
11695static int msm_voc_session_id_put(struct snd_kcontrol *kcontrol,
11696 struct snd_ctl_elem_value *ucontrol)
11697{
11698 voc_session_id = ucontrol->value.integer.value[0];
11699
11700 pr_debug("%s: voc_session_id=%u\n", __func__, voc_session_id);
11701
11702 return 0;
11703}
11704
11705static int msm_voc_session_id_get(struct snd_kcontrol *kcontrol,
11706 struct snd_ctl_elem_value *ucontrol)
11707{
11708 ucontrol->value.integer.value[0] = voc_session_id;
11709
11710 return 0;
11711}
11712
11713static struct snd_kcontrol_new msm_voc_session_controls[] = {
11714 SOC_SINGLE_MULTI_EXT("Voc VSID", SND_SOC_NOPM, 0,
11715 0xFFFFFFFF, 0, 1, msm_voc_session_id_get,
11716 msm_voc_session_id_put),
11717};
11718
11719static int msm_sound_focus_info(struct snd_kcontrol *kcontrol,
11720 struct snd_ctl_elem_info *uinfo)
11721{
11722 uinfo->type = SNDRV_CTL_ELEM_TYPE_BYTES;
11723 uinfo->count = sizeof(struct sound_focus_param);
11724
11725 return 0;
11726}
11727
11728static int msm_voice_sound_focus_put(struct snd_kcontrol *kcontrol,
11729 struct snd_ctl_elem_value *ucontrol)
11730{
11731 int ret = 0;
11732 struct sound_focus_param soundFocusData;
11733
11734 memcpy((void *)&soundFocusData, ucontrol->value.bytes.data,
11735 sizeof(struct sound_focus_param));
11736 ret = voc_set_sound_focus(soundFocusData);
11737 if (ret) {
11738 pr_err("%s: Error setting Sound Focus Params, err=%d\n",
11739 __func__, ret);
11740
11741 ret = -EINVAL;
11742 }
11743
11744 return ret;
11745}
11746
11747static int msm_voice_sound_focus_get(struct snd_kcontrol *kcontrol,
11748 struct snd_ctl_elem_value *ucontrol)
11749{
11750 int ret = 0;
11751 struct sound_focus_param soundFocusData;
11752
11753 memset(&soundFocusData, 0, sizeof(struct sound_focus_param));
11754
11755 ret = voc_get_sound_focus(&soundFocusData);
11756 if (ret) {
11757 pr_err("%s: Error getting Sound Focus Params, err=%d\n",
11758 __func__, ret);
11759
11760 ret = -EINVAL;
11761 goto done;
11762 }
11763 memcpy(ucontrol->value.bytes.data, (void *)&soundFocusData,
11764 sizeof(struct sound_focus_param));
11765
11766done:
11767 return ret;
11768}
11769
11770static int msm_source_tracking_info(struct snd_kcontrol *kcontrol,
11771 struct snd_ctl_elem_info *uinfo)
11772{
11773 uinfo->type = SNDRV_CTL_ELEM_TYPE_BYTES;
11774 uinfo->count = sizeof(struct source_tracking_param);
11775
11776 return 0;
11777}
11778
11779static int msm_voice_source_tracking_get(struct snd_kcontrol *kcontrol,
11780 struct snd_ctl_elem_value *ucontrol)
11781{
Meng Wang85b62082018-02-04 09:59:16 +080011782 return -EINVAL;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011783}
11784
11785static int msm_audio_get_copp_idx_from_port_id(int port_id, int session_type,
11786 int *copp_idx)
11787{
11788 int i, idx, be_idx;
11789 int ret = 0;
11790 unsigned long copp;
11791
11792 pr_debug("%s: Enter, port_id=%d\n", __func__, port_id);
11793
11794 ret = q6audio_validate_port(port_id);
11795 if (ret < 0) {
11796 pr_err("%s: port validation failed id 0x%x ret %d\n",
11797 __func__, port_id, ret);
11798
11799 ret = -EINVAL;
11800 goto done;
11801 }
11802
11803 for (be_idx = 0; be_idx < MSM_BACKEND_DAI_MAX; be_idx++) {
11804 if (msm_bedais[be_idx].port_id == port_id)
11805 break;
11806 }
11807 if (be_idx >= MSM_BACKEND_DAI_MAX) {
11808 pr_err("%s: Invalid be id %d\n", __func__, be_idx);
11809
11810 ret = -EINVAL;
11811 goto done;
11812 }
11813
11814 for_each_set_bit(i, &msm_bedais[be_idx].fe_sessions[0],
11815 MSM_FRONTEND_DAI_MM_SIZE) {
11816 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++) {
11817 copp = session_copp_map[i]
11818 [session_type][be_idx];
11819 if (test_bit(idx, &copp))
11820 break;
11821 }
11822 if (idx >= MAX_COPPS_PER_PORT)
11823 continue;
11824 else
11825 break;
11826 }
11827 if (i >= MSM_FRONTEND_DAI_MM_SIZE) {
11828 pr_err("%s: Invalid FE, exiting\n", __func__);
11829
11830 ret = -EINVAL;
11831 goto done;
11832 }
11833 *copp_idx = idx;
11834 pr_debug("%s: copp_idx=%d\n", __func__, *copp_idx);
11835
11836done:
11837 return ret;
11838}
11839
11840static int msm_audio_sound_focus_derive_port_id(struct snd_kcontrol *kcontrol,
11841 const char *prefix, int *port_id)
11842{
11843 int ret = 0;
11844
11845 pr_debug("%s: Enter, prefix:%s\n", __func__, prefix);
11846
11847 /*
11848 * Mixer control name will be like "Sound Focus Audio Tx SLIMBUS_0"
11849 * where the prefix is "Sound Focus Audio Tx ". Skip the prefix
11850 * and compare the string with the backend name to derive the port id.
11851 */
11852 if (!strcmp(kcontrol->id.name + strlen(prefix),
11853 "SLIMBUS_0")) {
11854 *port_id = SLIMBUS_0_TX;
11855 } else if (!strcmp(kcontrol->id.name + strlen(prefix),
11856 "TERT_MI2S")) {
11857 *port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
11858 } else if (!strcmp(kcontrol->id.name + strlen(prefix),
11859 "INT3_MI2S")) {
11860 *port_id = AFE_PORT_ID_INT3_MI2S_TX;
11861 } else {
11862 pr_err("%s: mixer ctl name=%s, could not derive valid port id\n",
11863 __func__, kcontrol->id.name);
11864
11865 ret = -EINVAL;
11866 goto done;
11867 }
11868 pr_debug("%s: mixer ctl name=%s, derived port_id=%d\n",
11869 __func__, kcontrol->id.name, *port_id);
11870
11871done:
11872 return ret;
11873}
11874
11875static int msm_audio_sound_focus_put(struct snd_kcontrol *kcontrol,
11876 struct snd_ctl_elem_value *ucontrol)
11877{
11878 int ret = 0;
11879 struct sound_focus_param soundFocusData;
11880 int port_id, copp_idx;
11881
11882 ret = msm_audio_sound_focus_derive_port_id(kcontrol,
11883 "Sound Focus Audio Tx ", &port_id);
11884 if (ret != 0) {
11885 pr_err("%s: Error in deriving port id, err=%d\n",
11886 __func__, ret);
11887
11888 ret = -EINVAL;
11889 goto done;
11890 }
11891
11892 ret = msm_audio_get_copp_idx_from_port_id(port_id, SESSION_TYPE_TX,
11893 &copp_idx);
11894 if (ret) {
11895 pr_err("%s: Could not get copp idx for port_id=%d\n",
11896 __func__, port_id);
11897
11898 ret = -EINVAL;
11899 goto done;
11900 }
11901
11902 memcpy((void *)&soundFocusData, ucontrol->value.bytes.data,
11903 sizeof(struct sound_focus_param));
11904
11905 ret = adm_set_sound_focus(port_id, copp_idx, soundFocusData);
11906 if (ret) {
11907 pr_err("%s: Error setting Sound Focus Params, err=%d\n",
11908 __func__, ret);
11909
11910 ret = -EINVAL;
11911 goto done;
11912 }
11913
11914done:
11915 return ret;
11916}
11917
11918static int msm_audio_sound_focus_get(struct snd_kcontrol *kcontrol,
11919 struct snd_ctl_elem_value *ucontrol)
11920{
11921 int ret = 0;
11922 struct sound_focus_param soundFocusData;
11923 int port_id, copp_idx;
11924
11925 ret = msm_audio_sound_focus_derive_port_id(kcontrol,
11926 "Sound Focus Audio Tx ", &port_id);
11927 if (ret) {
11928 pr_err("%s: Error in deriving port id, err=%d\n",
11929 __func__, ret);
11930
11931 ret = -EINVAL;
11932 goto done;
11933 }
11934
11935 ret = msm_audio_get_copp_idx_from_port_id(port_id, SESSION_TYPE_TX,
11936 &copp_idx);
11937 if (ret) {
11938 pr_err("%s: Could not get copp idx for port_id=%d\n",
11939 __func__, port_id);
11940
11941 ret = -EINVAL;
11942 goto done;
11943 }
11944
11945 ret = adm_get_sound_focus(port_id, copp_idx, &soundFocusData);
11946 if (ret) {
11947 pr_err("%s: Error getting Sound Focus Params, err=%d\n",
11948 __func__, ret);
11949
11950 ret = -EINVAL;
11951 goto done;
11952 }
11953
11954 memcpy(ucontrol->value.bytes.data, (void *)&soundFocusData,
11955 sizeof(struct sound_focus_param));
11956
11957done:
11958 return ret;
11959}
11960
11961static int msm_audio_source_tracking_get(struct snd_kcontrol *kcontrol,
11962 struct snd_ctl_elem_value *ucontrol)
11963{
11964 int ret = 0;
11965 struct source_tracking_param sourceTrackingData;
11966 int port_id, copp_idx;
11967
11968 ret = msm_audio_sound_focus_derive_port_id(kcontrol,
11969 "Source Tracking Audio Tx ", &port_id);
11970 if (ret) {
11971 pr_err("%s: Error in deriving port id, err=%d\n",
11972 __func__, ret);
11973
11974 ret = -EINVAL;
11975 goto done;
11976 }
11977
11978 ret = msm_audio_get_copp_idx_from_port_id(port_id, SESSION_TYPE_TX,
11979 &copp_idx);
11980 if (ret) {
11981 pr_err("%s: Could not get copp idx for port_id=%d\n",
11982 __func__, port_id);
11983
11984 ret = -EINVAL;
11985 goto done;
11986 }
11987
11988 ret = adm_get_source_tracking(port_id, copp_idx, &sourceTrackingData);
11989 if (ret) {
11990 pr_err("%s: Error getting Source Tracking Params, err=%d\n",
11991 __func__, ret);
11992
11993 ret = -EINVAL;
11994 goto done;
11995 }
11996
11997 memcpy(ucontrol->value.bytes.data, (void *)&sourceTrackingData,
11998 sizeof(struct source_tracking_param));
11999
12000done:
12001 return ret;
12002}
12003
12004static const struct snd_kcontrol_new msm_source_tracking_controls[] = {
12005 {
12006 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12007 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12008 .name = "Sound Focus Voice Tx SLIMBUS_0",
12009 .info = msm_sound_focus_info,
12010 .get = msm_voice_sound_focus_get,
12011 .put = msm_voice_sound_focus_put,
12012 },
12013 {
12014 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12015 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12016 .name = "Source Tracking Voice Tx SLIMBUS_0",
12017 .info = msm_source_tracking_info,
12018 .get = msm_voice_source_tracking_get,
12019 },
12020 {
12021 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12022 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12023 .name = "Sound Focus Audio Tx SLIMBUS_0",
12024 .info = msm_sound_focus_info,
12025 .get = msm_audio_sound_focus_get,
12026 .put = msm_audio_sound_focus_put,
12027 },
12028 {
12029 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12030 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12031 .name = "Source Tracking Audio Tx SLIMBUS_0",
12032 .info = msm_source_tracking_info,
12033 .get = msm_audio_source_tracking_get,
12034 },
12035 {
12036 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12037 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12038 .name = "Sound Focus Voice Tx TERT_MI2S",
12039 .info = msm_sound_focus_info,
12040 .get = msm_voice_sound_focus_get,
12041 .put = msm_voice_sound_focus_put,
12042 },
12043 {
12044 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12045 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12046 .name = "Source Tracking Voice Tx TERT_MI2S",
12047 .info = msm_source_tracking_info,
12048 .get = msm_voice_source_tracking_get,
12049 },
12050 {
12051 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12052 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12053 .name = "Sound Focus Audio Tx TERT_MI2S",
12054 .info = msm_sound_focus_info,
12055 .get = msm_audio_sound_focus_get,
12056 .put = msm_audio_sound_focus_put,
12057 },
12058 {
12059 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12060 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12061 .name = "Source Tracking Audio Tx TERT_MI2S",
12062 .info = msm_source_tracking_info,
12063 .get = msm_audio_source_tracking_get,
12064 },
12065 {
12066 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12067 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12068 .name = "Sound Focus Voice Tx INT3_MI2S",
12069 .info = msm_sound_focus_info,
12070 .get = msm_voice_sound_focus_get,
12071 .put = msm_voice_sound_focus_put,
12072 },
12073 {
12074 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12075 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12076 .name = "Source Tracking Voice Tx INT3_MI2S",
12077 .info = msm_source_tracking_info,
12078 .get = msm_voice_source_tracking_get,
12079 },
12080 {
12081 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12082 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12083 .name = "Sound Focus Audio Tx INT3_MI2S",
12084 .info = msm_sound_focus_info,
12085 .get = msm_audio_sound_focus_get,
12086 .put = msm_audio_sound_focus_put,
12087 },
12088 {
12089 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12090 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12091 .name = "Source Tracking Audio Tx INT3_MI2S",
12092 .info = msm_source_tracking_info,
12093 .get = msm_audio_source_tracking_get,
12094 },
12095};
12096
12097static int spkr_prot_put_vi_lch_port(struct snd_kcontrol *kcontrol,
12098 struct snd_ctl_elem_value *ucontrol)
12099{
12100 int ret = 0;
12101 int item;
12102 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
12103
12104 pr_debug("%s item is %d\n", __func__,
12105 ucontrol->value.enumerated.item[0]);
12106 mutex_lock(&routing_lock);
12107 item = ucontrol->value.enumerated.item[0];
12108 if (item < e->items) {
12109 pr_debug("%s RX DAI ID %d TX DAI id %d\n",
12110 __func__, e->shift_l, e->values[item]);
12111 if (e->shift_l < MSM_BACKEND_DAI_MAX &&
12112 e->values[item] < MSM_BACKEND_DAI_MAX)
12113 /* Enable feedback TX path */
12114 ret = afe_spk_prot_feed_back_cfg(
12115 msm_bedais[e->values[item]].port_id,
12116 msm_bedais[e->shift_l].port_id, 1, 0, 1);
12117 else {
12118 pr_debug("%s values are out of range item %d\n",
12119 __func__, e->values[item]);
12120 /* Disable feedback TX path */
12121 if (e->values[item] == MSM_BACKEND_DAI_MAX)
12122 ret = afe_spk_prot_feed_back_cfg(0, 0, 0, 0, 0);
12123 else
12124 ret = -EINVAL;
12125 }
12126 } else {
12127 pr_err("%s item value is out of range item\n", __func__);
12128 ret = -EINVAL;
12129 }
12130 mutex_unlock(&routing_lock);
12131 return ret;
12132}
12133
12134static int spkr_prot_put_vi_rch_port(struct snd_kcontrol *kcontrol,
12135 struct snd_ctl_elem_value *ucontrol)
12136{
12137 int ret = 0;
12138 int item;
12139 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
12140
12141 pr_debug("%s item is %d\n", __func__,
12142 ucontrol->value.enumerated.item[0]);
12143 mutex_lock(&routing_lock);
12144 item = ucontrol->value.enumerated.item[0];
12145 if (item < e->items) {
12146 pr_debug("%s RX DAI ID %d TX DAI id %d\n",
12147 __func__, e->shift_l, e->values[item]);
12148 if (e->shift_l < MSM_BACKEND_DAI_MAX &&
12149 e->values[item] < MSM_BACKEND_DAI_MAX)
12150 /* Enable feedback TX path */
12151 ret = afe_spk_prot_feed_back_cfg(
12152 msm_bedais[e->values[item]].port_id,
12153 msm_bedais[e->shift_l].port_id,
12154 1, 1, 1);
12155 else {
12156 pr_debug("%s values are out of range item %d\n",
12157 __func__, e->values[item]);
12158 /* Disable feedback TX path */
12159 if (e->values[item] == MSM_BACKEND_DAI_MAX)
12160 ret = afe_spk_prot_feed_back_cfg(0,
12161 0, 0, 0, 0);
12162 else
12163 ret = -EINVAL;
12164 }
12165 } else {
12166 pr_err("%s item value is out of range item\n", __func__);
12167 ret = -EINVAL;
12168 }
12169 mutex_unlock(&routing_lock);
12170 return ret;
12171}
12172
12173static int spkr_prot_get_vi_lch_port(struct snd_kcontrol *kcontrol,
12174 struct snd_ctl_elem_value *ucontrol)
12175{
12176 pr_debug("%s\n", __func__);
12177 return 0;
12178}
12179
12180static int spkr_prot_get_vi_rch_port(struct snd_kcontrol *kcontrol,
12181 struct snd_ctl_elem_value *ucontrol)
12182{
12183 pr_debug("%s\n", __func__);
12184 ucontrol->value.enumerated.item[0] = 0;
12185 return 0;
12186}
12187
12188static const char * const slim0_rx_vi_fb_tx_lch_mux_text[] = {
12189 "ZERO", "SLIM4_TX"
12190};
12191
12192static const char * const slim0_rx_vi_fb_tx_rch_mux_text[] = {
12193 "ZERO", "SLIM4_TX"
12194};
12195
12196static const char * const mi2s_rx_vi_fb_tx_mux_text[] = {
12197 "ZERO", "SENARY_TX"
12198};
12199
12200static const char * const int4_mi2s_rx_vi_fb_tx_mono_mux_text[] = {
12201 "ZERO", "INT5_MI2S_TX"
12202};
12203
12204static const char * const int4_mi2s_rx_vi_fb_tx_stereo_mux_text[] = {
12205 "ZERO", "INT5_MI2S_TX"
12206};
12207
12208static const int const slim0_rx_vi_fb_tx_lch_value[] = {
12209 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_SLIMBUS_4_TX
12210};
12211
12212static const int const slim0_rx_vi_fb_tx_rch_value[] = {
12213 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_SLIMBUS_4_TX
12214};
12215
12216static const int const mi2s_rx_vi_fb_tx_value[] = {
12217 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_SENARY_MI2S_TX
12218};
12219
12220static const int const int4_mi2s_rx_vi_fb_tx_mono_ch_value[] = {
12221 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_INT5_MI2S_TX
12222};
12223
12224static const int const int4_mi2s_rx_vi_fb_tx_stereo_ch_value[] = {
12225 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_INT5_MI2S_TX
12226};
12227
12228static const struct soc_enum slim0_rx_vi_fb_lch_mux_enum =
12229 SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_SLIMBUS_0_RX, 0, 0,
12230 ARRAY_SIZE(slim0_rx_vi_fb_tx_lch_mux_text),
12231 slim0_rx_vi_fb_tx_lch_mux_text, slim0_rx_vi_fb_tx_lch_value);
12232
12233static const struct soc_enum slim0_rx_vi_fb_rch_mux_enum =
12234 SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_SLIMBUS_0_RX, 0, 0,
12235 ARRAY_SIZE(slim0_rx_vi_fb_tx_rch_mux_text),
12236 slim0_rx_vi_fb_tx_rch_mux_text, slim0_rx_vi_fb_tx_rch_value);
12237
12238static const struct soc_enum mi2s_rx_vi_fb_mux_enum =
12239 SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_PRI_MI2S_RX, 0, 0,
12240 ARRAY_SIZE(mi2s_rx_vi_fb_tx_mux_text),
12241 mi2s_rx_vi_fb_tx_mux_text, mi2s_rx_vi_fb_tx_value);
12242
12243static const struct soc_enum int4_mi2s_rx_vi_fb_mono_ch_mux_enum =
12244 SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_INT4_MI2S_RX, 0, 0,
12245 ARRAY_SIZE(int4_mi2s_rx_vi_fb_tx_mono_mux_text),
12246 int4_mi2s_rx_vi_fb_tx_mono_mux_text,
12247 int4_mi2s_rx_vi_fb_tx_mono_ch_value);
12248
12249static const struct soc_enum int4_mi2s_rx_vi_fb_stereo_ch_mux_enum =
12250 SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_INT4_MI2S_RX, 0, 0,
12251 ARRAY_SIZE(int4_mi2s_rx_vi_fb_tx_stereo_mux_text),
12252 int4_mi2s_rx_vi_fb_tx_stereo_mux_text,
12253 int4_mi2s_rx_vi_fb_tx_stereo_ch_value);
12254
12255static const struct snd_kcontrol_new slim0_rx_vi_fb_lch_mux =
12256 SOC_DAPM_ENUM_EXT("SLIM0_RX_VI_FB_LCH_MUX",
12257 slim0_rx_vi_fb_lch_mux_enum, spkr_prot_get_vi_lch_port,
12258 spkr_prot_put_vi_lch_port);
12259
12260static const struct snd_kcontrol_new slim0_rx_vi_fb_rch_mux =
12261 SOC_DAPM_ENUM_EXT("SLIM0_RX_VI_FB_RCH_MUX",
12262 slim0_rx_vi_fb_rch_mux_enum, spkr_prot_get_vi_rch_port,
12263 spkr_prot_put_vi_rch_port);
12264
12265static const struct snd_kcontrol_new mi2s_rx_vi_fb_mux =
12266 SOC_DAPM_ENUM_EXT("PRI_MI2S_RX_VI_FB_MUX",
12267 mi2s_rx_vi_fb_mux_enum, spkr_prot_get_vi_lch_port,
12268 spkr_prot_put_vi_lch_port);
12269
12270static const struct snd_kcontrol_new int4_mi2s_rx_vi_fb_mono_ch_mux =
12271 SOC_DAPM_ENUM_EXT("INT4_MI2S_RX_VI_FB_MONO_CH_MUX",
12272 int4_mi2s_rx_vi_fb_mono_ch_mux_enum, spkr_prot_get_vi_lch_port,
12273 spkr_prot_put_vi_lch_port);
12274
12275static const struct snd_kcontrol_new int4_mi2s_rx_vi_fb_stereo_ch_mux =
12276 SOC_DAPM_ENUM_EXT("INT4_MI2S_RX_VI_FB_STEREO_CH_MUX",
12277 int4_mi2s_rx_vi_fb_stereo_ch_mux_enum, spkr_prot_get_vi_rch_port,
12278 spkr_prot_put_vi_rch_port);
12279
12280static const struct snd_soc_dapm_widget msm_qdsp6_widgets[] = {
12281 /* Frontend AIF */
12282 /* Widget name equals to Front-End DAI name<Need confirmation>,
12283 * Stream name must contains substring of front-end dai name
12284 */
12285 SND_SOC_DAPM_AIF_IN("MM_DL1", "MultiMedia1 Playback", 0, 0, 0, 0),
12286 SND_SOC_DAPM_AIF_IN("MM_DL2", "MultiMedia2 Playback", 0, 0, 0, 0),
12287 SND_SOC_DAPM_AIF_IN("MM_DL3", "MultiMedia3 Playback", 0, 0, 0, 0),
12288 SND_SOC_DAPM_AIF_IN("MM_DL4", "MultiMedia4 Playback", 0, 0, 0, 0),
12289 SND_SOC_DAPM_AIF_IN("MM_DL5", "MultiMedia5 Playback", 0, 0, 0, 0),
12290 SND_SOC_DAPM_AIF_IN("MM_DL6", "MultiMedia6 Playback", 0, 0, 0, 0),
12291 SND_SOC_DAPM_AIF_IN("MM_DL7", "MultiMedia7 Playback", 0, 0, 0, 0),
12292 SND_SOC_DAPM_AIF_IN("MM_DL8", "MultiMedia8 Playback", 0, 0, 0, 0),
12293 SND_SOC_DAPM_AIF_IN("MM_DL9", "MultiMedia9 Playback", 0, 0, 0, 0),
12294 SND_SOC_DAPM_AIF_IN("MM_DL10", "MultiMedia10 Playback", 0, 0, 0, 0),
12295 SND_SOC_DAPM_AIF_IN("MM_DL11", "MultiMedia11 Playback", 0, 0, 0, 0),
12296 SND_SOC_DAPM_AIF_IN("MM_DL12", "MultiMedia12 Playback", 0, 0, 0, 0),
12297 SND_SOC_DAPM_AIF_IN("MM_DL13", "MultiMedia13 Playback", 0, 0, 0, 0),
12298 SND_SOC_DAPM_AIF_IN("MM_DL14", "MultiMedia14 Playback", 0, 0, 0, 0),
12299 SND_SOC_DAPM_AIF_IN("MM_DL15", "MultiMedia15 Playback", 0, 0, 0, 0),
12300 SND_SOC_DAPM_AIF_IN("MM_DL16", "MultiMedia16 Playback", 0, 0, 0, 0),
12301 SND_SOC_DAPM_AIF_IN("MM_DL20", "MultiMedia20 Playback", 0, 0, 0, 0),
12302 SND_SOC_DAPM_AIF_IN("VOIP_DL", "VoIP Playback", 0, 0, 0, 0),
12303 SND_SOC_DAPM_AIF_OUT("MM_UL1", "MultiMedia1 Capture", 0, 0, 0, 0),
12304 SND_SOC_DAPM_AIF_OUT("MM_UL2", "MultiMedia2 Capture", 0, 0, 0, 0),
12305 SND_SOC_DAPM_AIF_OUT("MM_UL3", "MultiMedia3 Capture", 0, 0, 0, 0),
12306 SND_SOC_DAPM_AIF_OUT("MM_UL4", "MultiMedia4 Capture", 0, 0, 0, 0),
12307 SND_SOC_DAPM_AIF_OUT("MM_UL5", "MultiMedia5 Capture", 0, 0, 0, 0),
12308 SND_SOC_DAPM_AIF_OUT("MM_UL6", "MultiMedia6 Capture", 0, 0, 0, 0),
12309 SND_SOC_DAPM_AIF_OUT("MM_UL8", "MultiMedia8 Capture", 0, 0, 0, 0),
12310 SND_SOC_DAPM_AIF_OUT("MM_UL9", "MultiMedia9 Capture", 0, 0, 0, 0),
Laxminath Kasam38070be2017-08-17 18:21:59 +053012311 SND_SOC_DAPM_AIF_OUT("MM_UL10", "MultiMedia10 Capture", 0, 0, 0, 0),
Asish Bhattacharya34504582017-08-08 12:55:01 +053012312 SND_SOC_DAPM_AIF_OUT("MM_UL16", "MultiMedia16 Capture", 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012313 SND_SOC_DAPM_AIF_OUT("MM_UL17", "MultiMedia17 Capture", 0, 0, 0, 0),
12314 SND_SOC_DAPM_AIF_OUT("MM_UL18", "MultiMedia18 Capture", 0, 0, 0, 0),
12315 SND_SOC_DAPM_AIF_OUT("MM_UL19", "MultiMedia19 Capture", 0, 0, 0, 0),
12316 SND_SOC_DAPM_AIF_OUT("MM_UL20", "MultiMedia20 Capture", 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012317 SND_SOC_DAPM_AIF_OUT("VOIP_UL", "VoIP Capture", 0, 0, 0, 0),
12318 SND_SOC_DAPM_AIF_IN("VOICEMMODE1_DL",
12319 "VoiceMMode1 Playback", 0, 0, 0, 0),
12320 SND_SOC_DAPM_AIF_OUT("VOICEMMODE1_UL",
12321 "VoiceMMode1 Capture", 0, 0, 0, 0),
12322 SND_SOC_DAPM_AIF_IN("VOICEMMODE2_DL",
12323 "VoiceMMode2 Playback", 0, 0, 0, 0),
12324 SND_SOC_DAPM_AIF_OUT("VOICEMMODE2_UL",
12325 "VoiceMMode2 Capture", 0, 0, 0, 0),
12326 SND_SOC_DAPM_AIF_IN("SLIM0_DL_HL", "SLIMBUS0_HOSTLESS Playback",
12327 0, 0, 0, 0),
12328 SND_SOC_DAPM_AIF_OUT("SLIM0_UL_HL", "SLIMBUS0_HOSTLESS Capture",
12329 0, 0, 0, 0),
12330 SND_SOC_DAPM_AIF_OUT("CPE_LSM_UL_HL", "CPE LSM capture",
12331 0, 0, 0, 0),
12332 SND_SOC_DAPM_AIF_IN("SLIM1_DL_HL", "SLIMBUS1_HOSTLESS Playback",
12333 0, 0, 0, 0),
12334 SND_SOC_DAPM_AIF_OUT("SLIM1_UL_HL", "SLIMBUS1_HOSTLESS Capture",
12335 0, 0, 0, 0),
12336 SND_SOC_DAPM_AIF_IN("SLIM3_DL_HL", "SLIMBUS3_HOSTLESS Playback",
12337 0, 0, 0, 0),
12338 SND_SOC_DAPM_AIF_OUT("SLIM3_UL_HL", "SLIMBUS3_HOSTLESS Capture",
12339 0, 0, 0, 0),
12340 SND_SOC_DAPM_AIF_IN("SLIM4_DL_HL", "SLIMBUS4_HOSTLESS Playback",
12341 0, 0, 0, 0),
12342 SND_SOC_DAPM_AIF_OUT("SLIM4_UL_HL", "SLIMBUS4_HOSTLESS Capture",
12343 0, 0, 0, 0),
12344 SND_SOC_DAPM_AIF_IN("SLIM6_DL_HL", "SLIMBUS6_HOSTLESS Playback",
12345 0, 0, 0, 0),
12346 SND_SOC_DAPM_AIF_OUT("SLIM6_UL_HL", "SLIMBUS6_HOSTLESS Capture",
12347 0, 0, 0, 0),
12348 SND_SOC_DAPM_AIF_IN("SLIM7_DL_HL", "SLIMBUS7_HOSTLESS Playback",
12349 0, 0, 0, 0),
12350 SND_SOC_DAPM_AIF_OUT("SLIM7_UL_HL", "SLIMBUS7_HOSTLESS Capture",
12351 0, 0, 0, 0),
12352 SND_SOC_DAPM_AIF_IN("SLIM8_DL_HL", "SLIMBUS8_HOSTLESS Playback",
12353 0, 0, 0, 0),
12354 SND_SOC_DAPM_AIF_OUT("SLIM8_UL_HL", "SLIMBUS8_HOSTLESS Capture",
12355 0, 0, 0, 0),
12356 SND_SOC_DAPM_AIF_IN("INTFM_DL_HL", "INT_FM_HOSTLESS Playback",
12357 0, 0, 0, 0),
12358 SND_SOC_DAPM_AIF_OUT("INTFM_UL_HL", "INT_FM_HOSTLESS Capture",
12359 0, 0, 0, 0),
12360 SND_SOC_DAPM_AIF_IN("INTHFP_DL_HL", "INT_HFP_BT_HOSTLESS Playback",
12361 0, 0, 0, 0),
12362 SND_SOC_DAPM_AIF_OUT("INTHFP_UL_HL", "INT_HFP_BT_HOSTLESS Capture",
12363 0, 0, 0, 0),
12364 SND_SOC_DAPM_AIF_IN("USBAUDIO_DL_HL", "USBAUDIO_HOSTLESS Playback",
12365 0, 0, 0, 0),
12366 SND_SOC_DAPM_AIF_OUT("USBAUDIO_UL_HL", "USBAUDIO_HOSTLESS Capture",
12367 0, 0, 0, 0),
12368 SND_SOC_DAPM_AIF_IN("HDMI_DL_HL", "HDMI_HOSTLESS Playback", 0, 0, 0, 0),
12369 SND_SOC_DAPM_AIF_IN("SEC_I2S_DL_HL", "SEC_I2S_RX_HOSTLESS Playback",
12370 0, 0, 0, 0),
12371 SND_SOC_DAPM_AIF_IN("INT0_MI2S_DL_HL",
12372 "INT0 MI2S_RX Hostless Playback",
12373 0, 0, 0, 0),
12374 SND_SOC_DAPM_AIF_IN("INT4_MI2S_DL_HL",
12375 "INT4 MI2S_RX Hostless Playback",
12376 0, 0, 0, 0),
12377 SND_SOC_DAPM_AIF_IN("PRI_MI2S_DL_HL",
12378 "Primary MI2S_RX Hostless Playback",
12379 0, 0, 0, 0),
12380 SND_SOC_DAPM_AIF_IN("SEC_MI2S_DL_HL",
12381 "Secondary MI2S_RX Hostless Playback",
12382 0, 0, 0, 0),
12383 SND_SOC_DAPM_AIF_IN("TERT_MI2S_DL_HL",
12384 "Tertiary MI2S_RX Hostless Playback",
12385 0, 0, 0, 0),
12386 SND_SOC_DAPM_AIF_IN("QUAT_MI2S_DL_HL",
12387 "Quaternary MI2S_RX Hostless Playback",
12388 0, 0, 0, 0),
Rohit Kumara5077932017-09-10 22:05:05 +053012389 SND_SOC_DAPM_AIF_IN("QUIN_MI2S_DL_HL",
12390 "Quinary MI2S_RX Hostless Playback",
12391 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012392
12393 SND_SOC_DAPM_AIF_IN("AUXPCM_DL_HL", "AUXPCM_HOSTLESS Playback",
12394 0, 0, 0, 0),
12395 SND_SOC_DAPM_AIF_OUT("AUXPCM_UL_HL", "AUXPCM_HOSTLESS Capture",
12396 0, 0, 0, 0),
Karthikeyan Mani9f66f6f2017-12-13 13:38:46 -080012397 SND_SOC_DAPM_AIF_IN("SEC_AUXPCM_DL_HL", "SEC_AUXPCM_HOSTLESS Playback",
12398 0, 0, 0, 0),
12399 SND_SOC_DAPM_AIF_OUT("SEC_AUXPCM_UL_HL", "SEC_AUXPCM_HOSTLESS Capture",
12400 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012401 SND_SOC_DAPM_AIF_OUT("MI2S_UL_HL", "MI2S_TX_HOSTLESS Capture",
12402 0, 0, 0, 0),
12403 SND_SOC_DAPM_AIF_OUT("INT3_MI2S_UL_HL",
12404 "INT3 MI2S_TX Hostless Capture",
12405 0, 0, 0, 0),
12406 SND_SOC_DAPM_AIF_OUT("TERT_MI2S_UL_HL",
12407 "Tertiary MI2S_TX Hostless Capture",
12408 0, 0, 0, 0),
12409 SND_SOC_DAPM_AIF_OUT("SEC_MI2S_UL_HL",
12410 "Secondary MI2S_TX Hostless Capture",
12411 0, 0, 0, 0),
12412 SND_SOC_DAPM_AIF_OUT("PRI_MI2S_UL_HL",
12413 "Primary MI2S_TX Hostless Capture",
12414 0, 0, 0, 0),
12415 SND_SOC_DAPM_AIF_OUT("MI2S_DL_HL", "MI2S_RX_HOSTLESS Playback",
12416 0, 0, 0, 0),
12417 SND_SOC_DAPM_AIF_IN("DTMF_DL_HL", "DTMF_RX_HOSTLESS Playback",
12418 0, 0, 0, 0),
12419 SND_SOC_DAPM_AIF_OUT("QUAT_MI2S_UL_HL",
12420 "Quaternary MI2S_TX Hostless Capture",
12421 0, 0, 0, 0),
Rohit Kumara5077932017-09-10 22:05:05 +053012422 SND_SOC_DAPM_AIF_OUT("QUIN_MI2S_UL_HL",
12423 "Quinary MI2S_TX Hostless Capture",
12424 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012425
12426 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_0_DL_HL",
12427 "Primary TDM0 Hostless Playback",
12428 0, 0, 0, 0),
12429 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_0_UL_HL",
12430 "Primary TDM0 Hostless Capture",
12431 0, 0, 0, 0),
12432 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_1_DL_HL",
12433 "Primary TDM1 Hostless Playback",
12434 0, 0, 0, 0),
12435 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_1_UL_HL",
12436 "Primary TDM1 Hostless Capture",
12437 0, 0, 0, 0),
12438 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_2_DL_HL",
12439 "Primary TDM2 Hostless Playback",
12440 0, 0, 0, 0),
12441 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_2_UL_HL",
12442 "Primary TDM2 Hostless Capture",
12443 0, 0, 0, 0),
12444 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_3_DL_HL",
12445 "Primary TDM3 Hostless Playback",
12446 0, 0, 0, 0),
12447 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_3_UL_HL",
12448 "Primary TDM3 Hostless Capture",
12449 0, 0, 0, 0),
12450 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_4_DL_HL",
12451 "Primary TDM4 Hostless Playback",
12452 0, 0, 0, 0),
12453 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_4_UL_HL",
12454 "Primary TDM4 Hostless Capture",
12455 0, 0, 0, 0),
12456 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_5_DL_HL",
12457 "Primary TDM5 Hostless Playback",
12458 0, 0, 0, 0),
12459 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_5_UL_HL",
12460 "Primary TDM5 Hostless Capture",
12461 0, 0, 0, 0),
12462 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_6_DL_HL",
12463 "Primary TDM6 Hostless Playback",
12464 0, 0, 0, 0),
12465 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_6_UL_HL",
12466 "Primary TDM6 Hostless Capture",
12467 0, 0, 0, 0),
12468 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_7_DL_HL",
12469 "Primary TDM7 Hostless Playback",
12470 0, 0, 0, 0),
12471 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_7_UL_HL",
12472 "Primary TDM7 Hostless Capture",
12473 0, 0, 0, 0),
12474 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_0_DL_HL",
12475 "Secondary TDM0 Hostless Playback",
12476 0, 0, 0, 0),
12477 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_0_UL_HL",
12478 "Secondary TDM0 Hostless Capture",
12479 0, 0, 0, 0),
12480 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_1_DL_HL",
12481 "Secondary TDM1 Hostless Playback",
12482 0, 0, 0, 0),
12483 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_1_UL_HL",
12484 "Secondary TDM1 Hostless Capture",
12485 0, 0, 0, 0),
12486 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_2_DL_HL",
12487 "Secondary TDM2 Hostless Playback",
12488 0, 0, 0, 0),
12489 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_2_UL_HL",
12490 "Secondary TDM2 Hostless Capture",
12491 0, 0, 0, 0),
12492 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_3_DL_HL",
12493 "Secondary TDM3 Hostless Playback",
12494 0, 0, 0, 0),
12495 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_3_UL_HL",
12496 "Secondary TDM3 Hostless Capture",
12497 0, 0, 0, 0),
12498 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_4_DL_HL",
12499 "Secondary TDM4 Hostless Playback",
12500 0, 0, 0, 0),
12501 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_4_UL_HL",
12502 "Secondary TDM4 Hostless Capture",
12503 0, 0, 0, 0),
12504 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_5_DL_HL",
12505 "Secondary TDM5 Hostless Playback",
12506 0, 0, 0, 0),
12507 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_5_UL_HL",
12508 "Secondary TDM5 Hostless Capture",
12509 0, 0, 0, 0),
12510 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_6_DL_HL",
12511 "Secondary TDM6 Hostless Playback",
12512 0, 0, 0, 0),
12513 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_6_UL_HL",
12514 "Secondary TDM6 Hostless Capture",
12515 0, 0, 0, 0),
12516 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_7_DL_HL",
12517 "Secondary TDM7 Hostless Playback",
12518 0, 0, 0, 0),
12519 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_7_UL_HL",
12520 "Secondary TDM7 Hostless Capture",
12521 0, 0, 0, 0),
12522 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_0_DL_HL",
12523 "Tertiary TDM0 Hostless Playback",
12524 0, 0, 0, 0),
12525 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_0_UL_HL",
12526 "Tertiary TDM0 Hostless Capture",
12527 0, 0, 0, 0),
12528 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_1_DL_HL",
12529 "Tertiary TDM1 Hostless Playback",
12530 0, 0, 0, 0),
12531 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_1_UL_HL",
12532 "Tertiary TDM1 Hostless Capture",
12533 0, 0, 0, 0),
12534 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_2_DL_HL",
12535 "Tertiary TDM2 Hostless Playback",
12536 0, 0, 0, 0),
12537 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_2_UL_HL",
12538 "Tertiary TDM2 Hostless Capture",
12539 0, 0, 0, 0),
12540 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_3_DL_HL",
12541 "Tertiary TDM3 Hostless Playback",
12542 0, 0, 0, 0),
12543 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_3_UL_HL",
12544 "Tertiary TDM3 Hostless Capture",
12545 0, 0, 0, 0),
12546 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_4_DL_HL",
12547 "Tertiary TDM4 Hostless Playback",
12548 0, 0, 0, 0),
12549 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_4_UL_HL",
12550 "Tertiary TDM4 Hostless Capture",
12551 0, 0, 0, 0),
12552 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_5_DL_HL",
12553 "Tertiary TDM5 Hostless Playback",
12554 0, 0, 0, 0),
12555 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_5_UL_HL",
12556 "Tertiary TDM5 Hostless Capture",
12557 0, 0, 0, 0),
12558 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_6_DL_HL",
12559 "Tertiary TDM6 Hostless Playback",
12560 0, 0, 0, 0),
12561 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_6_UL_HL",
12562 "Tertiary TDM6 Hostless Capture",
12563 0, 0, 0, 0),
12564 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_7_DL_HL",
12565 "Tertiary TDM7 Hostless Playback",
12566 0, 0, 0, 0),
12567 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_7_UL_HL",
12568 "Tertiary TDM7 Hostless Capture",
12569 0, 0, 0, 0),
12570 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_0_DL_HL",
12571 "Quaternary TDM0 Hostless Playback",
12572 0, 0, 0, 0),
12573 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_0_UL_HL",
12574 "Quaternary TDM0 Hostless Capture",
12575 0, 0, 0, 0),
12576 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_1_DL_HL",
12577 "Quaternary TDM1 Hostless Playback",
12578 0, 0, 0, 0),
12579 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_1_UL_HL",
12580 "Quaternary TDM1 Hostless Capture",
12581 0, 0, 0, 0),
12582 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_2_DL_HL",
12583 "Quaternary TDM2 Hostless Playback",
12584 0, 0, 0, 0),
12585 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_2_UL_HL",
12586 "Quaternary TDM2 Hostless Capture",
12587 0, 0, 0, 0),
12588 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_3_DL_HL",
12589 "Quaternary TDM3 Hostless Playback",
12590 0, 0, 0, 0),
12591 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_3_UL_HL",
12592 "Quaternary TDM3 Hostless Capture",
12593 0, 0, 0, 0),
12594 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_4_DL_HL",
12595 "Quaternary TDM4 Hostless Playback",
12596 0, 0, 0, 0),
12597 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_4_UL_HL",
12598 "Quaternary TDM4 Hostless Capture",
12599 0, 0, 0, 0),
12600 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_5_DL_HL",
12601 "Quaternary TDM5 Hostless Playback",
12602 0, 0, 0, 0),
12603 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_5_UL_HL",
12604 "Quaternary TDM5 Hostless Capture",
12605 0, 0, 0, 0),
12606 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_6_DL_HL",
12607 "Quaternary TDM6 Hostless Playback",
12608 0, 0, 0, 0),
12609 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_6_UL_HL",
12610 "Quaternary TDM6 Hostless Capture",
12611 0, 0, 0, 0),
12612 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_7_DL_HL",
12613 "Quaternary TDM7 Hostless Playback",
12614 0, 0, 0, 0),
12615 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_7_UL_HL",
12616 "Quaternary TDM7 Hostless Capture",
12617 0, 0, 0, 0),
Rohit Kumara5077932017-09-10 22:05:05 +053012618 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_0_DL_HL",
12619 "Quinary TDM0 Hostless Playback",
12620 0, 0, 0, 0),
12621 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_0_UL_HL",
12622 "Quinary TDM0 Hostless Capture",
12623 0, 0, 0, 0),
12624 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_1_DL_HL",
12625 "Quinary TDM1 Hostless Playback",
12626 0, 0, 0, 0),
12627 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_1_UL_HL",
12628 "Quinary TDM1 Hostless Capture",
12629 0, 0, 0, 0),
12630 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_2_DL_HL",
12631 "Quinary TDM2 Hostless Playback",
12632 0, 0, 0, 0),
12633 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_2_UL_HL",
12634 "Quinary TDM2 Hostless Capture",
12635 0, 0, 0, 0),
12636 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_3_DL_HL",
12637 "Quinary TDM3 Hostless Playback",
12638 0, 0, 0, 0),
12639 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_3_UL_HL",
12640 "Quinary TDM3 Hostless Capture",
12641 0, 0, 0, 0),
12642 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_4_DL_HL",
12643 "Quinary TDM4 Hostless Playback",
12644 0, 0, 0, 0),
12645 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_4_UL_HL",
12646 "Quinary TDM4 Hostless Capture",
12647 0, 0, 0, 0),
12648 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_5_DL_HL",
12649 "Quinary TDM5 Hostless Playback",
12650 0, 0, 0, 0),
12651 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_5_UL_HL",
12652 "Quinary TDM5 Hostless Capture",
12653 0, 0, 0, 0),
12654 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_6_DL_HL",
12655 "Quinary TDM6 Hostless Playback",
12656 0, 0, 0, 0),
12657 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_6_UL_HL",
12658 "Quinary TDM6 Hostless Capture",
12659 0, 0, 0, 0),
12660 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_7_DL_HL",
12661 "Quinary TDM7 Hostless Playback",
12662 0, 0, 0, 0),
12663 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_7_UL_HL",
12664 "Quinary TDM7 Hostless Capture",
12665 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012666
12667 /* LSM */
12668 SND_SOC_DAPM_AIF_OUT("LSM1_UL_HL", "Listen 1 Audio Service Capture",
12669 0, 0, 0, 0),
12670 SND_SOC_DAPM_AIF_OUT("LSM2_UL_HL", "Listen 2 Audio Service Capture",
12671 0, 0, 0, 0),
12672 SND_SOC_DAPM_AIF_OUT("LSM3_UL_HL", "Listen 3 Audio Service Capture",
12673 0, 0, 0, 0),
12674 SND_SOC_DAPM_AIF_OUT("LSM4_UL_HL", "Listen 4 Audio Service Capture",
12675 0, 0, 0, 0),
12676 SND_SOC_DAPM_AIF_OUT("LSM5_UL_HL", "Listen 5 Audio Service Capture",
12677 0, 0, 0, 0),
12678 SND_SOC_DAPM_AIF_OUT("LSM6_UL_HL", "Listen 6 Audio Service Capture",
12679 0, 0, 0, 0),
12680 SND_SOC_DAPM_AIF_OUT("LSM7_UL_HL", "Listen 7 Audio Service Capture",
12681 0, 0, 0, 0),
12682 SND_SOC_DAPM_AIF_OUT("LSM8_UL_HL", "Listen 8 Audio Service Capture",
12683 0, 0, 0, 0),
12684 SND_SOC_DAPM_AIF_IN("QCHAT_DL", "QCHAT Playback", 0, 0, 0, 0),
12685 SND_SOC_DAPM_AIF_OUT("QCHAT_UL", "QCHAT Capture", 0, 0, 0, 0),
12686 /* Backend AIF */
12687 /* Stream name equals to backend dai link stream name */
12688 SND_SOC_DAPM_AIF_OUT("PRI_I2S_RX", "Primary I2S Playback", 0, 0, 0, 0),
12689 SND_SOC_DAPM_AIF_OUT("SEC_I2S_RX", "Secondary I2S Playback",
12690 0, 0, 0, 0),
12691 SND_SOC_DAPM_AIF_OUT("SPDIF_RX", "SPDIF Playback", 0, 0, 0, 0),
12692 SND_SOC_DAPM_AIF_OUT("SLIMBUS_0_RX", "Slimbus Playback", 0, 0, 0, 0),
12693 SND_SOC_DAPM_AIF_OUT("SLIMBUS_2_RX", "Slimbus2 Playback", 0, 0, 0, 0),
12694 SND_SOC_DAPM_AIF_OUT("SLIMBUS_5_RX", "Slimbus5 Playback", 0, 0, 0, 0),
12695 SND_SOC_DAPM_AIF_OUT("HDMI", "HDMI Playback", 0, 0, 0, 0),
12696 SND_SOC_DAPM_AIF_OUT("DISPLAY_PORT", "Display Port Playback",
12697 0, 0, 0, 0),
12698 SND_SOC_DAPM_AIF_OUT("MI2S_RX", "MI2S Playback", 0, 0, 0, 0),
12699 SND_SOC_DAPM_AIF_OUT("QUAT_MI2S_RX", "Quaternary MI2S Playback",
12700 0, 0, 0, 0),
12701 SND_SOC_DAPM_AIF_OUT("TERT_MI2S_RX", "Tertiary MI2S Playback",
12702 0, 0, 0, 0),
12703 SND_SOC_DAPM_AIF_OUT("SEC_MI2S_RX", "Secondary MI2S Playback",
12704 0, 0, 0, 0),
12705 SND_SOC_DAPM_AIF_OUT("SEC_MI2S_RX_SD1",
12706 "Secondary MI2S Playback SD1",
12707 0, 0, 0, 0),
12708 SND_SOC_DAPM_AIF_OUT("PRI_MI2S_RX", "Primary MI2S Playback",
12709 0, 0, 0, 0),
12710 SND_SOC_DAPM_AIF_OUT("INT0_MI2S_RX", "INT0 MI2S Playback",
12711 0, 0, 0, 0),
Laxminath Kasam52697fe2017-11-29 15:44:14 +053012712 SND_SOC_DAPM_AIF_OUT("INT2_MI2S_RX", "INT2 MI2S Playback",
12713 0, 0, 0, 0),
12714 SND_SOC_DAPM_AIF_OUT("INT3_MI2S_RX", "INT3 MI2S Playback",
12715 0, 0, 0, 0),
12716 SND_SOC_DAPM_AIF_OUT("INT5_MI2S_RX", "INT5 MI2S Playback",
12717 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012718 SND_SOC_DAPM_AIF_OUT("INT4_MI2S_RX", "INT4 MI2S Playback",
12719 0, 0, 0, 0),
Laxminath Kasam52697fe2017-11-29 15:44:14 +053012720 SND_SOC_DAPM_AIF_OUT("INT4_MI2S_TX", "INT4 MI2S Capture",
12721 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012722 SND_SOC_DAPM_AIF_OUT("QUIN_MI2S_RX", "Quinary MI2S Playback",
12723 0, 0, 0, 0),
12724 SND_SOC_DAPM_AIF_IN("PRI_I2S_TX", "Primary I2S Capture", 0, 0, 0, 0),
12725 SND_SOC_DAPM_AIF_IN("MI2S_TX", "MI2S Capture", 0, 0, 0, 0),
12726 SND_SOC_DAPM_AIF_IN("QUAT_MI2S_TX", "Quaternary MI2S Capture",
12727 0, 0, 0, 0),
12728 SND_SOC_DAPM_AIF_IN("PRI_MI2S_TX", "Primary MI2S Capture",
12729 0, 0, 0, 0),
12730 SND_SOC_DAPM_AIF_IN("TERT_MI2S_TX", "Tertiary MI2S Capture",
12731 0, 0, 0, 0),
Laxminath Kasam52697fe2017-11-29 15:44:14 +053012732 SND_SOC_DAPM_AIF_OUT("INT0_MI2S_TX", "INT0 MI2S Capture",
12733 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012734 SND_SOC_DAPM_AIF_IN("INT2_MI2S_TX", "INT2 MI2S Capture",
12735 0, 0, 0, 0),
12736 SND_SOC_DAPM_AIF_IN("INT3_MI2S_TX", "INT3 MI2S Capture",
12737 0, 0, 0, 0),
12738 SND_SOC_DAPM_AIF_IN("SEC_MI2S_TX", "Secondary MI2S Capture",
12739 0, 0, 0, 0),
12740 SND_SOC_DAPM_AIF_IN("SLIMBUS_0_TX", "Slimbus Capture", 0, 0, 0, 0),
12741 SND_SOC_DAPM_AIF_IN("SLIMBUS_2_TX", "Slimbus2 Capture", 0, 0, 0, 0),
12742 SND_SOC_DAPM_AIF_IN("QUIN_MI2S_TX", "Quinary MI2S Capture",
12743 0, 0, 0, 0),
12744 SND_SOC_DAPM_AIF_IN("SENARY_MI2S_TX", "Senary MI2S Capture",
12745 0, 0, 0, 0),
12746 SND_SOC_DAPM_AIF_OUT("INT_BT_SCO_RX", "Internal BT-SCO Playback",
12747 0, 0, 0, 0),
12748 SND_SOC_DAPM_AIF_IN("INT_BT_SCO_TX", "Internal BT-SCO Capture",
12749 0, 0, 0, 0),
12750 SND_SOC_DAPM_AIF_OUT("INT_BT_A2DP_RX", "Internal BT-A2DP Playback",
12751 0, 0, 0, 0),
12752 SND_SOC_DAPM_AIF_OUT("INT_FM_RX", "Internal FM Playback",
12753 0, 0, 0, 0),
12754 SND_SOC_DAPM_AIF_IN("INT_FM_TX", "Internal FM Capture",
12755 0, 0, 0, 0),
12756 SND_SOC_DAPM_AIF_OUT("PCM_RX", "AFE Playback",
12757 0, 0, 0, 0),
12758 SND_SOC_DAPM_AIF_IN("PCM_TX", "AFE Capture",
12759 0, 0, 0, 0),
12760 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_0", "Primary TDM0 Playback",
12761 0, 0, 0, 0),
12762 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_0", "Primary TDM0 Capture",
12763 0, 0, 0, 0),
12764 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_1", "Primary TDM1 Playback",
12765 0, 0, 0, 0),
12766 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_1", "Primary TDM1 Capture",
12767 0, 0, 0, 0),
12768 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_2", "Primary TDM2 Playback",
12769 0, 0, 0, 0),
12770 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_2", "Primary TDM2 Capture",
12771 0, 0, 0, 0),
12772 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_3", "Primary TDM3 Playback",
12773 0, 0, 0, 0),
12774 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_3", "Primary TDM3 Capture",
12775 0, 0, 0, 0),
12776 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_4", "Primary TDM4 Playback",
12777 0, 0, 0, 0),
12778 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_4", "Primary TDM4 Capture",
12779 0, 0, 0, 0),
12780 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_5", "Primary TDM5 Playback",
12781 0, 0, 0, 0),
12782 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_5", "Primary TDM5 Capture",
12783 0, 0, 0, 0),
12784 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_6", "Primary TDM6 Playback",
12785 0, 0, 0, 0),
12786 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_6", "Primary TDM6 Capture",
12787 0, 0, 0, 0),
12788 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_7", "Primary TDM7 Playback",
12789 0, 0, 0, 0),
12790 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_7", "Primary TDM7 Capture",
12791 0, 0, 0, 0),
12792 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_0", "Secondary TDM0 Playback",
12793 0, 0, 0, 0),
12794 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_0", "Secondary TDM0 Capture",
12795 0, 0, 0, 0),
12796 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_1", "Secondary TDM1 Playback",
12797 0, 0, 0, 0),
12798 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_1", "Secondary TDM1 Capture",
12799 0, 0, 0, 0),
12800 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_2", "Secondary TDM2 Playback",
12801 0, 0, 0, 0),
12802 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_2", "Secondary TDM2 Capture",
12803 0, 0, 0, 0),
12804 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_3", "Secondary TDM3 Playback",
12805 0, 0, 0, 0),
12806 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_3", "Secondary TDM3 Capture",
12807 0, 0, 0, 0),
12808 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_4", "Secondary TDM4 Playback",
12809 0, 0, 0, 0),
12810 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_4", "Secondary TDM4 Capture",
12811 0, 0, 0, 0),
12812 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_5", "Secondary TDM5 Playback",
12813 0, 0, 0, 0),
12814 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_5", "Secondary TDM5 Capture",
12815 0, 0, 0, 0),
12816 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_6", "Secondary TDM6 Playback",
12817 0, 0, 0, 0),
12818 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_6", "Secondary TDM6 Capture",
12819 0, 0, 0, 0),
12820 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_7", "Secondary TDM7 Playback",
12821 0, 0, 0, 0),
12822 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_7", "Secondary TDM7 Capture",
12823 0, 0, 0, 0),
12824 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_0", "Tertiary TDM0 Playback",
12825 0, 0, 0, 0),
12826 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_0", "Tertiary TDM0 Capture",
12827 0, 0, 0, 0),
12828 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_1", "Tertiary TDM1 Playback",
12829 0, 0, 0, 0),
12830 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_1", "Tertiary TDM1 Capture",
12831 0, 0, 0, 0),
12832 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_2", "Tertiary TDM2 Playback",
12833 0, 0, 0, 0),
12834 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_2", "Tertiary TDM2 Capture",
12835 0, 0, 0, 0),
12836 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_3", "Tertiary TDM3 Playback",
12837 0, 0, 0, 0),
12838 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_3", "Tertiary TDM3 Capture",
12839 0, 0, 0, 0),
12840 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_4", "Tertiary TDM4 Playback",
12841 0, 0, 0, 0),
12842 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_4", "Tertiary TDM4 Capture",
12843 0, 0, 0, 0),
12844 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_5", "Tertiary TDM5 Playback",
12845 0, 0, 0, 0),
12846 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_5", "Tertiary TDM5 Capture",
12847 0, 0, 0, 0),
12848 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_6", "Tertiary TDM6 Playback",
12849 0, 0, 0, 0),
12850 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_6", "Tertiary TDM6 Capture",
12851 0, 0, 0, 0),
12852 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_7", "Tertiary TDM7 Playback",
12853 0, 0, 0, 0),
12854 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_7", "Tertiary TDM7 Capture",
12855 0, 0, 0, 0),
12856 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_0", "Quaternary TDM0 Playback",
12857 0, 0, 0, 0),
12858 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_0", "Quaternary TDM0 Capture",
12859 0, 0, 0, 0),
12860 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_1", "Quaternary TDM1 Playback",
12861 0, 0, 0, 0),
12862 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_1", "Quaternary TDM1 Capture",
12863 0, 0, 0, 0),
12864 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_2", "Quaternary TDM2 Playback",
12865 0, 0, 0, 0),
12866 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_2", "Quaternary TDM2 Capture",
12867 0, 0, 0, 0),
12868 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_3", "Quaternary TDM3 Playback",
12869 0, 0, 0, 0),
12870 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_3", "Quaternary TDM3 Capture",
12871 0, 0, 0, 0),
12872 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_4", "Quaternary TDM4 Playback",
12873 0, 0, 0, 0),
12874 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_4", "Quaternary TDM4 Capture",
12875 0, 0, 0, 0),
12876 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_5", "Quaternary TDM5 Playback",
12877 0, 0, 0, 0),
12878 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_5", "Quaternary TDM5 Capture",
12879 0, 0, 0, 0),
12880 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_6", "Quaternary TDM6 Playback",
12881 0, 0, 0, 0),
12882 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_6", "Quaternary TDM6 Capture",
12883 0, 0, 0, 0),
12884 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_7", "Quaternary TDM7 Playback",
12885 0, 0, 0, 0),
12886 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_7", "Quaternary TDM7 Capture",
12887 0, 0, 0, 0),
Rohit Kumara5077932017-09-10 22:05:05 +053012888 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_0", "Quinary TDM0 Playback",
12889 0, 0, 0, 0),
12890 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_0", "Quinary TDM0 Capture",
12891 0, 0, 0, 0),
12892 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_1", "Quinary TDM1 Playback",
12893 0, 0, 0, 0),
12894 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_1", "Quinary TDM1 Capture",
12895 0, 0, 0, 0),
12896 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_2", "Quinary TDM2 Playback",
12897 0, 0, 0, 0),
12898 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_2", "Quinary TDM2 Capture",
12899 0, 0, 0, 0),
12900 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_3", "Quinary TDM3 Playback",
12901 0, 0, 0, 0),
12902 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_3", "Quinary TDM3 Capture",
12903 0, 0, 0, 0),
12904 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_4", "Quinary TDM4 Playback",
12905 0, 0, 0, 0),
12906 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_4", "Quinary TDM4 Capture",
12907 0, 0, 0, 0),
12908 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_5", "Quinary TDM5 Playback",
12909 0, 0, 0, 0),
12910 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_5", "Quinary TDM5 Capture",
12911 0, 0, 0, 0),
12912 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_6", "Quinary TDM6 Playback",
12913 0, 0, 0, 0),
12914 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_6", "Quinary TDM6 Capture",
12915 0, 0, 0, 0),
12916 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_7", "Quinary TDM7 Playback",
12917 0, 0, 0, 0),
12918 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_7", "Quinary TDM7 Capture",
12919 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012920 /* incall */
12921 SND_SOC_DAPM_AIF_OUT("VOICE_PLAYBACK_TX", "Voice Farend Playback",
12922 0, 0, 0, 0),
12923 SND_SOC_DAPM_AIF_OUT("VOICE2_PLAYBACK_TX", "Voice2 Farend Playback",
12924 0, 0, 0, 0),
12925 SND_SOC_DAPM_AIF_OUT("SLIMBUS_4_RX", "Slimbus4 Playback",
12926 0, 0, 0, 0),
12927 SND_SOC_DAPM_AIF_IN("INCALL_RECORD_TX", "Voice Uplink Capture",
12928 0, 0, 0, 0),
12929 SND_SOC_DAPM_AIF_IN("INCALL_RECORD_RX", "Voice Downlink Capture",
12930 0, 0, 0, 0),
12931 SND_SOC_DAPM_AIF_IN("SLIMBUS_4_TX", "Slimbus4 Capture",
12932 0, 0, 0, 0),
12933 SND_SOC_DAPM_AIF_IN("SENARY_TX", "Senary_mi2s Capture",
12934 0, 0, 0, 0),
12935 SND_SOC_DAPM_AIF_IN("INT5_MI2S_TX", "INT5 MI2S Capture",
12936 0, 0, 0, 0),
12937 SND_SOC_DAPM_AIF_IN("SLIMBUS_5_TX", "Slimbus5 Capture", 0, 0, 0, 0),
12938
12939 SND_SOC_DAPM_AIF_OUT("AUX_PCM_RX", "AUX PCM Playback", 0, 0, 0, 0),
12940 SND_SOC_DAPM_AIF_IN("AUX_PCM_TX", "AUX PCM Capture", 0, 0, 0, 0),
12941 SND_SOC_DAPM_AIF_OUT("SEC_AUX_PCM_RX", "Sec AUX PCM Playback",
12942 0, 0, 0, 0),
12943 SND_SOC_DAPM_AIF_IN("SEC_AUX_PCM_TX", "Sec AUX PCM Capture",
12944 0, 0, 0, 0),
12945 SND_SOC_DAPM_AIF_OUT("TERT_AUX_PCM_RX", "Tert AUX PCM Playback",
12946 0, 0, 0, 0),
12947 SND_SOC_DAPM_AIF_IN("TERT_AUX_PCM_TX", "Tert AUX PCM Capture",
12948 0, 0, 0, 0),
12949 SND_SOC_DAPM_AIF_OUT("QUAT_AUX_PCM_RX", "Quat AUX PCM Playback",
12950 0, 0, 0, 0),
12951 SND_SOC_DAPM_AIF_IN("QUAT_AUX_PCM_TX", "Quat AUX PCM Capture",
12952 0, 0, 0, 0),
Rohit Kumara5077932017-09-10 22:05:05 +053012953 SND_SOC_DAPM_AIF_OUT("QUIN_AUX_PCM_RX", "Quin AUX PCM Playback",
12954 0, 0, 0, 0),
12955 SND_SOC_DAPM_AIF_IN("QUIN_AUX_PCM_TX", "Quin AUX PCM Capture",
12956 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012957 SND_SOC_DAPM_AIF_IN("VOICE_STUB_DL", "VOICE_STUB Playback", 0, 0, 0, 0),
12958 SND_SOC_DAPM_AIF_OUT("VOICE_STUB_UL", "VOICE_STUB Capture", 0, 0, 0, 0),
12959 SND_SOC_DAPM_AIF_IN("VOICE2_STUB_DL", "VOICE2_STUB Playback",
12960 0, 0, 0, 0),
12961 SND_SOC_DAPM_AIF_OUT("VOICE2_STUB_UL", "VOICE2_STUB Capture",
12962 0, 0, 0, 0),
12963 SND_SOC_DAPM_AIF_IN("VOLTE_STUB_DL", "VOLTE_STUB Playback", 0, 0, 0, 0),
12964 SND_SOC_DAPM_AIF_OUT("VOLTE_STUB_UL", "VOLTE_STUB Capture", 0, 0, 0, 0),
12965 SND_SOC_DAPM_AIF_OUT("STUB_RX", "Stub Playback", 0, 0, 0, 0),
12966 SND_SOC_DAPM_AIF_IN("STUB_TX", "Stub Capture", 0, 0, 0, 0),
12967 SND_SOC_DAPM_AIF_OUT("SLIMBUS_1_RX", "Slimbus1 Playback", 0, 0, 0, 0),
12968 SND_SOC_DAPM_AIF_IN("SLIMBUS_1_TX", "Slimbus1 Capture", 0, 0, 0, 0),
12969 SND_SOC_DAPM_AIF_IN("STUB_1_TX", "Stub1 Capture", 0, 0, 0, 0),
12970 SND_SOC_DAPM_AIF_OUT("SLIMBUS_3_RX", "Slimbus3 Playback", 0, 0, 0, 0),
12971 SND_SOC_DAPM_AIF_IN("SLIMBUS_3_TX", "Slimbus3 Capture", 0, 0, 0, 0),
12972 /* In- call recording */
12973 SND_SOC_DAPM_AIF_OUT("SLIMBUS_6_RX", "Slimbus6 Playback", 0, 0, 0, 0),
12974 SND_SOC_DAPM_AIF_IN("SLIMBUS_6_TX", "Slimbus6 Capture", 0, 0, 0, 0),
12975
12976 SND_SOC_DAPM_AIF_OUT("SLIMBUS_7_RX", "Slimbus7 Playback", 0, 0, 0, 0),
12977 SND_SOC_DAPM_AIF_IN("SLIMBUS_7_TX", "Slimbus7 Capture", 0, 0, 0, 0),
12978
12979 SND_SOC_DAPM_AIF_OUT("SLIMBUS_8_RX", "Slimbus8 Playback", 0, 0, 0, 0),
12980 SND_SOC_DAPM_AIF_IN("SLIMBUS_8_TX", "Slimbus8 Capture", 0, 0, 0, 0),
12981 SND_SOC_DAPM_AIF_OUT("USB_AUDIO_RX", "USB Audio Playback", 0, 0, 0, 0),
12982 SND_SOC_DAPM_AIF_IN("USB_AUDIO_TX", "USB Audio Capture", 0, 0, 0, 0),
12983
12984 /* Switch Definitions */
12985 SND_SOC_DAPM_SWITCH("SLIMBUS_DL_HL", SND_SOC_NOPM, 0, 0,
12986 &slim_fm_switch_mixer_controls),
12987 SND_SOC_DAPM_SWITCH("SLIMBUS1_DL_HL", SND_SOC_NOPM, 0, 0,
12988 &slim1_fm_switch_mixer_controls),
12989 SND_SOC_DAPM_SWITCH("SLIMBUS3_DL_HL", SND_SOC_NOPM, 0, 0,
12990 &slim3_fm_switch_mixer_controls),
12991 SND_SOC_DAPM_SWITCH("SLIMBUS4_DL_HL", SND_SOC_NOPM, 0, 0,
12992 &slim4_fm_switch_mixer_controls),
12993 SND_SOC_DAPM_SWITCH("SLIMBUS6_DL_HL", SND_SOC_NOPM, 0, 0,
12994 &slim6_fm_switch_mixer_controls),
12995 SND_SOC_DAPM_SWITCH("PCM_RX_DL_HL", SND_SOC_NOPM, 0, 0,
12996 &pcm_rx_switch_mixer_controls),
12997 SND_SOC_DAPM_SWITCH("INT0_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
12998 &int0_mi2s_rx_switch_mixer_controls),
12999 SND_SOC_DAPM_SWITCH("INT4_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13000 &int4_mi2s_rx_switch_mixer_controls),
13001 SND_SOC_DAPM_SWITCH("PRI_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13002 &pri_mi2s_rx_switch_mixer_controls),
13003 SND_SOC_DAPM_SWITCH("SEC_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13004 &sec_mi2s_rx_switch_mixer_controls),
13005 SND_SOC_DAPM_SWITCH("TERT_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13006 &tert_mi2s_rx_switch_mixer_controls),
13007 SND_SOC_DAPM_SWITCH("QUAT_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13008 &quat_mi2s_rx_switch_mixer_controls),
Rohit Kumara5077932017-09-10 22:05:05 +053013009 SND_SOC_DAPM_SWITCH("QUIN_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13010 &quin_mi2s_rx_switch_mixer_controls),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013011 SND_SOC_DAPM_SWITCH("HFP_PRI_AUX_UL_HL", SND_SOC_NOPM, 0, 0,
13012 &hfp_pri_aux_switch_mixer_controls),
13013 SND_SOC_DAPM_SWITCH("HFP_AUX_UL_HL", SND_SOC_NOPM, 0, 0,
13014 &hfp_aux_switch_mixer_controls),
13015 SND_SOC_DAPM_SWITCH("HFP_INT_UL_HL", SND_SOC_NOPM, 0, 0,
13016 &hfp_int_switch_mixer_controls),
13017 SND_SOC_DAPM_SWITCH("HFP_SLIM7_UL_HL", SND_SOC_NOPM, 0, 0,
13018 &hfp_slim7_switch_mixer_controls),
13019 SND_SOC_DAPM_SWITCH("USB_DL_HL", SND_SOC_NOPM, 0, 0,
13020 &usb_switch_mixer_controls),
13021
13022 /* Mixer definitions */
13023 SND_SOC_DAPM_MIXER("PRI_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13024 pri_i2s_rx_mixer_controls, ARRAY_SIZE(pri_i2s_rx_mixer_controls)),
13025 SND_SOC_DAPM_MIXER("SEC_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13026 sec_i2s_rx_mixer_controls, ARRAY_SIZE(sec_i2s_rx_mixer_controls)),
13027 SND_SOC_DAPM_MIXER("SLIMBUS_0_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13028 slimbus_rx_mixer_controls, ARRAY_SIZE(slimbus_rx_mixer_controls)),
13029 SND_SOC_DAPM_MIXER("SLIMBUS_2_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13030 slimbus_2_rx_mixer_controls, ARRAY_SIZE(slimbus_2_rx_mixer_controls)),
13031 SND_SOC_DAPM_MIXER("SLIMBUS_5_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13032 slimbus_5_rx_mixer_controls, ARRAY_SIZE(slimbus_5_rx_mixer_controls)),
13033 SND_SOC_DAPM_MIXER("SLIMBUS_7_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13034 slimbus_7_rx_mixer_controls, ARRAY_SIZE(slimbus_7_rx_mixer_controls)),
13035 SND_SOC_DAPM_MIXER("HDMI Mixer", SND_SOC_NOPM, 0, 0,
13036 hdmi_mixer_controls, ARRAY_SIZE(hdmi_mixer_controls)),
13037 SND_SOC_DAPM_MIXER("DISPLAY_PORT Mixer", SND_SOC_NOPM, 0, 0,
13038 display_port_mixer_controls, ARRAY_SIZE(display_port_mixer_controls)),
13039 SND_SOC_DAPM_MIXER("SPDIF_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13040 spdif_rx_mixer_controls, ARRAY_SIZE(spdif_rx_mixer_controls)),
13041 SND_SOC_DAPM_MIXER("MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13042 mi2s_rx_mixer_controls, ARRAY_SIZE(mi2s_rx_mixer_controls)),
13043 SND_SOC_DAPM_MIXER("QUAT_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13044 quaternary_mi2s_rx_mixer_controls,
13045 ARRAY_SIZE(quaternary_mi2s_rx_mixer_controls)),
13046 SND_SOC_DAPM_MIXER("TERT_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13047 tertiary_mi2s_rx_mixer_controls,
13048 ARRAY_SIZE(tertiary_mi2s_rx_mixer_controls)),
13049 SND_SOC_DAPM_MIXER("SEC_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13050 secondary_mi2s_rx_mixer_controls,
13051 ARRAY_SIZE(secondary_mi2s_rx_mixer_controls)),
13052 SND_SOC_DAPM_MIXER("SEC_MI2S_RX_SD1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13053 secondary_mi2s_rx2_mixer_controls,
13054 ARRAY_SIZE(secondary_mi2s_rx2_mixer_controls)),
13055 SND_SOC_DAPM_MIXER("PRI_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13056 primary_mi2s_rx_mixer_controls,
13057 ARRAY_SIZE(primary_mi2s_rx_mixer_controls)),
13058 SND_SOC_DAPM_MIXER("INT0_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13059 int0_mi2s_rx_mixer_controls,
13060 ARRAY_SIZE(int0_mi2s_rx_mixer_controls)),
13061 SND_SOC_DAPM_MIXER("INT4_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13062 int4_mi2s_rx_mixer_controls,
13063 ARRAY_SIZE(int4_mi2s_rx_mixer_controls)),
13064 SND_SOC_DAPM_MIXER("QUIN_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13065 quinary_mi2s_rx_mixer_controls,
13066 ARRAY_SIZE(quinary_mi2s_rx_mixer_controls)),
13067 SND_SOC_DAPM_MIXER("PRI_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13068 pri_tdm_rx_0_mixer_controls,
13069 ARRAY_SIZE(pri_tdm_rx_0_mixer_controls)),
13070 SND_SOC_DAPM_MIXER("PRI_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13071 pri_tdm_rx_1_mixer_controls,
13072 ARRAY_SIZE(pri_tdm_rx_1_mixer_controls)),
13073 SND_SOC_DAPM_MIXER("PRI_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13074 pri_tdm_rx_2_mixer_controls,
13075 ARRAY_SIZE(pri_tdm_rx_2_mixer_controls)),
13076 SND_SOC_DAPM_MIXER("PRI_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
13077 pri_tdm_rx_3_mixer_controls,
13078 ARRAY_SIZE(pri_tdm_rx_3_mixer_controls)),
13079 SND_SOC_DAPM_MIXER("PRI_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13080 pri_tdm_tx_0_mixer_controls,
13081 ARRAY_SIZE(pri_tdm_tx_0_mixer_controls)),
13082 SND_SOC_DAPM_MIXER("SEC_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13083 sec_tdm_rx_0_mixer_controls,
13084 ARRAY_SIZE(sec_tdm_rx_0_mixer_controls)),
13085 SND_SOC_DAPM_MIXER("SEC_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13086 sec_tdm_rx_1_mixer_controls,
13087 ARRAY_SIZE(sec_tdm_rx_1_mixer_controls)),
13088 SND_SOC_DAPM_MIXER("SEC_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13089 sec_tdm_rx_2_mixer_controls,
13090 ARRAY_SIZE(sec_tdm_rx_2_mixer_controls)),
13091 SND_SOC_DAPM_MIXER("SEC_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
13092 sec_tdm_rx_3_mixer_controls,
13093 ARRAY_SIZE(sec_tdm_rx_3_mixer_controls)),
13094 SND_SOC_DAPM_MIXER("SEC_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13095 sec_tdm_tx_0_mixer_controls,
13096 ARRAY_SIZE(sec_tdm_tx_0_mixer_controls)),
13097 SND_SOC_DAPM_MIXER("TERT_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13098 tert_tdm_rx_0_mixer_controls,
13099 ARRAY_SIZE(tert_tdm_rx_0_mixer_controls)),
13100 SND_SOC_DAPM_MIXER("TERT_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13101 tert_tdm_tx_0_mixer_controls,
13102 ARRAY_SIZE(tert_tdm_tx_0_mixer_controls)),
13103 SND_SOC_DAPM_MIXER("TERT_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13104 tert_tdm_rx_1_mixer_controls,
13105 ARRAY_SIZE(tert_tdm_rx_1_mixer_controls)),
13106 SND_SOC_DAPM_MIXER("TERT_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13107 tert_tdm_rx_2_mixer_controls,
13108 ARRAY_SIZE(tert_tdm_rx_2_mixer_controls)),
13109 SND_SOC_DAPM_MIXER("TERT_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
13110 tert_tdm_rx_3_mixer_controls,
13111 ARRAY_SIZE(tert_tdm_rx_3_mixer_controls)),
13112 SND_SOC_DAPM_MIXER("TERT_TDM_RX_4 Audio Mixer", SND_SOC_NOPM, 0, 0,
13113 tert_tdm_rx_4_mixer_controls,
13114 ARRAY_SIZE(tert_tdm_rx_4_mixer_controls)),
13115 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13116 quat_tdm_rx_0_mixer_controls,
13117 ARRAY_SIZE(quat_tdm_rx_0_mixer_controls)),
13118 SND_SOC_DAPM_MIXER("QUAT_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13119 quat_tdm_tx_0_mixer_controls,
13120 ARRAY_SIZE(quat_tdm_tx_0_mixer_controls)),
13121 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13122 quat_tdm_rx_1_mixer_controls,
13123 ARRAY_SIZE(quat_tdm_rx_1_mixer_controls)),
13124 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13125 quat_tdm_rx_2_mixer_controls,
13126 ARRAY_SIZE(quat_tdm_rx_2_mixer_controls)),
13127 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
13128 quat_tdm_rx_3_mixer_controls,
13129 ARRAY_SIZE(quat_tdm_rx_3_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013130 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13131 quin_tdm_rx_0_mixer_controls,
13132 ARRAY_SIZE(quin_tdm_rx_0_mixer_controls)),
13133 SND_SOC_DAPM_MIXER("QUIN_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13134 quin_tdm_tx_0_mixer_controls,
13135 ARRAY_SIZE(quin_tdm_tx_0_mixer_controls)),
13136 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13137 quin_tdm_rx_1_mixer_controls,
13138 ARRAY_SIZE(quin_tdm_rx_1_mixer_controls)),
13139 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13140 quin_tdm_rx_2_mixer_controls,
13141 ARRAY_SIZE(quin_tdm_rx_2_mixer_controls)),
13142 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
13143 quin_tdm_rx_3_mixer_controls,
13144 ARRAY_SIZE(quin_tdm_rx_3_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013145 SND_SOC_DAPM_MIXER("MultiMedia1 Mixer", SND_SOC_NOPM, 0, 0,
13146 mmul1_mixer_controls, ARRAY_SIZE(mmul1_mixer_controls)),
13147 SND_SOC_DAPM_MIXER("MultiMedia2 Mixer", SND_SOC_NOPM, 0, 0,
13148 mmul2_mixer_controls, ARRAY_SIZE(mmul2_mixer_controls)),
13149 SND_SOC_DAPM_MIXER("MultiMedia3 Mixer", SND_SOC_NOPM, 0, 0,
13150 mmul3_mixer_controls, ARRAY_SIZE(mmul3_mixer_controls)),
13151 SND_SOC_DAPM_MIXER("MultiMedia4 Mixer", SND_SOC_NOPM, 0, 0,
13152 mmul4_mixer_controls, ARRAY_SIZE(mmul4_mixer_controls)),
13153 SND_SOC_DAPM_MIXER("MultiMedia5 Mixer", SND_SOC_NOPM, 0, 0,
13154 mmul5_mixer_controls, ARRAY_SIZE(mmul5_mixer_controls)),
13155 SND_SOC_DAPM_MIXER("MultiMedia6 Mixer", SND_SOC_NOPM, 0, 0,
13156 mmul6_mixer_controls, ARRAY_SIZE(mmul6_mixer_controls)),
13157 SND_SOC_DAPM_MIXER("MultiMedia8 Mixer", SND_SOC_NOPM, 0, 0,
13158 mmul8_mixer_controls, ARRAY_SIZE(mmul8_mixer_controls)),
13159 SND_SOC_DAPM_MIXER("MultiMedia9 Mixer", SND_SOC_NOPM, 0, 0,
13160 mmul9_mixer_controls, ARRAY_SIZE(mmul9_mixer_controls)),
Laxminath Kasam38070be2017-08-17 18:21:59 +053013161 SND_SOC_DAPM_MIXER("MultiMedia10 Mixer", SND_SOC_NOPM, 0, 0,
13162 mmul10_mixer_controls, ARRAY_SIZE(mmul10_mixer_controls)),
Asish Bhattacharya34504582017-08-08 12:55:01 +053013163 SND_SOC_DAPM_MIXER("MultiMedia16 Mixer", SND_SOC_NOPM, 0, 0,
13164 mmul16_mixer_controls, ARRAY_SIZE(mmul16_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013165 SND_SOC_DAPM_MIXER("MultiMedia17 Mixer", SND_SOC_NOPM, 0, 0,
13166 mmul17_mixer_controls, ARRAY_SIZE(mmul17_mixer_controls)),
13167 SND_SOC_DAPM_MIXER("MultiMedia18 Mixer", SND_SOC_NOPM, 0, 0,
13168 mmul18_mixer_controls, ARRAY_SIZE(mmul18_mixer_controls)),
13169 SND_SOC_DAPM_MIXER("MultiMedia19 Mixer", SND_SOC_NOPM, 0, 0,
13170 mmul19_mixer_controls, ARRAY_SIZE(mmul19_mixer_controls)),
13171 SND_SOC_DAPM_MIXER("MultiMedia20 Mixer", SND_SOC_NOPM, 0, 0,
13172 mmul20_mixer_controls, ARRAY_SIZE(mmul20_mixer_controls)),
13173 SND_SOC_DAPM_MIXER("AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13174 auxpcm_rx_mixer_controls, ARRAY_SIZE(auxpcm_rx_mixer_controls)),
13175 SND_SOC_DAPM_MIXER("SEC_AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13176 sec_auxpcm_rx_mixer_controls, ARRAY_SIZE(sec_auxpcm_rx_mixer_controls)),
13177 SND_SOC_DAPM_MIXER("TERT_AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13178 tert_auxpcm_rx_mixer_controls,
13179 ARRAY_SIZE(tert_auxpcm_rx_mixer_controls)),
13180 SND_SOC_DAPM_MIXER("QUAT_AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13181 quat_auxpcm_rx_mixer_controls,
13182 ARRAY_SIZE(quat_auxpcm_rx_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013183 SND_SOC_DAPM_MIXER("QUIN_AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13184 quin_auxpcm_rx_mixer_controls,
13185 ARRAY_SIZE(quin_auxpcm_rx_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013186 /* incall */
13187 SND_SOC_DAPM_MIXER("Incall_Music Audio Mixer", SND_SOC_NOPM, 0, 0,
13188 incall_music_delivery_mixer_controls,
13189 ARRAY_SIZE(incall_music_delivery_mixer_controls)),
13190 SND_SOC_DAPM_MIXER("Incall_Music_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13191 incall_music2_delivery_mixer_controls,
13192 ARRAY_SIZE(incall_music2_delivery_mixer_controls)),
13193 SND_SOC_DAPM_MIXER("SLIMBUS_4_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13194 slimbus_4_rx_mixer_controls,
13195 ARRAY_SIZE(slimbus_4_rx_mixer_controls)),
13196 SND_SOC_DAPM_MIXER("SLIMBUS_6_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13197 slimbus_6_rx_mixer_controls,
13198 ARRAY_SIZE(slimbus_6_rx_mixer_controls)),
13199 SND_SOC_DAPM_MIXER("USB_AUDIO_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13200 usb_audio_rx_mixer_controls,
13201 ARRAY_SIZE(usb_audio_rx_mixer_controls)),
13202 /* Voice Mixer */
13203 SND_SOC_DAPM_MIXER("PRI_RX_Voice Mixer",
13204 SND_SOC_NOPM, 0, 0, pri_rx_voice_mixer_controls,
13205 ARRAY_SIZE(pri_rx_voice_mixer_controls)),
13206 SND_SOC_DAPM_MIXER("SEC_RX_Voice Mixer",
13207 SND_SOC_NOPM, 0, 0,
13208 sec_i2s_rx_voice_mixer_controls,
13209 ARRAY_SIZE(sec_i2s_rx_voice_mixer_controls)),
13210 SND_SOC_DAPM_MIXER("SEC_MI2S_RX_Voice Mixer",
13211 SND_SOC_NOPM, 0, 0,
13212 sec_mi2s_rx_voice_mixer_controls,
13213 ARRAY_SIZE(sec_mi2s_rx_voice_mixer_controls)),
13214 SND_SOC_DAPM_MIXER("SLIM_0_RX_Voice Mixer",
13215 SND_SOC_NOPM, 0, 0,
13216 slimbus_rx_voice_mixer_controls,
13217 ARRAY_SIZE(slimbus_rx_voice_mixer_controls)),
13218 SND_SOC_DAPM_MIXER("INTERNAL_BT_SCO_RX_Voice Mixer",
13219 SND_SOC_NOPM, 0, 0,
13220 bt_sco_rx_voice_mixer_controls,
13221 ARRAY_SIZE(bt_sco_rx_voice_mixer_controls)),
13222 SND_SOC_DAPM_MIXER("AFE_PCM_RX_Voice Mixer",
13223 SND_SOC_NOPM, 0, 0,
13224 afe_pcm_rx_voice_mixer_controls,
13225 ARRAY_SIZE(afe_pcm_rx_voice_mixer_controls)),
13226 SND_SOC_DAPM_MIXER("AUX_PCM_RX_Voice Mixer",
13227 SND_SOC_NOPM, 0, 0,
13228 aux_pcm_rx_voice_mixer_controls,
13229 ARRAY_SIZE(aux_pcm_rx_voice_mixer_controls)),
13230 SND_SOC_DAPM_MIXER("SEC_AUX_PCM_RX_Voice Mixer",
13231 SND_SOC_NOPM, 0, 0,
13232 sec_aux_pcm_rx_voice_mixer_controls,
13233 ARRAY_SIZE(sec_aux_pcm_rx_voice_mixer_controls)),
13234 SND_SOC_DAPM_MIXER("TERT_AUX_PCM_RX_Voice Mixer",
13235 SND_SOC_NOPM, 0, 0,
13236 tert_aux_pcm_rx_voice_mixer_controls,
13237 ARRAY_SIZE(tert_aux_pcm_rx_voice_mixer_controls)),
13238 SND_SOC_DAPM_MIXER("QUAT_AUX_PCM_RX_Voice Mixer",
13239 SND_SOC_NOPM, 0, 0,
13240 quat_aux_pcm_rx_voice_mixer_controls,
13241 ARRAY_SIZE(quat_aux_pcm_rx_voice_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013242 SND_SOC_DAPM_MIXER("QUIN_AUX_PCM_RX_Voice Mixer",
13243 SND_SOC_NOPM, 0, 0,
13244 quin_aux_pcm_rx_voice_mixer_controls,
13245 ARRAY_SIZE(quin_aux_pcm_rx_voice_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013246 SND_SOC_DAPM_MIXER("HDMI_RX_Voice Mixer",
13247 SND_SOC_NOPM, 0, 0,
13248 hdmi_rx_voice_mixer_controls,
13249 ARRAY_SIZE(hdmi_rx_voice_mixer_controls)),
13250 SND_SOC_DAPM_MIXER("MI2S_RX_Voice Mixer",
13251 SND_SOC_NOPM, 0, 0,
13252 mi2s_rx_voice_mixer_controls,
13253 ARRAY_SIZE(mi2s_rx_voice_mixer_controls)),
13254 SND_SOC_DAPM_MIXER("PRI_MI2S_RX_Voice Mixer",
13255 SND_SOC_NOPM, 0, 0,
13256 pri_mi2s_rx_voice_mixer_controls,
13257 ARRAY_SIZE(pri_mi2s_rx_voice_mixer_controls)),
13258 SND_SOC_DAPM_MIXER("INT0_MI2S_RX_Voice Mixer",
13259 SND_SOC_NOPM, 0, 0,
13260 int0_mi2s_rx_voice_mixer_controls,
13261 ARRAY_SIZE(int0_mi2s_rx_voice_mixer_controls)),
13262 SND_SOC_DAPM_MIXER("INT4_MI2S_RX_Voice Mixer",
13263 SND_SOC_NOPM, 0, 0,
13264 int4_mi2s_rx_voice_mixer_controls,
13265 ARRAY_SIZE(int4_mi2s_rx_voice_mixer_controls)),
13266 SND_SOC_DAPM_MIXER("TERT_MI2S_RX_Voice Mixer",
13267 SND_SOC_NOPM, 0, 0,
13268 tert_mi2s_rx_voice_mixer_controls,
13269 ARRAY_SIZE(tert_mi2s_rx_voice_mixer_controls)),
13270 SND_SOC_DAPM_MIXER("QUAT_MI2S_RX_Voice Mixer",
13271 SND_SOC_NOPM, 0, 0,
13272 quat_mi2s_rx_voice_mixer_controls,
13273 ARRAY_SIZE(quat_mi2s_rx_voice_mixer_controls)),
13274 SND_SOC_DAPM_MIXER("QUIN_MI2S_RX_Voice Mixer",
13275 SND_SOC_NOPM, 0, 0,
13276 quin_mi2s_rx_voice_mixer_controls,
13277 ARRAY_SIZE(quin_mi2s_rx_voice_mixer_controls)),
13278 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_2_Voice Mixer",
13279 SND_SOC_NOPM, 0, 0,
13280 quat_tdm_rx_2_voice_mixer_controls,
13281 ARRAY_SIZE(quat_tdm_rx_2_voice_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013282 SND_SOC_DAPM_MIXER("Voip_Tx Mixer",
13283 SND_SOC_NOPM, 0, 0, tx_voip_mixer_controls,
13284 ARRAY_SIZE(tx_voip_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013285 SND_SOC_DAPM_MIXER("VoiceMMode1_Tx Mixer",
13286 SND_SOC_NOPM, 0, 0, tx_voicemmode1_mixer_controls,
13287 ARRAY_SIZE(tx_voicemmode1_mixer_controls)),
13288 SND_SOC_DAPM_MIXER("VoiceMMode2_Tx Mixer",
13289 SND_SOC_NOPM, 0, 0, tx_voicemmode2_mixer_controls,
13290 ARRAY_SIZE(tx_voicemmode2_mixer_controls)),
13291 SND_SOC_DAPM_MIXER("INTERNAL_BT_SCO_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13292 int_bt_sco_rx_mixer_controls, ARRAY_SIZE(int_bt_sco_rx_mixer_controls)),
13293 SND_SOC_DAPM_MIXER("INTERNAL_A2DP_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13294 int_bt_a2dp_rx_mixer_controls,
13295 ARRAY_SIZE(int_bt_a2dp_rx_mixer_controls)),
13296 SND_SOC_DAPM_MIXER("INTERNAL_FM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13297 int_fm_rx_mixer_controls, ARRAY_SIZE(int_fm_rx_mixer_controls)),
13298 SND_SOC_DAPM_MIXER("AFE_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13299 afe_pcm_rx_mixer_controls, ARRAY_SIZE(afe_pcm_rx_mixer_controls)),
13300 SND_SOC_DAPM_MIXER("Voice Stub Tx Mixer", SND_SOC_NOPM, 0, 0,
13301 tx_voice_stub_mixer_controls, ARRAY_SIZE(tx_voice_stub_mixer_controls)),
13302 SND_SOC_DAPM_MIXER("Voice2 Stub Tx Mixer", SND_SOC_NOPM, 0, 0,
13303 tx_voice2_stub_mixer_controls,
13304 ARRAY_SIZE(tx_voice2_stub_mixer_controls)),
13305 SND_SOC_DAPM_MIXER("VoLTE Stub Tx Mixer", SND_SOC_NOPM, 0, 0,
13306 tx_volte_stub_mixer_controls, ARRAY_SIZE(tx_volte_stub_mixer_controls)),
13307 SND_SOC_DAPM_MIXER("STUB_RX Mixer", SND_SOC_NOPM, 0, 0,
13308 stub_rx_mixer_controls, ARRAY_SIZE(stub_rx_mixer_controls)),
13309 SND_SOC_DAPM_MIXER("SLIMBUS_1_RX Mixer", SND_SOC_NOPM, 0, 0,
13310 slimbus_1_rx_mixer_controls, ARRAY_SIZE(slimbus_1_rx_mixer_controls)),
13311 SND_SOC_DAPM_MIXER("SLIMBUS_3_RX_Voice Mixer", SND_SOC_NOPM, 0, 0,
13312 slimbus_3_rx_mixer_controls, ARRAY_SIZE(slimbus_3_rx_mixer_controls)),
13313 SND_SOC_DAPM_MIXER("SLIM_6_RX_Voice Mixer",
13314 SND_SOC_NOPM, 0, 0,
13315 slimbus_6_rx_voice_mixer_controls,
13316 ARRAY_SIZE(slimbus_6_rx_voice_mixer_controls)),
13317 SND_SOC_DAPM_MIXER("SLIM_7_RX_Voice Mixer", SND_SOC_NOPM, 0, 0,
13318 slimbus_7_rx_voice_mixer_controls,
13319 ARRAY_SIZE(slimbus_7_rx_voice_mixer_controls)),
13320 SND_SOC_DAPM_MIXER("SLIM_8_RX_Voice Mixer", SND_SOC_NOPM, 0, 0,
13321 slimbus_8_rx_voice_mixer_controls,
13322 ARRAY_SIZE(slimbus_8_rx_voice_mixer_controls)),
13323 /* port mixer */
13324 SND_SOC_DAPM_MIXER("SLIMBUS_0_RX Port Mixer",
13325 SND_SOC_NOPM, 0, 0, sbus_0_rx_port_mixer_controls,
13326 ARRAY_SIZE(sbus_0_rx_port_mixer_controls)),
13327 SND_SOC_DAPM_MIXER("AUX_PCM_RX Port Mixer",
13328 SND_SOC_NOPM, 0, 0, aux_pcm_rx_port_mixer_controls,
13329 ARRAY_SIZE(aux_pcm_rx_port_mixer_controls)),
13330 SND_SOC_DAPM_MIXER("SEC_AUXPCM_RX Port Mixer",
13331 SND_SOC_NOPM, 0, 0, sec_auxpcm_rx_port_mixer_controls,
13332 ARRAY_SIZE(sec_auxpcm_rx_port_mixer_controls)),
13333 SND_SOC_DAPM_MIXER("TERT_AUXPCM_RX Port Mixer",
13334 SND_SOC_NOPM, 0, 0, tert_auxpcm_rx_port_mixer_controls,
13335 ARRAY_SIZE(tert_auxpcm_rx_port_mixer_controls)),
13336 SND_SOC_DAPM_MIXER("QUAT_AUXPCM_RX Port Mixer",
13337 SND_SOC_NOPM, 0, 0, quat_auxpcm_rx_port_mixer_controls,
13338 ARRAY_SIZE(quat_auxpcm_rx_port_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013339 SND_SOC_DAPM_MIXER("QUIN_AUXPCM_RX Port Mixer",
13340 SND_SOC_NOPM, 0, 0, quin_auxpcm_rx_port_mixer_controls,
13341 ARRAY_SIZE(quin_auxpcm_rx_port_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013342 SND_SOC_DAPM_MIXER("SLIMBUS_1_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13343 sbus_1_rx_port_mixer_controls,
13344 ARRAY_SIZE(sbus_1_rx_port_mixer_controls)),
13345 SND_SOC_DAPM_MIXER("INTERNAL_BT_SCO_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13346 bt_sco_rx_port_mixer_controls,
13347 ARRAY_SIZE(bt_sco_rx_port_mixer_controls)),
13348 SND_SOC_DAPM_MIXER("AFE_PCM_RX Port Mixer",
13349 SND_SOC_NOPM, 0, 0, afe_pcm_rx_port_mixer_controls,
13350 ARRAY_SIZE(afe_pcm_rx_port_mixer_controls)),
13351 SND_SOC_DAPM_MIXER("HDMI_RX Port Mixer",
13352 SND_SOC_NOPM, 0, 0, hdmi_rx_port_mixer_controls,
13353 ARRAY_SIZE(hdmi_rx_port_mixer_controls)),
13354 SND_SOC_DAPM_MIXER("DISPLAY_PORT_RX Port Mixer",
13355 SND_SOC_NOPM, 0, 0, display_port_rx_port_mixer_controls,
13356 ARRAY_SIZE(display_port_rx_port_mixer_controls)),
13357 SND_SOC_DAPM_MIXER("SEC_I2S_RX Port Mixer",
13358 SND_SOC_NOPM, 0, 0, sec_i2s_rx_port_mixer_controls,
13359 ARRAY_SIZE(sec_i2s_rx_port_mixer_controls)),
13360 SND_SOC_DAPM_MIXER("SLIMBUS_3_RX Port Mixer",
13361 SND_SOC_NOPM, 0, 0, sbus_3_rx_port_mixer_controls,
13362 ARRAY_SIZE(sbus_3_rx_port_mixer_controls)),
13363 SND_SOC_DAPM_MIXER("SLIMBUS_6_RX Port Mixer",
13364 SND_SOC_NOPM, 0, 0, sbus_6_rx_port_mixer_controls,
13365 ARRAY_SIZE(sbus_6_rx_port_mixer_controls)),
13366 SND_SOC_DAPM_MIXER("MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13367 mi2s_rx_port_mixer_controls, ARRAY_SIZE(mi2s_rx_port_mixer_controls)),
13368 SND_SOC_DAPM_MIXER("PRI_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13369 primary_mi2s_rx_port_mixer_controls,
13370 ARRAY_SIZE(primary_mi2s_rx_port_mixer_controls)),
13371 SND_SOC_DAPM_MIXER("SEC_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13372 sec_mi2s_rx_port_mixer_controls,
13373 ARRAY_SIZE(sec_mi2s_rx_port_mixer_controls)),
13374 SND_SOC_DAPM_MIXER("TERT_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13375 tert_mi2s_rx_port_mixer_controls,
13376 ARRAY_SIZE(tert_mi2s_rx_port_mixer_controls)),
13377 SND_SOC_DAPM_MIXER("QUAT_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13378 quat_mi2s_rx_port_mixer_controls,
13379 ARRAY_SIZE(quat_mi2s_rx_port_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013380 SND_SOC_DAPM_MIXER("QUIN_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13381 quin_mi2s_rx_port_mixer_controls,
13382 ARRAY_SIZE(quin_mi2s_rx_port_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013383 SND_SOC_DAPM_MIXER("PRI_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
13384 pri_tdm_rx_0_port_mixer_controls,
13385 ARRAY_SIZE(pri_tdm_rx_0_port_mixer_controls)),
13386 SND_SOC_DAPM_MIXER("PRI_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
13387 pri_tdm_rx_1_port_mixer_controls,
13388 ARRAY_SIZE(pri_tdm_rx_1_port_mixer_controls)),
13389 SND_SOC_DAPM_MIXER("PRI_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
13390 pri_tdm_rx_2_port_mixer_controls,
13391 ARRAY_SIZE(pri_tdm_rx_2_port_mixer_controls)),
13392 SND_SOC_DAPM_MIXER("PRI_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
13393 pri_tdm_rx_3_port_mixer_controls,
13394 ARRAY_SIZE(pri_tdm_rx_3_port_mixer_controls)),
13395 SND_SOC_DAPM_MIXER("SEC_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
13396 sec_tdm_rx_0_port_mixer_controls,
13397 ARRAY_SIZE(sec_tdm_rx_0_port_mixer_controls)),
13398 SND_SOC_DAPM_MIXER("SEC_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
13399 sec_tdm_rx_1_port_mixer_controls,
13400 ARRAY_SIZE(sec_tdm_rx_1_port_mixer_controls)),
13401 SND_SOC_DAPM_MIXER("SEC_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
13402 sec_tdm_rx_2_port_mixer_controls,
13403 ARRAY_SIZE(sec_tdm_rx_2_port_mixer_controls)),
13404 SND_SOC_DAPM_MIXER("SEC_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
13405 sec_tdm_rx_3_port_mixer_controls,
13406 ARRAY_SIZE(sec_tdm_rx_3_port_mixer_controls)),
13407 SND_SOC_DAPM_MIXER("TERT_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
13408 tert_tdm_rx_0_port_mixer_controls,
13409 ARRAY_SIZE(tert_tdm_rx_0_port_mixer_controls)),
13410 SND_SOC_DAPM_MIXER("TERT_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
13411 tert_tdm_rx_1_port_mixer_controls,
13412 ARRAY_SIZE(tert_tdm_rx_1_port_mixer_controls)),
13413 SND_SOC_DAPM_MIXER("TERT_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
13414 tert_tdm_rx_2_port_mixer_controls,
13415 ARRAY_SIZE(tert_tdm_rx_2_port_mixer_controls)),
13416 SND_SOC_DAPM_MIXER("TERT_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
13417 tert_tdm_rx_3_port_mixer_controls,
13418 ARRAY_SIZE(tert_tdm_rx_3_port_mixer_controls)),
13419 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
13420 quat_tdm_rx_0_port_mixer_controls,
13421 ARRAY_SIZE(quat_tdm_rx_0_port_mixer_controls)),
13422 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
13423 quat_tdm_rx_1_port_mixer_controls,
13424 ARRAY_SIZE(quat_tdm_rx_1_port_mixer_controls)),
13425 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
13426 quat_tdm_rx_2_port_mixer_controls,
13427 ARRAY_SIZE(quat_tdm_rx_2_port_mixer_controls)),
13428 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
13429 quat_tdm_rx_3_port_mixer_controls,
13430 ARRAY_SIZE(quat_tdm_rx_3_port_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013431 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
13432 quin_tdm_rx_0_port_mixer_controls,
13433 ARRAY_SIZE(quin_tdm_rx_0_port_mixer_controls)),
13434 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
13435 quin_tdm_rx_1_port_mixer_controls,
13436 ARRAY_SIZE(quin_tdm_rx_1_port_mixer_controls)),
13437 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
13438 quin_tdm_rx_2_port_mixer_controls,
13439 ARRAY_SIZE(quin_tdm_rx_2_port_mixer_controls)),
13440 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
13441 quin_tdm_rx_3_port_mixer_controls,
13442 ARRAY_SIZE(quin_tdm_rx_3_port_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013443 SND_SOC_DAPM_MIXER("INT0_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13444 int0_mi2s_rx_port_mixer_controls,
13445 ARRAY_SIZE(int0_mi2s_rx_port_mixer_controls)),
13446 SND_SOC_DAPM_MIXER("INT4_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13447 int4_mi2s_rx_port_mixer_controls,
13448 ARRAY_SIZE(int4_mi2s_rx_port_mixer_controls)),
13449 SND_SOC_DAPM_MIXER("QCHAT_Tx Mixer",
13450 SND_SOC_NOPM, 0, 0, tx_qchat_mixer_controls,
13451 ARRAY_SIZE(tx_qchat_mixer_controls)),
13452 SND_SOC_DAPM_MIXER("USB_AUDIO_RX_Voice Mixer",
13453 SND_SOC_NOPM, 0, 0, usb_audio_rx_voice_mixer_controls,
13454 ARRAY_SIZE(usb_audio_rx_voice_mixer_controls)),
13455 SND_SOC_DAPM_MIXER("USB_AUDIO_RX Port Mixer",
13456 SND_SOC_NOPM, 0, 0, usb_rx_port_mixer_controls,
13457 ARRAY_SIZE(usb_rx_port_mixer_controls)),
Aalique Grahamee4fd7d52017-11-28 13:24:13 -080013458 SND_SOC_DAPM_MIXER("DISPLAY_PORT_RX_Voice Mixer",
13459 SND_SOC_NOPM, 0, 0, display_port_rx_voice_mixer_controls,
13460 ARRAY_SIZE(display_port_rx_voice_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013461 /* lsm mixer definitions */
13462 SND_SOC_DAPM_MIXER("LSM1 Mixer", SND_SOC_NOPM, 0, 0,
13463 lsm1_mixer_controls, ARRAY_SIZE(lsm1_mixer_controls)),
13464 SND_SOC_DAPM_MIXER("LSM2 Mixer", SND_SOC_NOPM, 0, 0,
13465 lsm2_mixer_controls, ARRAY_SIZE(lsm2_mixer_controls)),
13466 SND_SOC_DAPM_MIXER("LSM3 Mixer", SND_SOC_NOPM, 0, 0,
13467 lsm3_mixer_controls, ARRAY_SIZE(lsm3_mixer_controls)),
13468 SND_SOC_DAPM_MIXER("LSM4 Mixer", SND_SOC_NOPM, 0, 0,
13469 lsm4_mixer_controls, ARRAY_SIZE(lsm4_mixer_controls)),
13470 SND_SOC_DAPM_MIXER("LSM5 Mixer", SND_SOC_NOPM, 0, 0,
13471 lsm5_mixer_controls, ARRAY_SIZE(lsm5_mixer_controls)),
13472 SND_SOC_DAPM_MIXER("LSM6 Mixer", SND_SOC_NOPM, 0, 0,
13473 lsm6_mixer_controls, ARRAY_SIZE(lsm6_mixer_controls)),
13474 SND_SOC_DAPM_MIXER("LSM7 Mixer", SND_SOC_NOPM, 0, 0,
13475 lsm7_mixer_controls, ARRAY_SIZE(lsm7_mixer_controls)),
13476 SND_SOC_DAPM_MIXER("LSM8 Mixer", SND_SOC_NOPM, 0, 0,
13477 lsm8_mixer_controls, ARRAY_SIZE(lsm8_mixer_controls)),
13478 /* Virtual Pins to force backends ON atm */
13479 SND_SOC_DAPM_OUTPUT("BE_OUT"),
13480 SND_SOC_DAPM_INPUT("BE_IN"),
13481
13482 SND_SOC_DAPM_MUX("SLIM0_RX_VI_FB_LCH_MUX", SND_SOC_NOPM, 0, 0,
13483 &slim0_rx_vi_fb_lch_mux),
13484 SND_SOC_DAPM_MUX("SLIM0_RX_VI_FB_RCH_MUX", SND_SOC_NOPM, 0, 0,
13485 &slim0_rx_vi_fb_rch_mux),
13486 SND_SOC_DAPM_MUX("PRI_MI2S_RX_VI_FB_MUX", SND_SOC_NOPM, 0, 0,
13487 &mi2s_rx_vi_fb_mux),
13488 SND_SOC_DAPM_MUX("INT4_MI2S_RX_VI_FB_MONO_CH_MUX", SND_SOC_NOPM, 0, 0,
13489 &int4_mi2s_rx_vi_fb_mono_ch_mux),
13490 SND_SOC_DAPM_MUX("INT4_MI2S_RX_VI_FB_STEREO_CH_MUX", SND_SOC_NOPM, 0, 0,
13491 &int4_mi2s_rx_vi_fb_stereo_ch_mux),
13492
13493 SND_SOC_DAPM_MUX("VOC_EXT_EC MUX", SND_SOC_NOPM, 0, 0,
13494 &voc_ext_ec_mux),
13495 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL1 MUX", SND_SOC_NOPM, 0, 0,
13496 &ext_ec_ref_mux_ul1),
13497 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL2 MUX", SND_SOC_NOPM, 0, 0,
13498 &ext_ec_ref_mux_ul2),
13499 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL3 MUX", SND_SOC_NOPM, 0, 0,
13500 &ext_ec_ref_mux_ul3),
13501 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL4 MUX", SND_SOC_NOPM, 0, 0,
13502 &ext_ec_ref_mux_ul4),
13503 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL5 MUX", SND_SOC_NOPM, 0, 0,
13504 &ext_ec_ref_mux_ul5),
13505 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL6 MUX", SND_SOC_NOPM, 0, 0,
13506 &ext_ec_ref_mux_ul6),
13507 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL8 MUX", SND_SOC_NOPM, 0, 0,
13508 &ext_ec_ref_mux_ul8),
13509 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL9 MUX", SND_SOC_NOPM, 0, 0,
13510 &ext_ec_ref_mux_ul9),
Laxminath Kasam38070be2017-08-17 18:21:59 +053013511 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL10 MUX", SND_SOC_NOPM, 0, 0,
13512 &ext_ec_ref_mux_ul10),
Asish Bhattacharya34504582017-08-08 12:55:01 +053013513 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL16 MUX", SND_SOC_NOPM, 0, 0,
13514 &ext_ec_ref_mux_ul16),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013515 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL17 MUX", SND_SOC_NOPM, 0, 0,
13516 &ext_ec_ref_mux_ul17),
13517 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL18 MUX", SND_SOC_NOPM, 0, 0,
13518 &ext_ec_ref_mux_ul18),
13519 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL19 MUX", SND_SOC_NOPM, 0, 0,
13520 &ext_ec_ref_mux_ul19),
13521};
13522
13523static const struct snd_soc_dapm_route intercon[] = {
13524 {"PRI_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13525 {"PRI_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13526 {"PRI_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13527 {"PRI_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13528 {"PRI_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13529 {"PRI_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13530 {"PRI_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13531 {"PRI_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13532 {"PRI_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
13533 {"PRI_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13534 {"PRI_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13535 {"PRI_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13536 {"PRI_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13537 {"PRI_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13538 {"PRI_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13539 {"PRI_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13540 {"PRI_I2S_RX", NULL, "PRI_RX Audio Mixer"},
13541
13542 {"SEC_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13543 {"SEC_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13544 {"SEC_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13545 {"SEC_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13546 {"SEC_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13547 {"SEC_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13548 {"SEC_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13549 {"SEC_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13550 {"SEC_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
13551 {"SEC_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13552 {"SEC_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13553 {"SEC_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13554 {"SEC_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13555 {"SEC_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13556 {"SEC_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13557 {"SEC_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13558 {"SEC_I2S_RX", NULL, "SEC_RX Audio Mixer"},
13559
13560 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13561 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13562 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13563 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13564 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13565 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13566 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13567 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13568 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
13569 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13570 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13571 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13572 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13573 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13574 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13575 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13576 {"SLIMBUS_0_RX", NULL, "SLIMBUS_0_RX Audio Mixer"},
13577
13578 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13579 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13580 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13581 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13582 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13583 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13584 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13585 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13586 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
13587 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13588 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13589 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13590 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13591 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13592 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13593 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13594 {"SLIMBUS_2_RX", NULL, "SLIMBUS_2_RX Audio Mixer"},
13595
13596 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13597 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13598 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13599 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13600 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13601 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13602 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13603 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13604 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
13605 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13606 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13607 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13608 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13609 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13610 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13611 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13612 {"SLIMBUS_5_RX", NULL, "SLIMBUS_5_RX Audio Mixer"},
13613
13614 {"HDMI Mixer", "MultiMedia1", "MM_DL1"},
13615 {"HDMI Mixer", "MultiMedia2", "MM_DL2"},
13616 {"HDMI Mixer", "MultiMedia3", "MM_DL3"},
13617 {"HDMI Mixer", "MultiMedia4", "MM_DL4"},
13618 {"HDMI Mixer", "MultiMedia5", "MM_DL5"},
13619 {"HDMI Mixer", "MultiMedia6", "MM_DL6"},
13620 {"HDMI Mixer", "MultiMedia7", "MM_DL7"},
13621 {"HDMI Mixer", "MultiMedia8", "MM_DL8"},
13622 {"HDMI Mixer", "MultiMedia9", "MM_DL9"},
13623 {"HDMI Mixer", "MultiMedia10", "MM_DL10"},
13624 {"HDMI Mixer", "MultiMedia11", "MM_DL11"},
13625 {"HDMI Mixer", "MultiMedia12", "MM_DL12"},
13626 {"HDMI Mixer", "MultiMedia13", "MM_DL13"},
13627 {"HDMI Mixer", "MultiMedia14", "MM_DL14"},
13628 {"HDMI Mixer", "MultiMedia15", "MM_DL15"},
13629 {"HDMI Mixer", "MultiMedia16", "MM_DL16"},
13630 {"HDMI", NULL, "HDMI Mixer"},
13631
13632 {"DISPLAY_PORT Mixer", "MultiMedia1", "MM_DL1"},
13633 {"DISPLAY_PORT Mixer", "MultiMedia2", "MM_DL2"},
13634 {"DISPLAY_PORT Mixer", "MultiMedia3", "MM_DL3"},
13635 {"DISPLAY_PORT Mixer", "MultiMedia4", "MM_DL4"},
13636 {"DISPLAY_PORT Mixer", "MultiMedia5", "MM_DL5"},
13637 {"DISPLAY_PORT Mixer", "MultiMedia6", "MM_DL6"},
13638 {"DISPLAY_PORT Mixer", "MultiMedia7", "MM_DL7"},
13639 {"DISPLAY_PORT Mixer", "MultiMedia8", "MM_DL8"},
13640 {"DISPLAY_PORT Mixer", "MultiMedia9", "MM_DL9"},
13641 {"DISPLAY_PORT Mixer", "MultiMedia10", "MM_DL10"},
13642 {"DISPLAY_PORT Mixer", "MultiMedia11", "MM_DL11"},
13643 {"DISPLAY_PORT Mixer", "MultiMedia12", "MM_DL12"},
13644 {"DISPLAY_PORT Mixer", "MultiMedia13", "MM_DL13"},
13645 {"DISPLAY_PORT Mixer", "MultiMedia14", "MM_DL14"},
13646 {"DISPLAY_PORT Mixer", "MultiMedia15", "MM_DL15"},
13647 {"DISPLAY_PORT Mixer", "MultiMedia16", "MM_DL16"},
13648 {"DISPLAY_PORT", NULL, "DISPLAY_PORT Mixer"},
13649
13650 {"SPDIF_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13651 {"SPDIF_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13652 {"SPDIF_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13653 {"SPDIF_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13654 {"SPDIF_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13655 {"SPDIF_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13656 {"SPDIF_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13657 {"SPDIF_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13658 {"SPDIF_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
13659 {"SPDIF_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13660 {"SPDIF_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13661 {"SPDIF_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13662 {"SPDIF_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13663 {"SPDIF_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13664 {"SPDIF_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13665 {"SPDIF_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13666 {"SPDIF_RX", NULL, "SPDIF_RX Audio Mixer"},
13667
13668 /* incall */
13669 {"Incall_Music Audio Mixer", "MultiMedia1", "MM_DL1"},
13670 {"Incall_Music Audio Mixer", "MultiMedia2", "MM_DL2"},
13671 {"Incall_Music Audio Mixer", "MultiMedia5", "MM_DL5"},
13672 {"Incall_Music Audio Mixer", "MultiMedia9", "MM_DL9"},
13673 {"VOICE_PLAYBACK_TX", NULL, "Incall_Music Audio Mixer"},
13674 {"Incall_Music_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
13675 {"Incall_Music_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
13676 {"Incall_Music_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
13677 {"Incall_Music_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
13678 {"VOICE2_PLAYBACK_TX", NULL, "Incall_Music_2 Audio Mixer"},
13679 {"SLIMBUS_4_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13680 {"SLIMBUS_4_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13681 {"SLIMBUS_4_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13682 {"SLIMBUS_4_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
13683 {"SLIMBUS_4_RX", NULL, "SLIMBUS_4_RX Audio Mixer"},
13684
13685 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13686 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13687 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13688 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13689 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13690 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13691 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13692 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13693 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
13694 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13695 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13696 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13697 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13698 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13699 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13700 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13701 {"SLIMBUS_6_RX", NULL, "SLIMBUS_6_RX Audio Mixer"},
13702
13703 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13704 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13705 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13706 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13707 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13708 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13709 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13710 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13711 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
13712 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13713 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13714 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13715 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13716 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13717 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13718 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13719 {"SLIMBUS_7_RX", NULL, "SLIMBUS_7_RX Audio Mixer"},
13720
13721 {"USB_AUDIO_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13722 {"USB_AUDIO_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13723 {"USB_AUDIO_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13724 {"USB_AUDIO_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13725 {"USB_AUDIO_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13726 {"USB_AUDIO_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13727 {"USB_AUDIO_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13728 {"USB_AUDIO_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13729 {"USB_AUDIO_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
13730 {"USB_AUDIO_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13731 {"USB_AUDIO_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13732 {"USB_AUDIO_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13733 {"USB_AUDIO_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13734 {"USB_AUDIO_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13735 {"USB_AUDIO_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13736 {"USB_AUDIO_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13737 {"USB_AUDIO_RX", NULL, "USB_AUDIO_RX Audio Mixer"},
13738
13739 {"MultiMedia1 Mixer", "VOC_REC_UL", "INCALL_RECORD_TX"},
13740 {"MultiMedia4 Mixer", "VOC_REC_UL", "INCALL_RECORD_TX"},
13741 {"MultiMedia8 Mixer", "VOC_REC_UL", "INCALL_RECORD_TX"},
13742 {"MultiMedia1 Mixer", "VOC_REC_DL", "INCALL_RECORD_RX"},
13743 {"MultiMedia4 Mixer", "VOC_REC_DL", "INCALL_RECORD_RX"},
13744 {"MultiMedia8 Mixer", "VOC_REC_DL", "INCALL_RECORD_RX"},
13745 {"MultiMedia1 Mixer", "SLIM_4_TX", "SLIMBUS_4_TX"},
13746 {"MultiMedia1 Mixer", "SLIM_6_TX", "SLIMBUS_6_TX"},
13747 {"MultiMedia1 Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
13748 {"MultiMedia1 Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
13749 {"MultiMedia8 Mixer", "SLIM_6_TX", "SLIMBUS_6_TX"},
13750 {"MultiMedia8 Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
13751 {"MultiMedia4 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
13752 {"MultiMedia17 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
13753 {"MultiMedia18 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
13754 {"MultiMedia19 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
13755 {"MultiMedia8 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
13756 {"MultiMedia2 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
13757 {"MultiMedia4 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
13758 {"MultiMedia17 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
13759 {"MultiMedia18 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
13760 {"MultiMedia19 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
13761 {"MultiMedia8 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
13762 {"MultiMedia18 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
13763 {"MultiMedia8 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
13764 {"MultiMedia3 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
13765 {"MultiMedia5 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053013766 {"MultiMedia10 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053013767 {"MultiMedia16 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013768 {"MultiMedia5 Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
13769 {"MultiMedia5 Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053013770 {"MultiMedia10 Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013771 {"MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13772 {"MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13773 {"MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13774 {"MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13775 {"MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13776 {"MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13777 {"MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13778 {"MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13779 {"MI2S_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
13780 {"MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13781 {"MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13782 {"MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13783 {"MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13784 {"MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13785 {"MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13786 {"MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13787 {"MI2S_RX", NULL, "MI2S_RX Audio Mixer"},
13788
13789 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13790 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13791 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13792 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13793 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13794 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13795 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13796 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13797 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13798 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13799 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13800 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13801 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13802 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13803 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13804 {"QUAT_MI2S_RX", NULL, "QUAT_MI2S_RX Audio Mixer"},
13805
13806 {"TERT_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13807 {"TERT_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13808 {"TERT_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13809 {"TERT_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13810 {"TERT_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13811 {"TERT_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13812 {"TERT_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13813 {"TERT_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13814 {"TERT_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13815 {"TERT_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13816 {"TERT_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13817 {"TERT_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13818 {"TERT_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13819 {"TERT_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13820 {"TERT_MI2S_RX", NULL, "TERT_MI2S_RX Audio Mixer"},
13821
13822 {"SEC_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13823 {"SEC_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13824 {"SEC_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13825 {"SEC_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13826 {"SEC_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13827 {"SEC_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13828 {"SEC_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13829 {"SEC_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13830 {"SEC_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13831 {"SEC_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13832 {"SEC_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13833 {"SEC_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13834 {"SEC_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13835 {"SEC_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13836 {"SEC_MI2S_RX", NULL, "SEC_MI2S_RX Audio Mixer"},
13837
13838 {"SEC_MI2S_RX_SD1 Audio Mixer", "MultiMedia6", "MM_DL6"},
13839 {"SEC_MI2S_RX_SD1", NULL, "SEC_MI2S_RX_SD1 Audio Mixer"},
13840
13841 {"SEC_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
13842 {"SEC_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
13843
13844 {"PRI_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13845 {"PRI_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13846 {"PRI_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13847 {"PRI_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13848 {"PRI_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13849 {"PRI_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13850 {"PRI_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13851 {"PRI_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13852 {"PRI_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13853 {"PRI_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13854 {"PRI_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13855 {"PRI_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13856 {"PRI_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13857 {"PRI_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13858 {"PRI_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13859 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX Audio Mixer"},
13860
13861 {"INT0_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13862 {"INT0_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13863 {"INT0_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13864 {"INT0_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13865 {"INT0_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13866 {"INT0_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13867 {"INT0_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13868 {"INT0_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13869 {"INT0_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13870 {"INT0_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13871 {"INT0_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13872 {"INT0_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13873 {"INT0_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13874 {"INT0_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13875 {"INT0_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13876 {"INT0_MI2S_RX", NULL, "INT0_MI2S_RX Audio Mixer"},
13877
13878 {"INT4_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13879 {"INT4_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13880 {"INT4_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13881 {"INT4_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13882 {"INT4_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13883 {"INT4_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13884 {"INT4_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13885 {"INT4_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13886 {"INT4_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13887 {"INT4_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13888 {"INT4_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13889 {"INT4_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13890 {"INT4_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13891 {"INT4_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13892 {"INT4_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13893 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX Audio Mixer"},
13894
13895 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13896 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13897 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13898 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13899 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13900 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13901 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13902 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13903 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13904 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13905 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13906 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13907 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13908 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13909 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13910 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13911 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13912 {"QUIN_MI2S_RX", NULL, "QUIN_MI2S_RX Audio Mixer"},
13913
13914 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
13915 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
13916 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
13917 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
13918 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
13919 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
13920 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
13921 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
13922 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
13923 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
13924 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
13925 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
13926 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
13927 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
13928 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
13929 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
13930 {"PRI_TDM_RX_0", NULL, "PRI_TDM_RX_0 Audio Mixer"},
13931
13932 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
13933 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
13934 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
13935 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
13936 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
13937 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
13938 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
13939 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
13940 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
13941 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
13942 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
13943 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
13944 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
13945 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
13946 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
13947 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
13948 {"PRI_TDM_RX_1", NULL, "PRI_TDM_RX_1 Audio Mixer"},
13949
13950 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
13951 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
13952 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
13953 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
13954 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
13955 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
13956 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
13957 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
13958 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
13959 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
13960 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
13961 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
13962 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
13963 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
13964 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
13965 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
13966 {"PRI_TDM_RX_2", NULL, "PRI_TDM_RX_2 Audio Mixer"},
13967
13968 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
13969 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
13970 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
13971 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
13972 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
13973 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
13974 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
13975 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
13976 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
13977 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
13978 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
13979 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
13980 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
13981 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
13982 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
13983 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
13984 {"PRI_TDM_RX_3", NULL, "PRI_TDM_RX_3 Audio Mixer"},
13985
13986 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
13987 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
13988 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
13989 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
13990 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
13991 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
13992 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
13993 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
13994 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
13995 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
13996 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
13997 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
13998 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
13999 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14000 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14001 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14002 {"PRI_TDM_TX_0", NULL, "PRI_TDM_TX_0 Audio Mixer"},
14003
14004 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14005 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14006 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14007 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14008 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14009 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14010 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14011 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14012 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14013 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14014 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14015 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14016 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14017 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14018 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14019 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14020 {"SEC_TDM_RX_0", NULL, "SEC_TDM_RX_0 Audio Mixer"},
14021
14022 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
14023 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
14024 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
14025 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
14026 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
14027 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
14028 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
14029 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
14030 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
14031 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
14032 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
14033 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
14034 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
14035 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
14036 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
14037 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
14038 {"SEC_TDM_RX_1", NULL, "SEC_TDM_RX_1 Audio Mixer"},
14039
14040 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
14041 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
14042 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
14043 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
14044 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
14045 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
14046 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
14047 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
14048 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
14049 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
14050 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
14051 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
14052 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
14053 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
14054 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
14055 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
14056 {"SEC_TDM_RX_2", NULL, "SEC_TDM_RX_2 Audio Mixer"},
14057
14058 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
14059 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
14060 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
14061 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
14062 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
14063 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
14064 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
14065 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
14066 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
14067 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
14068 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
14069 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
14070 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
14071 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
14072 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
14073 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
14074 {"SEC_TDM_RX_3", NULL, "SEC_TDM_RX_3 Audio Mixer"},
14075
14076 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14077 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14078 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14079 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14080 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14081 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14082 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14083 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14084 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14085 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14086 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14087 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14088 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14089 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14090 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14091 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14092 {"SEC_TDM_TX_0", NULL, "SEC_TDM_TX_0 Audio Mixer"},
14093
14094 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14095 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14096 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14097 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14098 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14099 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14100 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14101 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14102 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14103 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14104 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14105 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14106 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14107 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14108 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14109 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14110 {"TERT_TDM_RX_0", NULL, "TERT_TDM_RX_0 Audio Mixer"},
14111
14112 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14113 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14114 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14115 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14116 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14117 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14118 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14119 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14120 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14121 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14122 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14123 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14124 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14125 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14126 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14127 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14128 {"TERT_TDM_TX_0", NULL, "TERT_TDM_TX_0 Audio Mixer"},
14129
14130 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
14131 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
14132 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
14133 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
14134 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
14135 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
14136 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
14137 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
14138 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
14139 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
14140 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
14141 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
14142 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
14143 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
14144 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
14145 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
14146 {"TERT_TDM_RX_1", NULL, "TERT_TDM_RX_1 Audio Mixer"},
14147
14148 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
14149 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
14150 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
14151 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
14152 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
14153 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
14154 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
14155 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
14156 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
14157 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
14158 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
14159 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
14160 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
14161 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
14162 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
14163 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
14164 {"TERT_TDM_RX_2", NULL, "TERT_TDM_RX_2 Audio Mixer"},
14165
14166 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
14167 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
14168 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
14169 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
14170 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
14171 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
14172 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
14173 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
14174 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
14175 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
14176 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
14177 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
14178 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
14179 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
14180 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
14181 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
14182 {"TERT_TDM_RX_3", NULL, "TERT_TDM_RX_3 Audio Mixer"},
14183
14184 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia1", "MM_DL1"},
14185 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia2", "MM_DL2"},
14186 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia3", "MM_DL3"},
14187 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia4", "MM_DL4"},
14188 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia5", "MM_DL5"},
14189 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia6", "MM_DL6"},
14190 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia7", "MM_DL7"},
14191 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia8", "MM_DL8"},
14192 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia9", "MM_DL9"},
14193 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia10", "MM_DL10"},
14194 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia11", "MM_DL11"},
14195 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia12", "MM_DL12"},
14196 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia13", "MM_DL13"},
14197 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia14", "MM_DL14"},
14198 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia15", "MM_DL15"},
14199 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia16", "MM_DL16"},
14200 {"TERT_TDM_RX_4", NULL, "TERT_TDM_RX_4 Audio Mixer"},
14201
14202 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14203 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14204 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14205 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14206 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14207 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14208 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14209 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14210 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14211 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14212 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14213 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14214 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14215 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14216 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14217 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14218 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia20", "MM_DL20"},
14219 {"QUAT_TDM_RX_0", NULL, "QUAT_TDM_RX_0 Audio Mixer"},
14220
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014221 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14222 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14223 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14224 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14225 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14226 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14227 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14228 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14229 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14230 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14231 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14232 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14233 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14234 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14235 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14236 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14237 {"QUAT_TDM_TX_0", NULL, "QUAT_TDM_TX_0 Audio Mixer"},
14238
14239 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
14240 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
14241 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
14242 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
14243 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
14244 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
14245 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
14246 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
14247 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
14248 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
14249 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
14250 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
14251 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
14252 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
14253 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
14254 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
14255 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia20", "MM_DL20"},
14256 {"QUAT_TDM_RX_1", NULL, "QUAT_TDM_RX_1 Audio Mixer"},
14257
14258 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
14259 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
14260 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
14261 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
14262 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
14263 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
14264 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
14265 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
14266 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
14267 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
14268 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
14269 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
14270 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
14271 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
14272 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
14273 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
14274 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia20", "MM_DL20"},
14275 {"QUAT_TDM_RX_2", NULL, "QUAT_TDM_RX_2 Audio Mixer"},
14276
14277 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
14278 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
14279 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
14280 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
14281 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
14282 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
14283 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
14284 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
14285 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
14286 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
14287 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
14288 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
14289 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
14290 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
14291 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
14292 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
14293 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia20", "MM_DL20"},
14294 {"QUAT_TDM_RX_3", NULL, "QUAT_TDM_RX_3 Audio Mixer"},
14295
Rohit Kumara5077932017-09-10 22:05:05 +053014296 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14297 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14298 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14299 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14300 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14301 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14302 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14303 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14304 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14305 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14306 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14307 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14308 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14309 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14310 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14311 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14312 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia20", "MM_DL20"},
14313 {"QUIN_TDM_RX_0", NULL, "QUIN_TDM_RX_0 Audio Mixer"},
14314
14315 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14316 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14317 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14318 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14319 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14320 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14321 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14322 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14323 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14324 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14325 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14326 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14327 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14328 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14329 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14330 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14331 {"QUIN_TDM_TX_0", NULL, "QUIN_TDM_TX_0 Audio Mixer"},
14332
14333 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
14334 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
14335 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
14336 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
14337 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
14338 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
14339 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
14340 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
14341 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
14342 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
14343 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
14344 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
14345 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
14346 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
14347 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
14348 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
14349 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia20", "MM_DL20"},
14350 {"QUIN_TDM_RX_1", NULL, "QUIN_TDM_RX_1 Audio Mixer"},
14351
14352 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
14353 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
14354 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
14355 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
14356 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
14357 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
14358 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
14359 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
14360 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
14361 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
14362 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
14363 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
14364 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
14365 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
14366 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
14367 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
14368 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia20", "MM_DL20"},
14369 {"QUIN_TDM_RX_2", NULL, "QUIN_TDM_RX_2 Audio Mixer"},
14370
14371 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
14372 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
14373 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
14374 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
14375 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
14376 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
14377 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
14378 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
14379 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
14380 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
14381 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
14382 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
14383 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
14384 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
14385 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
14386 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
14387 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia20", "MM_DL20"},
14388 {"QUIN_TDM_RX_3", NULL, "QUIN_TDM_RX_3 Audio Mixer"},
14389
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014390 {"MultiMedia1 Mixer", "PRI_TX", "PRI_I2S_TX"},
14391 {"MultiMedia1 Mixer", "MI2S_TX", "MI2S_TX"},
14392 {"MultiMedia2 Mixer", "MI2S_TX", "MI2S_TX"},
14393 {"MultiMedia3 Mixer", "MI2S_TX", "MI2S_TX"},
14394 {"MultiMedia5 Mixer", "MI2S_TX", "MI2S_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014395 {"MultiMedia10 Mixer", "MI2S_TX", "MI2S_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014396 {"MultiMedia16 Mixer", "MI2S_TX", "MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014397 {"MultiMedia1 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14398 {"MultiMedia2 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14399 {"MultiMedia6 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14400 {"MultiMedia1 Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
14401 {"MultiMedia2 Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
14402 {"MultiMedia1 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14403 {"MultiMedia2 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14404 {"MultiMedia1 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
14405 {"MultiMedia2 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
14406 {"MultiMedia1 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14407 {"MultiMedia2 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14408 {"MultiMedia1 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14409 {"MultiMedia1 Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
14410 {"MultiMedia3 Mixer", "AUX_PCM_TX", "AUX_PCM_TX"},
14411 {"MultiMedia5 Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014412 {"MultiMedia10 Mixer", "AUX_PCM_TX", "AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014413 {"MultiMedia1 Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
14414 {"MultiMedia3 Mixer", "SEC_AUX_PCM_TX", "SEC_AUX_PCM_TX"},
14415 {"MultiMedia5 Mixer", "SEC_AUX_PCM_TX", "SEC_AUX_PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014416 {"MultiMedia10 Mixer", "SEC_AUX_PCM_TX", "SEC_AUX_PCM_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014417 {"MultiMedia16 Mixer", "AUX_PCM_TX", "AUX_PCM_TX"},
14418 {"MultiMedia16 Mixer", "SEC_AUX_PCM_TX", "SEC_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014419 {"MultiMedia1 Mixer", "TERT_AUXPCM_UL_TX", "TERT_AUX_PCM_TX"},
14420 {"MultiMedia3 Mixer", "TERT_AUX_PCM_TX", "TERT_AUX_PCM_TX"},
14421 {"MultiMedia5 Mixer", "TERT_AUX_PCM_TX", "TERT_AUX_PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014422 {"MultiMedia10 Mixer", "TERT_AUX_PCM_TX", "TERT_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014423 {"MultiMedia1 Mixer", "QUAT_AUXPCM_UL_TX", "QUAT_AUX_PCM_TX"},
14424 {"MultiMedia3 Mixer", "QUAT_AUX_PCM_TX", "QUAT_AUX_PCM_TX"},
14425 {"MultiMedia5 Mixer", "QUAT_AUX_PCM_TX", "QUAT_AUX_PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014426 {"MultiMedia10 Mixer", "QUAT_AUX_PCM_TX", "QUAT_AUX_PCM_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014427 {"MultiMedia16 Mixer", "QUAT_AUX_PCM_TX", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053014428 {"MultiMedia1 Mixer", "QUIN_AUXPCM_UL_TX", "QUIN_AUX_PCM_TX"},
14429 {"MultiMedia3 Mixer", "QUIN_AUX_PCM_TX", "QUIN_AUX_PCM_TX"},
14430 {"MultiMedia5 Mixer", "QUIN_AUX_PCM_TX", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014431 {"MultiMedia2 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14432 {"MultiMedia2 Mixer", "SLIM_6_TX", "SLIMBUS_6_TX"},
14433 {"MultiMedia2 Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
14434 {"MultiMedia2 Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
14435 {"MultiMedia1 Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
14436 {"MultiMedia1 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14437 {"MultiMedia2 Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
14438 {"MultiMedia6 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14439 {"MultiMedia6 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14440 {"MultiMedia3 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14441 {"MultiMedia5 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014442 {"MultiMedia10 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014443 {"MultiMedia6 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
14444 {"MultiMedia3 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
14445 {"MultiMedia5 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014446 {"MultiMedia10 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014447 {"MultiMedia16 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014448 {"MultiMedia6 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14449 {"MultiMedia3 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14450 {"MultiMedia5 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014451 {"MultiMedia10 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014452 {"MultiMedia16 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014453 {"MultiMedia6 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14454 {"MultiMedia6 Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
14455 {"MultiMedia6 Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
14456 {"MultiMedia6 Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053014457 {"MultiMedia6 Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014458
14459 {"MultiMedia1 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
14460 {"MultiMedia1 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
14461 {"MultiMedia1 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
14462 {"MultiMedia1 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
14463 {"MultiMedia1 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
14464 {"MultiMedia1 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
14465 {"MultiMedia1 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
14466 {"MultiMedia1 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
14467 {"MultiMedia1 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14468 {"MultiMedia1 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14469 {"MultiMedia1 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14470 {"MultiMedia1 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14471 {"MultiMedia1 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14472 {"MultiMedia1 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14473 {"MultiMedia1 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14474 {"MultiMedia1 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053014475 {"MultiMedia1 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
14476 {"MultiMedia1 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
14477 {"MultiMedia1 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
14478 {"MultiMedia1 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014479
14480 {"MultiMedia2 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
14481 {"MultiMedia2 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
14482 {"MultiMedia2 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
14483 {"MultiMedia2 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
14484 {"MultiMedia2 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
14485 {"MultiMedia2 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
14486 {"MultiMedia2 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
14487 {"MultiMedia2 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
14488 {"MultiMedia2 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14489 {"MultiMedia2 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14490 {"MultiMedia2 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14491 {"MultiMedia2 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14492 {"MultiMedia2 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14493 {"MultiMedia2 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14494 {"MultiMedia2 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14495 {"MultiMedia2 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053014496 {"MultiMedia2 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
14497 {"MultiMedia2 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
14498 {"MultiMedia2 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
14499 {"MultiMedia2 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014500
14501 {"MultiMedia3 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
14502 {"MultiMedia3 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
14503 {"MultiMedia3 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
14504 {"MultiMedia3 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
14505 {"MultiMedia3 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
14506 {"MultiMedia3 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
14507 {"MultiMedia3 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
14508 {"MultiMedia3 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
14509 {"MultiMedia3 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14510 {"MultiMedia3 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14511 {"MultiMedia3 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14512 {"MultiMedia3 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14513 {"MultiMedia3 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14514 {"MultiMedia3 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14515 {"MultiMedia3 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14516 {"MultiMedia3 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053014517 {"MultiMedia3 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
14518 {"MultiMedia3 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
14519 {"MultiMedia3 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
14520 {"MultiMedia3 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014521
14522 {"MultiMedia4 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
14523 {"MultiMedia4 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
14524 {"MultiMedia4 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
14525 {"MultiMedia4 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
14526 {"MultiMedia4 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
14527 {"MultiMedia4 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
14528 {"MultiMedia4 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
14529 {"MultiMedia4 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
14530 {"MultiMedia4 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14531 {"MultiMedia4 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14532 {"MultiMedia4 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14533 {"MultiMedia4 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14534 {"MultiMedia4 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14535 {"MultiMedia4 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14536 {"MultiMedia4 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14537 {"MultiMedia4 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053014538 {"MultiMedia4 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
14539 {"MultiMedia4 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
14540 {"MultiMedia4 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
14541 {"MultiMedia4 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014542
14543 {"MultiMedia5 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
14544 {"MultiMedia5 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
14545 {"MultiMedia5 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
14546 {"MultiMedia5 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
14547 {"MultiMedia5 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
14548 {"MultiMedia5 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
14549 {"MultiMedia5 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
14550 {"MultiMedia5 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
14551 {"MultiMedia5 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14552 {"MultiMedia5 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14553 {"MultiMedia5 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14554 {"MultiMedia5 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14555 {"MultiMedia5 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14556 {"MultiMedia5 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14557 {"MultiMedia5 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14558 {"MultiMedia5 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053014559 {"MultiMedia5 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
14560 {"MultiMedia5 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
14561 {"MultiMedia5 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
14562 {"MultiMedia5 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014563
14564 {"MultiMedia6 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
14565 {"MultiMedia6 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
14566 {"MultiMedia6 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
14567 {"MultiMedia6 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
14568 {"MultiMedia6 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
14569 {"MultiMedia6 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
14570 {"MultiMedia6 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
14571 {"MultiMedia6 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
14572 {"MultiMedia6 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14573 {"MultiMedia6 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14574 {"MultiMedia6 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14575 {"MultiMedia6 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14576 {"MultiMedia6 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14577 {"MultiMedia6 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14578 {"MultiMedia6 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14579 {"MultiMedia6 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053014580 {"MultiMedia6 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
14581 {"MultiMedia6 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
14582 {"MultiMedia6 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
14583 {"MultiMedia6 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014584
14585 {"MultiMedia8 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
14586 {"MultiMedia8 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
14587 {"MultiMedia8 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
14588 {"MultiMedia8 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
14589 {"MultiMedia8 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
14590 {"MultiMedia8 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
14591 {"MultiMedia8 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
14592 {"MultiMedia8 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
14593 {"MultiMedia8 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14594 {"MultiMedia8 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14595 {"MultiMedia8 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14596 {"MultiMedia8 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14597 {"MultiMedia8 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14598 {"MultiMedia8 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14599 {"MultiMedia8 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14600 {"MultiMedia8 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053014601 {"MultiMedia8 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
14602 {"MultiMedia8 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
14603 {"MultiMedia8 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
14604 {"MultiMedia8 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014605
14606 {"MultiMedia9 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14607 {"MultiMedia9 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14608 {"MultiMedia9 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14609 {"MultiMedia9 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14610 {"MultiMedia9 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14611 {"MultiMedia9 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14612 {"MultiMedia9 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14613 {"MultiMedia9 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053014614 {"MultiMedia9 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
14615 {"MultiMedia9 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
14616 {"MultiMedia9 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
14617 {"MultiMedia9 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014618
Laxminath Kasam38070be2017-08-17 18:21:59 +053014619 {"MultiMedia10 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14620 {"MultiMedia10 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14621 {"MultiMedia10 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14622 {"MultiMedia10 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14623 {"MultiMedia10 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14624 {"MultiMedia10 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14625 {"MultiMedia10 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14626 {"MultiMedia10 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014627 {"MultiMedia20 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14628 {"MultiMedia20 Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
14629 {"MultiMedia20 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14630 {"MultiMedia20 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053014631 {"MultiMedia20 Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014632 {"MultiMedia20 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
14633 {"MultiMedia20 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
14634 {"MultiMedia20 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
14635 {"MultiMedia20 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
14636 {"MultiMedia20 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
14637 {"MultiMedia20 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
14638 {"MultiMedia20 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
14639 {"MultiMedia20 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
14640 {"MultiMedia20 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14641 {"MultiMedia20 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14642 {"MultiMedia20 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14643 {"MultiMedia20 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14644 {"MultiMedia20 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14645 {"MultiMedia20 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14646 {"MultiMedia20 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14647 {"MultiMedia20 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053014648 {"MultiMedia20 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
14649 {"MultiMedia20 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
14650 {"MultiMedia20 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
14651 {"MultiMedia20 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014652
14653 {"MultiMedia1 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
14654 {"MultiMedia2 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
14655 {"MultiMedia4 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
14656 {"MultiMedia5 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
14657 {"MultiMedia6 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
14658 {"MultiMedia8 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014659 {"MultiMedia10 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014660
Asish Bhattacharya34504582017-08-08 12:55:01 +053014661 {"MultiMedia16 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
14662 {"MultiMedia16 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
14663 {"MultiMedia16 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
14664 {"MultiMedia16 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
14665 {"MultiMedia16 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
14666 {"MultiMedia16 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
14667 {"MultiMedia16 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
14668 {"MultiMedia16 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
14669 {"MultiMedia16 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14670 {"MultiMedia16 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14671 {"MultiMedia16 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14672 {"MultiMedia16 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14673 {"MultiMedia16 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14674 {"MultiMedia16 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14675 {"MultiMedia16 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14676 {"MultiMedia16 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
14677 {"MultiMedia16 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
14678
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014679 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14680 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14681 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14682 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14683 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14684 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14685 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14686 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14687 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14688 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14689 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14690 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14691 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14692 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14693 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14694 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14695 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia6", "MM_UL6"},
14696 {"INT_BT_SCO_RX", NULL, "INTERNAL_BT_SCO_RX Audio Mixer"},
14697
14698 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14699 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14700 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14701 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14702 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14703 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14704 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14705 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14706 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14707 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14708 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14709 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14710 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14711 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14712 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14713 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14714 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia6", "MM_UL6"},
14715 {"INT_BT_A2DP_RX", NULL, "INTERNAL_A2DP_RX Audio Mixer"},
14716
14717 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14718 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14719 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14720 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14721 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14722 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14723 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14724 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14725 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14726 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14727 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14728 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14729 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14730 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14731 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14732 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14733 {"INT_FM_RX", NULL, "INTERNAL_FM_RX Audio Mixer"},
14734
14735 {"AFE_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14736 {"AFE_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14737 {"AFE_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14738 {"AFE_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14739 {"AFE_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14740 {"AFE_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14741 {"AFE_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14742 {"AFE_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14743 {"AFE_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14744 {"AFE_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14745 {"AFE_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14746 {"AFE_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14747 {"AFE_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14748 {"AFE_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14749 {"AFE_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14750 {"AFE_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14751 {"PCM_RX", NULL, "AFE_PCM_RX Audio Mixer"},
14752
14753 {"MultiMedia1 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
14754 {"MultiMedia3 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
14755 {"MultiMedia4 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014756 {"MultiMedia10 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014757 {"MultiMedia17 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
14758 {"MultiMedia18 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
14759 {"MultiMedia19 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
14760 {"MultiMedia5 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
14761 {"MultiMedia8 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014762 {"MultiMedia16 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014763 {"MultiMedia1 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
14764 {"MultiMedia4 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014765 {"MultiMedia16 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014766 {"MultiMedia17 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
14767 {"MultiMedia18 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
14768 {"MultiMedia19 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
14769 {"MultiMedia5 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
14770 {"MultiMedia6 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
14771 {"MultiMedia8 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
14772
14773 {"MultiMedia1 Mixer", "AFE_PCM_TX", "PCM_TX"},
14774 {"MultiMedia3 Mixer", "AFE_PCM_TX", "PCM_TX"},
14775 {"MultiMedia4 Mixer", "AFE_PCM_TX", "PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014776 {"MultiMedia10 Mixer", "AFE_PCM_TX", "PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014777 {"MultiMedia17 Mixer", "AFE_PCM_TX", "PCM_TX"},
14778 {"MultiMedia18 Mixer", "AFE_PCM_TX", "PCM_TX"},
14779 {"MultiMedia19 Mixer", "AFE_PCM_TX", "PCM_TX"},
14780 {"MultiMedia5 Mixer", "AFE_PCM_TX", "PCM_TX"},
14781 {"MultiMedia8 Mixer", "AFE_PCM_TX", "PCM_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014782 {"MultiMedia16 Mixer", "AFE_PCM_TX", "PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014783 {"MM_UL1", NULL, "MultiMedia1 Mixer"},
14784 {"MultiMedia2 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
14785 {"MM_UL2", NULL, "MultiMedia2 Mixer"},
14786 {"MM_UL3", NULL, "MultiMedia3 Mixer"},
14787 {"MM_UL4", NULL, "MultiMedia4 Mixer"},
14788 {"MM_UL5", NULL, "MultiMedia5 Mixer"},
14789 {"MM_UL6", NULL, "MultiMedia6 Mixer"},
14790 {"MM_UL8", NULL, "MultiMedia8 Mixer"},
14791 {"MM_UL9", NULL, "MultiMedia9 Mixer"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014792 {"MM_UL10", NULL, "MultiMedia10 Mixer"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014793 {"MM_UL16", NULL, "MultiMedia16 Mixer"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014794 {"MM_UL17", NULL, "MultiMedia17 Mixer"},
14795 {"MM_UL18", NULL, "MultiMedia18 Mixer"},
14796 {"MM_UL19", NULL, "MultiMedia19 Mixer"},
14797 {"MM_UL20", NULL, "MultiMedia20 Mixer"},
14798
14799 {"AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14800 {"AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14801 {"AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14802 {"AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14803 {"AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14804 {"AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14805 {"AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14806 {"AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14807 {"AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14808 {"AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14809 {"AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14810 {"AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14811 {"AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14812 {"AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14813 {"AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14814 {"AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14815 {"AUX_PCM_RX", NULL, "AUX_PCM_RX Audio Mixer"},
14816
14817 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14818 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14819 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14820 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14821 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14822 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14823 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14824 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14825 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14826 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14827 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14828 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14829 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14830 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14831 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14832 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14833 {"SEC_AUX_PCM_RX", NULL, "SEC_AUX_PCM_RX Audio Mixer"},
14834
14835 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14836 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14837 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14838 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14839 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14840 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14841 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14842 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14843 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14844 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14845 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14846 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14847 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14848 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14849 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14850 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14851 {"TERT_AUX_PCM_RX", NULL, "TERT_AUX_PCM_RX Audio Mixer"},
14852
14853 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14854 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14855 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14856 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14857 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14858 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14859 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14860 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14861 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14862 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14863 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14864 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14865 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14866 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14867 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14868 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14869 {"QUAT_AUX_PCM_RX", NULL, "QUAT_AUX_PCM_RX Audio Mixer"},
14870
Rohit Kumara5077932017-09-10 22:05:05 +053014871 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14872 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14873 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14874 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14875 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14876 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14877 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14878 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14879 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14880 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14881 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14882 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14883 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14884 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14885 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14886 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14887 {"QUIN_AUX_PCM_RX", NULL, "QUIN_AUX_PCM_RX Audio Mixer"},
14888
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014889 {"PRI_RX_Voice Mixer", "Voip", "VOIP_DL"},
14890 {"PRI_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
14891 {"PRI_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
14892 {"PRI_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
14893 {"PRI_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
14894 {"PRI_I2S_RX", NULL, "PRI_RX_Voice Mixer"},
14895
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014896 {"SEC_RX_Voice Mixer", "Voip", "VOIP_DL"},
14897 {"SEC_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
14898 {"SEC_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
14899 {"SEC_I2S_RX", NULL, "SEC_RX_Voice Mixer"},
14900
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014901 {"SEC_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
14902 {"SEC_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
14903 {"SEC_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
14904 {"SEC_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
14905 {"SEC_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
14906 {"SEC_MI2S_RX", NULL, "SEC_MI2S_RX_Voice Mixer"},
14907
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014908 {"SLIM_0_RX_Voice Mixer", "Voip", "VOIP_DL"},
14909 {"SLIM_0_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014910 {"SLIM_0_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
14911 {"SLIM_0_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
14912 {"SLIM_0_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
14913 {"SLIMBUS_0_RX", NULL, "SLIM_0_RX_Voice Mixer"},
14914
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014915 {"SLIM_6_RX_Voice Mixer", "Voip", "VOIP_DL"},
14916 {"SLIM_6_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014917 {"SLIM_6_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
14918 {"SLIM_6_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
14919 {"SLIM_6_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
14920 {"SLIMBUS_6_RX", NULL, "SLIM_6_RX_Voice Mixer"},
14921
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014922 {"USB_AUDIO_RX_Voice Mixer", "Voip", "VOIP_DL"},
14923 {"USB_AUDIO_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014924 {"USB_AUDIO_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
14925 {"USB_AUDIO_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
14926 {"USB_AUDIO_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
14927 {"USB_AUDIO_RX", NULL, "USB_AUDIO_RX_Voice Mixer"},
14928
Aalique Grahamee4fd7d52017-11-28 13:24:13 -080014929 {"DISPLAY_PORT_RX_Voice Mixer", "Voip", "VOIP_DL"},
14930 {"DISPLAY_PORT_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Aalique Grahamee4fd7d52017-11-28 13:24:13 -080014931 {"DISPLAY_PORT_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
14932 {"DISPLAY_PORT_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
14933 {"DISPLAY_PORT_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
14934 {"DISPLAY_PORT", NULL, "DISPLAY_PORT_RX_Voice Mixer"},
14935
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014936 {"INTERNAL_BT_SCO_RX_Voice Mixer", "Voip", "VOIP_DL"},
14937 {"INTERNAL_BT_SCO_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
14938 {"INTERNAL_BT_SCO_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
14939 {"INTERNAL_BT_SCO_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
14940 {"INTERNAL_BT_SCO_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014941 {"INT_BT_SCO_RX", NULL, "INTERNAL_BT_SCO_RX_Voice Mixer"},
14942
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014943 {"AFE_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
14944 {"AFE_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
14945 {"AFE_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
14946 {"AFE_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
14947 {"AFE_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
14948 {"PCM_RX", NULL, "AFE_PCM_RX_Voice Mixer"},
14949
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014950 {"AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
14951 {"AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014952 {"AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
14953 {"AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
14954 {"AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
14955 {"AUX_PCM_RX", NULL, "AUX_PCM_RX_Voice Mixer"},
14956
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014957 {"SEC_AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
14958 {"SEC_AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014959 {"SEC_AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
14960 {"SEC_AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
14961 {"SEC_AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
14962 {"SEC_AUX_PCM_RX", NULL, "SEC_AUX_PCM_RX_Voice Mixer"},
14963
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014964 {"TERT_AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
14965 {"TERT_AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014966 {"TERT_AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
14967 {"TERT_AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
14968 {"TERT_AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
14969 {"TERT_AUX_PCM_RX", NULL, "TERT_AUX_PCM_RX_Voice Mixer"},
14970
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014971 {"QUAT_AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
14972 {"QUAT_AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014973 {"QUAT_AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
14974 {"QUAT_AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
14975 {"QUAT_AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
14976 {"QUAT_AUX_PCM_RX", NULL, "QUAT_AUX_PCM_RX_Voice Mixer"},
14977
Rohit Kumara5077932017-09-10 22:05:05 +053014978 {"QUIN_AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
14979 {"QUIN_AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Rohit Kumara5077932017-09-10 22:05:05 +053014980 {"QUIN_AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
14981 {"QUIN_AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
14982 {"QUIN_AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
14983 {"QUIN_AUX_PCM_RX", NULL, "QUIN_AUX_PCM_RX_Voice Mixer"},
14984
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014985 {"HDMI_RX_Voice Mixer", "Voip", "VOIP_DL"},
14986 {"HDMI_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
14987 {"HDMI_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
14988 {"HDMI_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
14989 {"HDMI_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
14990 {"HDMI", NULL, "HDMI_RX_Voice Mixer"},
14991 {"HDMI", NULL, "HDMI_DL_HL"},
14992
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014993 {"MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014994 {"MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
14995 {"MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
14996 {"MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
kunleiz8a60b822017-10-11 15:04:02 +080014997 {"MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014998 {"MI2S_RX", NULL, "MI2S_RX_Voice Mixer"},
14999
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015000 {"PRI_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015001 {"PRI_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15002 {"PRI_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15003 {"PRI_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15004 {"PRI_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15005 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX_Voice Mixer"},
15006
15007 {"INT0_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
15008 {"INT0_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15009 {"INT0_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15010 {"INT0_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15011 {"INT0_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15012 {"INT0_MI2S_RX", NULL, "INT0_MI2S_RX_Voice Mixer"},
15013
15014 {"INT4_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
15015 {"INT4_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15016 {"INT4_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15017 {"INT4_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15018 {"INT4_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15019 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX_Voice Mixer"},
15020
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015021 {"TERT_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015022 {"TERT_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15023 {"TERT_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15024 {"TERT_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15025 {"TERT_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15026 {"TERT_MI2S_RX", NULL, "TERT_MI2S_RX_Voice Mixer"},
15027
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015028 {"QUAT_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015029 {"QUAT_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15030 {"QUAT_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15031 {"QUAT_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15032 {"QUAT_MI2S_RX", NULL, "QUAT_MI2S_RX_Voice Mixer"},
15033
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015034 {"QUIN_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015035 {"QUIN_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15036 {"QUIN_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15037 {"QUIN_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15038 {"QUIN_MI2S_RX", NULL, "QUIN_MI2S_RX_Voice Mixer"},
15039
15040 {"QUAT_TDM_RX_2_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15041 {"QUAT_TDM_RX_2", NULL, "QUAT_TDM_RX_2_Voice Mixer"},
15042
15043 {"VOC_EXT_EC MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15044 {"VOC_EXT_EC MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15045 {"VOC_EXT_EC MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15046 {"VOC_EXT_EC MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015047 {"VOC_EXT_EC MUX", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015048 {"VOC_EXT_EC MUX", "SLIM_1_TX", "SLIMBUS_1_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015049 {"VOIP_UL", NULL, "VOC_EXT_EC MUX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015050 {"VOICEMMODE1_UL", NULL, "VOC_EXT_EC MUX"},
15051 {"VOICEMMODE2_UL", NULL, "VOC_EXT_EC MUX"},
15052
15053 {"AUDIO_REF_EC_UL1 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15054 {"AUDIO_REF_EC_UL1 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15055 {"AUDIO_REF_EC_UL1 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15056 {"AUDIO_REF_EC_UL1 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15057 {"AUDIO_REF_EC_UL1 MUX", "SLIM_1_TX", "SLIMBUS_1_TX"},
15058 {"AUDIO_REF_EC_UL1 MUX", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15059 {"AUDIO_REF_EC_UL1 MUX", "QUAT_TDM_RX_0", "QUAT_TDM_RX_0"},
15060 {"AUDIO_REF_EC_UL1 MUX", "QUAT_TDM_RX_1", "QUAT_TDM_RX_1"},
15061 {"AUDIO_REF_EC_UL1 MUX", "QUAT_TDM_RX_2", "QUAT_TDM_RX_2"},
15062 {"AUDIO_REF_EC_UL1 MUX", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15063
15064 {"AUDIO_REF_EC_UL2 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15065 {"AUDIO_REF_EC_UL2 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15066 {"AUDIO_REF_EC_UL2 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15067 {"AUDIO_REF_EC_UL2 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15068
15069 {"AUDIO_REF_EC_UL3 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15070 {"AUDIO_REF_EC_UL3 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15071 {"AUDIO_REF_EC_UL3 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15072 {"AUDIO_REF_EC_UL3 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15073
15074 {"AUDIO_REF_EC_UL4 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15075 {"AUDIO_REF_EC_UL4 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15076 {"AUDIO_REF_EC_UL4 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15077 {"AUDIO_REF_EC_UL4 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15078
15079 {"AUDIO_REF_EC_UL5 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15080 {"AUDIO_REF_EC_UL5 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15081 {"AUDIO_REF_EC_UL5 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15082 {"AUDIO_REF_EC_UL5 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15083
15084 {"AUDIO_REF_EC_UL6 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15085 {"AUDIO_REF_EC_UL6 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15086 {"AUDIO_REF_EC_UL6 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15087 {"AUDIO_REF_EC_UL6 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15088
15089 {"AUDIO_REF_EC_UL8 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15090 {"AUDIO_REF_EC_UL8 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15091 {"AUDIO_REF_EC_UL8 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15092 {"AUDIO_REF_EC_UL8 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15093
15094 {"AUDIO_REF_EC_UL9 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15095 {"AUDIO_REF_EC_UL9 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15096 {"AUDIO_REF_EC_UL9 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15097 {"AUDIO_REF_EC_UL9 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15098
Laxminath Kasam38070be2017-08-17 18:21:59 +053015099 {"AUDIO_REF_EC_UL10 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15100 {"AUDIO_REF_EC_UL10 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15101 {"AUDIO_REF_EC_UL10 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15102 {"AUDIO_REF_EC_UL10 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15103 {"AUDIO_REF_EC_UL10 MUX", "SLIM_1_TX", "SLIMBUS_1_TX"},
15104 {"AUDIO_REF_EC_UL10 MUX", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15105 {"AUDIO_REF_EC_UL10 MUX", "QUAT_TDM_RX_0", "QUAT_TDM_RX_0"},
15106 {"AUDIO_REF_EC_UL10 MUX", "QUAT_TDM_RX_1", "QUAT_TDM_RX_1"},
15107 {"AUDIO_REF_EC_UL10 MUX", "QUAT_TDM_RX_2", "QUAT_TDM_RX_2"},
15108 {"AUDIO_REF_EC_UL10 MUX", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
Vikram Panduranga016c49f2017-09-11 15:15:56 -070015109
15110 {"AUDIO_REF_EC_UL16 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15111 {"AUDIO_REF_EC_UL16 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15112 {"AUDIO_REF_EC_UL16 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15113 {"AUDIO_REF_EC_UL16 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15114
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015115 {"AUDIO_REF_EC_UL17 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15116 {"AUDIO_REF_EC_UL17 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15117 {"AUDIO_REF_EC_UL17 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15118 {"AUDIO_REF_EC_UL17 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15119
15120 {"AUDIO_REF_EC_UL18 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15121 {"AUDIO_REF_EC_UL18 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15122 {"AUDIO_REF_EC_UL18 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15123 {"AUDIO_REF_EC_UL18 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15124
15125 {"AUDIO_REF_EC_UL19 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15126 {"AUDIO_REF_EC_UL19 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15127 {"AUDIO_REF_EC_UL19 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15128 {"AUDIO_REF_EC_UL19 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15129
Yunfei Zhang3efc4a22017-11-07 16:30:13 +080015130
15131 {"LSM1_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15132 {"LSM2_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15133 {"LSM3_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15134 {"LSM4_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15135 {"LSM5_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15136 {"LSM6_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15137 {"LSM7_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15138 {"LSM8_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15139
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015140 {"MM_UL1", NULL, "AUDIO_REF_EC_UL1 MUX"},
15141 {"MM_UL2", NULL, "AUDIO_REF_EC_UL2 MUX"},
15142 {"MM_UL3", NULL, "AUDIO_REF_EC_UL3 MUX"},
15143 {"MM_UL4", NULL, "AUDIO_REF_EC_UL4 MUX"},
15144 {"MM_UL5", NULL, "AUDIO_REF_EC_UL5 MUX"},
15145 {"MM_UL6", NULL, "AUDIO_REF_EC_UL6 MUX"},
15146 {"MM_UL8", NULL, "AUDIO_REF_EC_UL8 MUX"},
15147 {"MM_UL9", NULL, "AUDIO_REF_EC_UL9 MUX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053015148 {"MM_UL10", NULL, "AUDIO_REF_EC_UL10 MUX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053015149 {"MM_UL16", NULL, "AUDIO_REF_EC_UL16 MUX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015150 {"MM_UL17", NULL, "AUDIO_REF_EC_UL17 MUX"},
15151 {"MM_UL18", NULL, "AUDIO_REF_EC_UL18 MUX"},
15152 {"MM_UL19", NULL, "AUDIO_REF_EC_UL19 MUX"},
15153
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015154 {"VoiceMMode1_Tx Mixer", "PRI_TX_MMode1", "PRI_I2S_TX"},
15155 {"VoiceMMode1_Tx Mixer", "PRI_MI2S_TX_MMode1", "PRI_MI2S_TX"},
15156 {"VoiceMMode1_Tx Mixer", "MI2S_TX_MMode1", "MI2S_TX"},
15157 {"VoiceMMode1_Tx Mixer", "TERT_MI2S_TX_MMode1", "TERT_MI2S_TX"},
15158 {"VoiceMMode1_Tx Mixer", "INT3_MI2S_TX_MMode1", "INT3_MI2S_TX"},
15159 {"VoiceMMode1_Tx Mixer", "SLIM_0_TX_MMode1", "SLIMBUS_0_TX"},
15160 {"VoiceMMode1_Tx Mixer", "SLIM_7_TX_MMode1", "SLIMBUS_7_TX"},
15161 {"VoiceMMode1_Tx Mixer", "SLIM_8_TX_MMode1", "SLIMBUS_8_TX"},
15162 {"VoiceMMode1_Tx Mixer", "USB_AUDIO_TX_MMode1", "USB_AUDIO_TX"},
15163 {"VoiceMMode1_Tx Mixer", "INT_BT_SCO_TX_MMode1", "INT_BT_SCO_TX"},
15164 {"VoiceMMode1_Tx Mixer", "AFE_PCM_TX_MMode1", "PCM_TX"},
15165 {"VoiceMMode1_Tx Mixer", "AUX_PCM_TX_MMode1", "AUX_PCM_TX"},
15166 {"VoiceMMode1_Tx Mixer", "SEC_AUX_PCM_TX_MMode1", "SEC_AUX_PCM_TX"},
15167 {"VoiceMMode1_Tx Mixer", "TERT_AUX_PCM_TX_MMode1", "TERT_AUX_PCM_TX"},
15168 {"VoiceMMode1_Tx Mixer", "QUAT_AUX_PCM_TX_MMode1", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015169 {"VoiceMMode1_Tx Mixer", "QUIN_AUX_PCM_TX_MMode1", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015170 {"VoiceMMode1_Tx Mixer", "QUAT_TDM_TX_0_MMode1", "QUAT_TDM_TX_0"},
15171 {"VOICEMMODE1_UL", NULL, "VoiceMMode1_Tx Mixer"},
15172
15173 {"VoiceMMode2_Tx Mixer", "PRI_TX_MMode2", "PRI_I2S_TX"},
15174 {"VoiceMMode2_Tx Mixer", "PRI_MI2S_TX_MMode2", "PRI_MI2S_TX"},
15175 {"VoiceMMode2_Tx Mixer", "MI2S_TX_MMode2", "MI2S_TX"},
15176 {"VoiceMMode2_Tx Mixer", "TERT_MI2S_TX_MMode2", "TERT_MI2S_TX"},
15177 {"VoiceMMode2_Tx Mixer", "INT3_MI2S_TX_MMode2", "INT3_MI2S_TX"},
15178 {"VoiceMMode2_Tx Mixer", "SLIM_0_TX_MMode2", "SLIMBUS_0_TX"},
15179 {"VoiceMMode2_Tx Mixer", "SLIM_7_TX_MMode2", "SLIMBUS_7_TX"},
15180 {"VoiceMMode2_Tx Mixer", "SLIM_8_TX_MMode2", "SLIMBUS_8_TX"},
15181 {"VoiceMMode2_Tx Mixer", "USB_AUDIO_TX_MMode2", "USB_AUDIO_TX"},
15182 {"VoiceMMode2_Tx Mixer", "INT_BT_SCO_TX_MMode2", "INT_BT_SCO_TX"},
15183 {"VoiceMMode2_Tx Mixer", "AFE_PCM_TX_MMode2", "PCM_TX"},
15184 {"VoiceMMode2_Tx Mixer", "AUX_PCM_TX_MMode2", "AUX_PCM_TX"},
15185 {"VoiceMMode2_Tx Mixer", "SEC_AUX_PCM_TX_MMode2", "SEC_AUX_PCM_TX"},
15186 {"VoiceMMode2_Tx Mixer", "TERT_AUX_PCM_TX_MMode2", "TERT_AUX_PCM_TX"},
15187 {"VoiceMMode2_Tx Mixer", "QUAT_AUX_PCM_TX_MMode2", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015188 {"VoiceMMode2_Tx Mixer", "QUIN_AUX_PCM_TX_MMode2", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015189 {"VOICEMMODE2_UL", NULL, "VoiceMMode2_Tx Mixer"},
15190
15191 {"Voip_Tx Mixer", "PRI_TX_Voip", "PRI_I2S_TX"},
15192 {"Voip_Tx Mixer", "MI2S_TX_Voip", "MI2S_TX"},
15193 {"Voip_Tx Mixer", "TERT_MI2S_TX_Voip", "TERT_MI2S_TX"},
15194 {"Voip_Tx Mixer", "INT3_MI2S_TX_Voip", "INT3_MI2S_TX"},
15195 {"Voip_Tx Mixer", "SLIM_0_TX_Voip", "SLIMBUS_0_TX"},
15196 {"Voip_Tx Mixer", "SLIM_7_TX_Voip", "SLIMBUS_7_TX"},
15197 {"Voip_Tx Mixer", "SLIM_8_TX_Voip", "SLIMBUS_8_TX"},
15198 {"Voip_Tx Mixer", "USB_AUDIO_TX_Voip", "USB_AUDIO_TX"},
15199 {"Voip_Tx Mixer", "INTERNAL_BT_SCO_TX_Voip", "INT_BT_SCO_TX"},
15200 {"Voip_Tx Mixer", "AFE_PCM_TX_Voip", "PCM_TX"},
15201 {"Voip_Tx Mixer", "AUX_PCM_TX_Voip", "AUX_PCM_TX"},
15202 {"Voip_Tx Mixer", "SEC_AUX_PCM_TX_Voip", "SEC_AUX_PCM_TX"},
15203 {"Voip_Tx Mixer", "TERT_AUX_PCM_TX_Voip", "TERT_AUX_PCM_TX"},
15204 {"Voip_Tx Mixer", "QUAT_AUX_PCM_TX_Voip", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015205 {"Voip_Tx Mixer", "QUIN_AUX_PCM_TX_Voip", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015206 {"Voip_Tx Mixer", "PRI_MI2S_TX_Voip", "PRI_MI2S_TX"},
15207 {"VOIP_UL", NULL, "Voip_Tx Mixer"},
15208
15209 {"SLIMBUS_DL_HL", "Switch", "SLIM0_DL_HL"},
15210 {"SLIMBUS_0_RX", NULL, "SLIMBUS_DL_HL"},
15211 {"SLIMBUS1_DL_HL", "Switch", "SLIM1_DL_HL"},
15212 {"SLIMBUS_1_RX", NULL, "SLIMBUS1_DL_HL"},
15213 {"SLIMBUS3_DL_HL", "Switch", "SLIM3_DL_HL"},
15214 {"SLIMBUS_3_RX", NULL, "SLIMBUS3_DL_HL"},
15215 {"SLIMBUS4_DL_HL", "Switch", "SLIM4_DL_HL"},
15216 {"SLIMBUS_4_RX", NULL, "SLIMBUS4_DL_HL"},
15217 {"SLIMBUS6_DL_HL", "Switch", "SLIM0_DL_HL"},
15218 {"SLIMBUS_6_RX", NULL, "SLIMBUS6_DL_HL"},
15219 {"SLIM0_UL_HL", NULL, "SLIMBUS_0_TX"},
15220 {"SLIM1_UL_HL", NULL, "SLIMBUS_1_TX"},
15221 {"SLIM3_UL_HL", NULL, "SLIMBUS_3_TX"},
15222 {"SLIM4_UL_HL", NULL, "SLIMBUS_4_TX"},
15223 {"SLIM8_UL_HL", NULL, "SLIMBUS_8_TX"},
15224
15225 {"LSM1 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15226 {"LSM1 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15227 {"LSM1 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15228 {"LSM1 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15229 {"LSM1 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15230 {"LSM1 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15231 {"LSM1 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15232 {"LSM1 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
15233 {"LSM1_UL_HL", NULL, "LSM1 Mixer"},
15234
15235 {"LSM2 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15236 {"LSM2 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15237 {"LSM2 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15238 {"LSM2 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15239 {"LSM2 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15240 {"LSM2 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15241 {"LSM2 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15242 {"LSM2 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
15243 {"LSM2_UL_HL", NULL, "LSM2 Mixer"},
15244
15245
15246 {"LSM3 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15247 {"LSM3 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15248 {"LSM3 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15249 {"LSM3 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15250 {"LSM3 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15251 {"LSM3 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15252 {"LSM3 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15253 {"LSM3 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
15254 {"LSM3_UL_HL", NULL, "LSM3 Mixer"},
15255
15256
15257 {"LSM4 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15258 {"LSM4 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15259 {"LSM4 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15260 {"LSM4 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15261 {"LSM4 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15262 {"LSM4 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15263 {"LSM4 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15264 {"LSM4 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
15265 {"LSM4_UL_HL", NULL, "LSM4 Mixer"},
15266
15267 {"LSM5 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15268 {"LSM5 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15269 {"LSM5 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15270 {"LSM5 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15271 {"LSM5 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15272 {"LSM5 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15273 {"LSM5 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15274 {"LSM5 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
15275 {"LSM5_UL_HL", NULL, "LSM5 Mixer"},
15276
15277 {"LSM6 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15278 {"LSM6 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15279 {"LSM6 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15280 {"LSM6 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15281 {"LSM6 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15282 {"LSM6 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15283 {"LSM6_UL_HL", NULL, "LSM6 Mixer"},
15284
15285 {"LSM7 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15286 {"LSM7 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15287 {"LSM7 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15288 {"LSM7 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15289 {"LSM7 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15290 {"LSM7 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15291 {"LSM7_UL_HL", NULL, "LSM7 Mixer"},
15292
15293 {"LSM8 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15294 {"LSM8 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15295 {"LSM8 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15296 {"LSM8 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15297 {"LSM8 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15298 {"LSM8 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15299 {"LSM8_UL_HL", NULL, "LSM8 Mixer"},
15300
15301
15302 {"CPE_LSM_UL_HL", NULL, "BE_IN"},
15303 {"QCHAT_Tx Mixer", "PRI_TX_QCHAT", "PRI_I2S_TX"},
15304 {"QCHAT_Tx Mixer", "SLIM_0_TX_QCHAT", "SLIMBUS_0_TX"},
15305 {"QCHAT_Tx Mixer", "SLIM_7_TX_QCHAT", "SLIMBUS_7_TX"},
15306 {"QCHAT_Tx Mixer", "SLIM_8_TX_QCHAT", "SLIMBUS_8_TX"},
15307 {"QCHAT_Tx Mixer", "INTERNAL_BT_SCO_TX_QCHAT", "INT_BT_SCO_TX"},
15308 {"QCHAT_Tx Mixer", "AFE_PCM_TX_QCHAT", "PCM_TX"},
15309 {"QCHAT_Tx Mixer", "AUX_PCM_TX_QCHAT", "AUX_PCM_TX"},
15310 {"QCHAT_Tx Mixer", "SEC_AUX_PCM_TX_QCHAT", "SEC_AUX_PCM_TX"},
15311 {"QCHAT_Tx Mixer", "TERT_AUX_PCM_TX_QCHAT", "TERT_AUX_PCM_TX"},
15312 {"QCHAT_Tx Mixer", "QUAT_AUX_PCM_TX_QCHAT", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015313 {"QCHAT_Tx Mixer", "QUIN_AUX_PCM_TX_QCHAT", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015314 {"QCHAT_Tx Mixer", "MI2S_TX_QCHAT", "MI2S_TX"},
15315 {"QCHAT_Tx Mixer", "PRI_MI2S_TX_QCHAT", "PRI_MI2S_TX"},
15316 {"QCHAT_Tx Mixer", "TERT_MI2S_TX_QCHAT", "TERT_MI2S_TX"},
15317 {"QCHAT_Tx Mixer", "INT3_MI2S_TX_QCHAT", "INT3_MI2S_TX"},
15318 {"QCHAT_Tx Mixer", "USB_AUDIO_TX_QCHAT", "USB_AUDIO_TX"},
15319 {"QCHAT_UL", NULL, "QCHAT_Tx Mixer"},
15320
15321 {"INT_FM_RX", NULL, "INTFM_DL_HL"},
15322 {"INTFM_UL_HL", NULL, "INT_FM_TX"},
15323 {"INTHFP_UL_HL", NULL, "HFP_PRI_AUX_UL_HL"},
15324 {"HFP_PRI_AUX_UL_HL", "Switch", "AUX_PCM_TX"},
15325 {"INTHFP_UL_HL", NULL, "HFP_AUX_UL_HL"},
15326 {"HFP_AUX_UL_HL", "Switch", "SEC_AUX_PCM_TX"},
15327 {"INTHFP_UL_HL", NULL, "HFP_INT_UL_HL"},
15328 {"HFP_INT_UL_HL", "Switch", "INT_BT_SCO_TX"},
15329 {"SLIM7_UL_HL", NULL, "HFP_SLIM7_UL_HL"},
15330 {"HFP_SLIM7_UL_HL", "Switch", "SLIMBUS_7_TX"},
15331 {"AUX_PCM_RX", NULL, "AUXPCM_DL_HL"},
15332 {"AUX_PCM_RX", NULL, "INTHFP_DL_HL"},
Karthikeyan Mani9f66f6f2017-12-13 13:38:46 -080015333 {"SEC_AUX_PCM_RX", NULL, "SEC_AUXPCM_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015334 {"AUXPCM_UL_HL", NULL, "AUX_PCM_TX"},
Karthikeyan Mani9f66f6f2017-12-13 13:38:46 -080015335 {"SEC_AUXPCM_UL_HL", NULL, "SEC_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015336 {"MI2S_RX", NULL, "MI2S_DL_HL"},
15337 {"MI2S_UL_HL", NULL, "MI2S_TX"},
15338 {"PCM_RX_DL_HL", "Switch", "SLIM0_DL_HL"},
15339 {"PCM_RX", NULL, "PCM_RX_DL_HL"},
15340
15341 /* connect to INT4_MI2S_DL_HL since same pcm_id */
15342 {"INT0_MI2S_RX_DL_HL", "Switch", "INT4_MI2S_DL_HL"},
15343 {"INT0_MI2S_RX", NULL, "INT0_MI2S_RX_DL_HL"},
15344 {"INT4_MI2S_RX_DL_HL", "Switch", "INT4_MI2S_DL_HL"},
15345 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX_DL_HL"},
15346 {"PRI_MI2S_RX_DL_HL", "Switch", "PRI_MI2S_DL_HL"},
15347 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX_DL_HL"},
15348 {"SEC_MI2S_RX_DL_HL", "Switch", "SEC_MI2S_DL_HL"},
15349 {"SEC_MI2S_RX", NULL, "SEC_MI2S_RX_DL_HL"},
15350 {"TERT_MI2S_RX_DL_HL", "Switch", "TERT_MI2S_DL_HL"},
15351 {"TERT_MI2S_RX", NULL, "TERT_MI2S_RX_DL_HL"},
15352
15353 {"QUAT_MI2S_RX_DL_HL", "Switch", "QUAT_MI2S_DL_HL"},
15354 {"QUAT_MI2S_RX", NULL, "QUAT_MI2S_RX_DL_HL"},
Rohit Kumara5077932017-09-10 22:05:05 +053015355 {"QUIN_MI2S_RX_DL_HL", "Switch", "QUIN_MI2S_DL_HL"},
15356 {"QUIN_MI2S_RX", NULL, "QUIN_MI2S_RX_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015357 {"MI2S_UL_HL", NULL, "TERT_MI2S_TX"},
15358 {"INT3_MI2S_UL_HL", NULL, "INT3_MI2S_TX"},
15359 {"TERT_MI2S_UL_HL", NULL, "TERT_MI2S_TX"},
15360 {"SEC_I2S_RX", NULL, "SEC_I2S_DL_HL"},
15361 {"PRI_MI2S_UL_HL", NULL, "PRI_MI2S_TX"},
15362 {"SEC_MI2S_UL_HL", NULL, "SEC_MI2S_TX"},
15363 {"SEC_MI2S_RX", NULL, "SEC_MI2S_DL_HL"},
15364 {"PRI_MI2S_RX", NULL, "PRI_MI2S_DL_HL"},
15365 {"TERT_MI2S_RX", NULL, "TERT_MI2S_DL_HL"},
15366 {"QUAT_MI2S_UL_HL", NULL, "QUAT_MI2S_TX"},
15367
15368 {"PRI_TDM_TX_0_UL_HL", NULL, "PRI_TDM_TX_0"},
15369 {"PRI_TDM_TX_1_UL_HL", NULL, "PRI_TDM_TX_1"},
15370 {"PRI_TDM_TX_2_UL_HL", NULL, "PRI_TDM_TX_2"},
15371 {"PRI_TDM_TX_3_UL_HL", NULL, "PRI_TDM_TX_3"},
15372 {"PRI_TDM_RX_0", NULL, "PRI_TDM_RX_0_DL_HL"},
15373 {"PRI_TDM_RX_1", NULL, "PRI_TDM_RX_1_DL_HL"},
15374 {"PRI_TDM_RX_2", NULL, "PRI_TDM_RX_2_DL_HL"},
15375 {"PRI_TDM_RX_3", NULL, "PRI_TDM_RX_3_DL_HL"},
15376 {"SEC_TDM_TX_0_UL_HL", NULL, "SEC_TDM_TX_0"},
15377 {"SEC_TDM_TX_1_UL_HL", NULL, "SEC_TDM_TX_1"},
15378 {"SEC_TDM_TX_2_UL_HL", NULL, "SEC_TDM_TX_2"},
15379 {"SEC_TDM_TX_3_UL_HL", NULL, "SEC_TDM_TX_3"},
15380 {"SEC_TDM_RX_0", NULL, "SEC_TDM_RX_0_DL_HL"},
15381 {"SEC_TDM_RX_1", NULL, "SEC_TDM_RX_1_DL_HL"},
15382 {"SEC_TDM_RX_2", NULL, "SEC_TDM_RX_2_DL_HL"},
15383 {"SEC_TDM_RX_3", NULL, "SEC_TDM_RX_3_DL_HL"},
15384 {"TERT_TDM_TX_0_UL_HL", NULL, "TERT_TDM_TX_0"},
15385 {"TERT_TDM_TX_1_UL_HL", NULL, "TERT_TDM_TX_1"},
15386 {"TERT_TDM_TX_2_UL_HL", NULL, "TERT_TDM_TX_2"},
15387 {"TERT_TDM_TX_3_UL_HL", NULL, "TERT_TDM_TX_3"},
15388 {"TERT_TDM_RX_0", NULL, "TERT_TDM_RX_0_DL_HL"},
15389 {"TERT_TDM_RX_1", NULL, "TERT_TDM_RX_1_DL_HL"},
15390 {"TERT_TDM_RX_2", NULL, "TERT_TDM_RX_2_DL_HL"},
15391 {"TERT_TDM_RX_3", NULL, "TERT_TDM_RX_3_DL_HL"},
15392 {"QUAT_TDM_TX_0_UL_HL", NULL, "QUAT_TDM_TX_0"},
15393 {"QUAT_TDM_TX_1_UL_HL", NULL, "QUAT_TDM_TX_1"},
15394 {"QUAT_TDM_TX_2_UL_HL", NULL, "QUAT_TDM_TX_2"},
15395 {"QUAT_TDM_TX_3_UL_HL", NULL, "QUAT_TDM_TX_3"},
15396 {"QUAT_TDM_RX_0", NULL, "QUAT_TDM_RX_0_DL_HL"},
15397 {"QUAT_TDM_RX_1", NULL, "QUAT_TDM_RX_1_DL_HL"},
15398 {"QUAT_TDM_RX_2", NULL, "QUAT_TDM_RX_2_DL_HL"},
15399 {"QUAT_TDM_RX_3", NULL, "QUAT_TDM_RX_3_DL_HL"},
Rohit Kumara5077932017-09-10 22:05:05 +053015400 {"QUIN_TDM_TX_0_UL_HL", NULL, "QUIN_TDM_TX_0"},
15401 {"QUIN_TDM_TX_1_UL_HL", NULL, "QUIN_TDM_TX_1"},
15402 {"QUIN_TDM_TX_2_UL_HL", NULL, "QUIN_TDM_TX_2"},
15403 {"QUIN_TDM_TX_3_UL_HL", NULL, "QUIN_TDM_TX_3"},
15404 {"QUIN_TDM_RX_0", NULL, "QUIN_TDM_RX_0_DL_HL"},
15405 {"QUIN_TDM_RX_1", NULL, "QUIN_TDM_RX_1_DL_HL"},
15406 {"QUIN_TDM_RX_2", NULL, "QUIN_TDM_RX_2_DL_HL"},
15407 {"QUIN_TDM_RX_3", NULL, "QUIN_TDM_RX_3_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015408
15409 {"PRI_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15410 {"PRI_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15411 {"PRI_TDM_RX_0 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15412 {"PRI_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15413 {"PRI_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15414 {"PRI_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15415 {"PRI_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15416 {"PRI_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15417 {"PRI_TDM_RX_0 Port Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15418 {"PRI_TDM_RX_0 Port Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15419 {"PRI_TDM_RX_0 Port Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15420 {"PRI_TDM_RX_0 Port Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15421 {"PRI_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15422 {"PRI_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15423 {"PRI_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15424 {"PRI_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015425 {"PRI_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15426 {"PRI_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15427 {"PRI_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15428 {"PRI_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015429 {"PRI_TDM_RX_0", NULL, "PRI_TDM_RX_0 Port Mixer"},
15430
15431 {"PRI_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15432 {"PRI_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15433 {"PRI_TDM_RX_1 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15434 {"PRI_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15435 {"PRI_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15436 {"PRI_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15437 {"PRI_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15438 {"PRI_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15439 {"PRI_TDM_RX_1 Port Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15440 {"PRI_TDM_RX_1 Port Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15441 {"PRI_TDM_RX_1 Port Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15442 {"PRI_TDM_RX_1 Port Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15443 {"PRI_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15444 {"PRI_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15445 {"PRI_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15446 {"PRI_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015447 {"PRI_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15448 {"PRI_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15449 {"PRI_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15450 {"PRI_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015451 {"PRI_TDM_RX_1", NULL, "PRI_TDM_RX_1 Port Mixer"},
15452
15453 {"PRI_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15454 {"PRI_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15455 {"PRI_TDM_RX_2 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15456 {"PRI_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15457 {"PRI_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15458 {"PRI_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15459 {"PRI_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15460 {"PRI_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15461 {"PRI_TDM_RX_2 Port Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15462 {"PRI_TDM_RX_2 Port Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15463 {"PRI_TDM_RX_2 Port Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15464 {"PRI_TDM_RX_2 Port Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15465 {"PRI_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15466 {"PRI_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15467 {"PRI_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15468 {"PRI_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015469 {"PRI_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15470 {"PRI_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15471 {"PRI_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15472 {"PRI_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015473 {"PRI_TDM_RX_2", NULL, "PRI_TDM_RX_2 Port Mixer"},
15474
15475 {"PRI_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15476 {"PRI_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15477 {"PRI_TDM_RX_3 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15478 {"PRI_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15479 {"PRI_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15480 {"PRI_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15481 {"PRI_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15482 {"PRI_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15483 {"PRI_TDM_RX_3 Port Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15484 {"PRI_TDM_RX_3 Port Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15485 {"PRI_TDM_RX_3 Port Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15486 {"PRI_TDM_RX_3 Port Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15487 {"PRI_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15488 {"PRI_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15489 {"PRI_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15490 {"PRI_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015491 {"PRI_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15492 {"PRI_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15493 {"PRI_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15494 {"PRI_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015495 {"PRI_TDM_RX_3", NULL, "PRI_TDM_RX_3 Port Mixer"},
15496
15497 {"SEC_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15498 {"SEC_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15499 {"SEC_TDM_RX_0 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15500 {"SEC_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15501 {"SEC_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15502 {"SEC_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15503 {"SEC_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15504 {"SEC_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15505 {"SEC_TDM_RX_0 Port Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15506 {"SEC_TDM_RX_0 Port Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15507 {"SEC_TDM_RX_0 Port Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15508 {"SEC_TDM_RX_0 Port Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15509 {"SEC_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15510 {"SEC_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15511 {"SEC_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15512 {"SEC_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015513 {"SEC_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15514 {"SEC_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15515 {"SEC_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15516 {"SEC_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015517 {"SEC_TDM_RX_0", NULL, "SEC_TDM_RX_0 Port Mixer"},
15518
15519 {"SEC_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15520 {"SEC_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15521 {"SEC_TDM_RX_1 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15522 {"SEC_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15523 {"SEC_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15524 {"SEC_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15525 {"SEC_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15526 {"SEC_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15527 {"SEC_TDM_RX_1 Port Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15528 {"SEC_TDM_RX_1 Port Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15529 {"SEC_TDM_RX_1 Port Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15530 {"SEC_TDM_RX_1 Port Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15531 {"SEC_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15532 {"SEC_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15533 {"SEC_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15534 {"SEC_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015535 {"SEC_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15536 {"SEC_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15537 {"SEC_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15538 {"SEC_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015539 {"SEC_TDM_RX_1", NULL, "SEC_TDM_RX_1 Port Mixer"},
15540
15541 {"SEC_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15542 {"SEC_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15543 {"SEC_TDM_RX_2 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15544 {"SEC_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15545 {"SEC_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15546 {"SEC_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15547 {"SEC_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15548 {"SEC_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15549 {"SEC_TDM_RX_2 Port Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15550 {"SEC_TDM_RX_2 Port Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15551 {"SEC_TDM_RX_2 Port Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15552 {"SEC_TDM_RX_2 Port Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15553 {"SEC_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15554 {"SEC_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15555 {"SEC_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15556 {"SEC_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015557 {"SEC_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15558 {"SEC_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15559 {"SEC_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15560 {"SEC_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015561 {"SEC_TDM_RX_2", NULL, "SEC_TDM_RX_2 Port Mixer"},
15562
15563 {"SEC_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15564 {"SEC_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15565 {"SEC_TDM_RX_3 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15566 {"SEC_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15567 {"SEC_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15568 {"SEC_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15569 {"SEC_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15570 {"SEC_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15571 {"SEC_TDM_RX_3 Port Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15572 {"SEC_TDM_RX_3 Port Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15573 {"SEC_TDM_RX_3 Port Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15574 {"SEC_TDM_RX_3 Port Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15575 {"SEC_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15576 {"SEC_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15577 {"SEC_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15578 {"SEC_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015579 {"SEC_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15580 {"SEC_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15581 {"SEC_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15582 {"SEC_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015583 {"SEC_TDM_RX_3", NULL, "SEC_TDM_RX_3 Port Mixer"},
15584
15585 {"TERT_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15586 {"TERT_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15587 {"TERT_TDM_RX_0 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15588 {"TERT_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15589 {"TERT_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15590 {"TERT_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15591 {"TERT_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15592 {"TERT_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15593 {"TERT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15594 {"TERT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15595 {"TERT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15596 {"TERT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15597 {"TERT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15598 {"TERT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15599 {"TERT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15600 {"TERT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015601 {"TERT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15602 {"TERT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15603 {"TERT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15604 {"TERT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015605 {"TERT_TDM_RX_0", NULL, "TERT_TDM_RX_0 Port Mixer"},
15606
15607 {"TERT_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15608 {"TERT_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15609 {"TERT_TDM_RX_1 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15610 {"TERT_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15611 {"TERT_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15612 {"TERT_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15613 {"TERT_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15614 {"TERT_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15615 {"TERT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15616 {"TERT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15617 {"TERT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15618 {"TERT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15619 {"TERT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15620 {"TERT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15621 {"TERT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15622 {"TERT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015623 {"TERT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15624 {"TERT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15625 {"TERT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15626 {"TERT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015627 {"TERT_TDM_RX_1", NULL, "TERT_TDM_RX_1 Port Mixer"},
15628
15629 {"TERT_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15630 {"TERT_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15631 {"TERT_TDM_RX_2 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15632 {"TERT_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15633 {"TERT_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15634 {"TERT_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15635 {"TERT_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15636 {"TERT_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15637 {"TERT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15638 {"TERT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15639 {"TERT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15640 {"TERT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15641 {"TERT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15642 {"TERT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15643 {"TERT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15644 {"TERT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015645 {"TERT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15646 {"TERT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15647 {"TERT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15648 {"TERT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015649 {"TERT_TDM_RX_2", NULL, "TERT_TDM_RX_2 Port Mixer"},
15650
15651 {"TERT_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15652 {"TERT_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15653 {"TERT_TDM_RX_3 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15654 {"TERT_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15655 {"TERT_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15656 {"TERT_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15657 {"TERT_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15658 {"TERT_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15659 {"TERT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15660 {"TERT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15661 {"TERT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15662 {"TERT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15663 {"TERT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15664 {"TERT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15665 {"TERT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15666 {"TERT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015667 {"TERT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15668 {"TERT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15669 {"TERT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15670 {"TERT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015671 {"TERT_TDM_RX_3", NULL, "TERT_TDM_RX_3 Port Mixer"},
15672
15673 {"QUAT_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15674 {"QUAT_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15675 {"QUAT_TDM_RX_0 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15676 {"QUAT_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15677 {"QUAT_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15678 {"QUAT_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15679 {"QUAT_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15680 {"QUAT_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15681 {"QUAT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15682 {"QUAT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15683 {"QUAT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15684 {"QUAT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15685 {"QUAT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15686 {"QUAT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15687 {"QUAT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15688 {"QUAT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015689 {"QUAT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15690 {"QUAT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15691 {"QUAT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15692 {"QUAT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015693 {"QUAT_TDM_RX_0", NULL, "QUAT_TDM_RX_0 Port Mixer"},
15694
15695 {"QUAT_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15696 {"QUAT_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15697 {"QUAT_TDM_RX_1 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15698 {"QUAT_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15699 {"QUAT_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15700 {"QUAT_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15701 {"QUAT_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15702 {"QUAT_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15703 {"QUAT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15704 {"QUAT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15705 {"QUAT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15706 {"QUAT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15707 {"QUAT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15708 {"QUAT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15709 {"QUAT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15710 {"QUAT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015711 {"QUAT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15712 {"QUAT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15713 {"QUAT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15714 {"QUAT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015715 {"QUAT_TDM_RX_1", NULL, "QUAT_TDM_RX_1 Port Mixer"},
15716
15717 {"QUAT_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15718 {"QUAT_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15719 {"QUAT_TDM_RX_2 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15720 {"QUAT_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15721 {"QUAT_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15722 {"QUAT_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15723 {"QUAT_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15724 {"QUAT_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15725 {"QUAT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15726 {"QUAT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15727 {"QUAT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15728 {"QUAT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15729 {"QUAT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15730 {"QUAT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15731 {"QUAT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15732 {"QUAT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015733 {"QUAT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15734 {"QUAT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15735 {"QUAT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15736 {"QUAT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015737 {"QUAT_TDM_RX_2", NULL, "QUAT_TDM_RX_2 Port Mixer"},
15738
15739 {"QUAT_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15740 {"QUAT_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15741 {"QUAT_TDM_RX_3 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15742 {"QUAT_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15743 {"QUAT_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15744 {"QUAT_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15745 {"QUAT_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15746 {"QUAT_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15747 {"QUAT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15748 {"QUAT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15749 {"QUAT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15750 {"QUAT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15751 {"QUAT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15752 {"QUAT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15753 {"QUAT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15754 {"QUAT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015755 {"QUAT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15756 {"QUAT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15757 {"QUAT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15758 {"QUAT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015759 {"QUAT_TDM_RX_3", NULL, "QUAT_TDM_RX_3 Port Mixer"},
15760
Rohit Kumara5077932017-09-10 22:05:05 +053015761 {"QUIN_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15762 {"QUIN_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15763 {"QUIN_TDM_RX_0 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15764 {"QUIN_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15765 {"QUIN_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15766 {"QUIN_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15767 {"QUIN_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15768 {"QUIN_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15769 {"QUIN_TDM_RX_0 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15770 {"QUIN_TDM_RX_0 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15771 {"QUIN_TDM_RX_0 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15772 {"QUIN_TDM_RX_0 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15773 {"QUIN_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15774 {"QUIN_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15775 {"QUIN_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15776 {"QUIN_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
15777 {"QUIN_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15778 {"QUIN_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15779 {"QUIN_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15780 {"QUIN_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Rohit Kumarc08b14f2017-10-06 10:52:17 +053015781 {"QUIN_TDM_RX_0", NULL, "QUIN_TDM_RX_0 Port Mixer"},
Rohit Kumara5077932017-09-10 22:05:05 +053015782
15783 {"QUIN_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15784 {"QUIN_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15785 {"QUIN_TDM_RX_1 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15786 {"QUIN_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15787 {"QUIN_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15788 {"QUIN_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15789 {"QUIN_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15790 {"QUIN_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15791 {"QUIN_TDM_RX_1 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15792 {"QUIN_TDM_RX_1 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15793 {"QUIN_TDM_RX_1 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15794 {"QUIN_TDM_RX_1 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15795 {"QUIN_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15796 {"QUIN_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15797 {"QUIN_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15798 {"QUIN_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
15799 {"QUIN_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15800 {"QUIN_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15801 {"QUIN_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15802 {"QUIN_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Rohit Kumarc08b14f2017-10-06 10:52:17 +053015803 {"QUIN_TDM_RX_1", NULL, "QUIN_TDM_RX_1 Port Mixer"},
Rohit Kumara5077932017-09-10 22:05:05 +053015804
15805 {"QUIN_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15806 {"QUIN_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15807 {"QUIN_TDM_RX_2 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15808 {"QUIN_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15809 {"QUIN_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15810 {"QUIN_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15811 {"QUIN_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15812 {"QUIN_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15813 {"QUIN_TDM_RX_2 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15814 {"QUIN_TDM_RX_2 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15815 {"QUIN_TDM_RX_2 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15816 {"QUIN_TDM_RX_2 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15817 {"QUIN_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15818 {"QUIN_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15819 {"QUIN_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15820 {"QUIN_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
15821 {"QUIN_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15822 {"QUIN_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15823 {"QUIN_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15824 {"QUIN_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Rohit Kumarc08b14f2017-10-06 10:52:17 +053015825 {"QUIN_TDM_RX_2", NULL, "QUIN_TDM_RX_2 Port Mixer"},
Rohit Kumara5077932017-09-10 22:05:05 +053015826
15827 {"QUIN_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15828 {"QUIN_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15829 {"QUIN_TDM_RX_3 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15830 {"QUIN_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15831 {"QUIN_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15832 {"QUIN_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15833 {"QUIN_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15834 {"QUIN_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15835 {"QUIN_TDM_RX_3 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15836 {"QUIN_TDM_RX_3 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15837 {"QUIN_TDM_RX_3 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15838 {"QUIN_TDM_RX_3 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15839 {"QUIN_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15840 {"QUIN_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15841 {"QUIN_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15842 {"QUIN_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
15843 {"QUIN_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15844 {"QUIN_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15845 {"QUIN_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15846 {"QUIN_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Rohit Kumarc08b14f2017-10-06 10:52:17 +053015847 {"QUIN_TDM_RX_3", NULL, "QUIN_TDM_RX_3 Port Mixer"},
Rohit Kumara5077932017-09-10 22:05:05 +053015848
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015849 {"INT0_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15850 {"INT0_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15851 {"INT0_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15852 {"INT0_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015853 {"INT0_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015854 {"INT0_MI2S_RX Port Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
15855 {"INT0_MI2S_RX Port Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
15856 {"INT0_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
15857 {"INT0_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15858 {"INT0_MI2S_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15859 {"INT0_MI2S_RX", NULL, "INT0_MI2S_RX Port Mixer"},
15860
15861 {"INT4_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15862 {"INT4_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15863 {"INT4_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15864 {"INT4_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015865 {"INT4_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015866 {"INT4_MI2S_RX Port Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
15867 {"INT4_MI2S_RX Port Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
15868 {"INT4_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
15869 {"INT4_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15870 {"INT4_MI2S_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15871 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX Port Mixer"},
15872
15873 {"SLIMBUS_0_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15874 {"SLIMBUS_0_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
15875 {"SLIMBUS_0_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
15876 {"SLIMBUS_0_RX Port Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
15877 {"SLIMBUS_0_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
15878 {"SLIMBUS_0_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15879 {"SLIMBUS_0_RX Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15880 {"SLIMBUS_0_RX Port Mixer", "TERT_AUXPCM_UL_TX", "TERT_AUX_PCM_TX"},
15881 {"SLIMBUS_0_RX Port Mixer", "QUAT_AUXPCM_UL_TX", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015882 {"SLIMBUS_0_RX Port Mixer", "QUIN_AUXPCM_UL_TX", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015883 {"SLIMBUS_0_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
15884 {"SLIMBUS_0_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15885 {"SLIMBUS_0_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15886 {"SLIMBUS_0_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15887 {"SLIMBUS_0_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015888 {"SLIMBUS_0_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015889 {"SLIMBUS_0_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15890 {"SLIMBUS_0_RX", NULL, "SLIMBUS_0_RX Port Mixer"},
15891 {"AFE_PCM_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15892 {"AFE_PCM_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
15893 {"PCM_RX", NULL, "AFE_PCM_RX Port Mixer"},
15894 {"USB_AUDIO_RX Port Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
15895 {"USB_AUDIO_RX", NULL, "USB_AUDIO_RX Port Mixer"},
15896 {"USB_DL_HL", "Switch", "USBAUDIO_DL_HL"},
15897 {"USB_AUDIO_RX", NULL, "USB_DL_HL"},
15898 {"USBAUDIO_UL_HL", NULL, "USB_AUDIO_TX"},
15899
15900
15901 {"AUX_PCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15902 {"AUX_PCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
15903 {"AUX_PCM_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
15904 {"AUX_PCM_RX Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15905 {"AUX_PCM_RX Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
Karthikeyan Mani9f66f6f2017-12-13 13:38:46 -080015906 {"AUX_PCM_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015907 {"AUX_PCM_RX", NULL, "AUX_PCM_RX Port Mixer"},
15908
15909 {"SEC_AUXPCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15910 {"SEC_AUXPCM_RX Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15911 {"SEC_AUXPCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Karthikeyan Mani9f66f6f2017-12-13 13:38:46 -080015912 {"SEC_AUXPCM_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015913 {"SEC_AUX_PCM_RX", NULL, "SEC_AUXPCM_RX Port Mixer"},
15914
15915 {"TERT_AUXPCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15916 {"TERT_AUXPCM_RX Port Mixer", "TERT_AUXPCM_UL_TX", "TERT_AUX_PCM_TX"},
15917 {"TERT_AUXPCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
15918 {"TERT_AUX_PCM_RX", NULL, "TERT_AUXPCM_RX Port Mixer"},
15919
15920 {"QUAT_AUXPCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15921 {"QUAT_AUXPCM_RX Port Mixer", "QUAT_AUXPCM_UL_TX", "QUAT_AUX_PCM_TX"},
15922 {"QUAT_AUXPCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
15923 {"QUAT_AUX_PCM_RX", NULL, "QUAT_AUXPCM_RX Port Mixer"},
15924
Rohit Kumara5077932017-09-10 22:05:05 +053015925 {"QUIN_AUXPCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15926 {"QUIN_AUXPCM_RX Port Mixer", "QUIN_AUXPCM_UL_TX", "QUIN_AUX_PCM_TX"},
15927 {"QUIN_AUXPCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
15928 {"QUIN_AUX_PCM_RX", NULL, "QUIN_AUXPCM_RX Port Mixer"},
15929
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015930 {"Voice Stub Tx Mixer", "STUB_TX_HL", "STUB_TX"},
15931 {"Voice Stub Tx Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
15932 {"Voice Stub Tx Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15933 {"Voice Stub Tx Mixer", "STUB_1_TX_HL", "STUB_1_TX"},
15934 {"Voice Stub Tx Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15935 {"Voice Stub Tx Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15936 {"Voice Stub Tx Mixer", "TERT_AUXPCM_UL_TX", "TERT_AUX_PCM_TX"},
15937 {"Voice Stub Tx Mixer", "QUAT_AUXPCM_UL_TX", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015938 {"Voice Stub Tx Mixer", "QUIN_AUXPCM_UL_TX", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015939 {"Voice Stub Tx Mixer", "MI2S_TX", "MI2S_TX"},
15940 {"Voice Stub Tx Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15941 {"Voice Stub Tx Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15942 {"Voice Stub Tx Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
15943 {"Voice Stub Tx Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15944 {"Voice Stub Tx Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
15945 {"Voice Stub Tx Mixer", "SLIM_3_TX", "SLIMBUS_3_TX"},
15946 {"Voice Stub Tx Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
15947 {"Voice Stub Tx Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
15948 {"Voice Stub Tx Mixer", "AFE_PCM_TX", "PCM_TX"},
15949 {"VOICE_STUB_UL", NULL, "Voice Stub Tx Mixer"},
15950
15951 {"VoLTE Stub Tx Mixer", "STUB_TX_HL", "STUB_TX"},
15952 {"VoLTE Stub Tx Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
15953 {"VoLTE Stub Tx Mixer", "STUB_1_TX_HL", "STUB_1_TX"},
15954 {"VoLTE Stub Tx Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15955 {"VoLTE Stub Tx Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
15956 {"VoLTE Stub Tx Mixer", "SLIM_3_TX", "SLIMBUS_3_TX"},
15957 {"VoLTE Stub Tx Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
15958 {"VoLTE Stub Tx Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
15959 {"VoLTE Stub Tx Mixer", "AFE_PCM_TX", "PCM_TX"},
15960 {"VoLTE Stub Tx Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15961 {"VoLTE Stub Tx Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15962 {"VOLTE_STUB_UL", NULL, "VoLTE Stub Tx Mixer"},
15963
15964 {"Voice2 Stub Tx Mixer", "STUB_TX_HL", "STUB_TX"},
15965 {"Voice2 Stub Tx Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
15966 {"Voice2 Stub Tx Mixer", "STUB_1_TX_HL", "STUB_1_TX"},
15967 {"Voice2 Stub Tx Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15968 {"Voice2 Stub Tx Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
15969 {"Voice2 Stub Tx Mixer", "SLIM_3_TX", "SLIMBUS_3_TX"},
15970 {"Voice2 Stub Tx Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
15971 {"Voice2 Stub Tx Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
15972 {"Voice2 Stub Tx Mixer", "AFE_PCM_TX", "PCM_TX"},
15973 {"Voice2 Stub Tx Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15974 {"Voice2 Stub Tx Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15975 {"VOICE2_STUB_UL", NULL, "Voice2 Stub Tx Mixer"},
15976
kunleizdf5a00a2017-11-27 15:27:36 +080015977 {"STUB_RX Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15978 {"STUB_RX Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015979 {"STUB_RX", NULL, "STUB_RX Mixer"},
kunleizdf5a00a2017-11-27 15:27:36 +080015980
15981 {"SLIMBUS_1_RX Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15982 {"SLIMBUS_1_RX Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015983 {"SLIMBUS_1_RX", NULL, "SLIMBUS_1_RX Mixer"},
kunleizdf5a00a2017-11-27 15:27:36 +080015984
15985 {"SLIMBUS_3_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15986 {"SLIMBUS_3_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015987 {"SLIMBUS_3_RX", NULL, "SLIMBUS_3_RX_Voice Mixer"},
15988
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015989 {"SLIM_7_RX_Voice Mixer", "Voip", "VOIP_DL"},
15990 {"SLIM_7_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015991 {"SLIM_7_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15992 {"SLIM_7_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15993 {"SLIM_7_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15994 {"SLIMBUS_7_RX", NULL, "SLIM_7_RX_Voice Mixer"},
15995
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015996 {"SLIM_8_RX_Voice Mixer", "Voip", "VOIP_DL"},
15997 {"SLIM_8_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015998 {"SLIM_8_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15999 {"SLIM_8_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
16000 {"SLIM_8_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
16001 {"SLIMBUS_8_RX", NULL, "SLIM_8_RX_Voice Mixer"},
16002
16003 {"SLIMBUS_1_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16004 {"SLIMBUS_1_RX Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16005 {"SLIMBUS_1_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16006 {"SLIMBUS_1_RX", NULL, "SLIMBUS_1_RX Port Mixer"},
16007 {"INTERNAL_BT_SCO_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16008 {"INTERNAL_BT_SCO_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16009 {"INT_BT_SCO_RX", NULL, "INTERNAL_BT_SCO_RX Port Mixer"},
16010 {"SLIMBUS_3_RX Port Mixer", "INTERNAL_BT_SCO_RX", "INT_BT_SCO_RX"},
16011 {"SLIMBUS_3_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16012 {"SLIMBUS_3_RX Port Mixer", "AFE_PCM_RX", "PCM_RX"},
16013 {"SLIMBUS_3_RX Port Mixer", "AUX_PCM_RX", "AUX_PCM_RX"},
16014 {"SLIMBUS_3_RX Port Mixer", "SLIM_0_RX", "SLIMBUS_0_RX"},
16015 {"SLIMBUS_3_RX", NULL, "SLIMBUS_3_RX Port Mixer"},
16016
16017 {"SLIMBUS_6_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16018 {"SLIMBUS_6_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16019 {"SLIMBUS_6_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16020 {"SLIMBUS_6_RX Port Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16021 {"SLIMBUS_6_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16022 {"SLIMBUS_6_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16023 {"SLIMBUS_6_RX Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16024 {"SLIMBUS_6_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16025 {"SLIMBUS_6_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16026 {"SLIMBUS_6_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16027 {"SLIMBUS_6_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16028 {"SLIMBUS_6_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16029 {"SLIMBUS_6_RX", NULL, "SLIMBUS_6_RX Port Mixer"},
16030
16031 {"HDMI_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16032 {"HDMI", NULL, "HDMI_RX Port Mixer"},
16033
16034 {"DISPLAY_PORT_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16035 {"DISPLAY_PORT", NULL, "DISPLAY_PORT_RX Port Mixer"},
16036
16037 {"SEC_I2S_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16038 {"SEC_I2S_RX", NULL, "SEC_I2S_RX Port Mixer"},
16039
16040 {"MI2S_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16041 {"MI2S_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16042 {"MI2S_RX", NULL, "MI2S_RX Port Mixer"},
16043
16044 {"PRI_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16045 {"PRI_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16046 {"PRI_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16047 {"PRI_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016048 {"PRI_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016049 {"PRI_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16050 {"PRI_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16051 {"PRI_MI2S_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16052 {"PRI_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
Karthikeyan Mani9f66f6f2017-12-13 13:38:46 -080016053 {"PRI_MI2S_RX Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016054 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX Port Mixer"},
16055
16056 {"SEC_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16057 {"SEC_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16058 {"SEC_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16059 {"SEC_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016060 {"SEC_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016061 {"SEC_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16062 {"SEC_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16063 {"SEC_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
Karthikeyan Mani9f66f6f2017-12-13 13:38:46 -080016064 {"SEC_MI2S_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016065 {"SEC_MI2S_RX", NULL, "SEC_MI2S_RX Port Mixer"},
16066
16067 {"TERT_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16068 {"TERT_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16069 {"TERT_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16070 {"TERT_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016071 {"TERT_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016072 {"TERT_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16073 {"TERT_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16074 {"TERT_MI2S_RX", NULL, "TERT_MI2S_RX Port Mixer"},
16075
16076 {"QUAT_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16077 {"QUAT_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16078 {"QUAT_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16079 {"QUAT_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016080 {"QUAT_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016081 {"QUAT_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16082 {"QUAT_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16083 {"QUAT_MI2S_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16084 {"QUAT_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16085 {"QUAT_MI2S_RX", NULL, "QUAT_MI2S_RX Port Mixer"},
16086
Rohit Kumara5077932017-09-10 22:05:05 +053016087 {"QUIN_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16088 {"QUIN_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16089 {"QUIN_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16090 {"QUIN_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16091 {"QUIN_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
16092 {"QUIN_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16093 {"QUIN_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16094 {"QUIN_MI2S_RX", NULL, "QUIN_MI2S_RX Port Mixer"},
16095
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016096 /* Backend Enablement */
16097
16098 {"BE_OUT", NULL, "PRI_I2S_RX"},
16099 {"BE_OUT", NULL, "SEC_I2S_RX"},
16100 {"BE_OUT", NULL, "SLIMBUS_0_RX"},
16101 {"BE_OUT", NULL, "SLIMBUS_1_RX"},
16102 {"BE_OUT", NULL, "SLIMBUS_2_RX"},
16103 {"BE_OUT", NULL, "SLIMBUS_3_RX"},
16104 {"BE_OUT", NULL, "SLIMBUS_4_RX"},
16105 {"BE_OUT", NULL, "SLIMBUS_5_RX"},
16106 {"BE_OUT", NULL, "SLIMBUS_6_RX"},
16107 {"BE_OUT", NULL, "SLIMBUS_7_RX"},
16108 {"BE_OUT", NULL, "SLIMBUS_8_RX"},
16109 {"BE_OUT", NULL, "USB_AUDIO_RX"},
16110 {"BE_OUT", NULL, "HDMI"},
16111 {"BE_OUT", NULL, "DISPLAY_PORT"},
16112 {"BE_OUT", NULL, "SPDIF_RX"},
16113 {"BE_OUT", NULL, "MI2S_RX"},
16114 {"BE_OUT", NULL, "QUAT_MI2S_RX"},
16115 {"BE_OUT", NULL, "QUIN_MI2S_RX"},
16116 {"BE_OUT", NULL, "TERT_MI2S_RX"},
16117 {"BE_OUT", NULL, "SEC_MI2S_RX"},
16118 {"BE_OUT", NULL, "SEC_MI2S_RX_SD1"},
16119 {"BE_OUT", NULL, "PRI_MI2S_RX"},
16120 {"BE_OUT", NULL, "INT0_MI2S_RX"},
16121 {"BE_OUT", NULL, "INT4_MI2S_RX"},
Laxminath Kasam52697fe2017-11-29 15:44:14 +053016122 {"BE_OUT", NULL, "INT2_MI2S_RX"},
16123 {"BE_OUT", NULL, "INT3_MI2S_RX"},
16124 {"BE_OUT", NULL, "INT5_MI2S_RX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016125 {"BE_OUT", NULL, "INT_BT_SCO_RX"},
16126 {"BE_OUT", NULL, "INT_BT_A2DP_RX"},
16127 {"BE_OUT", NULL, "INT_FM_RX"},
16128 {"BE_OUT", NULL, "PCM_RX"},
16129 {"BE_OUT", NULL, "SLIMBUS_3_RX"},
16130 {"BE_OUT", NULL, "AUX_PCM_RX"},
16131 {"BE_OUT", NULL, "SEC_AUX_PCM_RX"},
16132 {"BE_OUT", NULL, "TERT_AUX_PCM_RX"},
16133 {"BE_OUT", NULL, "QUAT_AUX_PCM_RX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016134 {"BE_OUT", NULL, "QUIN_AUX_PCM_RX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016135 {"BE_OUT", NULL, "INT_BT_SCO_RX"},
16136 {"BE_OUT", NULL, "INT_FM_RX"},
16137 {"BE_OUT", NULL, "PCM_RX"},
16138 {"BE_OUT", NULL, "SLIMBUS_3_RX"},
16139 {"BE_OUT", NULL, "VOICE_PLAYBACK_TX"},
16140 {"BE_OUT", NULL, "VOICE2_PLAYBACK_TX"},
16141 {"BE_OUT", NULL, "PRI_TDM_RX_0"},
16142 {"BE_OUT", NULL, "PRI_TDM_RX_1"},
16143 {"BE_OUT", NULL, "PRI_TDM_RX_2"},
16144 {"BE_OUT", NULL, "PRI_TDM_RX_3"},
16145 {"BE_OUT", NULL, "SEC_TDM_RX_0"},
16146 {"BE_OUT", NULL, "SEC_TDM_RX_1"},
16147 {"BE_OUT", NULL, "SEC_TDM_RX_2"},
16148 {"BE_OUT", NULL, "SEC_TDM_RX_3"},
16149 {"BE_OUT", NULL, "TERT_TDM_RX_0"},
16150 {"BE_OUT", NULL, "TERT_TDM_RX_1"},
16151 {"BE_OUT", NULL, "TERT_TDM_RX_2"},
16152 {"BE_OUT", NULL, "TERT_TDM_RX_3"},
16153 {"BE_OUT", NULL, "TERT_TDM_RX_4"},
16154 {"BE_OUT", NULL, "QUAT_TDM_RX_0"},
16155 {"BE_OUT", NULL, "QUAT_TDM_RX_1"},
16156 {"BE_OUT", NULL, "QUAT_TDM_RX_2"},
16157 {"BE_OUT", NULL, "QUAT_TDM_RX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016158 {"BE_OUT", NULL, "QUIN_TDM_RX_0"},
16159 {"BE_OUT", NULL, "QUIN_TDM_RX_1"},
16160 {"BE_OUT", NULL, "QUIN_TDM_RX_2"},
16161 {"BE_OUT", NULL, "QUIN_TDM_RX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016162
16163 {"PRI_I2S_TX", NULL, "BE_IN"},
16164 {"MI2S_TX", NULL, "BE_IN"},
16165 {"QUAT_MI2S_TX", NULL, "BE_IN"},
16166 {"QUIN_MI2S_TX", NULL, "BE_IN"},
16167 {"PRI_MI2S_TX", NULL, "BE_IN"},
16168 {"TERT_MI2S_TX", NULL, "BE_IN"},
Laxminath Kasam52697fe2017-11-29 15:44:14 +053016169 {"INT0_MI2S_TX", NULL, "BE_IN"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016170 {"INT2_MI2S_TX", NULL, "BE_IN"},
16171 {"INT3_MI2S_TX", NULL, "BE_IN"},
Laxminath Kasam52697fe2017-11-29 15:44:14 +053016172 {"INT4_MI2S_TX", NULL, "BE_IN"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016173 {"INT5_MI2S_TX", NULL, "BE_IN"},
16174 {"SEC_MI2S_TX", NULL, "BE_IN"},
16175 {"SENARY_MI2S_TX", NULL, "BE_IN" },
16176 {"SLIMBUS_0_TX", NULL, "BE_IN" },
16177 {"SLIMBUS_1_TX", NULL, "BE_IN" },
16178 {"SLIMBUS_3_TX", NULL, "BE_IN" },
16179 {"SLIMBUS_4_TX", NULL, "BE_IN" },
16180 {"SLIMBUS_5_TX", NULL, "BE_IN" },
16181 {"SLIMBUS_6_TX", NULL, "BE_IN" },
16182 {"SLIMBUS_7_TX", NULL, "BE_IN" },
16183 {"SLIMBUS_8_TX", NULL, "BE_IN" },
16184 {"USB_AUDIO_TX", NULL, "BE_IN" },
16185 {"INT_BT_SCO_TX", NULL, "BE_IN"},
16186 {"INT_FM_TX", NULL, "BE_IN"},
16187 {"PCM_TX", NULL, "BE_IN"},
16188 {"BE_OUT", NULL, "SLIMBUS_3_RX"},
16189 {"BE_OUT", NULL, "STUB_RX"},
16190 {"STUB_TX", NULL, "BE_IN"},
16191 {"STUB_1_TX", NULL, "BE_IN"},
16192 {"BE_OUT", NULL, "AUX_PCM_RX"},
16193 {"AUX_PCM_TX", NULL, "BE_IN"},
16194 {"SEC_AUX_PCM_TX", NULL, "BE_IN"},
16195 {"TERT_AUX_PCM_TX", NULL, "BE_IN"},
16196 {"QUAT_AUX_PCM_TX", NULL, "BE_IN"},
Rohit Kumara5077932017-09-10 22:05:05 +053016197 {"QUIN_AUX_PCM_TX", NULL, "BE_IN"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016198 {"INCALL_RECORD_TX", NULL, "BE_IN"},
16199 {"INCALL_RECORD_RX", NULL, "BE_IN"},
16200 {"SLIM0_RX_VI_FB_LCH_MUX", "SLIM4_TX", "SLIMBUS_4_TX"},
16201 {"SLIM0_RX_VI_FB_RCH_MUX", "SLIM4_TX", "SLIMBUS_4_TX"},
16202 {"PRI_MI2S_RX_VI_FB_MUX", "SENARY_TX", "SENARY_TX"},
16203 {"INT4_MI2S_RX_VI_FB_MONO_CH_MUX", "INT5_MI2S_TX", "INT5_MI2S_TX"},
16204 {"INT4_MI2S_RX_VI_FB_STEREO_CH_MUX", "INT5_MI2S_TX", "INT5_MI2S_TX"},
16205 {"SLIMBUS_0_RX", NULL, "SLIM0_RX_VI_FB_LCH_MUX"},
16206 {"SLIMBUS_0_RX", NULL, "SLIM0_RX_VI_FB_RCH_MUX"},
16207 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX_VI_FB_MUX"},
16208 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX_VI_FB_MONO_CH_MUX"},
16209 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX_VI_FB_STEREO_CH_MUX"},
16210 {"PRI_TDM_TX_0", NULL, "BE_IN"},
16211 {"PRI_TDM_TX_1", NULL, "BE_IN"},
16212 {"PRI_TDM_TX_2", NULL, "BE_IN"},
16213 {"PRI_TDM_TX_3", NULL, "BE_IN"},
16214 {"SEC_TDM_TX_0", NULL, "BE_IN"},
16215 {"SEC_TDM_TX_1", NULL, "BE_IN"},
16216 {"SEC_TDM_TX_2", NULL, "BE_IN"},
16217 {"SEC_TDM_TX_3", NULL, "BE_IN"},
16218 {"TERT_TDM_TX_0", NULL, "BE_IN"},
16219 {"TERT_TDM_TX_1", NULL, "BE_IN"},
16220 {"TERT_TDM_TX_2", NULL, "BE_IN"},
16221 {"TERT_TDM_TX_3", NULL, "BE_IN"},
16222 {"QUAT_TDM_TX_0", NULL, "BE_IN"},
16223 {"QUAT_TDM_TX_1", NULL, "BE_IN"},
16224 {"QUAT_TDM_TX_2", NULL, "BE_IN"},
16225 {"QUAT_TDM_TX_3", NULL, "BE_IN"},
Rohit Kumara5077932017-09-10 22:05:05 +053016226 {"QUIN_TDM_TX_0", NULL, "BE_IN"},
16227 {"QUIN_TDM_TX_1", NULL, "BE_IN"},
16228 {"QUIN_TDM_TX_2", NULL, "BE_IN"},
16229 {"QUIN_TDM_TX_3", NULL, "BE_IN"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016230};
16231
16232static int msm_pcm_routing_hw_params(struct snd_pcm_substream *substream,
16233 struct snd_pcm_hw_params *params)
16234{
16235 struct snd_soc_pcm_runtime *rtd = substream->private_data;
16236 unsigned int be_id = rtd->dai_link->id;
16237
16238 if (be_id >= MSM_BACKEND_DAI_MAX) {
16239 pr_err("%s: unexpected BE id %d\n", __func__, be_id);
16240 return -EINVAL;
16241 }
16242
16243 mutex_lock(&routing_lock);
16244 msm_bedais[be_id].sample_rate = params_rate(params);
16245 msm_bedais[be_id].channel = params_channels(params);
16246 msm_bedais[be_id].format = params_format(params);
16247 pr_debug("%s: BE Sample Rate (%d) format (%d) BE id %d\n",
16248 __func__, msm_bedais[be_id].sample_rate,
16249 msm_bedais[be_id].format, be_id);
16250 mutex_unlock(&routing_lock);
16251 return 0;
16252}
16253
16254static int msm_pcm_routing_close(struct snd_pcm_substream *substream)
16255{
16256 struct snd_soc_pcm_runtime *rtd = substream->private_data;
16257 unsigned int be_id = rtd->dai_link->id;
16258 int i, session_type, path_type, topology;
16259 struct msm_pcm_routing_bdai_data *bedai;
16260 struct msm_pcm_routing_fdai_data *fdai;
16261
16262 pr_debug("%s: substream->pcm->id:%s\n",
16263 __func__, substream->pcm->id);
16264
16265 if (be_id >= MSM_BACKEND_DAI_MAX) {
16266 pr_err("%s: unexpected BE id %d\n", __func__, be_id);
16267 return -EINVAL;
16268 }
16269
16270 bedai = &msm_bedais[be_id];
16271 session_type = (substream->stream == SNDRV_PCM_STREAM_PLAYBACK ?
16272 0 : 1);
16273 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
16274 path_type = ADM_PATH_PLAYBACK;
16275 else
16276 path_type = ADM_PATH_LIVE_REC;
16277
16278 mutex_lock(&routing_lock);
16279 for_each_set_bit(i, &bedai->fe_sessions[0], MSM_FRONTEND_DAI_MAX) {
16280 if (!is_mm_lsm_fe_id(i))
16281 continue;
16282 fdai = &fe_dai_map[i][session_type];
16283 if (fdai->strm_id != INVALID_SESSION) {
16284 int idx;
16285 int port_id;
16286 unsigned long copp =
16287 session_copp_map[i][session_type][be_id];
16288 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++)
16289 if (test_bit(idx, &copp))
16290 break;
16291 fdai->be_srate = bedai->sample_rate;
16292 port_id = bedai->port_id;
16293 topology = adm_get_topology_for_port_copp_idx(port_id,
16294 idx);
16295 adm_close(bedai->port_id, fdai->perf_mode, idx);
16296 pr_debug("%s: copp:%ld,idx bit fe:%d, type:%d,be:%d topology=0x%x\n",
16297 __func__, copp, i, session_type, be_id,
16298 topology);
16299 clear_bit(idx,
16300 &session_copp_map[i][session_type][be_id]);
16301 if ((fdai->perf_mode == LEGACY_PCM_MODE) &&
16302 (bedai->passthr_mode[i] == LEGACY_PCM))
16303 msm_pcm_routing_deinit_pp(bedai->port_id,
16304 topology);
16305 }
16306 }
16307
16308 bedai->active = 0;
16309 bedai->sample_rate = 0;
16310 bedai->channel = 0;
16311 for (i = 0; i < MSM_FRONTEND_DAI_MAX; i++) {
16312 if (bedai->passthr_mode[i] != LISTEN)
16313 bedai->passthr_mode[i] = LEGACY_PCM;
16314 }
16315 mutex_unlock(&routing_lock);
16316
16317 return 0;
16318}
16319
16320static int msm_pcm_routing_prepare(struct snd_pcm_substream *substream)
16321{
16322 struct snd_soc_pcm_runtime *rtd = substream->private_data;
16323 unsigned int be_id = rtd->dai_link->id;
16324 int i, path_type, topology;
16325 int session_type = INVALID_SESSION;
16326 struct msm_pcm_routing_bdai_data *bedai;
16327 u32 channels, sample_rate;
16328 uint16_t bits_per_sample = 16, voc_path_type;
16329 struct msm_pcm_routing_fdai_data *fdai;
16330 u32 session_id;
16331 struct media_format_info voc_be_media_format;
16332 bool is_lsm;
16333
16334 pr_debug("%s: substream->pcm->id:%s\n",
16335 __func__, substream->pcm->id);
16336
16337 if (be_id >= MSM_BACKEND_DAI_MAX) {
16338 pr_err("%s: unexpected BE id %d\n", __func__, be_id);
16339 return -EINVAL;
16340 }
16341
16342 bedai = &msm_bedais[be_id];
16343
16344 mutex_lock(&routing_lock);
16345 if (bedai->active == 1)
16346 goto done; /* Ignore prepare if back-end already active */
16347
16348 /* AFE port is not active at this point. However, still
16349 * go ahead setting active flag under the notion that
16350 * QDSP6 is able to handle ADM starting before AFE port
16351 * is started.
16352 */
16353 bedai->active = 1;
16354
16355 for_each_set_bit(i, &bedai->fe_sessions[0], MSM_FRONTEND_DAI_MAX) {
16356 if (!(is_mm_lsm_fe_id(i) &&
16357 route_check_fe_id_adm_support(i)))
16358 continue;
16359
16360 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
16361 if (bedai->passthr_mode[i] != LEGACY_PCM)
16362 path_type = ADM_PATH_COMPRESSED_RX;
16363 else
16364 path_type = ADM_PATH_PLAYBACK;
16365 session_type = SESSION_TYPE_RX;
16366 } else {
16367 path_type = ADM_PATH_LIVE_REC;
16368 session_type = SESSION_TYPE_TX;
16369 }
16370
16371 is_lsm = (i >= MSM_FRONTEND_DAI_LSM1) &&
16372 (i <= MSM_FRONTEND_DAI_LSM8);
16373 fdai = &fe_dai_map[i][session_type];
16374 if (fdai->strm_id != INVALID_SESSION) {
16375 int app_type, app_type_idx, copp_idx, acdb_dev_id;
16376
16377 if (session_type == SESSION_TYPE_TX &&
16378 fdai->be_srate &&
16379 (fdai->be_srate != bedai->sample_rate)) {
16380 pr_debug("%s: flush strm %d diff BE rates\n",
16381 __func__,
16382 fdai->strm_id);
16383
16384 if (fdai->event_info.event_func)
16385 fdai->event_info.event_func(
16386 MSM_PCM_RT_EVT_BUF_RECFG,
16387 fdai->event_info.priv_data);
16388 fdai->be_srate = 0; /* might not need it */
16389 }
16390 bits_per_sample = msm_routing_get_bit_width(
16391 bedai->format);
16392
16393 app_type =
16394 fe_dai_app_type_cfg[i][session_type][be_id].app_type;
16395 if (app_type && is_lsm) {
16396 app_type_idx =
16397 msm_pcm_routing_get_lsm_app_type_idx(app_type);
16398 sample_rate =
16399 fe_dai_app_type_cfg[i][session_type][be_id]
16400 .sample_rate;
16401 bits_per_sample =
16402 lsm_app_type_cfg[app_type_idx].bit_width;
16403 } else if (app_type) {
16404 app_type_idx =
16405 msm_pcm_routing_get_app_type_idx(app_type);
16406 sample_rate =
16407 fe_dai_app_type_cfg[i][session_type]
16408 [be_id].sample_rate;
16409 bits_per_sample =
16410 app_type_cfg[app_type_idx].bit_width;
16411 } else
16412 sample_rate = bedai->sample_rate;
16413 /*
16414 * check if ADM needs to be configured with different
16415 * channel mapping than backend
16416 */
16417 if (!bedai->adm_override_ch)
16418 channels = bedai->channel;
16419 else
16420 channels = bedai->adm_override_ch;
16421 acdb_dev_id =
16422 fe_dai_app_type_cfg[i][session_type][be_id].acdb_dev_id;
16423 topology = msm_routing_get_adm_topology(i, session_type,
16424 be_id);
16425 copp_idx = adm_open(bedai->port_id, path_type,
16426 sample_rate, channels, topology,
16427 fdai->perf_mode, bits_per_sample,
16428 app_type, acdb_dev_id);
16429 if ((copp_idx < 0) ||
16430 (copp_idx >= MAX_COPPS_PER_PORT)) {
16431 pr_err("%s: adm open failed\n", __func__);
16432 mutex_unlock(&routing_lock);
16433 return -EINVAL;
16434 }
16435 pr_debug("%s: setting idx bit of fe:%d, type: %d, be:%d\n",
16436 __func__, i, session_type, be_id);
16437 set_bit(copp_idx,
16438 &session_copp_map[i][session_type][be_id]);
16439
16440 if (msm_is_resample_needed(
16441 sample_rate,
16442 bedai->sample_rate))
16443 adm_copp_mfc_cfg(
16444 bedai->port_id, copp_idx,
16445 bedai->sample_rate);
16446
16447 msm_pcm_routing_build_matrix(i, session_type, path_type,
16448 fdai->perf_mode,
16449 bedai->passthr_mode[i]);
16450 if ((fdai->perf_mode == LEGACY_PCM_MODE) &&
16451 (bedai->passthr_mode[i] == LEGACY_PCM))
16452 msm_pcm_routing_cfg_pp(bedai->port_id, copp_idx,
16453 topology, channels);
16454 }
16455 }
16456
16457 for_each_set_bit(i, &bedai->fe_sessions[0], MSM_FRONTEND_DAI_MAX) {
16458 session_id = msm_pcm_routing_get_voc_sessionid(i);
16459 if (session_id) {
16460 pr_debug("%s voice session_id: 0x%x\n", __func__,
16461 session_id);
16462
16463 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
16464 voc_path_type = RX_PATH;
16465 else
16466 voc_path_type = TX_PATH;
16467
16468 voc_set_route_flag(session_id, voc_path_type, 1);
16469
16470 memset(&voc_be_media_format, 0,
16471 sizeof(struct media_format_info));
16472
16473 voc_be_media_format.port_id = bedai->port_id;
16474 voc_be_media_format.num_channels = bedai->channel;
16475 voc_be_media_format.sample_rate = bedai->sample_rate;
16476 voc_be_media_format.bits_per_sample = bedai->format;
16477 /* Defaulting this to 1 for voice call usecases */
16478 voc_be_media_format.channel_mapping[0] = 1;
16479
16480 voc_set_device_config(session_id, voc_path_type,
16481 &voc_be_media_format);
16482
16483 if (voc_get_route_flag(session_id, RX_PATH) &&
16484 voc_get_route_flag(session_id, TX_PATH))
16485 voc_enable_device(session_id);
16486 }
16487 }
16488
16489 /* Check if backend is an external ec ref port and set as needed */
16490 if (unlikely(bedai->port_id == voc_get_ext_ec_ref_port_id())) {
16491
16492 memset(&voc_be_media_format, 0,
16493 sizeof(struct media_format_info));
16494
16495 /* Get format info for ec ref port from msm_bedais[] */
16496 voc_be_media_format.port_id = bedai->port_id;
16497 voc_be_media_format.num_channels = bedai->channel;
16498 voc_be_media_format.bits_per_sample = bedai->format;
16499 voc_be_media_format.sample_rate = bedai->sample_rate;
16500 /* Defaulting this to 1 for voice call usecases */
16501 voc_be_media_format.channel_mapping[0] = 1;
16502 voc_set_ext_ec_ref_media_fmt_info(&voc_be_media_format);
16503 pr_debug("%s: EC Ref media format info set to port_id=%d, num_channels=%d, bits_per_sample=%d, sample_rate=%d\n",
16504 __func__, voc_be_media_format.port_id,
16505 voc_be_media_format.num_channels,
16506 voc_be_media_format.bits_per_sample,
16507 voc_be_media_format.sample_rate);
16508 }
16509
16510done:
16511 mutex_unlock(&routing_lock);
16512
16513 return 0;
16514}
16515
16516static int msm_routing_send_device_pp_params(int port_id, int copp_idx,
16517 int fe_id)
16518{
16519 int index, topo_id, be_idx;
16520 unsigned long pp_config = 0;
16521 bool mute_on;
16522 int latency;
16523 bool compr_passthr_mode = true;
16524
16525 pr_debug("%s: port_id %d, copp_idx %d\n", __func__, port_id, copp_idx);
16526
16527 if (port_id != HDMI_RX && port_id != DISPLAY_PORT_RX) {
16528 pr_err("%s: Device pp params on invalid port %d\n",
16529 __func__, port_id);
16530 return -EINVAL;
16531 }
16532
16533 for (be_idx = 0; be_idx < MSM_BACKEND_DAI_MAX; be_idx++) {
16534 if (port_id == msm_bedais[be_idx].port_id)
16535 break;
16536 }
16537
16538 if (be_idx >= MSM_BACKEND_DAI_MAX) {
16539 pr_debug("%s: Invalid be id %d\n", __func__, be_idx);
16540 return -EINVAL;
16541 }
16542
16543 for (index = 0; index < MSM_BACKEND_DAI_PP_PARAMS_REQ_MAX; index++) {
16544 if (msm_bedais_pp_params[index].port_id == port_id)
16545 break;
16546 }
16547 if (index >= MSM_BACKEND_DAI_PP_PARAMS_REQ_MAX) {
16548 pr_err("%s: Invalid backend pp params index %d\n",
16549 __func__, index);
16550 return -EINVAL;
16551 }
16552
16553 topo_id = adm_get_topology_for_port_copp_idx(port_id, copp_idx);
16554 if (topo_id != COMPRESSED_PASSTHROUGH_DEFAULT_TOPOLOGY) {
16555 pr_err("%s: Invalid passthrough topology 0x%x\n",
16556 __func__, topo_id);
16557 return -EINVAL;
16558 }
16559
16560 if ((msm_bedais[be_idx].passthr_mode[fe_id] == LEGACY_PCM) ||
16561 (msm_bedais[be_idx].passthr_mode[fe_id] == LISTEN))
16562 compr_passthr_mode = false;
16563
16564 pp_config = msm_bedais_pp_params[index].pp_params_config;
16565 if (test_bit(ADM_PP_PARAM_MUTE_BIT, &pp_config)) {
16566 pr_debug("%s: ADM_PP_PARAM_MUTE\n", __func__);
16567 clear_bit(ADM_PP_PARAM_MUTE_BIT, &pp_config);
16568 mute_on = msm_bedais_pp_params[index].mute_on;
16569 if ((msm_bedais[be_idx].active) && compr_passthr_mode)
16570 adm_send_compressed_device_mute(port_id,
16571 copp_idx,
16572 mute_on);
16573 }
16574 if (test_bit(ADM_PP_PARAM_LATENCY_BIT, &pp_config)) {
16575 pr_debug("%s: ADM_PP_PARAM_LATENCY\n", __func__);
16576 clear_bit(ADM_PP_PARAM_LATENCY_BIT,
16577 &pp_config);
16578 latency = msm_bedais_pp_params[index].latency;
16579 if ((msm_bedais[be_idx].active) && compr_passthr_mode)
16580 adm_send_compressed_device_latency(port_id,
16581 copp_idx,
16582 latency);
16583 }
16584 return 0;
16585}
16586
16587static int msm_routing_put_device_pp_params_mixer(struct snd_kcontrol *kcontrol,
16588 struct snd_ctl_elem_value *ucontrol)
16589{
16590 int pp_id = ucontrol->value.integer.value[0];
16591 int port_id = 0;
16592 int index, be_idx, i, topo_id, idx;
16593 bool mute;
16594 int latency;
16595 bool compr_passthr_mode = true;
16596
16597 pr_debug("%s: pp_id: 0x%x\n", __func__, pp_id);
16598
16599 for (be_idx = 0; be_idx < MSM_BACKEND_DAI_MAX; be_idx++) {
16600 port_id = msm_bedais[be_idx].port_id;
16601 if (port_id == HDMI_RX || port_id == DISPLAY_PORT_RX)
16602 break;
16603 }
16604
16605 if (be_idx >= MSM_BACKEND_DAI_MAX) {
16606 pr_debug("%s: Invalid be id %d\n", __func__, be_idx);
16607 return -EINVAL;
16608 }
16609
16610 for (index = 0; index < MSM_BACKEND_DAI_PP_PARAMS_REQ_MAX; index++) {
16611 if (msm_bedais_pp_params[index].port_id == port_id)
16612 break;
16613 }
16614 if (index >= MSM_BACKEND_DAI_PP_PARAMS_REQ_MAX) {
16615 pr_err("%s: Invalid pp params backend index %d\n",
16616 __func__, index);
16617 return -EINVAL;
16618 }
16619
16620 for_each_set_bit(i, &msm_bedais[be_idx].fe_sessions[0],
16621 MSM_FRONTEND_DAI_MM_SIZE) {
16622 if ((msm_bedais[be_idx].passthr_mode[i] == LEGACY_PCM) ||
16623 (msm_bedais[be_idx].passthr_mode[i] == LISTEN))
16624 compr_passthr_mode = false;
16625
16626 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++) {
16627 unsigned long copp =
16628 session_copp_map[i]
16629 [SESSION_TYPE_RX][be_idx];
16630 if (!test_bit(idx, &copp))
16631 continue;
16632 topo_id = adm_get_topology_for_port_copp_idx(port_id,
16633 idx);
16634 if (topo_id != COMPRESSED_PASSTHROUGH_DEFAULT_TOPOLOGY)
16635 continue;
16636 pr_debug("%s: port: 0x%x, copp %ld, be active: %d, passt: %d\n",
16637 __func__, port_id, copp, msm_bedais[be_idx].active,
16638 msm_bedais[be_idx].passthr_mode[i]);
16639 switch (pp_id) {
16640 case ADM_PP_PARAM_MUTE_ID:
16641 pr_debug("%s: ADM_PP_PARAM_MUTE\n", __func__);
16642 mute = ucontrol->value.integer.value[1] ? true : false;
16643 msm_bedais_pp_params[index].mute_on = mute;
16644 set_bit(ADM_PP_PARAM_MUTE_BIT,
16645 &msm_bedais_pp_params[index].pp_params_config);
16646 if ((msm_bedais[be_idx].active) && compr_passthr_mode)
16647 adm_send_compressed_device_mute(port_id,
16648 idx, mute);
16649 break;
16650 case ADM_PP_PARAM_LATENCY_ID:
16651 pr_debug("%s: ADM_PP_PARAM_LATENCY\n", __func__);
16652 msm_bedais_pp_params[index].latency =
16653 ucontrol->value.integer.value[1];
16654 set_bit(ADM_PP_PARAM_LATENCY_BIT,
16655 &msm_bedais_pp_params[index].pp_params_config);
16656 latency = msm_bedais_pp_params[index].latency =
16657 ucontrol->value.integer.value[1];
16658 if ((msm_bedais[be_idx].active) && compr_passthr_mode)
16659 adm_send_compressed_device_latency(port_id,
16660 idx, latency);
16661 break;
16662 default:
16663 pr_info("%s, device pp param %d not supported\n",
16664 __func__, pp_id);
16665 break;
16666 }
16667 }
16668 }
16669 return 0;
16670}
16671
16672static int msm_routing_get_device_pp_params_mixer(struct snd_kcontrol *kcontrol,
16673 struct snd_ctl_elem_value *ucontrol)
16674{
16675 pr_debug("%s:msm_routing_get_device_pp_params_mixer", __func__);
16676 return 0;
16677}
16678
16679static const struct snd_kcontrol_new device_pp_params_mixer_controls[] = {
16680 SOC_SINGLE_MULTI_EXT("Device PP Params", SND_SOC_NOPM, 0, 0xFFFFFFFF,
16681 0, 3, msm_routing_get_device_pp_params_mixer,
16682 msm_routing_put_device_pp_params_mixer),
16683};
16684
16685static int msm_aptx_dec_license_control_get(struct snd_kcontrol *kcontrol,
16686 struct snd_ctl_elem_value *ucontrol)
16687{
16688 ucontrol->value.integer.value[0] =
16689 core_get_license_status(ASM_MEDIA_FMT_APTX);
16690 pr_debug("%s: status %ld\n", __func__,
16691 ucontrol->value.integer.value[0]);
16692 return 0;
16693}
16694
16695static int msm_aptx_dec_license_control_put(struct snd_kcontrol *kcontrol,
16696 struct snd_ctl_elem_value *ucontrol)
16697{
16698 int32_t status = 0;
16699
16700 status = core_set_license(ucontrol->value.integer.value[0],
16701 APTX_CLASSIC_DEC_LICENSE_ID);
16702 pr_debug("%s: status %d\n", __func__, status);
16703 return status;
16704}
16705
16706static const struct snd_kcontrol_new aptx_dec_license_controls[] = {
16707 SOC_SINGLE_EXT("APTX Dec License", SND_SOC_NOPM, 0,
16708 0xFFFF, 0, msm_aptx_dec_license_control_get,
16709 msm_aptx_dec_license_control_put),
16710};
16711
16712static int msm_routing_be_dai_name_table_info(struct snd_kcontrol *kcontrol,
16713 struct snd_ctl_elem_info *uinfo)
16714{
16715 uinfo->type = SNDRV_CTL_ELEM_TYPE_BYTES;
16716 uinfo->count = sizeof(be_dai_name_table);
16717 return 0;
16718}
16719
16720static int msm_routing_be_dai_name_table_tlv_get(struct snd_kcontrol *kcontrol,
16721 unsigned int __user *bytes,
16722 unsigned int size)
16723{
16724 int i;
16725 int ret;
16726
16727 if (size < sizeof(be_dai_name_table)) {
16728 pr_err("%s: invalid size %d requested, returning\n",
16729 __func__, size);
16730 ret = -EINVAL;
16731 goto done;
16732 }
16733
16734 /*
16735 * Fill be_dai_name_table from msm_bedais table to reduce code changes
16736 * needed when adding new backends
16737 */
16738 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
16739 be_dai_name_table[i].be_id = i;
16740 strlcpy(be_dai_name_table[i].be_name,
16741 msm_bedais[i].name,
16742 LPASS_BE_NAME_MAX_LENGTH);
16743 }
16744
16745 ret = copy_to_user(bytes, &be_dai_name_table,
16746 sizeof(be_dai_name_table));
16747 if (ret) {
16748 pr_err("%s: failed to copy be_dai_name_table\n", __func__);
16749 ret = -EFAULT;
16750 }
16751
16752done:
16753 return ret;
16754}
16755
16756static const struct snd_kcontrol_new
16757 msm_routing_be_dai_name_table_mixer_controls[] = {
16758 {
16759 .access = SNDRV_CTL_ELEM_ACCESS_TLV_READ |
16760 SNDRV_CTL_ELEM_ACCESS_TLV_CALLBACK,
16761 .info = msm_routing_be_dai_name_table_info,
16762 .name = "Backend DAI Name Table",
16763 .tlv.c = snd_soc_bytes_tlv_callback,
16764 .private_value = (unsigned long) &(struct soc_bytes_ext) {
16765 .max = sizeof(be_dai_name_table),
16766 .get = msm_routing_be_dai_name_table_tlv_get,
16767 }
16768 },
16769};
16770
16771static int msm_routing_stereo_channel_reverse_control_get(
16772 struct snd_kcontrol *kcontrol,
16773 struct snd_ctl_elem_value *ucontrol)
16774{
16775 ucontrol->value.integer.value[0] = swap_ch;
16776 pr_debug("%s: Swap channel value: %ld\n", __func__,
16777 ucontrol->value.integer.value[0]);
16778 return 0;
16779}
16780
16781static int msm_routing_stereo_channel_reverse_control_put(
16782 struct snd_kcontrol *kcontrol,
16783 struct snd_ctl_elem_value *ucontrol)
16784{
16785 int i, idx, be_index, port_id;
16786 int ret = 0;
16787 unsigned long copp;
16788
16789 pr_debug("%s Swap channel value:%ld\n", __func__,
16790 ucontrol->value.integer.value[0]);
16791
16792 swap_ch = ucontrol->value.integer.value[0];
16793
16794 mutex_lock(&routing_lock);
16795 for (be_index = 0; be_index < MSM_BACKEND_DAI_MAX; be_index++) {
16796 port_id = msm_bedais[be_index].port_id;
16797 if (!msm_bedais[be_index].active)
16798 continue;
16799
16800 for_each_set_bit(i, &msm_bedais[be_index].fe_sessions[0],
16801 MSM_FRONTEND_DAI_MM_SIZE) {
16802 copp = session_copp_map[i][SESSION_TYPE_RX][be_index];
16803 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++) {
16804 if (!test_bit(idx, &copp))
16805 continue;
16806
16807 pr_debug("%s: swap channel control of portid:%d, coppid:%d\n",
16808 __func__, port_id, idx);
16809 ret = adm_swap_speaker_channels(
16810 port_id, idx,
16811 msm_bedais[be_index].sample_rate,
16812 swap_ch);
16813 if (ret) {
16814 pr_err("%s:Swap_channel failed, err=%d\n",
16815 __func__, ret);
16816 goto done;
16817 }
16818 }
16819 }
16820 }
16821done:
16822 mutex_unlock(&routing_lock);
16823 return ret;
16824}
16825
16826static const struct snd_kcontrol_new stereo_channel_reverse_control[] = {
16827 SOC_SINGLE_EXT("Swap channel", SND_SOC_NOPM, 0,
16828 1, 0, msm_routing_stereo_channel_reverse_control_get,
16829 msm_routing_stereo_channel_reverse_control_put),
16830};
16831
16832static const struct snd_pcm_ops msm_routing_pcm_ops = {
16833 .hw_params = msm_pcm_routing_hw_params,
16834 .close = msm_pcm_routing_close,
16835 .prepare = msm_pcm_routing_prepare,
16836};
16837
16838/* Not used but frame seems to require it */
16839static int msm_routing_probe(struct snd_soc_platform *platform)
16840{
16841 snd_soc_dapm_new_controls(&platform->component.dapm, msm_qdsp6_widgets,
16842 ARRAY_SIZE(msm_qdsp6_widgets));
16843 snd_soc_dapm_add_routes(&platform->component.dapm, intercon,
16844 ARRAY_SIZE(intercon));
16845
16846 snd_soc_dapm_new_widgets(platform->component.dapm.card);
16847
16848 snd_soc_add_platform_controls(platform, lsm_controls,
16849 ARRAY_SIZE(lsm_controls));
16850
16851 snd_soc_add_platform_controls(platform, aanc_slim_0_rx_mux,
16852 ARRAY_SIZE(aanc_slim_0_rx_mux));
16853
16854 snd_soc_add_platform_controls(platform, msm_voc_session_controls,
16855 ARRAY_SIZE(msm_voc_session_controls));
16856
16857 snd_soc_add_platform_controls(platform, app_type_cfg_controls,
16858 ARRAY_SIZE(app_type_cfg_controls));
16859
16860 snd_soc_add_platform_controls(platform, lsm_app_type_cfg_controls,
16861 ARRAY_SIZE(lsm_app_type_cfg_controls));
16862
Vikram Pandurangaee9c03a2017-09-07 15:06:17 -070016863 snd_soc_add_platform_controls(platform, module_cfg_controls,
16864 ARRAY_SIZE(module_cfg_controls));
16865
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016866 snd_soc_add_platform_controls(platform,
16867 stereo_to_custom_stereo_controls,
16868 ARRAY_SIZE(stereo_to_custom_stereo_controls));
16869
16870 snd_soc_add_platform_controls(platform, ec_ref_param_controls,
16871 ARRAY_SIZE(ec_ref_param_controls));
16872
16873 snd_soc_add_platform_controls(platform, channel_mixer_controls,
16874 ARRAY_SIZE(channel_mixer_controls));
16875
16876 msm_qti_pp_add_controls(platform);
16877
16878 msm_dts_srs_tm_add_controls(platform);
16879
16880 msm_dolby_dap_add_controls(platform);
16881
16882 snd_soc_add_platform_controls(platform,
16883 use_ds1_or_ds2_controls,
16884 ARRAY_SIZE(use_ds1_or_ds2_controls));
16885
16886 snd_soc_add_platform_controls(platform,
16887 device_pp_params_mixer_controls,
16888 ARRAY_SIZE(device_pp_params_mixer_controls));
16889
16890 snd_soc_add_platform_controls(platform,
16891 msm_routing_be_dai_name_table_mixer_controls,
16892 ARRAY_SIZE(msm_routing_be_dai_name_table_mixer_controls));
16893
16894 snd_soc_add_platform_controls(platform, msm_source_tracking_controls,
16895 ARRAY_SIZE(msm_source_tracking_controls));
16896 snd_soc_add_platform_controls(platform, adm_channel_config_controls,
16897 ARRAY_SIZE(adm_channel_config_controls));
16898
16899 snd_soc_add_platform_controls(platform, aptx_dec_license_controls,
16900 ARRAY_SIZE(aptx_dec_license_controls));
16901 snd_soc_add_platform_controls(platform, stereo_channel_reverse_control,
16902 ARRAY_SIZE(stereo_channel_reverse_control));
16903 return 0;
16904}
16905
16906int msm_routing_pcm_new(struct snd_soc_pcm_runtime *runtime)
16907{
16908 return msm_pcm_routing_hwdep_new(runtime, msm_bedais);
16909}
16910
16911void msm_routing_pcm_free(struct snd_pcm *pcm)
16912{
16913 msm_pcm_routing_hwdep_free(pcm);
16914}
16915
16916static struct snd_soc_platform_driver msm_soc_routing_platform = {
16917 .ops = &msm_routing_pcm_ops,
16918 .probe = msm_routing_probe,
16919 .pcm_new = msm_routing_pcm_new,
16920 .pcm_free = msm_routing_pcm_free,
16921};
16922
16923static int msm_routing_pcm_probe(struct platform_device *pdev)
16924{
16925
16926 dev_dbg(&pdev->dev, "dev name %s\n", dev_name(&pdev->dev));
16927 return snd_soc_register_platform(&pdev->dev,
16928 &msm_soc_routing_platform);
16929}
16930
16931static int msm_routing_pcm_remove(struct platform_device *pdev)
16932{
16933 snd_soc_unregister_platform(&pdev->dev);
16934 return 0;
16935}
16936
16937static const struct of_device_id msm_pcm_routing_dt_match[] = {
16938 {.compatible = "qcom,msm-pcm-routing"},
16939 {}
16940};
16941MODULE_DEVICE_TABLE(of, msm_pcm_routing_dt_match);
16942
16943static struct platform_driver msm_routing_pcm_driver = {
16944 .driver = {
16945 .name = "msm-pcm-routing",
16946 .owner = THIS_MODULE,
16947 .of_match_table = msm_pcm_routing_dt_match,
16948 },
16949 .probe = msm_routing_pcm_probe,
16950 .remove = msm_routing_pcm_remove,
16951};
16952
16953int msm_routing_check_backend_enabled(int fedai_id)
16954{
16955 int i;
16956
16957 if (fedai_id > MSM_FRONTEND_DAI_MM_MAX_ID) {
16958 /* bad ID assigned in machine driver */
16959 pr_err("%s: bad MM ID\n", __func__);
16960 return 0;
16961 }
16962 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
16963 if (test_bit(fedai_id, &msm_bedais[i].fe_sessions[0]))
16964 return msm_bedais[i].active;
16965 }
16966 return 0;
16967}
16968
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053016969static int get_cal_type_index(int32_t cal_type)
16970{
16971 int ret = -EINVAL;
16972
16973 switch (cal_type) {
16974 case ADM_TOPOLOGY_CAL_TYPE:
16975 ret = ADM_TOPOLOGY_CAL_TYPE_IDX;
16976 break;
16977 case ADM_LSM_TOPOLOGY_CAL_TYPE:
16978 ret = ADM_LSM_TOPOLOGY_CAL_TYPE_IDX;
16979 break;
16980 default:
16981 pr_err("%s: Invalid cal type %d\n", __func__, cal_type);
16982 }
16983 return ret;
16984}
16985
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016986static int msm_routing_set_cal(int32_t cal_type,
16987 size_t data_size, void *data)
16988{
16989 int ret = 0;
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053016990 int cal_index;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016991 pr_debug("%s\n", __func__);
16992
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053016993 cal_index = get_cal_type_index(cal_type);
16994 if (cal_index < 0) {
16995 pr_err("%s: Could not get cal index %d\n",
16996 __func__, cal_index);
16997 ret = -EINVAL;
16998 goto done;
16999 }
17000
17001 ret = cal_utils_set_cal(data_size, data, cal_data[cal_index], 0, NULL);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017002 if (ret < 0) {
17003 pr_err("%s: cal_utils_set_cal failed, ret = %d, cal type = %d!\n",
17004 __func__, ret, cal_type);
17005 ret = -EINVAL;
17006 goto done;
17007 }
17008done:
17009 return ret;
17010}
17011
17012static void msm_routing_delete_cal_data(void)
17013{
17014 pr_debug("%s\n", __func__);
17015
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053017016 cal_utils_destroy_cal_types(MAX_ROUTING_CAL_TYPES, &cal_data[0]);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017017}
17018
17019static int msm_routing_init_cal_data(void)
17020{
17021 int ret = 0;
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053017022 struct cal_type_info cal_type_info[] = {
17023 {{ADM_TOPOLOGY_CAL_TYPE,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017024 {NULL, NULL, NULL,
17025 msm_routing_set_cal, NULL, NULL} },
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053017026 {NULL, NULL, cal_utils_match_buf_num} },
17027
17028 {{ADM_LSM_TOPOLOGY_CAL_TYPE,
17029 {NULL, NULL, NULL,
17030 msm_routing_set_cal, NULL, NULL} },
17031 {NULL, NULL, cal_utils_match_buf_num} },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017032 };
17033 pr_debug("%s\n", __func__);
17034
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053017035 ret = cal_utils_create_cal_types(MAX_ROUTING_CAL_TYPES, &cal_data[0],
17036 &cal_type_info[0]);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017037 if (ret < 0) {
17038 pr_err("%s: could not create cal type!\n",
17039 __func__);
17040 ret = -EINVAL;
17041 goto err;
17042 }
17043
17044 return ret;
17045err:
17046 msm_routing_delete_cal_data();
17047 return ret;
17048}
17049
Laxminath Kasam8b1366a2017-10-05 01:44:16 +053017050int __init msm_soc_routing_platform_init(void)
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017051{
17052 mutex_init(&routing_lock);
17053 if (msm_routing_init_cal_data())
17054 pr_err("%s: could not init cal data!\n", __func__);
17055
17056 afe_set_routing_callback(
17057 (routing_cb)msm_pcm_get_dev_acdb_id_by_port_id);
17058
17059 memset(&be_dai_name_table, 0, sizeof(be_dai_name_table));
17060 memset(&last_be_id_configured, 0, sizeof(last_be_id_configured));
17061
17062 return platform_driver_register(&msm_routing_pcm_driver);
17063}
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017064
Asish Bhattacharya5faacb32017-12-04 17:23:15 +053017065void msm_soc_routing_platform_exit(void)
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017066{
17067 msm_routing_delete_cal_data();
17068 memset(&be_dai_name_table, 0, sizeof(be_dai_name_table));
17069 mutex_destroy(&routing_lock);
17070 platform_driver_unregister(&msm_routing_pcm_driver);
17071}
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017072
17073MODULE_DESCRIPTION("MSM routing platform driver");
17074MODULE_LICENSE("GPL v2");