blob: bd82bffe7491060bff1603f44b596538543da003 [file] [log] [blame]
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05301/* Copyright (c) 2012-2018, The Linux Foundation. All rights reserved.
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302 *
3 * This program is free software; you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License version 2 and
5 * only version 2 as published by the Free Software Foundation.
6 *
7 * This program is distributed in the hope that it will be useful,
8 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 * GNU General Public License for more details.
11 */
12
13#include <linux/init.h>
14#include <linux/err.h>
15#include <linux/module.h>
16#include <linux/moduleparam.h>
17#include <linux/platform_device.h>
18#include <linux/bitops.h>
19#include <linux/mutex.h>
20#include <linux/of_device.h>
21#include <linux/slab.h>
22#include <sound/core.h>
23#include <sound/soc.h>
24#include <sound/soc-dapm.h>
25#include <sound/pcm.h>
26#include <sound/initval.h>
27#include <sound/control.h>
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053028#include <sound/tlv.h>
29#include <sound/asound.h>
30#include <sound/pcm_params.h>
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053031#include <sound/hwdep.h>
Laxminath Kasam605b42f2017-08-01 22:02:15 +053032#include <sound/audio_effects.h>
Laxminath Kasam8b1366a2017-10-05 01:44:16 +053033#include <dsp/msm-dts-srs-tm-config.h>
Laxminath Kasam605b42f2017-08-01 22:02:15 +053034#include <dsp/q6voice.h>
35#include <dsp/q6adm-v2.h>
36#include <dsp/q6asm-v2.h>
37#include <dsp/q6afe-v2.h>
38#include <dsp/q6lsm.h>
39#include <dsp/q6core.h>
40#include <dsp/audio_cal_utils.h>
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053041
42#include "msm-pcm-routing-v2.h"
43#include "msm-pcm-routing-devdep.h"
44#include "msm-qti-pp-config.h"
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053045#include "msm-dolby-dap-config.h"
46#include "msm-ds2-dap-config.h"
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053047
48#ifndef CONFIG_DOLBY_DAP
49#undef DOLBY_ADM_COPP_TOPOLOGY_ID
50#define DOLBY_ADM_COPP_TOPOLOGY_ID 0xFFFFFFFE
51#endif
52
53#ifndef CONFIG_DOLBY_DS2
54#undef DS2_ADM_COPP_TOPOLOGY_ID
55#define DS2_ADM_COPP_TOPOLOGY_ID 0xFFFFFFFF
56#endif
57
58static struct mutex routing_lock;
59
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053060static struct cal_type_data *cal_data[MAX_ROUTING_CAL_TYPES];
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053061
62static int fm_switch_enable;
63static int hfp_switch_enable;
64static int int0_mi2s_switch_enable;
65static int int4_mi2s_switch_enable;
66static int pri_mi2s_switch_enable;
67static int sec_mi2s_switch_enable;
68static int tert_mi2s_switch_enable;
69static int quat_mi2s_switch_enable;
Rohit Kumara5077932017-09-10 22:05:05 +053070static int quin_mi2s_switch_enable;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053071static int fm_pcmrx_switch_enable;
72static int usb_switch_enable;
73static int lsm_port_index;
74static int slim0_rx_aanc_fb_port;
75static int msm_route_ec_ref_rx;
76static int msm_ec_ref_ch = 4;
77static int msm_ec_ref_bit_format = SNDRV_PCM_FORMAT_S16_LE;
78static int msm_ec_ref_sampling_rate = 48000;
79static uint32_t voc_session_id = ALL_SESSION_VSID;
80static int msm_route_ext_ec_ref;
81static bool is_custom_stereo_on;
82static bool is_ds2_on;
83static bool swap_ch;
84
85#define WEIGHT_0_DB 0x4000
86/* all the FEs which can support channel mixer */
87static struct msm_pcm_channel_mixer channel_mixer[MSM_FRONTEND_DAI_MM_SIZE];
88/* input BE for each FE */
89static int channel_input[MSM_FRONTEND_DAI_MM_SIZE][ADM_MAX_CHANNELS];
90
91enum {
92 MADNONE,
93 MADAUDIO,
94 MADBEACON,
95 MADULTRASOUND,
96 MADSWAUDIO,
97};
98
99#define ADM_LSM_PORT_INDEX 9
100
101#define SLIMBUS_0_TX_TEXT "SLIMBUS_0_TX"
102#define SLIMBUS_1_TX_TEXT "SLIMBUS_1_TX"
103#define SLIMBUS_2_TX_TEXT "SLIMBUS_2_TX"
104#define SLIMBUS_3_TX_TEXT "SLIMBUS_3_TX"
105#define SLIMBUS_4_TX_TEXT "SLIMBUS_4_TX"
106#define SLIMBUS_5_TX_TEXT "SLIMBUS_5_TX"
107#define TERT_MI2S_TX_TEXT "TERT_MI2S_TX"
108#define QUAT_MI2S_TX_TEXT "QUAT_MI2S_TX"
Ashish Jain01b10322018-05-12 15:37:44 +0530109#define PRI_TDM_TX_3_TEXT "PRI_TDM_TX_3"
110#define PRI_TDM_TX_2_TEXT "PRI_TDM_TX_2"
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530111#define ADM_LSM_TX_TEXT "ADM_LSM_TX"
112#define INT3_MI2S_TX_TEXT "INT3_MI2S_TX"
113
114#define LSM_FUNCTION_TEXT "LSM Function"
115static const char * const lsm_port_text[] = {
116 "None",
117 SLIMBUS_0_TX_TEXT, SLIMBUS_1_TX_TEXT, SLIMBUS_2_TX_TEXT,
118 SLIMBUS_3_TX_TEXT, SLIMBUS_4_TX_TEXT, SLIMBUS_5_TX_TEXT,
119 TERT_MI2S_TX_TEXT, QUAT_MI2S_TX_TEXT, ADM_LSM_TX_TEXT,
Ashish Jain01b10322018-05-12 15:37:44 +0530120 INT3_MI2S_TX_TEXT, PRI_TDM_TX_2_TEXT, PRI_TDM_TX_3_TEXT,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530121};
122
123struct msm_pcm_route_bdai_pp_params {
124 u16 port_id; /* AFE port ID */
125 unsigned long pp_params_config;
126 bool mute_on;
127 int latency;
128};
129
130static struct msm_pcm_route_bdai_pp_params
131 msm_bedais_pp_params[MSM_BACKEND_DAI_PP_PARAMS_REQ_MAX] = {
132 {HDMI_RX, 0, 0, 0},
133 {DISPLAY_PORT_RX, 0, 0, 0},
134};
135
136/*
137 * The be_dai_name_table is passed to HAL so that it can specify the
138 * BE ID for the BE it wants to enable based on the name. Thus there
139 * is a matching table and structure in HAL that need to be updated
140 * if any changes to these are made.
141 */
142struct msm_pcm_route_bdai_name {
143 unsigned int be_id;
144 char be_name[LPASS_BE_NAME_MAX_LENGTH];
145};
146static struct msm_pcm_route_bdai_name be_dai_name_table[MSM_BACKEND_DAI_MAX];
147
148static int msm_routing_send_device_pp_params(int port_id, int copp_idx,
149 int fe_id);
150
151static int msm_routing_get_bit_width(unsigned int format)
152{
153 int bit_width;
154
155 switch (format) {
156 case SNDRV_PCM_FORMAT_S32_LE:
157 bit_width = 32;
158 break;
159 case SNDRV_PCM_FORMAT_S24_LE:
160 case SNDRV_PCM_FORMAT_S24_3LE:
161 bit_width = 24;
162 break;
163 case SNDRV_PCM_FORMAT_S16_LE:
164 default:
165 bit_width = 16;
166 }
167 return bit_width;
168}
169
170static bool msm_is_resample_needed(int input_sr, int output_sr)
171{
172 bool rc = false;
173
174 if (input_sr != output_sr)
175 rc = true;
176
177 pr_debug("perform resampling (%s) for copp rate (%d)afe rate (%d)",
178 (rc ? "oh yes" : "not really"),
179 input_sr, output_sr);
180
181 return rc;
182}
183
184static void msm_pcm_routing_cfg_pp(int port_id, int copp_idx, int topology,
185 int channels)
186{
187 int rc = 0;
188
189 switch (topology) {
190 case SRS_TRUMEDIA_TOPOLOGY_ID:
191 pr_debug("%s: SRS_TRUMEDIA_TOPOLOGY_ID\n", __func__);
192 msm_dts_srs_tm_init(port_id, copp_idx);
193 break;
194 case DS2_ADM_COPP_TOPOLOGY_ID:
195 pr_debug("%s: DS2_ADM_COPP_TOPOLOGY %d\n",
196 __func__, DS2_ADM_COPP_TOPOLOGY_ID);
197 rc = msm_ds2_dap_init(port_id, copp_idx, channels,
198 is_custom_stereo_on);
199 if (rc < 0)
200 pr_err("%s: DS2 topo_id 0x%x, port %d, CS %d rc %d\n",
201 __func__, topology, port_id,
202 is_custom_stereo_on, rc);
203 break;
204 case DOLBY_ADM_COPP_TOPOLOGY_ID:
205 if (is_ds2_on) {
206 pr_debug("%s: DS2_ADM_COPP_TOPOLOGY\n", __func__);
207 rc = msm_ds2_dap_init(port_id, copp_idx, channels,
208 is_custom_stereo_on);
209 if (rc < 0)
210 pr_err("%s:DS2 topo_id 0x%x, port %d, rc %d\n",
211 __func__, topology, port_id, rc);
212 } else {
213 pr_debug("%s: DOLBY_ADM_COPP_TOPOLOGY_ID\n", __func__);
214 rc = msm_dolby_dap_init(port_id, copp_idx, channels,
215 is_custom_stereo_on);
216 if (rc < 0)
217 pr_err("%s: DS1 topo_id 0x%x, port %d, rc %d\n",
218 __func__, topology, port_id, rc);
219 }
220 break;
221 case ADM_CMD_COPP_OPEN_TOPOLOGY_ID_AUDIOSPHERE:
222 pr_debug("%s: TOPOLOGY_ID_AUDIOSPHERE\n", __func__);
223 rc = msm_qti_pp_asphere_init(port_id, copp_idx);
224 if (rc < 0)
225 pr_err("%s: topo_id 0x%x, port %d, copp %d, rc %d\n",
226 __func__, topology, port_id, copp_idx, rc);
227 break;
228 default:
229 /* custom topology specific feature param handlers */
230 break;
231 }
232}
233
234static void msm_pcm_routing_deinit_pp(int port_id, int topology)
235{
236 switch (topology) {
237 case SRS_TRUMEDIA_TOPOLOGY_ID:
238 pr_debug("%s: SRS_TRUMEDIA_TOPOLOGY_ID\n", __func__);
239 msm_dts_srs_tm_deinit(port_id);
240 break;
241 case DS2_ADM_COPP_TOPOLOGY_ID:
242 pr_debug("%s: DS2_ADM_COPP_TOPOLOGY_ID %d\n",
243 __func__, DS2_ADM_COPP_TOPOLOGY_ID);
244 msm_ds2_dap_deinit(port_id);
245 break;
246 case DOLBY_ADM_COPP_TOPOLOGY_ID:
247 if (is_ds2_on) {
248 pr_debug("%s: DS2_ADM_COPP_TOPOLOGY_ID\n", __func__);
249 msm_ds2_dap_deinit(port_id);
250 } else {
251 pr_debug("%s: DOLBY_ADM_COPP_TOPOLOGY_ID\n", __func__);
252 msm_dolby_dap_deinit(port_id);
253 }
254 break;
255 case ADM_CMD_COPP_OPEN_TOPOLOGY_ID_AUDIOSPHERE:
256 pr_debug("%s: TOPOLOGY_ID_AUDIOSPHERE\n", __func__);
257 msm_qti_pp_asphere_deinit(port_id);
258 break;
259 default:
260 /* custom topology specific feature deinit handlers */
261 break;
262 }
263}
264
265static void msm_pcm_routng_cfg_matrix_map_pp(struct route_payload payload,
266 int path_type, int perf_mode)
267{
268 int itr = 0, rc = 0;
269
270 if ((path_type == ADM_PATH_PLAYBACK) &&
271 (perf_mode == LEGACY_PCM_MODE) &&
272 is_custom_stereo_on) {
273 for (itr = 0; itr < payload.num_copps; itr++) {
274 if ((payload.port_id[itr] != SLIMBUS_0_RX) &&
275 (payload.port_id[itr] != RT_PROXY_PORT_001_RX)) {
276 continue;
277 }
278
279 rc = msm_qti_pp_send_stereo_to_custom_stereo_cmd(
280 payload.port_id[itr],
281 payload.copp_idx[itr],
282 payload.session_id,
283 Q14_GAIN_ZERO_POINT_FIVE,
284 Q14_GAIN_ZERO_POINT_FIVE,
285 Q14_GAIN_ZERO_POINT_FIVE,
286 Q14_GAIN_ZERO_POINT_FIVE);
287 if (rc < 0)
288 pr_err("%s: err setting custom stereo\n",
289 __func__);
290 }
291 }
292}
293
294#define SLIMBUS_EXTPROC_RX AFE_PORT_INVALID
295struct msm_pcm_routing_bdai_data msm_bedais[MSM_BACKEND_DAI_MAX] = {
296 { PRIMARY_I2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_PRI_I2S_RX},
297 { PRIMARY_I2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_PRI_I2S_TX},
298 { SLIMBUS_0_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_0_RX},
299 { SLIMBUS_0_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_0_TX},
300 { HDMI_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_HDMI},
301 { INT_BT_SCO_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_INT_BT_SCO_RX},
302 { INT_BT_SCO_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_INT_BT_SCO_TX},
303 { INT_FM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_INT_FM_RX},
304 { INT_FM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_INT_FM_TX},
305 { RT_PROXY_PORT_001_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
306 LPASS_BE_AFE_PCM_RX},
307 { RT_PROXY_PORT_001_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
308 LPASS_BE_AFE_PCM_TX},
309 { AFE_PORT_ID_PRIMARY_PCM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
310 LPASS_BE_AUXPCM_RX},
311 { AFE_PORT_ID_PRIMARY_PCM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
312 LPASS_BE_AUXPCM_TX},
313 { VOICE_PLAYBACK_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
314 LPASS_BE_VOICE_PLAYBACK_TX},
315 { VOICE2_PLAYBACK_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
316 LPASS_BE_VOICE2_PLAYBACK_TX},
317 { VOICE_RECORD_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
318 LPASS_BE_INCALL_RECORD_RX},
319 { VOICE_RECORD_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
320 LPASS_BE_INCALL_RECORD_TX},
321 { MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_MI2S_RX},
322 { MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_MI2S_TX},
323 { SECONDARY_I2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SEC_I2S_RX},
324 { SLIMBUS_1_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_1_RX},
325 { SLIMBUS_1_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_1_TX},
326 { SLIMBUS_2_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_2_RX},
327 { SLIMBUS_2_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_2_TX},
328 { SLIMBUS_3_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_3_RX},
329 { SLIMBUS_3_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_3_TX},
330 { SLIMBUS_4_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_4_RX},
331 { SLIMBUS_4_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_4_TX},
332 { SLIMBUS_5_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_5_RX},
333 { SLIMBUS_5_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_5_TX},
334 { SLIMBUS_6_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_6_RX},
335 { SLIMBUS_6_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_6_TX},
336 { SLIMBUS_7_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_7_RX},
337 { SLIMBUS_7_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_7_TX},
338 { SLIMBUS_8_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_8_RX},
339 { SLIMBUS_8_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_8_TX},
340 { SLIMBUS_EXTPROC_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_STUB_RX},
341 { SLIMBUS_EXTPROC_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_STUB_TX},
342 { SLIMBUS_EXTPROC_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_STUB_1_TX},
343 { AFE_PORT_ID_QUATERNARY_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
344 LPASS_BE_QUAT_MI2S_RX},
345 { AFE_PORT_ID_QUATERNARY_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
346 LPASS_BE_QUAT_MI2S_TX},
347 { AFE_PORT_ID_SECONDARY_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
348 LPASS_BE_SEC_MI2S_RX},
349 { AFE_PORT_ID_SECONDARY_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
350 LPASS_BE_SEC_MI2S_TX},
351 { AFE_PORT_ID_PRIMARY_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
352 LPASS_BE_PRI_MI2S_RX},
353 { AFE_PORT_ID_PRIMARY_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
354 LPASS_BE_PRI_MI2S_TX},
355 { AFE_PORT_ID_TERTIARY_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
356 LPASS_BE_TERT_MI2S_RX},
357 { AFE_PORT_ID_TERTIARY_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
358 LPASS_BE_TERT_MI2S_TX},
359 { AUDIO_PORT_ID_I2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
360 LPASS_BE_AUDIO_I2S_RX},
361 { AFE_PORT_ID_SECONDARY_PCM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
362 LPASS_BE_SEC_AUXPCM_RX},
363 { AFE_PORT_ID_SECONDARY_PCM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
364 LPASS_BE_SEC_AUXPCM_TX},
365 { AFE_PORT_ID_SPDIF_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
366 LPASS_BE_SPDIF_RX},
367 { AFE_PORT_ID_SECONDARY_MI2S_RX_SD1, 0, {0}, {0}, 0, 0, 0, 0, {0},
368 LPASS_BE_SEC_MI2S_RX_SD1},
369 { AFE_PORT_ID_QUINARY_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
370 LPASS_BE_QUIN_MI2S_RX},
371 { AFE_PORT_ID_QUINARY_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
372 LPASS_BE_QUIN_MI2S_TX},
373 { AFE_PORT_ID_SENARY_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
374 LPASS_BE_SENARY_MI2S_TX},
375 { AFE_PORT_ID_PRIMARY_TDM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
376 LPASS_BE_PRI_TDM_RX_0},
377 { AFE_PORT_ID_PRIMARY_TDM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
378 LPASS_BE_PRI_TDM_TX_0},
379 { AFE_PORT_ID_PRIMARY_TDM_RX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
380 LPASS_BE_PRI_TDM_RX_1},
381 { AFE_PORT_ID_PRIMARY_TDM_TX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
382 LPASS_BE_PRI_TDM_TX_1},
383 { AFE_PORT_ID_PRIMARY_TDM_RX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
384 LPASS_BE_PRI_TDM_RX_2},
385 { AFE_PORT_ID_PRIMARY_TDM_TX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
386 LPASS_BE_PRI_TDM_TX_2},
387 { AFE_PORT_ID_PRIMARY_TDM_RX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
388 LPASS_BE_PRI_TDM_RX_3},
389 { AFE_PORT_ID_PRIMARY_TDM_TX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
390 LPASS_BE_PRI_TDM_TX_3},
391 { AFE_PORT_ID_PRIMARY_TDM_RX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
392 LPASS_BE_PRI_TDM_RX_4},
393 { AFE_PORT_ID_PRIMARY_TDM_TX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
394 LPASS_BE_PRI_TDM_TX_4},
395 { AFE_PORT_ID_PRIMARY_TDM_RX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
396 LPASS_BE_PRI_TDM_RX_5},
397 { AFE_PORT_ID_PRIMARY_TDM_TX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
398 LPASS_BE_PRI_TDM_TX_5},
399 { AFE_PORT_ID_PRIMARY_TDM_RX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
400 LPASS_BE_PRI_TDM_RX_6},
401 { AFE_PORT_ID_PRIMARY_TDM_TX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
402 LPASS_BE_PRI_TDM_TX_6},
403 { AFE_PORT_ID_PRIMARY_TDM_RX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
404 LPASS_BE_PRI_TDM_RX_7},
405 { AFE_PORT_ID_PRIMARY_TDM_TX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
406 LPASS_BE_PRI_TDM_TX_7},
407 { AFE_PORT_ID_SECONDARY_TDM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
408 LPASS_BE_SEC_TDM_RX_0},
409 { AFE_PORT_ID_SECONDARY_TDM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
410 LPASS_BE_SEC_TDM_TX_0},
411 { AFE_PORT_ID_SECONDARY_TDM_RX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
412 LPASS_BE_SEC_TDM_RX_1},
413 { AFE_PORT_ID_SECONDARY_TDM_TX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
414 LPASS_BE_SEC_TDM_TX_1},
415 { AFE_PORT_ID_SECONDARY_TDM_RX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
416 LPASS_BE_SEC_TDM_RX_2},
417 { AFE_PORT_ID_SECONDARY_TDM_TX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
418 LPASS_BE_SEC_TDM_TX_2},
419 { AFE_PORT_ID_SECONDARY_TDM_RX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
420 LPASS_BE_SEC_TDM_RX_3},
421 { AFE_PORT_ID_SECONDARY_TDM_TX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
422 LPASS_BE_SEC_TDM_TX_3},
423 { AFE_PORT_ID_SECONDARY_TDM_RX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
424 LPASS_BE_SEC_TDM_RX_4},
425 { AFE_PORT_ID_SECONDARY_TDM_TX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
426 LPASS_BE_SEC_TDM_TX_4},
427 { AFE_PORT_ID_SECONDARY_TDM_RX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
428 LPASS_BE_SEC_TDM_RX_5},
429 { AFE_PORT_ID_SECONDARY_TDM_TX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
430 LPASS_BE_SEC_TDM_TX_5},
431 { AFE_PORT_ID_SECONDARY_TDM_RX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
432 LPASS_BE_SEC_TDM_RX_6},
433 { AFE_PORT_ID_SECONDARY_TDM_TX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
434 LPASS_BE_SEC_TDM_TX_6},
435 { AFE_PORT_ID_SECONDARY_TDM_RX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
436 LPASS_BE_SEC_TDM_RX_7},
437 { AFE_PORT_ID_SECONDARY_TDM_TX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
438 LPASS_BE_SEC_TDM_TX_7},
439 { AFE_PORT_ID_TERTIARY_TDM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
440 LPASS_BE_TERT_TDM_RX_0},
441 { AFE_PORT_ID_TERTIARY_TDM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
442 LPASS_BE_TERT_TDM_TX_0},
443 { AFE_PORT_ID_TERTIARY_TDM_RX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
444 LPASS_BE_TERT_TDM_RX_1},
445 { AFE_PORT_ID_TERTIARY_TDM_TX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
446 LPASS_BE_TERT_TDM_TX_1},
447 { AFE_PORT_ID_TERTIARY_TDM_RX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
448 LPASS_BE_TERT_TDM_RX_2},
449 { AFE_PORT_ID_TERTIARY_TDM_TX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
450 LPASS_BE_TERT_TDM_TX_2},
451 { AFE_PORT_ID_TERTIARY_TDM_RX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
452 LPASS_BE_TERT_TDM_RX_3},
453 { AFE_PORT_ID_TERTIARY_TDM_TX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
454 LPASS_BE_TERT_TDM_TX_3},
455 { AFE_PORT_ID_TERTIARY_TDM_RX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
456 LPASS_BE_TERT_TDM_RX_4},
457 { AFE_PORT_ID_TERTIARY_TDM_TX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
458 LPASS_BE_TERT_TDM_TX_4},
459 { AFE_PORT_ID_TERTIARY_TDM_RX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
460 LPASS_BE_TERT_TDM_RX_5},
461 { AFE_PORT_ID_TERTIARY_TDM_TX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
462 LPASS_BE_TERT_TDM_TX_5},
463 { AFE_PORT_ID_TERTIARY_TDM_RX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
464 LPASS_BE_TERT_TDM_RX_6},
465 { AFE_PORT_ID_TERTIARY_TDM_TX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
466 LPASS_BE_TERT_TDM_TX_6},
467 { AFE_PORT_ID_TERTIARY_TDM_RX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
468 LPASS_BE_TERT_TDM_RX_7},
469 { AFE_PORT_ID_TERTIARY_TDM_TX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
470 LPASS_BE_TERT_TDM_TX_7},
471 { AFE_PORT_ID_QUATERNARY_TDM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
472 LPASS_BE_QUAT_TDM_RX_0},
473 { AFE_PORT_ID_QUATERNARY_TDM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
474 LPASS_BE_QUAT_TDM_TX_0},
475 { AFE_PORT_ID_QUATERNARY_TDM_RX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
476 LPASS_BE_QUAT_TDM_RX_1},
477 { AFE_PORT_ID_QUATERNARY_TDM_TX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
478 LPASS_BE_QUAT_TDM_TX_1},
479 { AFE_PORT_ID_QUATERNARY_TDM_RX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
480 LPASS_BE_QUAT_TDM_RX_2},
481 { AFE_PORT_ID_QUATERNARY_TDM_TX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
482 LPASS_BE_QUAT_TDM_TX_2},
483 { AFE_PORT_ID_QUATERNARY_TDM_RX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
484 LPASS_BE_QUAT_TDM_RX_3},
485 { AFE_PORT_ID_QUATERNARY_TDM_TX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
486 LPASS_BE_QUAT_TDM_TX_3},
487 { AFE_PORT_ID_QUATERNARY_TDM_RX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
488 LPASS_BE_QUAT_TDM_RX_4},
489 { AFE_PORT_ID_QUATERNARY_TDM_TX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
490 LPASS_BE_QUAT_TDM_TX_4},
491 { AFE_PORT_ID_QUATERNARY_TDM_RX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
492 LPASS_BE_QUAT_TDM_RX_5},
493 { AFE_PORT_ID_QUATERNARY_TDM_TX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
494 LPASS_BE_QUAT_TDM_TX_5},
495 { AFE_PORT_ID_QUATERNARY_TDM_RX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
496 LPASS_BE_QUAT_TDM_RX_6},
497 { AFE_PORT_ID_QUATERNARY_TDM_TX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
498 LPASS_BE_QUAT_TDM_TX_6},
499 { AFE_PORT_ID_QUATERNARY_TDM_RX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
500 LPASS_BE_QUAT_TDM_RX_7},
501 { AFE_PORT_ID_QUATERNARY_TDM_TX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
502 LPASS_BE_QUAT_TDM_TX_7},
Rohit Kumara5077932017-09-10 22:05:05 +0530503 { AFE_PORT_ID_QUINARY_TDM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
504 LPASS_BE_QUIN_TDM_RX_0},
505 { AFE_PORT_ID_QUINARY_TDM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
506 LPASS_BE_QUIN_TDM_TX_0},
507 { AFE_PORT_ID_QUINARY_TDM_RX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
508 LPASS_BE_QUIN_TDM_RX_1},
509 { AFE_PORT_ID_QUINARY_TDM_TX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
510 LPASS_BE_QUIN_TDM_TX_1},
511 { AFE_PORT_ID_QUINARY_TDM_RX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
512 LPASS_BE_QUIN_TDM_RX_2},
513 { AFE_PORT_ID_QUINARY_TDM_TX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
514 LPASS_BE_QUIN_TDM_TX_2},
515 { AFE_PORT_ID_QUINARY_TDM_RX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
516 LPASS_BE_QUIN_TDM_RX_3},
517 { AFE_PORT_ID_QUINARY_TDM_TX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
518 LPASS_BE_QUIN_TDM_TX_3},
519 { AFE_PORT_ID_QUINARY_TDM_RX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
520 LPASS_BE_QUIN_TDM_RX_4},
521 { AFE_PORT_ID_QUINARY_TDM_TX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
522 LPASS_BE_QUIN_TDM_TX_4},
523 { AFE_PORT_ID_QUINARY_TDM_RX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
524 LPASS_BE_QUIN_TDM_RX_5},
525 { AFE_PORT_ID_QUINARY_TDM_TX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
526 LPASS_BE_QUIN_TDM_TX_5},
527 { AFE_PORT_ID_QUINARY_TDM_RX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
528 LPASS_BE_QUIN_TDM_RX_6},
529 { AFE_PORT_ID_QUINARY_TDM_TX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
530 LPASS_BE_QUIN_TDM_TX_6},
531 { AFE_PORT_ID_QUINARY_TDM_RX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
532 LPASS_BE_QUIN_TDM_RX_7},
533 { AFE_PORT_ID_QUINARY_TDM_TX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
534 LPASS_BE_QUIN_TDM_TX_7},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530535 { INT_BT_A2DP_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
536 LPASS_BE_INT_BT_A2DP_RX},
537 { AFE_PORT_ID_USB_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
538 LPASS_BE_USB_AUDIO_RX},
539 { AFE_PORT_ID_USB_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
540 LPASS_BE_USB_AUDIO_TX},
541 { DISPLAY_PORT_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
542 LPASS_BE_DISPLAY_PORT},
543 { AFE_PORT_ID_TERTIARY_PCM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
544 LPASS_BE_TERT_AUXPCM_RX},
545 { AFE_PORT_ID_TERTIARY_PCM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
546 LPASS_BE_TERT_AUXPCM_TX},
547 { AFE_PORT_ID_QUATERNARY_PCM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
548 LPASS_BE_QUAT_AUXPCM_RX},
549 { AFE_PORT_ID_QUATERNARY_PCM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
550 LPASS_BE_QUAT_AUXPCM_TX},
Rohit Kumara5077932017-09-10 22:05:05 +0530551 { AFE_PORT_ID_QUINARY_PCM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
552 LPASS_BE_QUIN_AUXPCM_RX},
553 { AFE_PORT_ID_QUINARY_PCM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
554 LPASS_BE_QUIN_AUXPCM_TX},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530555 { AFE_PORT_ID_INT0_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
556 LPASS_BE_INT0_MI2S_RX},
557 { AFE_PORT_ID_INT0_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
558 LPASS_BE_INT0_MI2S_TX},
559 { AFE_PORT_ID_INT1_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
560 LPASS_BE_INT1_MI2S_RX},
561 { AFE_PORT_ID_INT1_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
562 LPASS_BE_INT1_MI2S_TX},
563 { AFE_PORT_ID_INT2_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
564 LPASS_BE_INT2_MI2S_RX},
565 { AFE_PORT_ID_INT2_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
566 LPASS_BE_INT2_MI2S_TX},
567 { AFE_PORT_ID_INT3_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
568 LPASS_BE_INT3_MI2S_RX},
569 { AFE_PORT_ID_INT3_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
570 LPASS_BE_INT3_MI2S_TX},
571 { AFE_PORT_ID_INT4_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
572 LPASS_BE_INT4_MI2S_RX},
573 { AFE_PORT_ID_INT4_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
574 LPASS_BE_INT4_MI2S_TX},
575 { AFE_PORT_ID_INT5_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
576 LPASS_BE_INT5_MI2S_RX},
577 { AFE_PORT_ID_INT5_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
578 LPASS_BE_INT5_MI2S_TX},
579 { AFE_PORT_ID_INT6_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
580 LPASS_BE_INT6_MI2S_RX},
581 { AFE_PORT_ID_INT6_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
582 LPASS_BE_INT6_MI2S_TX},
Raja Mallik425e1d32018-05-20 19:21:10 +0530583 { AFE_LOOPBACK_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_AFE_LOOPBACK_TX},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530584};
585
586/* Track ASM playback & capture sessions of DAI
587 * Track LSM listen sessions
588 */
589static struct msm_pcm_routing_fdai_data
590 fe_dai_map[MSM_FRONTEND_DAI_MAX][2] = {
591 /* MULTIMEDIA1 */
592 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
593 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
594 /* MULTIMEDIA2 */
595 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
596 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
597 /* MULTIMEDIA3 */
598 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
599 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
600 /* MULTIMEDIA4 */
601 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
602 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
603 /* MULTIMEDIA5 */
604 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
605 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
606 /* MULTIMEDIA6 */
607 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
608 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
609 /* MULTIMEDIA7*/
610 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
611 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
612 /* MULTIMEDIA8 */
613 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
614 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
615 /* MULTIMEDIA9 */
616 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
617 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
618 /* MULTIMEDIA10 */
619 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
620 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
621 /* MULTIMEDIA11 */
622 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
623 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
624 /* MULTIMEDIA12 */
625 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
626 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
627 /* MULTIMEDIA13 */
628 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
629 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
630 /* MULTIMEDIA14 */
631 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
632 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
633 /* MULTIMEDIA15 */
634 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
635 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
636 /* MULTIMEDIA16 */
637 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
638 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
639 /* MULTIMEDIA17 */
640 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
641 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
642 /* MULTIMEDIA18 */
643 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
644 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
645 /* MULTIMEDIA19 */
646 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
647 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
648 /* MULTIMEDIA20 */
649 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
650 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +0530651 /* MULTIMEDIA28 */
652 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
653 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
654 /* MULTIMEDIA29 */
655 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
656 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530657 /* VOIP */
658 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
659 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
660 /* AFE_RX */
661 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
662 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
663 /* AFE_TX */
664 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
665 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
666 /* VOICE_STUB */
667 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
668 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530669 /* DTMF_RX */
670 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
671 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530672 /* QCHAT */
673 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
674 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
675 /* VOLTE_STUB */
676 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
677 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
678 /* LSM1 */
679 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
680 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
681 /* LSM2 */
682 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
683 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
684 /* LSM3 */
685 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
686 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
687 /* LSM4 */
688 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
689 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
690 /* LSM5 */
691 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
692 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
693 /* LSM6 */
694 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
695 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
696 /* LSM7 */
697 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
698 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
699 /* LSM8 */
700 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
701 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
702 /* VOICE2_STUB */
703 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
704 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530705 /* VOICEMMODE1 */
706 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
707 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
708 /* VOICEMMODE2 */
709 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
710 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
711};
712
713static unsigned long session_copp_map[MSM_FRONTEND_DAI_MAX][2]
714 [MSM_BACKEND_DAI_MAX];
715static struct msm_pcm_routing_app_type_data app_type_cfg[MAX_APP_TYPES];
716static struct msm_pcm_routing_app_type_data lsm_app_type_cfg[MAX_APP_TYPES];
717static struct msm_pcm_stream_app_type_cfg
718 fe_dai_app_type_cfg[MSM_FRONTEND_DAI_MAX][2][MSM_BACKEND_DAI_MAX];
719
720static int last_be_id_configured[MSM_FRONTEND_DAI_MAX][MAX_SESSION_TYPES];
721
722/* The caller of this should aqcuire routing lock */
723void msm_pcm_routing_get_bedai_info(int be_idx,
724 struct msm_pcm_routing_bdai_data *be_dai)
725{
726 if (be_idx >= 0 && be_idx < MSM_BACKEND_DAI_MAX)
727 memcpy(be_dai, &msm_bedais[be_idx],
728 sizeof(struct msm_pcm_routing_bdai_data));
729}
730
731/* The caller of this should aqcuire routing lock */
732void msm_pcm_routing_get_fedai_info(int fe_idx, int sess_type,
733 struct msm_pcm_routing_fdai_data *fe_dai)
734{
735 if ((sess_type == SESSION_TYPE_TX) || (sess_type == SESSION_TYPE_RX))
736 memcpy(fe_dai, &fe_dai_map[fe_idx][sess_type],
737 sizeof(struct msm_pcm_routing_fdai_data));
738}
739
740void msm_pcm_routing_acquire_lock(void)
741{
742 mutex_lock(&routing_lock);
743}
744
745void msm_pcm_routing_release_lock(void)
746{
747 mutex_unlock(&routing_lock);
748}
749
750static int msm_pcm_routing_get_app_type_idx(int app_type)
751{
752 int idx;
753
754 pr_debug("%s: app_type: %d\n", __func__, app_type);
755 for (idx = 0; idx < MAX_APP_TYPES; idx++) {
756 if (app_type_cfg[idx].app_type == app_type)
757 return idx;
758 }
759 pr_info("%s: App type not available, fallback to default\n", __func__);
760 return 0;
761}
762
763static int msm_pcm_routing_get_lsm_app_type_idx(int app_type)
764{
765 int idx;
766
767 pr_debug("%s: app_type: %d\n", __func__, app_type);
768 for (idx = 0; idx < MAX_APP_TYPES; idx++) {
769 if (lsm_app_type_cfg[idx].app_type == app_type)
770 return idx;
771 }
772 pr_debug("%s: App type not available, fallback to default\n", __func__);
773 return 0;
774}
775
776static bool is_mm_lsm_fe_id(int fe_id)
777{
778 bool rc = true;
779
780 if (fe_id > MSM_FRONTEND_DAI_MM_MAX_ID &&
781 ((fe_id < MSM_FRONTEND_DAI_LSM1) ||
782 (fe_id > MSM_FRONTEND_DAI_LSM8))) {
783 rc = false;
784 }
785 return rc;
786}
787
788int msm_pcm_routing_reg_stream_app_type_cfg(
789 int fedai_id, int session_type, int be_id,
790 struct msm_pcm_stream_app_type_cfg *cfg_data)
791{
792 int ret = 0;
793
794 if (cfg_data == NULL) {
795 pr_err("%s: Received NULL pointer for cfg_data\n", __func__);
796 ret = -EINVAL;
797 goto done;
798 }
799
800 pr_debug("%s: fedai_id %d, session_type %d, be_id %d, app_type %d, acdb_dev_id %d, sample_rate %d\n",
801 __func__, fedai_id, session_type, be_id,
802 cfg_data->app_type, cfg_data->acdb_dev_id,
803 cfg_data->sample_rate);
804
805 if (!is_mm_lsm_fe_id(fedai_id)) {
806 pr_err("%s: Invalid machine driver ID %d\n",
807 __func__, fedai_id);
808 ret = -EINVAL;
809 goto done;
810 }
811 if (session_type != SESSION_TYPE_RX &&
812 session_type != SESSION_TYPE_TX) {
813 pr_err("%s: Invalid session type %d\n",
814 __func__, session_type);
815 ret = -EINVAL;
816 goto done;
817 }
818 if (be_id < 0 || be_id >= MSM_BACKEND_DAI_MAX) {
819 pr_err("%s: Received out of bounds be_id %d\n",
820 __func__, be_id);
821 ret = -EINVAL;
822 goto done;
823 }
824
825 fe_dai_app_type_cfg[fedai_id][session_type][be_id] = *cfg_data;
826
827 /*
828 * Store the BE ID of the configuration information set as the latest so
829 * the get mixer control knows what to return.
830 */
831 last_be_id_configured[fedai_id][session_type] = be_id;
832
833done:
834 return ret;
835}
836EXPORT_SYMBOL(msm_pcm_routing_reg_stream_app_type_cfg);
837
838/**
839 * msm_pcm_routing_get_stream_app_type_cfg
840 *
841 * Receives fedai_id, session_type, be_id, and populates app_type,
842 * acdb_dev_id, & sample rate. Returns 0 on success. On failure returns
843 * -EINVAL and does not alter passed values.
844 *
845 * fedai_id - Passed value, front end ID for which app type config is wanted
846 * session_type - Passed value, session type for which app type config
847 * is wanted
848 * be_id - Returned value, back end device id the app type config data is for
849 * cfg_data - Returned value, configuration data used by app type config
850 */
851int msm_pcm_routing_get_stream_app_type_cfg(
852 int fedai_id, int session_type, int *bedai_id,
853 struct msm_pcm_stream_app_type_cfg *cfg_data)
854{
855 int be_id;
856 int ret = 0;
857
858 if (bedai_id == NULL) {
859 pr_err("%s: Received NULL pointer for backend ID\n", __func__);
860 ret = -EINVAL;
861 goto done;
862 } else if (cfg_data == NULL) {
863 pr_err("%s: NULL pointer sent for cfg_data\n", __func__);
864 ret = -EINVAL;
865 goto done;
866 } else if (!is_mm_lsm_fe_id(fedai_id)) {
867 pr_err("%s: Invalid FE ID %d\n", __func__, fedai_id);
868 ret = -EINVAL;
869 goto done;
870 } else if (session_type != SESSION_TYPE_RX &&
871 session_type != SESSION_TYPE_TX) {
872 pr_err("%s: Invalid session type %d\n", __func__, session_type);
873 ret = -EINVAL;
874 goto done;
875 }
876
877 be_id = last_be_id_configured[fedai_id][session_type];
878 if (be_id < 0 || be_id >= MSM_BACKEND_DAI_MAX) {
879 pr_err("%s: Invalid BE ID %d\n", __func__, be_id);
880 ret = -EINVAL;
881 goto done;
882 }
883
884 *bedai_id = be_id;
885 *cfg_data = fe_dai_app_type_cfg[fedai_id][session_type][be_id];
886 pr_debug("%s: fedai_id %d, session_type %d, be_id %d, app_type %d, acdb_dev_id %d, sample_rate %d\n",
887 __func__, fedai_id, session_type, *bedai_id,
888 cfg_data->app_type, cfg_data->acdb_dev_id,
889 cfg_data->sample_rate);
890done:
891 return ret;
892}
893EXPORT_SYMBOL(msm_pcm_routing_get_stream_app_type_cfg);
894
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530895static struct cal_block_data *msm_routing_find_topology_by_path(int path,
896 int cal_index)
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530897{
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530898 struct list_head *ptr, *next;
899 struct cal_block_data *cal_block = NULL;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530900 pr_debug("%s\n", __func__);
901
902 list_for_each_safe(ptr, next,
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530903 &cal_data[cal_index]->cal_blocks) {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530904
905 cal_block = list_entry(ptr,
906 struct cal_block_data, list);
907
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530908 if (((struct audio_cal_info_adm_top *)cal_block
909 ->cal_info)->path == path) {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530910 return cal_block;
911 }
912 }
913 pr_debug("%s: Can't find topology for path %d\n", __func__, path);
914 return NULL;
915}
916
917static struct cal_block_data *msm_routing_find_topology(int path,
918 int app_type,
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530919 int acdb_id,
Haynes Mathew Georged3af1eb2018-06-08 17:26:24 -0700920 int cal_index,
921 bool exact)
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530922{
923 struct list_head *ptr, *next;
924 struct cal_block_data *cal_block = NULL;
925 struct audio_cal_info_adm_top *cal_info;
926
927 pr_debug("%s\n", __func__);
928
929 list_for_each_safe(ptr, next,
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530930 &cal_data[cal_index]->cal_blocks) {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530931
932 cal_block = list_entry(ptr,
933 struct cal_block_data, list);
934
935 cal_info = (struct audio_cal_info_adm_top *)
936 cal_block->cal_info;
937 if ((cal_info->path == path) &&
938 (cal_info->app_type == app_type) &&
939 (cal_info->acdb_id == acdb_id)) {
940 return cal_block;
941 }
942 }
Haynes Mathew Georged3af1eb2018-06-08 17:26:24 -0700943 pr_debug("%s: Can't find topology for path %d, app %d, "
944 "acdb_id %d %s\n", __func__, path, app_type, acdb_id,
945 exact ? "fail" : "defaulting to search by path");
946 return exact ? NULL : msm_routing_find_topology_by_path(path,
947 cal_index);
948}
949
950static int msm_routing_find_topology_on_index(int session_type, int app_type,
951 int acdb_dev_id, int idx,
952 bool exact)
953{
954 int topology = -EINVAL;
955 struct cal_block_data *cal_block = NULL;
956
957 mutex_lock(&cal_data[idx]->lock);
958 cal_block = msm_routing_find_topology(session_type, app_type,
959 acdb_dev_id, idx, exact);
960 if (cal_block != NULL) {
961 topology = ((struct audio_cal_info_adm_top *)
962 cal_block->cal_info)->topology;
963 }
964 mutex_unlock(&cal_data[idx]->lock);
965 return topology;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530966}
967
968static int msm_routing_get_adm_topology(int fedai_id, int session_type,
969 int be_id)
970{
971 int topology = NULL_COPP_TOPOLOGY;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530972 int app_type = 0, acdb_dev_id = 0;
973
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530974 pr_debug("%s: fedai_id %d, session_type %d, be_id %d\n",
975 __func__, fedai_id, session_type, be_id);
976
977 if (cal_data == NULL)
978 goto done;
979
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530980 app_type = fe_dai_app_type_cfg[fedai_id][session_type][be_id].app_type;
981 acdb_dev_id =
982 fe_dai_app_type_cfg[fedai_id][session_type][be_id].acdb_dev_id;
Haynes Mathew Georged3af1eb2018-06-08 17:26:24 -0700983 pr_debug("%s: Check for exact LSM topology\n", __func__);
984 topology = msm_routing_find_topology_on_index(session_type,
985 app_type,
986 acdb_dev_id,
987 ADM_LSM_TOPOLOGY_CAL_TYPE_IDX,
988 true /*exact*/);
989 if (topology < 0) {
990 pr_debug("%s: Check for compatible topology\n", __func__);
991 topology = msm_routing_find_topology_on_index(session_type,
992 app_type,
993 acdb_dev_id,
994 ADM_TOPOLOGY_CAL_TYPE_IDX,
995 false /*exact*/);
996 if (topology < 0)
997 topology = NULL_COPP_TOPOLOGY;
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530998 }
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530999done:
1000 pr_debug("%s: Using topology %d\n", __func__, topology);
1001 return topology;
1002}
1003
1004static uint8_t is_be_dai_extproc(int be_dai)
1005{
1006 if (be_dai == MSM_BACKEND_DAI_EXTPROC_RX ||
1007 be_dai == MSM_BACKEND_DAI_EXTPROC_TX ||
1008 be_dai == MSM_BACKEND_DAI_EXTPROC_EC_TX)
1009 return 1;
1010 else
1011 return 0;
1012}
1013
1014static void msm_pcm_routing_build_matrix(int fedai_id, int sess_type,
1015 int path_type, int perf_mode,
1016 uint32_t passthr_mode)
1017{
1018 int i, port_type, j, num_copps = 0;
1019 struct route_payload payload;
1020
1021 port_type = ((path_type == ADM_PATH_PLAYBACK ||
1022 path_type == ADM_PATH_COMPRESSED_RX) ?
1023 MSM_AFE_PORT_TYPE_RX : MSM_AFE_PORT_TYPE_TX);
1024
1025 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
1026 if (!is_be_dai_extproc(i) &&
1027 (afe_get_port_type(msm_bedais[i].port_id) == port_type) &&
1028 (msm_bedais[i].active) &&
1029 (test_bit(fedai_id, &msm_bedais[i].fe_sessions[0]))) {
1030 for (j = 0; j < MAX_COPPS_PER_PORT; j++) {
1031 unsigned long copp =
1032 session_copp_map[fedai_id][sess_type][i];
1033 if (test_bit(j, &copp)) {
1034 payload.port_id[num_copps] =
1035 msm_bedais[i].port_id;
1036 payload.copp_idx[num_copps] = j;
1037 payload.app_type[num_copps] =
1038 fe_dai_app_type_cfg
1039 [fedai_id][sess_type][i]
1040 .app_type;
1041 payload.acdb_dev_id[num_copps] =
1042 fe_dai_app_type_cfg
1043 [fedai_id][sess_type][i]
1044 .acdb_dev_id;
1045 payload.sample_rate[num_copps] =
1046 fe_dai_app_type_cfg
1047 [fedai_id][sess_type][i]
1048 .sample_rate;
1049 num_copps++;
1050 }
1051 }
1052 }
1053 }
1054
1055 if (num_copps) {
1056 payload.num_copps = num_copps;
1057 payload.session_id = fe_dai_map[fedai_id][sess_type].strm_id;
1058 adm_matrix_map(path_type, payload, perf_mode, passthr_mode);
1059 msm_pcm_routng_cfg_matrix_map_pp(payload, path_type, perf_mode);
1060 }
1061}
1062
1063void msm_pcm_routing_reg_psthr_stream(int fedai_id, int dspst_id,
1064 int stream_type)
1065{
1066 int i, session_type, path_type, port_type;
1067 u32 mode = 0;
1068
1069 if (fedai_id > MSM_FRONTEND_DAI_MM_MAX_ID) {
1070 /* bad ID assigned in machine driver */
1071 pr_err("%s: bad MM ID\n", __func__);
1072 return;
1073 }
1074
1075 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK) {
1076 session_type = SESSION_TYPE_RX;
1077 path_type = ADM_PATH_PLAYBACK;
1078 port_type = MSM_AFE_PORT_TYPE_RX;
1079 } else {
1080 session_type = SESSION_TYPE_TX;
1081 path_type = ADM_PATH_LIVE_REC;
1082 port_type = MSM_AFE_PORT_TYPE_TX;
1083 }
1084
1085 mutex_lock(&routing_lock);
1086
1087 fe_dai_map[fedai_id][session_type].strm_id = dspst_id;
1088 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
1089 if (!is_be_dai_extproc(i) &&
1090 (afe_get_port_type(msm_bedais[i].port_id) == port_type) &&
1091 (msm_bedais[i].active) &&
1092 (test_bit(fedai_id, &msm_bedais[i].fe_sessions[0]))) {
1093 mode = afe_get_port_type(msm_bedais[i].port_id);
1094 adm_connect_afe_port(mode, dspst_id,
1095 msm_bedais[i].port_id);
1096 break;
1097 }
1098 }
1099 mutex_unlock(&routing_lock);
1100}
1101
1102static bool route_check_fe_id_adm_support(int fe_id)
1103{
1104 bool rc = true;
1105
1106 if ((fe_id >= MSM_FRONTEND_DAI_LSM1) &&
1107 (fe_id <= MSM_FRONTEND_DAI_LSM8)) {
1108 /* fe id is listen while port is set to afe */
1109 if (lsm_port_index != ADM_LSM_PORT_INDEX) {
1110 pr_debug("%s: fe_id %d, lsm mux slim port %d\n",
1111 __func__, fe_id, lsm_port_index);
1112 rc = false;
1113 }
1114 }
1115
1116 return rc;
1117}
1118
1119int msm_pcm_routing_reg_phy_compr_stream(int fe_id, int perf_mode,
1120 int dspst_id, int stream_type,
1121 uint32_t passthr_mode)
1122{
1123 int i, j, session_type, path_type, port_type, topology;
1124 int num_copps = 0;
1125 struct route_payload payload;
1126 u32 channels, sample_rate;
1127 u16 bit_width = 16;
1128 bool is_lsm;
1129
1130 pr_debug("%s:fe_id[%d] perf_mode[%d] id[%d] stream_type[%d] passt[%d]",
1131 __func__, fe_id, perf_mode, dspst_id,
1132 stream_type, passthr_mode);
1133 if (!is_mm_lsm_fe_id(fe_id)) {
1134 /* bad ID assigned in machine driver */
1135 pr_err("%s: bad MM ID %d\n", __func__, fe_id);
1136 return -EINVAL;
1137 }
1138
1139 if (!route_check_fe_id_adm_support(fe_id)) {
1140 /* ignore adm open if not supported for fe_id */
1141 pr_debug("%s: No ADM support for fe id %d\n", __func__, fe_id);
1142 return 0;
1143 }
1144
1145 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK) {
1146 session_type = SESSION_TYPE_RX;
1147 if (passthr_mode != LEGACY_PCM)
1148 path_type = ADM_PATH_COMPRESSED_RX;
1149 else
1150 path_type = ADM_PATH_PLAYBACK;
1151 port_type = MSM_AFE_PORT_TYPE_RX;
1152 } else if (stream_type == SNDRV_PCM_STREAM_CAPTURE) {
1153 session_type = SESSION_TYPE_TX;
Laxminath Kasam38070be2017-08-17 18:21:59 +05301154 if ((passthr_mode != LEGACY_PCM) && (passthr_mode != LISTEN))
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301155 path_type = ADM_PATH_COMPRESSED_TX;
1156 else
1157 path_type = ADM_PATH_LIVE_REC;
1158 port_type = MSM_AFE_PORT_TYPE_TX;
1159 } else {
1160 pr_err("%s: invalid stream type %d\n", __func__, stream_type);
1161 return -EINVAL;
1162 }
1163
1164 is_lsm = (fe_id >= MSM_FRONTEND_DAI_LSM1) &&
1165 (fe_id <= MSM_FRONTEND_DAI_LSM8);
1166 mutex_lock(&routing_lock);
1167
1168 payload.num_copps = 0; /* only RX needs to use payload */
1169 fe_dai_map[fe_id][session_type].strm_id = dspst_id;
1170 /* re-enable EQ if active */
1171 msm_qti_pp_send_eq_values(fe_id);
1172 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
1173 if (test_bit(fe_id, &msm_bedais[i].fe_sessions[0]))
1174 msm_bedais[i].passthr_mode[fe_id] = passthr_mode;
1175
1176 if (!is_be_dai_extproc(i) &&
1177 (afe_get_port_type(msm_bedais[i].port_id) ==
1178 port_type) &&
1179 (msm_bedais[i].active) &&
1180 (test_bit(fe_id, &msm_bedais[i].fe_sessions[0]))) {
1181 int app_type, app_type_idx, copp_idx, acdb_dev_id;
1182
1183 /*
1184 * check if ADM needs to be configured with different
1185 * channel mapping than backend
1186 */
1187 if (!msm_bedais[i].adm_override_ch)
1188 channels = msm_bedais[i].channel;
1189 else
1190 channels = msm_bedais[i].adm_override_ch;
1191
1192 bit_width = msm_routing_get_bit_width(
1193 msm_bedais[i].format);
1194 app_type =
1195 fe_dai_app_type_cfg[fe_id][session_type][i].app_type;
1196 if (app_type && is_lsm) {
1197 app_type_idx =
1198 msm_pcm_routing_get_lsm_app_type_idx(app_type);
1199 sample_rate =
1200 fe_dai_app_type_cfg[fe_id][session_type][i]
1201 .sample_rate;
1202 bit_width =
1203 lsm_app_type_cfg[app_type_idx].bit_width;
1204 } else if (app_type) {
1205 app_type_idx =
1206 msm_pcm_routing_get_app_type_idx(
1207 app_type);
1208 sample_rate =
1209 fe_dai_app_type_cfg[fe_id][session_type][i].sample_rate;
1210 bit_width =
1211 app_type_cfg[app_type_idx].bit_width;
1212 } else {
1213 sample_rate = msm_bedais[i].sample_rate;
1214 }
1215 acdb_dev_id =
1216 fe_dai_app_type_cfg[fe_id][session_type][i].acdb_dev_id;
1217 topology = msm_routing_get_adm_topology(fe_id,
1218 session_type,
1219 i);
1220 if ((passthr_mode == COMPRESSED_PASSTHROUGH_DSD)
1221 || (passthr_mode ==
1222 COMPRESSED_PASSTHROUGH_GEN))
1223 topology = COMPRESSED_PASSTHROUGH_NONE_TOPOLOGY;
1224 pr_debug("%s: Before adm open topology %d\n", __func__,
1225 topology);
1226
1227 copp_idx =
1228 adm_open(msm_bedais[i].port_id,
1229 path_type, sample_rate, channels,
1230 topology, perf_mode, bit_width,
1231 app_type, acdb_dev_id);
1232 if ((copp_idx < 0) ||
1233 (copp_idx >= MAX_COPPS_PER_PORT)) {
1234 pr_err("%s:adm open failed coppid:%d\n",
1235 __func__, copp_idx);
1236 mutex_unlock(&routing_lock);
1237 return -EINVAL;
1238 }
1239 pr_debug("%s: set idx bit of fe:%d, type: %d, be:%d\n",
1240 __func__, fe_id, session_type, i);
1241 set_bit(copp_idx,
1242 &session_copp_map[fe_id][session_type][i]);
1243
1244 if (msm_is_resample_needed(
1245 sample_rate,
1246 msm_bedais[i].sample_rate))
1247 adm_copp_mfc_cfg(
1248 msm_bedais[i].port_id, copp_idx,
1249 msm_bedais[i].sample_rate);
1250
1251 for (j = 0; j < MAX_COPPS_PER_PORT; j++) {
1252 unsigned long copp =
1253 session_copp_map[fe_id][session_type][i];
1254 if (test_bit(j, &copp)) {
1255 payload.port_id[num_copps] =
1256 msm_bedais[i].port_id;
1257 payload.copp_idx[num_copps] = j;
1258 payload.app_type[num_copps] =
1259 fe_dai_app_type_cfg
1260 [fe_id][session_type][i]
1261 .app_type;
1262 payload.acdb_dev_id[num_copps] =
1263 fe_dai_app_type_cfg
1264 [fe_id][session_type][i]
1265 .acdb_dev_id;
1266 payload.sample_rate[num_copps] =
1267 fe_dai_app_type_cfg
1268 [fe_id][session_type][i]
1269 .sample_rate;
1270 num_copps++;
1271 }
1272 }
1273 if (passthr_mode != COMPRESSED_PASSTHROUGH_DSD
1274 && passthr_mode !=
1275 COMPRESSED_PASSTHROUGH_GEN) {
1276 msm_routing_send_device_pp_params(
1277 msm_bedais[i].port_id,
1278 copp_idx, fe_id);
1279 }
1280 }
1281 }
1282 if (num_copps) {
1283 payload.num_copps = num_copps;
1284 payload.session_id = fe_dai_map[fe_id][session_type].strm_id;
1285 adm_matrix_map(path_type, payload, perf_mode, passthr_mode);
1286 msm_pcm_routng_cfg_matrix_map_pp(payload, path_type, perf_mode);
1287 }
1288 mutex_unlock(&routing_lock);
1289 return 0;
1290}
1291
1292static u32 msm_pcm_routing_get_voc_sessionid(u16 val)
1293{
1294 u32 session_id;
1295
1296 switch (val) {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301297 case MSM_FRONTEND_DAI_QCHAT:
1298 session_id = voc_get_session_id(QCHAT_SESSION_NAME);
1299 break;
1300 case MSM_FRONTEND_DAI_VOIP:
1301 session_id = voc_get_session_id(VOIP_SESSION_NAME);
1302 break;
1303 case MSM_FRONTEND_DAI_VOICEMMODE1:
1304 session_id = voc_get_session_id(VOICEMMODE1_NAME);
1305 break;
1306 case MSM_FRONTEND_DAI_VOICEMMODE2:
1307 session_id = voc_get_session_id(VOICEMMODE2_NAME);
1308 break;
1309 default:
1310 session_id = 0;
1311 }
1312
1313 pr_debug("%s session_id 0x%x", __func__, session_id);
1314 return session_id;
1315}
1316
1317static int msm_pcm_routing_channel_mixer(int fe_id, bool perf_mode,
1318 int dspst_id, int stream_type)
1319{
1320 int copp_idx = 0;
1321 int sess_type = 0;
1322 int i = 0, j = 0, be_id;
1323 int ret = 0;
1324
1325 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
1326 pr_err("%s: invalid FE %d\n", __func__, fe_id);
1327 return 0;
1328 }
1329
1330 if (!(channel_mixer[fe_id].enable)) {
1331 pr_debug("%s: channel mixer not enabled for FE %d\n",
1332 __func__, fe_id);
1333 return 0;
1334 }
1335
1336 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK)
1337 sess_type = SESSION_TYPE_RX;
1338 else
1339 sess_type = SESSION_TYPE_TX;
1340
1341 for (i = 0; i < ADM_MAX_CHANNELS && channel_input[fe_id][i] > 0;
1342 ++i) {
1343 be_id = channel_input[fe_id][i] - 1;
1344 channel_mixer[fe_id].input_channels[i] =
1345 msm_bedais[be_id].channel;
1346
1347 if ((msm_bedais[be_id].active) &&
1348 test_bit(fe_id,
1349 &msm_bedais[be_id].fe_sessions[0])) {
1350 unsigned long copp =
1351 session_copp_map[fe_id][sess_type][be_id];
1352 for (j = 0; j < MAX_COPPS_PER_PORT; j++) {
1353 if (test_bit(j, &copp)) {
1354 copp_idx = j;
1355 break;
1356 }
1357 }
1358
1359 pr_debug("%s: fe %d, be %d, channel %d, copp %d\n",
1360 __func__,
1361 fe_id, be_id, msm_bedais[be_id].channel,
1362 copp_idx);
1363 ret = adm_programable_channel_mixer(
1364 msm_bedais[be_id].port_id,
1365 copp_idx, dspst_id, sess_type,
1366 channel_mixer + fe_id, i);
1367 }
1368 }
1369
1370 return ret;
1371}
1372
1373int msm_pcm_routing_reg_phy_stream(int fedai_id, int perf_mode,
1374 int dspst_id, int stream_type)
1375{
1376 int i, j, session_type, path_type, port_type, topology, num_copps = 0;
1377 struct route_payload payload;
1378 u32 channels, sample_rate;
1379 uint16_t bits_per_sample = 16;
1380 uint32_t passthr_mode = LEGACY_PCM;
1381 int ret = 0;
1382
1383 if (fedai_id > MSM_FRONTEND_DAI_MM_MAX_ID) {
1384 /* bad ID assigned in machine driver */
1385 pr_err("%s: bad MM ID %d\n", __func__, fedai_id);
1386 return -EINVAL;
1387 }
1388
1389 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK) {
1390 session_type = SESSION_TYPE_RX;
1391 path_type = ADM_PATH_PLAYBACK;
1392 port_type = MSM_AFE_PORT_TYPE_RX;
1393 } else {
1394 session_type = SESSION_TYPE_TX;
1395 path_type = ADM_PATH_LIVE_REC;
1396 port_type = MSM_AFE_PORT_TYPE_TX;
1397 }
1398
1399 mutex_lock(&routing_lock);
1400
1401 payload.num_copps = 0; /* only RX needs to use payload */
1402 fe_dai_map[fedai_id][session_type].strm_id = dspst_id;
1403 fe_dai_map[fedai_id][session_type].perf_mode = perf_mode;
1404
1405 /* re-enable EQ if active */
1406 msm_qti_pp_send_eq_values(fedai_id);
1407 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
1408 if (!is_be_dai_extproc(i) &&
1409 (afe_get_port_type(msm_bedais[i].port_id) == port_type) &&
1410 (msm_bedais[i].active) &&
1411 (test_bit(fedai_id, &msm_bedais[i].fe_sessions[0]))) {
1412 int app_type, app_type_idx, copp_idx, acdb_dev_id;
1413 /*
1414 * check if ADM needs to be configured with different
1415 * channel mapping than backend
1416 */
1417 if (!msm_bedais[i].adm_override_ch)
1418 channels = msm_bedais[i].channel;
1419 else
1420 channels = msm_bedais[i].adm_override_ch;
1421 msm_bedais[i].passthr_mode[fedai_id] =
1422 LEGACY_PCM;
1423
1424 bits_per_sample = msm_routing_get_bit_width(
1425 msm_bedais[i].format);
1426
1427 app_type =
1428 fe_dai_app_type_cfg[fedai_id][session_type][i].app_type;
1429 if (app_type) {
1430 app_type_idx =
1431 msm_pcm_routing_get_app_type_idx(app_type);
1432 sample_rate =
1433 fe_dai_app_type_cfg[fedai_id][session_type][i]
1434 .sample_rate;
1435 bits_per_sample =
1436 app_type_cfg[app_type_idx].bit_width;
1437 } else
1438 sample_rate = msm_bedais[i].sample_rate;
1439
1440 acdb_dev_id =
1441 fe_dai_app_type_cfg[fedai_id][session_type][i]
1442 .acdb_dev_id;
1443 topology = msm_routing_get_adm_topology(fedai_id,
1444 session_type,
1445 i);
1446 copp_idx = adm_open(msm_bedais[i].port_id, path_type,
1447 sample_rate, channels, topology,
1448 perf_mode, bits_per_sample,
1449 app_type, acdb_dev_id);
1450 if ((copp_idx < 0) ||
1451 (copp_idx >= MAX_COPPS_PER_PORT)) {
1452 pr_err("%s: adm open failed copp_idx:%d\n",
1453 __func__, copp_idx);
1454 mutex_unlock(&routing_lock);
1455 return -EINVAL;
1456 }
1457 pr_debug("%s: setting idx bit of fe:%d, type: %d, be:%d\n",
1458 __func__, fedai_id, session_type, i);
1459 set_bit(copp_idx,
1460 &session_copp_map[fedai_id][session_type][i]);
1461
1462 if (msm_is_resample_needed(
1463 sample_rate,
1464 msm_bedais[i].sample_rate))
1465 adm_copp_mfc_cfg(
1466 msm_bedais[i].port_id, copp_idx,
1467 msm_bedais[i].sample_rate);
1468
1469 for (j = 0; j < MAX_COPPS_PER_PORT; j++) {
1470 unsigned long copp =
1471 session_copp_map[fedai_id][session_type][i];
1472 if (test_bit(j, &copp)) {
1473 payload.port_id[num_copps] =
1474 msm_bedais[i].port_id;
1475 payload.copp_idx[num_copps] = j;
1476 payload.app_type[num_copps] =
1477 fe_dai_app_type_cfg
1478 [fedai_id][session_type]
1479 [i].app_type;
1480 payload.acdb_dev_id[num_copps] =
1481 fe_dai_app_type_cfg
1482 [fedai_id][session_type]
1483 [i].acdb_dev_id;
1484 payload.sample_rate[num_copps] =
1485 fe_dai_app_type_cfg
1486 [fedai_id][session_type]
1487 [i].sample_rate;
1488 num_copps++;
1489 }
1490 }
1491 if ((perf_mode == LEGACY_PCM_MODE) &&
1492 (msm_bedais[i].passthr_mode[fedai_id] ==
1493 LEGACY_PCM))
1494 msm_pcm_routing_cfg_pp(msm_bedais[i].port_id,
1495 copp_idx, topology,
1496 channels);
1497 }
1498 }
1499 if (num_copps) {
1500 payload.num_copps = num_copps;
1501 payload.session_id = fe_dai_map[fedai_id][session_type].strm_id;
1502 adm_matrix_map(path_type, payload, perf_mode, passthr_mode);
1503 msm_pcm_routng_cfg_matrix_map_pp(payload, path_type, perf_mode);
1504 }
1505
1506 ret = msm_pcm_routing_channel_mixer(fedai_id, perf_mode,
1507 dspst_id, stream_type);
1508 mutex_unlock(&routing_lock);
1509 return ret;
1510}
1511
1512int msm_pcm_routing_reg_phy_stream_v2(int fedai_id, int perf_mode,
1513 int dspst_id, int stream_type,
1514 struct msm_pcm_routing_evt event_info)
1515{
1516 if (msm_pcm_routing_reg_phy_stream(fedai_id, perf_mode, dspst_id,
1517 stream_type)) {
1518 pr_err("%s: failed to reg phy stream\n", __func__);
1519 return -EINVAL;
1520 }
1521
1522 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK)
1523 fe_dai_map[fedai_id][SESSION_TYPE_RX].event_info = event_info;
1524 else
1525 fe_dai_map[fedai_id][SESSION_TYPE_TX].event_info = event_info;
1526 return 0;
1527}
1528
1529void msm_pcm_routing_dereg_phy_stream(int fedai_id, int stream_type)
1530{
1531 int i, port_type, session_type, path_type, topology;
1532 struct msm_pcm_routing_fdai_data *fdai;
1533
1534 if (!is_mm_lsm_fe_id(fedai_id)) {
1535 /* bad ID assigned in machine driver */
1536 pr_err("%s: bad MM ID\n", __func__);
1537 return;
1538 }
1539
1540 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK) {
1541 port_type = MSM_AFE_PORT_TYPE_RX;
1542 session_type = SESSION_TYPE_RX;
1543 path_type = ADM_PATH_PLAYBACK;
1544 } else {
1545 port_type = MSM_AFE_PORT_TYPE_TX;
1546 session_type = SESSION_TYPE_TX;
1547 path_type = ADM_PATH_LIVE_REC;
1548 }
1549
1550 mutex_lock(&routing_lock);
1551 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
1552 if (!is_be_dai_extproc(i) &&
1553 (afe_get_port_type(msm_bedais[i].port_id) == port_type) &&
1554 (msm_bedais[i].active) &&
1555 (test_bit(fedai_id, &msm_bedais[i].fe_sessions[0]))) {
1556 int idx;
1557 unsigned long copp =
1558 session_copp_map[fedai_id][session_type][i];
1559 fdai = &fe_dai_map[fedai_id][session_type];
1560
1561 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++)
1562 if (test_bit(idx, &copp))
1563 break;
1564
1565 if (idx >= MAX_COPPS_PER_PORT || idx < 0) {
1566 pr_debug("%s: copp idx is invalid, exiting\n",
1567 __func__);
1568 continue;
1569 }
1570 topology = adm_get_topology_for_port_copp_idx(
1571 msm_bedais[i].port_id, idx);
1572 adm_close(msm_bedais[i].port_id, fdai->perf_mode, idx);
1573 pr_debug("%s:copp:%ld,idx bit fe:%d,type:%d,be:%d\n",
1574 __func__, copp, fedai_id, session_type, i);
1575 clear_bit(idx,
1576 &session_copp_map[fedai_id][session_type][i]);
1577 if ((topology == DOLBY_ADM_COPP_TOPOLOGY_ID ||
1578 topology == DS2_ADM_COPP_TOPOLOGY_ID) &&
1579 (fdai->perf_mode == LEGACY_PCM_MODE) &&
1580 (msm_bedais[i].passthr_mode[fedai_id] ==
1581 LEGACY_PCM))
1582 msm_pcm_routing_deinit_pp(msm_bedais[i].port_id,
1583 topology);
1584 }
1585 }
1586
1587 fe_dai_map[fedai_id][session_type].strm_id = INVALID_SESSION;
1588 fe_dai_map[fedai_id][session_type].be_srate = 0;
1589 mutex_unlock(&routing_lock);
1590}
1591
1592/* Check if FE/BE route is set */
1593static bool msm_pcm_routing_route_is_set(u16 be_id, u16 fe_id)
1594{
1595 bool rc = false;
1596
1597 if (!is_mm_lsm_fe_id(fe_id)) {
1598 /* recheck FE ID in the mixer control defined in this file */
1599 pr_err("%s: bad MM ID\n", __func__);
1600 return rc;
1601 }
1602
1603 if (test_bit(fe_id, &msm_bedais[be_id].fe_sessions[0]))
1604 rc = true;
1605
1606 return rc;
1607}
1608
1609static void msm_pcm_routing_process_audio(u16 reg, u16 val, int set)
1610{
1611 int session_type, path_type, topology;
1612 u32 channels, sample_rate;
1613 uint16_t bits_per_sample = 16;
1614 struct msm_pcm_routing_fdai_data *fdai;
1615 uint32_t passthr_mode;
1616 bool is_lsm;
1617
1618 pr_debug("%s: reg %x val %x set %x\n", __func__, reg, val, set);
1619
1620 if (!is_mm_lsm_fe_id(val)) {
1621 /* recheck FE ID in the mixer control defined in this file */
1622 pr_err("%s: bad MM ID\n", __func__);
1623 return;
1624 }
1625
1626 if (!route_check_fe_id_adm_support(val)) {
1627 /* ignore adm open if not supported for fe_id */
1628 pr_debug("%s: No ADM support for fe id %d\n", __func__, val);
1629 return;
1630 }
1631
1632 passthr_mode = msm_bedais[reg].passthr_mode[val];
1633 if (afe_get_port_type(msm_bedais[reg].port_id) ==
1634 MSM_AFE_PORT_TYPE_RX) {
1635 session_type = SESSION_TYPE_RX;
1636 if (passthr_mode != LEGACY_PCM)
1637 path_type = ADM_PATH_COMPRESSED_RX;
1638 else
1639 path_type = ADM_PATH_PLAYBACK;
1640 } else {
1641 session_type = SESSION_TYPE_TX;
Haynes Mathew George9a277722018-01-29 17:34:49 -08001642 if ((passthr_mode != LEGACY_PCM) && (passthr_mode != LISTEN))
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301643 path_type = ADM_PATH_COMPRESSED_TX;
1644 else
1645 path_type = ADM_PATH_LIVE_REC;
1646 }
1647 is_lsm = (val >= MSM_FRONTEND_DAI_LSM1) &&
1648 (val <= MSM_FRONTEND_DAI_LSM8);
1649
1650 mutex_lock(&routing_lock);
1651 if (set) {
1652 if (!test_bit(val, &msm_bedais[reg].fe_sessions[0]) &&
1653 ((msm_bedais[reg].port_id == VOICE_PLAYBACK_TX) ||
1654 (msm_bedais[reg].port_id == VOICE2_PLAYBACK_TX)))
1655 voc_start_playback(set, msm_bedais[reg].port_id);
1656
1657 set_bit(val, &msm_bedais[reg].fe_sessions[0]);
1658 fdai = &fe_dai_map[val][session_type];
1659 if (msm_bedais[reg].active && fdai->strm_id !=
1660 INVALID_SESSION) {
1661 int app_type, app_type_idx, copp_idx, acdb_dev_id;
1662 /*
1663 * check if ADM needs to be configured with different
1664 * channel mapping than backend
1665 */
1666 if (!msm_bedais[reg].adm_override_ch)
1667 channels = msm_bedais[reg].channel;
1668 else
1669 channels = msm_bedais[reg].adm_override_ch;
1670 if (session_type == SESSION_TYPE_TX &&
1671 fdai->be_srate &&
1672 (fdai->be_srate != msm_bedais[reg].sample_rate)) {
1673 pr_debug("%s: flush strm %d diff BE rates\n",
1674 __func__, fdai->strm_id);
1675
1676 if (fdai->event_info.event_func)
1677 fdai->event_info.event_func(
1678 MSM_PCM_RT_EVT_BUF_RECFG,
1679 fdai->event_info.priv_data);
1680 fdai->be_srate = 0; /* might not need it */
1681 }
1682
1683 bits_per_sample = msm_routing_get_bit_width(
1684 msm_bedais[reg].format);
1685
1686 app_type =
1687 fe_dai_app_type_cfg[val][session_type][reg].app_type;
1688 if (app_type && is_lsm) {
1689 app_type_idx =
1690 msm_pcm_routing_get_lsm_app_type_idx(app_type);
1691 sample_rate =
1692 fe_dai_app_type_cfg[val][session_type][reg]
1693 .sample_rate;
1694 bits_per_sample =
1695 lsm_app_type_cfg[app_type_idx].bit_width;
1696 } else if (app_type) {
1697 app_type_idx =
1698 msm_pcm_routing_get_app_type_idx(app_type);
1699 sample_rate =
1700 fe_dai_app_type_cfg[val][session_type][reg]
1701 .sample_rate;
1702 bits_per_sample =
1703 app_type_cfg[app_type_idx].bit_width;
1704 } else
1705 sample_rate = msm_bedais[reg].sample_rate;
1706
1707 topology = msm_routing_get_adm_topology(val,
1708 session_type,
1709 reg);
1710 acdb_dev_id =
1711 fe_dai_app_type_cfg[val][session_type][reg].acdb_dev_id;
1712 copp_idx = adm_open(msm_bedais[reg].port_id, path_type,
1713 sample_rate, channels, topology,
1714 fdai->perf_mode, bits_per_sample,
1715 app_type, acdb_dev_id);
1716 if ((copp_idx < 0) ||
1717 (copp_idx >= MAX_COPPS_PER_PORT)) {
1718 pr_err("%s: adm open failed\n", __func__);
1719 mutex_unlock(&routing_lock);
1720 return;
1721 }
1722 pr_debug("%s: setting idx bit of fe:%d, type: %d, be:%d\n",
1723 __func__, val, session_type, reg);
1724 set_bit(copp_idx,
1725 &session_copp_map[val][session_type][reg]);
1726
1727 if (msm_is_resample_needed(
1728 sample_rate,
1729 msm_bedais[reg].sample_rate))
1730 adm_copp_mfc_cfg(
1731 msm_bedais[reg].port_id, copp_idx,
1732 msm_bedais[reg].sample_rate);
1733
1734 if (session_type == SESSION_TYPE_RX &&
1735 fdai->event_info.event_func)
1736 fdai->event_info.event_func(
1737 MSM_PCM_RT_EVT_DEVSWITCH,
1738 fdai->event_info.priv_data);
1739
1740 msm_pcm_routing_build_matrix(val, session_type,
1741 path_type,
1742 fdai->perf_mode,
1743 passthr_mode);
1744 if ((fdai->perf_mode == LEGACY_PCM_MODE) &&
1745 (passthr_mode == LEGACY_PCM))
1746 msm_pcm_routing_cfg_pp(msm_bedais[reg].port_id,
1747 copp_idx, topology,
1748 channels);
1749 }
1750 } else {
1751 if (test_bit(val, &msm_bedais[reg].fe_sessions[0]) &&
1752 ((msm_bedais[reg].port_id == VOICE_PLAYBACK_TX) ||
1753 (msm_bedais[reg].port_id == VOICE2_PLAYBACK_TX)))
1754 voc_start_playback(set, msm_bedais[reg].port_id);
1755 clear_bit(val, &msm_bedais[reg].fe_sessions[0]);
1756 fdai = &fe_dai_map[val][session_type];
1757 if (msm_bedais[reg].active && fdai->strm_id !=
1758 INVALID_SESSION) {
1759 int idx;
1760 int port_id;
1761 unsigned long copp =
1762 session_copp_map[val][session_type][reg];
1763 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++)
1764 if (test_bit(idx, &copp))
1765 break;
1766
1767 port_id = msm_bedais[reg].port_id;
1768 topology = adm_get_topology_for_port_copp_idx(port_id,
1769 idx);
1770 adm_close(msm_bedais[reg].port_id, fdai->perf_mode,
1771 idx);
1772 pr_debug("%s: copp: %ld, reset idx bit fe:%d, type: %d, be:%d topology=0x%x\n",
1773 __func__, copp, val, session_type, reg,
1774 topology);
1775 clear_bit(idx,
1776 &session_copp_map[val][session_type][reg]);
1777 if ((topology == DOLBY_ADM_COPP_TOPOLOGY_ID ||
1778 topology == DS2_ADM_COPP_TOPOLOGY_ID) &&
1779 (fdai->perf_mode == LEGACY_PCM_MODE) &&
1780 (passthr_mode == LEGACY_PCM))
1781 msm_pcm_routing_deinit_pp(
1782 msm_bedais[reg].port_id,
1783 topology);
1784 msm_pcm_routing_build_matrix(val, session_type,
1785 path_type,
1786 fdai->perf_mode,
1787 passthr_mode);
1788 }
1789 }
1790 if ((msm_bedais[reg].port_id == VOICE_RECORD_RX)
1791 || (msm_bedais[reg].port_id == VOICE_RECORD_TX))
1792 voc_start_record(msm_bedais[reg].port_id, set, voc_session_id);
1793
1794 mutex_unlock(&routing_lock);
1795}
1796
1797static int msm_routing_get_audio_mixer(struct snd_kcontrol *kcontrol,
1798 struct snd_ctl_elem_value *ucontrol)
1799{
1800 struct soc_mixer_control *mc =
1801 (struct soc_mixer_control *)kcontrol->private_value;
1802
1803 if (test_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]))
1804 ucontrol->value.integer.value[0] = 1;
1805 else
1806 ucontrol->value.integer.value[0] = 0;
1807
1808 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
1809 ucontrol->value.integer.value[0]);
1810
1811 return 0;
1812}
1813
1814static int msm_routing_put_audio_mixer(struct snd_kcontrol *kcontrol,
1815 struct snd_ctl_elem_value *ucontrol)
1816{
Asish Bhattacharya34504582017-08-08 12:55:01 +05301817 struct snd_soc_dapm_widget *widget =
1818 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301819 struct soc_mixer_control *mc =
1820 (struct soc_mixer_control *)kcontrol->private_value;
1821 struct snd_soc_dapm_update *update = NULL;
1822
1823 if (ucontrol->value.integer.value[0] &&
1824 msm_pcm_routing_route_is_set(mc->reg, mc->shift) == false) {
1825 msm_pcm_routing_process_audio(mc->reg, mc->shift, 1);
1826 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
1827 update);
1828 } else if (!ucontrol->value.integer.value[0] &&
1829 msm_pcm_routing_route_is_set(mc->reg, mc->shift) == true) {
1830 msm_pcm_routing_process_audio(mc->reg, mc->shift, 0);
1831 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
1832 update);
1833 }
1834
1835 return 1;
1836}
1837
1838static int msm_routing_get_listen_mixer(struct snd_kcontrol *kcontrol,
1839 struct snd_ctl_elem_value *ucontrol)
1840{
1841 struct soc_mixer_control *mc =
1842 (struct soc_mixer_control *)kcontrol->private_value;
1843
1844 if (test_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]))
1845 ucontrol->value.integer.value[0] = 1;
1846 else
1847 ucontrol->value.integer.value[0] = 0;
1848
1849 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
1850 ucontrol->value.integer.value[0]);
1851
1852 return 0;
1853}
1854
1855static int msm_routing_put_listen_mixer(struct snd_kcontrol *kcontrol,
1856 struct snd_ctl_elem_value *ucontrol)
1857{
Asish Bhattacharya34504582017-08-08 12:55:01 +05301858 struct snd_soc_dapm_widget *widget =
1859 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301860 struct soc_mixer_control *mc =
1861 (struct soc_mixer_control *)kcontrol->private_value;
1862 struct snd_soc_dapm_update *update = NULL;
1863
1864 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
1865 ucontrol->value.integer.value[0]);
1866
1867 if (ucontrol->value.integer.value[0]) {
1868 if (msm_pcm_routing_route_is_set(mc->reg, mc->shift) == false)
1869 msm_pcm_routing_process_audio(mc->reg, mc->shift, 1);
1870 snd_soc_dapm_mixer_update_power(widget->dapm,
1871 kcontrol, 1, update);
1872 } else if (!ucontrol->value.integer.value[0]) {
1873 if (msm_pcm_routing_route_is_set(mc->reg, mc->shift) == true)
1874 msm_pcm_routing_process_audio(mc->reg, mc->shift, 0);
1875 snd_soc_dapm_mixer_update_power(widget->dapm,
1876 kcontrol, 0, update);
1877 }
1878
1879 return 1;
1880}
1881
1882static void msm_pcm_routing_process_voice(u16 reg, u16 val, int set)
1883{
1884 u32 session_id = 0;
1885 u16 path_type;
1886 struct media_format_info voc_be_media_format;
1887
1888 pr_debug("%s: reg %x val %x set %x\n", __func__, reg, val, set);
1889
1890 session_id = msm_pcm_routing_get_voc_sessionid(val);
1891
1892 pr_debug("%s: FE DAI 0x%x session_id 0x%x\n",
1893 __func__, val, session_id);
1894
1895 mutex_lock(&routing_lock);
1896
1897 if (set)
1898 set_bit(val, &msm_bedais[reg].fe_sessions[0]);
1899 else
1900 clear_bit(val, &msm_bedais[reg].fe_sessions[0]);
1901
1902 if (val == MSM_FRONTEND_DAI_DTMF_RX &&
1903 afe_get_port_type(msm_bedais[reg].port_id) ==
1904 MSM_AFE_PORT_TYPE_RX) {
1905 pr_debug("%s(): set=%d port id=0x%x for dtmf generation\n",
1906 __func__, set, msm_bedais[reg].port_id);
1907 afe_set_dtmf_gen_rx_portid(msm_bedais[reg].port_id, set);
1908 }
1909
1910 if (afe_get_port_type(msm_bedais[reg].port_id) ==
1911 MSM_AFE_PORT_TYPE_RX)
1912 path_type = RX_PATH;
1913 else
1914 path_type = TX_PATH;
1915
1916 if (set) {
1917 if (msm_bedais[reg].active) {
1918 voc_set_route_flag(session_id, path_type, 1);
1919
1920 memset(&voc_be_media_format, 0,
1921 sizeof(struct media_format_info));
1922
1923 voc_be_media_format.port_id = msm_bedais[reg].port_id;
1924 voc_be_media_format.num_channels =
1925 msm_bedais[reg].channel;
1926 voc_be_media_format.sample_rate =
1927 msm_bedais[reg].sample_rate;
1928 voc_be_media_format.bits_per_sample =
1929 msm_bedais[reg].format;
1930 /* Defaulting this to 1 for voice call usecases */
1931 voc_be_media_format.channel_mapping[0] = 1;
1932
1933 voc_set_device_config(session_id, path_type,
1934 &voc_be_media_format);
1935
1936 if (voc_get_route_flag(session_id, TX_PATH) &&
1937 voc_get_route_flag(session_id, RX_PATH))
1938 voc_enable_device(session_id);
1939 } else {
1940 pr_debug("%s BE is not active\n", __func__);
1941 }
1942 } else {
1943 voc_set_route_flag(session_id, path_type, 0);
1944 voc_disable_device(session_id);
1945 }
1946
1947 mutex_unlock(&routing_lock);
1948
1949}
1950
1951static int msm_routing_get_voice_mixer(struct snd_kcontrol *kcontrol,
1952 struct snd_ctl_elem_value *ucontrol)
1953{
1954 struct soc_mixer_control *mc =
1955 (struct soc_mixer_control *)kcontrol->private_value;
1956
1957 mutex_lock(&routing_lock);
1958
1959 if (test_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]))
1960 ucontrol->value.integer.value[0] = 1;
1961 else
1962 ucontrol->value.integer.value[0] = 0;
1963
1964 mutex_unlock(&routing_lock);
1965
1966 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
1967 ucontrol->value.integer.value[0]);
1968
1969 return 0;
1970}
1971
1972static int msm_routing_put_voice_mixer(struct snd_kcontrol *kcontrol,
1973 struct snd_ctl_elem_value *ucontrol)
1974{
Asish Bhattacharya34504582017-08-08 12:55:01 +05301975 struct snd_soc_dapm_widget *widget =
1976 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301977 struct soc_mixer_control *mc =
1978 (struct soc_mixer_control *)kcontrol->private_value;
1979 struct snd_soc_dapm_update *update = NULL;
1980
1981 if (ucontrol->value.integer.value[0]) {
1982 msm_pcm_routing_process_voice(mc->reg, mc->shift, 1);
1983 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
1984 update);
1985 } else {
1986 msm_pcm_routing_process_voice(mc->reg, mc->shift, 0);
1987 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
1988 update);
1989 }
1990
1991 return 1;
1992}
1993
1994static int msm_routing_get_voice_stub_mixer(struct snd_kcontrol *kcontrol,
1995 struct snd_ctl_elem_value *ucontrol)
1996{
1997 struct soc_mixer_control *mc =
1998 (struct soc_mixer_control *)kcontrol->private_value;
1999
2000 mutex_lock(&routing_lock);
2001
2002 if (test_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]))
2003 ucontrol->value.integer.value[0] = 1;
2004 else
2005 ucontrol->value.integer.value[0] = 0;
2006
2007 mutex_unlock(&routing_lock);
2008
2009 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
2010 ucontrol->value.integer.value[0]);
2011
2012 return 0;
2013}
2014
2015static int msm_routing_put_voice_stub_mixer(struct snd_kcontrol *kcontrol,
2016 struct snd_ctl_elem_value *ucontrol)
2017{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302018 struct snd_soc_dapm_widget *widget =
2019 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302020 struct soc_mixer_control *mc =
2021 (struct soc_mixer_control *)kcontrol->private_value;
2022 struct snd_soc_dapm_update *update = NULL;
2023
2024 if (ucontrol->value.integer.value[0]) {
2025 mutex_lock(&routing_lock);
2026 set_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]);
2027 mutex_unlock(&routing_lock);
2028
2029 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2030 update);
2031 } else {
2032 mutex_lock(&routing_lock);
2033 clear_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]);
2034 mutex_unlock(&routing_lock);
2035
2036 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2037 update);
2038 }
2039
2040 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
2041 ucontrol->value.integer.value[0]);
2042
2043 return 1;
2044}
2045
2046/*
2047 * Return the mapping between port ID and backend ID to enable the AFE callback
2048 * to determine the acdb_dev_id from the port id
2049 */
2050int msm_pcm_get_be_id_from_port_id(int port_id)
2051{
2052 int i;
2053 int be_id = -EINVAL;
2054
2055 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
2056 if (msm_bedais[i].port_id == port_id) {
2057 be_id = i;
2058 break;
2059 }
2060 }
2061
2062 return be_id;
2063}
2064
2065/*
2066 * Return the registered dev_acdb_id given a port ID to enable identifying the
2067 * correct AFE calibration information by comparing the header information.
2068 */
2069static int msm_pcm_get_dev_acdb_id_by_port_id(int port_id)
2070{
2071 int acdb_id = -EINVAL;
2072 int i = 0;
2073 int session;
2074 int port_type = afe_get_port_type(port_id);
2075 int be_id = msm_pcm_get_be_id_from_port_id(port_id);
2076
2077 pr_debug("%s:port_id %d be_id %d, port_type 0x%x\n",
2078 __func__, port_id, be_id, port_type);
2079
2080 if (port_type == MSM_AFE_PORT_TYPE_TX) {
2081 session = SESSION_TYPE_TX;
2082 } else if (port_type == MSM_AFE_PORT_TYPE_RX) {
2083 session = SESSION_TYPE_RX;
2084 } else {
2085 pr_err("%s: Invalid port type %d\n", __func__, port_type);
2086 acdb_id = -EINVAL;
2087 goto exit;
2088 }
2089
2090 if (be_id < 0) {
2091 pr_err("%s: Error getting backend id %d\n", __func__, be_id);
2092 goto exit;
2093 }
2094
2095 mutex_lock(&routing_lock);
2096 i = find_first_bit(&msm_bedais[be_id].fe_sessions[0],
2097 MSM_FRONTEND_DAI_MAX);
2098 if (i < MSM_FRONTEND_DAI_MAX)
2099 acdb_id = fe_dai_app_type_cfg[i][session][be_id].acdb_dev_id;
2100
2101 pr_debug("%s: FE[%d] session[%d] BE[%d] acdb_id(%d)\n",
2102 __func__, i, session, be_id, acdb_id);
2103 mutex_unlock(&routing_lock);
2104exit:
2105 return acdb_id;
2106}
2107
2108static int msm_routing_get_switch_mixer(struct snd_kcontrol *kcontrol,
2109 struct snd_ctl_elem_value *ucontrol)
2110{
2111 ucontrol->value.integer.value[0] = fm_switch_enable;
2112 pr_debug("%s: FM Switch enable %ld\n", __func__,
2113 ucontrol->value.integer.value[0]);
2114 return 0;
2115}
2116
2117static int msm_routing_put_switch_mixer(struct snd_kcontrol *kcontrol,
2118 struct snd_ctl_elem_value *ucontrol)
2119{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302120 struct snd_soc_dapm_widget *widget =
2121 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302122 struct snd_soc_dapm_update *update = NULL;
2123
2124 pr_debug("%s: FM Switch enable %ld\n", __func__,
2125 ucontrol->value.integer.value[0]);
2126 if (ucontrol->value.integer.value[0])
2127 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2128 update);
2129 else
2130 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2131 update);
2132 fm_switch_enable = ucontrol->value.integer.value[0];
2133 return 1;
2134}
2135
2136static int msm_routing_get_hfp_switch_mixer(struct snd_kcontrol *kcontrol,
2137 struct snd_ctl_elem_value *ucontrol)
2138{
2139 ucontrol->value.integer.value[0] = hfp_switch_enable;
2140 pr_debug("%s: HFP Switch enable %ld\n", __func__,
2141 ucontrol->value.integer.value[0]);
2142 return 0;
2143}
2144
2145static int msm_routing_put_hfp_switch_mixer(struct snd_kcontrol *kcontrol,
2146 struct snd_ctl_elem_value *ucontrol)
2147{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302148 struct snd_soc_dapm_widget *widget =
2149 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302150 struct snd_soc_dapm_update *update = NULL;
2151
2152 pr_debug("%s: HFP Switch enable %ld\n", __func__,
2153 ucontrol->value.integer.value[0]);
2154 if (ucontrol->value.integer.value[0])
2155 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol,
2156 1, update);
2157 else
2158 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol,
2159 0, update);
2160 hfp_switch_enable = ucontrol->value.integer.value[0];
2161 return 1;
2162}
2163
2164static int msm_routing_get_int0_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2165 struct snd_ctl_elem_value *ucontrol)
2166{
2167 ucontrol->value.integer.value[0] = int0_mi2s_switch_enable;
2168 pr_debug("%s: INT0 MI2S Switch enable %ld\n", __func__,
2169 ucontrol->value.integer.value[0]);
2170 return 0;
2171}
2172
2173static int msm_routing_put_int0_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2174 struct snd_ctl_elem_value *ucontrol)
2175{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302176 struct snd_soc_dapm_widget *widget =
2177 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302178 struct snd_soc_dapm_update *update = NULL;
2179
2180 pr_debug("%s: INT0 MI2S Switch enable %ld\n", __func__,
2181 ucontrol->value.integer.value[0]);
2182 if (ucontrol->value.integer.value[0])
2183 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2184 update);
2185 else
2186 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2187 update);
2188 int0_mi2s_switch_enable = ucontrol->value.integer.value[0];
2189 return 1;
2190}
2191
2192static int msm_routing_get_int4_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2193 struct snd_ctl_elem_value *ucontrol)
2194{
2195 ucontrol->value.integer.value[0] = int4_mi2s_switch_enable;
2196 pr_debug("%s: INT4 MI2S Switch enable %ld\n", __func__,
2197 ucontrol->value.integer.value[0]);
2198 return 0;
2199}
2200
2201static int msm_routing_put_int4_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2202 struct snd_ctl_elem_value *ucontrol)
2203{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302204 struct snd_soc_dapm_widget *widget =
2205 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302206 struct snd_soc_dapm_update *update = NULL;
2207
2208 pr_debug("%s: INT4 MI2S Switch enable %ld\n", __func__,
2209 ucontrol->value.integer.value[0]);
2210 if (ucontrol->value.integer.value[0])
2211 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2212 update);
2213 else
2214 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2215 update);
2216 int4_mi2s_switch_enable = ucontrol->value.integer.value[0];
2217 return 1;
2218}
2219
2220static int msm_routing_get_usb_switch_mixer(struct snd_kcontrol *kcontrol,
2221 struct snd_ctl_elem_value *ucontrol)
2222{
2223 ucontrol->value.integer.value[0] = usb_switch_enable;
2224 pr_debug("%s: HFP Switch enable %ld\n", __func__,
2225 ucontrol->value.integer.value[0]);
2226 return 0;
2227}
2228
2229static int msm_routing_put_usb_switch_mixer(struct snd_kcontrol *kcontrol,
2230 struct snd_ctl_elem_value *ucontrol)
2231{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302232 struct snd_soc_dapm_widget *widget =
2233 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302234 struct snd_soc_dapm_update *update = NULL;
2235
2236 pr_debug("%s: USB Switch enable %ld\n", __func__,
2237 ucontrol->value.integer.value[0]);
2238 if (ucontrol->value.integer.value[0])
2239 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol,
2240 1, update);
2241 else
2242 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol,
2243 0, update);
2244 usb_switch_enable = ucontrol->value.integer.value[0];
2245 return 1;
2246}
2247
2248static int msm_routing_get_pri_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2249 struct snd_ctl_elem_value *ucontrol)
2250{
2251 ucontrol->value.integer.value[0] = pri_mi2s_switch_enable;
2252 pr_debug("%s: PRI MI2S Switch enable %ld\n", __func__,
2253 ucontrol->value.integer.value[0]);
2254 return 0;
2255}
2256
2257static int msm_routing_put_pri_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2258 struct snd_ctl_elem_value *ucontrol)
2259{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302260 struct snd_soc_dapm_widget *widget =
2261 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302262 struct snd_soc_dapm_update *update = NULL;
2263
2264 pr_debug("%s: PRI MI2S Switch enable %ld\n", __func__,
2265 ucontrol->value.integer.value[0]);
2266 if (ucontrol->value.integer.value[0])
2267 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2268 update);
2269 else
2270 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2271 update);
2272 pri_mi2s_switch_enable = ucontrol->value.integer.value[0];
2273 return 1;
2274}
2275
2276static int msm_routing_get_sec_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2277 struct snd_ctl_elem_value *ucontrol)
2278{
2279 ucontrol->value.integer.value[0] = sec_mi2s_switch_enable;
2280 pr_debug("%s: SEC MI2S Switch enable %ld\n", __func__,
2281 ucontrol->value.integer.value[0]);
2282 return 0;
2283}
2284
2285static int msm_routing_put_sec_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2286 struct snd_ctl_elem_value *ucontrol)
2287{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302288 struct snd_soc_dapm_widget *widget =
2289 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302290 struct snd_soc_dapm_update *update = NULL;
2291
2292 pr_debug("%s: SEC MI2S Switch enable %ld\n", __func__,
2293 ucontrol->value.integer.value[0]);
2294 if (ucontrol->value.integer.value[0])
2295 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2296 update);
2297 else
2298 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2299 update);
2300 sec_mi2s_switch_enable = ucontrol->value.integer.value[0];
2301 return 1;
2302}
2303
2304static int msm_routing_get_tert_mi2s_switch_mixer(
2305 struct snd_kcontrol *kcontrol,
2306 struct snd_ctl_elem_value *ucontrol)
2307{
2308 ucontrol->value.integer.value[0] = tert_mi2s_switch_enable;
2309 pr_debug("%s: TERT MI2S Switch enable %ld\n", __func__,
2310 ucontrol->value.integer.value[0]);
2311 return 0;
2312}
2313
2314static int msm_routing_put_tert_mi2s_switch_mixer(
2315 struct snd_kcontrol *kcontrol,
2316 struct snd_ctl_elem_value *ucontrol)
2317{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302318 struct snd_soc_dapm_widget *widget =
2319 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302320 struct snd_soc_dapm_update *update = NULL;
2321
2322 pr_debug("%s: TERT MI2S Switch enable %ld\n", __func__,
2323 ucontrol->value.integer.value[0]);
2324 if (ucontrol->value.integer.value[0])
2325 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2326 update);
2327 else
2328 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2329 update);
2330 tert_mi2s_switch_enable = ucontrol->value.integer.value[0];
2331 return 1;
2332}
2333
2334static int msm_routing_get_quat_mi2s_switch_mixer(
2335 struct snd_kcontrol *kcontrol,
2336 struct snd_ctl_elem_value *ucontrol)
2337{
2338 ucontrol->value.integer.value[0] = quat_mi2s_switch_enable;
2339 pr_debug("%s: QUAT MI2S Switch enable %ld\n", __func__,
2340 ucontrol->value.integer.value[0]);
2341 return 0;
2342}
2343
2344static int msm_routing_put_quat_mi2s_switch_mixer(
2345 struct snd_kcontrol *kcontrol,
2346 struct snd_ctl_elem_value *ucontrol)
2347{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302348 struct snd_soc_dapm_widget *widget =
2349 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302350 struct snd_soc_dapm_update *update = NULL;
2351
2352 pr_debug("%s: QUAT MI2S Switch enable %ld\n", __func__,
2353 ucontrol->value.integer.value[0]);
2354 if (ucontrol->value.integer.value[0])
2355 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2356 update);
2357 else
2358 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2359 update);
2360 quat_mi2s_switch_enable = ucontrol->value.integer.value[0];
2361 return 1;
2362}
2363
Rohit Kumara5077932017-09-10 22:05:05 +05302364static int msm_routing_get_quin_mi2s_switch_mixer(
2365 struct snd_kcontrol *kcontrol,
2366 struct snd_ctl_elem_value *ucontrol)
2367{
2368 ucontrol->value.integer.value[0] = quin_mi2s_switch_enable;
2369 pr_debug("%s: QUIN MI2S Switch enable %ld\n", __func__,
2370 ucontrol->value.integer.value[0]);
2371 return 0;
2372}
2373
2374static int msm_routing_put_quin_mi2s_switch_mixer(
2375 struct snd_kcontrol *kcontrol,
2376 struct snd_ctl_elem_value *ucontrol)
2377{
2378 struct snd_soc_dapm_widget *widget =
2379 snd_soc_dapm_kcontrol_widget(kcontrol);
2380 struct snd_soc_dapm_update *update = NULL;
2381
2382 pr_debug("%s: QUIN MI2S Switch enable %ld\n", __func__,
2383 ucontrol->value.integer.value[0]);
2384 if (ucontrol->value.integer.value[0])
2385 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2386 update);
2387 else
2388 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2389 update);
2390 quin_mi2s_switch_enable = ucontrol->value.integer.value[0];
2391 return 1;
2392}
2393
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302394static int msm_routing_get_fm_pcmrx_switch_mixer(struct snd_kcontrol *kcontrol,
2395 struct snd_ctl_elem_value *ucontrol)
2396{
2397 ucontrol->value.integer.value[0] = fm_pcmrx_switch_enable;
2398 pr_debug("%s: FM Switch enable %ld\n", __func__,
2399 ucontrol->value.integer.value[0]);
2400 return 0;
2401}
2402
2403static int msm_routing_put_fm_pcmrx_switch_mixer(struct snd_kcontrol *kcontrol,
2404 struct snd_ctl_elem_value *ucontrol)
2405{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302406 struct snd_soc_dapm_widget *widget =
2407 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302408 struct snd_soc_dapm_update *update = NULL;
2409
2410 pr_debug("%s: FM Switch enable %ld\n", __func__,
2411 ucontrol->value.integer.value[0]);
2412 if (ucontrol->value.integer.value[0])
2413 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2414 update);
2415 else
2416 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2417 update);
2418 fm_pcmrx_switch_enable = ucontrol->value.integer.value[0];
2419 return 1;
2420}
2421
2422static int msm_routing_lsm_port_get(struct snd_kcontrol *kcontrol,
2423 struct snd_ctl_elem_value *ucontrol)
2424{
2425 ucontrol->value.integer.value[0] = lsm_port_index;
2426 return 0;
2427}
2428
2429static int msm_routing_lsm_port_put(struct snd_kcontrol *kcontrol,
2430 struct snd_ctl_elem_value *ucontrol)
2431{
2432 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
2433 int mux = ucontrol->value.enumerated.item[0];
2434 int lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_5_TX;
2435
2436 if (mux >= e->items) {
2437 pr_err("%s: Invalid mux value %d\n", __func__, mux);
2438 return -EINVAL;
2439 }
2440
2441 pr_debug("%s: LSM enable %ld\n", __func__,
2442 ucontrol->value.integer.value[0]);
2443 switch (ucontrol->value.integer.value[0]) {
2444 case 1:
2445 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_0_TX;
2446 break;
2447 case 2:
2448 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_1_TX;
2449 break;
2450 case 3:
2451 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_2_TX;
2452 break;
2453 case 4:
2454 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_3_TX;
2455 break;
2456 case 5:
2457 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_4_TX;
2458 break;
2459 case 6:
2460 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_5_TX;
2461 break;
2462 case 7:
2463 lsm_port = AFE_PORT_ID_TERTIARY_MI2S_TX;
2464 break;
2465 case 8:
2466 lsm_port = AFE_PORT_ID_QUATERNARY_MI2S_TX;
2467 break;
2468 case 9:
2469 lsm_port = ADM_LSM_PORT_ID;
2470 break;
2471 case 10:
Ashish Jain01b10322018-05-12 15:37:44 +05302472 lsm_port = AFE_PORT_ID_PRIMARY_TDM_TX_2;
2473 break;
2474 case 11:
2475 lsm_port = AFE_PORT_ID_PRIMARY_TDM_TX_3;
2476 break;
2477 case 12:
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302478 lsm_port = AFE_PORT_ID_INT3_MI2S_TX;
2479 break;
2480 default:
2481 pr_err("Default lsm port");
2482 break;
2483 }
2484 set_lsm_port(lsm_port);
2485 lsm_port_index = ucontrol->value.integer.value[0];
2486
2487 return 0;
2488}
2489
2490static int msm_routing_lsm_func_get(struct snd_kcontrol *kcontrol,
2491 struct snd_ctl_elem_value *ucontrol)
2492{
2493 int i;
2494 u16 port_id;
2495 enum afe_mad_type mad_type;
2496
2497 pr_debug("%s: enter\n", __func__);
2498 for (i = 0; i < ARRAY_SIZE(lsm_port_text); i++)
2499 if (!strnstr(kcontrol->id.name, lsm_port_text[i],
2500 strlen(lsm_port_text[i])))
2501 break;
2502
2503 if (i-- == ARRAY_SIZE(lsm_port_text)) {
2504 WARN(1, "Invalid id name %s\n", kcontrol->id.name);
2505 return -EINVAL;
2506 }
2507
2508 port_id = i * 2 + 1 + SLIMBUS_0_RX;
2509
2510 /*Check for Tertiary/Quaternary/INT3 TX port*/
2511 if (strnstr(kcontrol->id.name, lsm_port_text[7],
2512 strlen(lsm_port_text[7])))
2513 port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
2514
2515 if (strnstr(kcontrol->id.name, lsm_port_text[8],
2516 strlen(lsm_port_text[8])))
2517 port_id = AFE_PORT_ID_QUATERNARY_MI2S_TX;
2518
2519 if (strnstr(kcontrol->id.name, lsm_port_text[10],
2520 strlen(lsm_port_text[10])))
2521 port_id = AFE_PORT_ID_INT3_MI2S_TX;
2522
2523 mad_type = afe_port_get_mad_type(port_id);
2524 pr_debug("%s: port_id 0x%x, mad_type %d\n", __func__, port_id,
2525 mad_type);
2526 switch (mad_type) {
2527 case MAD_HW_NONE:
2528 ucontrol->value.integer.value[0] = MADNONE;
2529 break;
2530 case MAD_HW_AUDIO:
2531 ucontrol->value.integer.value[0] = MADAUDIO;
2532 break;
2533 case MAD_HW_BEACON:
2534 ucontrol->value.integer.value[0] = MADBEACON;
2535 break;
2536 case MAD_HW_ULTRASOUND:
2537 ucontrol->value.integer.value[0] = MADULTRASOUND;
2538 break;
2539 case MAD_SW_AUDIO:
2540 ucontrol->value.integer.value[0] = MADSWAUDIO;
2541 break;
2542 default:
2543 WARN(1, "Unknown\n");
2544 return -EINVAL;
2545 }
2546 return 0;
2547}
2548
2549static int msm_routing_lsm_func_put(struct snd_kcontrol *kcontrol,
2550 struct snd_ctl_elem_value *ucontrol)
2551{
2552 int i;
2553 u16 port_id;
2554 enum afe_mad_type mad_type;
2555
2556 pr_debug("%s: enter\n", __func__);
2557 for (i = 0; i < ARRAY_SIZE(lsm_port_text); i++)
2558 if (strnstr(kcontrol->id.name, lsm_port_text[i],
2559 strlen(lsm_port_text[i])))
2560 break;
2561
2562 if (i-- == ARRAY_SIZE(lsm_port_text)) {
2563 WARN(1, "Invalid id name %s\n", kcontrol->id.name);
2564 return -EINVAL;
2565 }
2566
2567 port_id = i * 2 + 1 + SLIMBUS_0_RX;
2568 switch (ucontrol->value.integer.value[0]) {
2569 case MADNONE:
2570 mad_type = MAD_HW_NONE;
2571 break;
2572 case MADAUDIO:
2573 mad_type = MAD_HW_AUDIO;
2574 break;
2575 case MADBEACON:
2576 mad_type = MAD_HW_BEACON;
2577 break;
2578 case MADULTRASOUND:
2579 mad_type = MAD_HW_ULTRASOUND;
2580 break;
2581 case MADSWAUDIO:
2582 mad_type = MAD_SW_AUDIO;
2583 break;
2584 default:
2585 WARN(1, "Unknown\n");
2586 return -EINVAL;
2587 }
2588
2589 /*Check for Tertiary/Quaternary/INT3 TX port*/
2590 if (strnstr(kcontrol->id.name, lsm_port_text[7],
2591 strlen(lsm_port_text[7])))
2592 port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
2593
2594 if (strnstr(kcontrol->id.name, lsm_port_text[8],
2595 strlen(lsm_port_text[8])))
2596 port_id = AFE_PORT_ID_QUATERNARY_MI2S_TX;
2597
2598 if (strnstr(kcontrol->id.name, lsm_port_text[10],
2599 strlen(lsm_port_text[10])))
2600 port_id = AFE_PORT_ID_INT3_MI2S_TX;
2601
2602 pr_debug("%s: port_id 0x%x, mad_type %d\n", __func__, port_id,
2603 mad_type);
2604 return afe_port_set_mad_type(port_id, mad_type);
2605}
2606
2607static const char *const adm_override_chs_text[] = {"Zero", "One", "Two"};
2608
2609static SOC_ENUM_SINGLE_EXT_DECL(slim_7_rx_adm_override_chs,
2610 adm_override_chs_text);
2611
2612static int msm_routing_adm_get_backend_idx(struct snd_kcontrol *kcontrol)
2613{
2614 int backend_id;
2615
2616 if (strnstr(kcontrol->id.name, "SLIM7_RX", sizeof("SLIM7_RX"))) {
2617 backend_id = MSM_BACKEND_DAI_SLIMBUS_7_RX;
2618 } else {
2619 pr_err("%s: unsupported backend id: %s",
2620 __func__, kcontrol->id.name);
2621 return -EINVAL;
2622 }
2623
2624 return backend_id;
2625}
2626static int msm_routing_adm_channel_config_get(
2627 struct snd_kcontrol *kcontrol,
2628 struct snd_ctl_elem_value *ucontrol)
2629{
2630 int backend_id = msm_routing_adm_get_backend_idx(kcontrol);
2631
2632 if (backend_id >= 0) {
2633 mutex_lock(&routing_lock);
2634 ucontrol->value.integer.value[0] =
2635 msm_bedais[backend_id].adm_override_ch;
2636 pr_debug("%s: adm channel count %ld for BE:%d\n", __func__,
2637 ucontrol->value.integer.value[0], backend_id);
2638 mutex_unlock(&routing_lock);
2639 }
2640
2641 return 0;
2642}
2643
2644static int msm_routing_adm_channel_config_put(
2645 struct snd_kcontrol *kcontrol,
2646 struct snd_ctl_elem_value *ucontrol)
2647{
2648 int backend_id = msm_routing_adm_get_backend_idx(kcontrol);
2649
2650 if (backend_id >= 0) {
2651 mutex_lock(&routing_lock);
2652 msm_bedais[backend_id].adm_override_ch =
2653 ucontrol->value.integer.value[0];
2654 pr_debug("%s:updating BE :%d adm channels: %d\n",
2655 __func__, backend_id,
2656 msm_bedais[backend_id].adm_override_ch);
2657 mutex_unlock(&routing_lock);
2658 }
2659
2660 return 0;
2661}
2662
2663static const struct snd_kcontrol_new adm_channel_config_controls[] = {
2664 SOC_ENUM_EXT("SLIM7_RX ADM Channels", slim_7_rx_adm_override_chs,
2665 msm_routing_adm_channel_config_get,
2666 msm_routing_adm_channel_config_put),
2667};
2668
2669static int msm_routing_slim_0_rx_aanc_mux_get(struct snd_kcontrol *kcontrol,
2670 struct snd_ctl_elem_value *ucontrol)
2671{
2672
2673 mutex_lock(&routing_lock);
2674 ucontrol->value.integer.value[0] = slim0_rx_aanc_fb_port;
2675 mutex_unlock(&routing_lock);
2676 pr_debug("%s: AANC Mux Port %ld\n", __func__,
2677 ucontrol->value.integer.value[0]);
2678 return 0;
2679};
2680
2681static int msm_routing_slim_0_rx_aanc_mux_put(struct snd_kcontrol *kcontrol,
2682 struct snd_ctl_elem_value *ucontrol)
2683{
2684 struct aanc_data aanc_info;
2685
2686 mutex_lock(&routing_lock);
2687 memset(&aanc_info, 0x00, sizeof(aanc_info));
2688 pr_debug("%s: AANC Mux Port %ld\n", __func__,
2689 ucontrol->value.integer.value[0]);
2690 slim0_rx_aanc_fb_port = ucontrol->value.integer.value[0];
2691 if (ucontrol->value.integer.value[0] == 0) {
2692 aanc_info.aanc_active = false;
2693 aanc_info.aanc_tx_port = 0;
2694 aanc_info.aanc_rx_port = 0;
2695 } else {
2696 aanc_info.aanc_active = true;
2697 aanc_info.aanc_rx_port = SLIMBUS_0_RX;
2698 aanc_info.aanc_tx_port =
2699 (SLIMBUS_0_RX - 1 + (slim0_rx_aanc_fb_port * 2));
2700 }
2701 afe_set_aanc_info(&aanc_info);
2702 mutex_unlock(&routing_lock);
2703 return 0;
2704};
2705static int msm_routing_get_port_mixer(struct snd_kcontrol *kcontrol,
2706 struct snd_ctl_elem_value *ucontrol)
2707{
2708 int idx = 0, shift = 0;
2709 struct soc_mixer_control *mc =
2710 (struct soc_mixer_control *)kcontrol->private_value;
2711
2712 idx = mc->shift/(sizeof(msm_bedais[mc->reg].port_sessions[0]) * 8);
2713 shift = mc->shift%(sizeof(msm_bedais[mc->reg].port_sessions[0]) * 8);
2714
2715 if (idx >= BE_DAI_PORT_SESSIONS_IDX_MAX) {
2716 pr_err("%s: Invalid idx = %d\n", __func__, idx);
2717 return -EINVAL;
2718 }
2719
2720 if (test_bit(shift,
2721 (unsigned long *)&msm_bedais[mc->reg].port_sessions[idx]))
2722 ucontrol->value.integer.value[0] = 1;
2723 else
2724 ucontrol->value.integer.value[0] = 0;
2725
2726 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
2727 ucontrol->value.integer.value[0]);
2728
2729 return 0;
2730}
2731
2732static int msm_routing_put_port_mixer(struct snd_kcontrol *kcontrol,
2733 struct snd_ctl_elem_value *ucontrol)
2734{
2735 int idx = 0, shift = 0;
2736 struct soc_mixer_control *mc =
2737 (struct soc_mixer_control *)kcontrol->private_value;
2738
2739 idx = mc->shift/(sizeof(msm_bedais[mc->reg].port_sessions[0]) * 8);
2740 shift = mc->shift%(sizeof(msm_bedais[mc->reg].port_sessions[0]) * 8);
2741
2742 if (idx >= BE_DAI_PORT_SESSIONS_IDX_MAX) {
2743 pr_err("%s: Invalid idx = %d\n", __func__, idx);
2744 return -EINVAL;
2745 }
2746
2747 pr_debug("%s: reg 0x%x shift 0x%x val %ld idx %d reminder shift %d\n",
2748 __func__, mc->reg, mc->shift,
2749 ucontrol->value.integer.value[0], idx, shift);
2750
2751 if (ucontrol->value.integer.value[0]) {
2752 afe_loopback(1, msm_bedais[mc->reg].port_id,
2753 msm_bedais[mc->shift].port_id);
2754 set_bit(shift,
2755 (unsigned long *)&msm_bedais[mc->reg].port_sessions[idx]);
2756 } else {
2757 afe_loopback(0, msm_bedais[mc->reg].port_id,
2758 msm_bedais[mc->shift].port_id);
2759 clear_bit(shift,
2760 (unsigned long *)&msm_bedais[mc->reg].port_sessions[idx]);
2761 }
2762
2763 return 1;
2764}
2765
2766static int msm_pcm_get_channel_rule_index(struct snd_kcontrol *kcontrol,
2767 struct snd_ctl_elem_value *ucontrol)
2768{
2769 u16 fe_id = 0;
2770
2771 fe_id = ((struct soc_mixer_control *)
2772 kcontrol->private_value)->shift;
2773 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2774 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2775 return -EINVAL;
2776 }
2777
2778 ucontrol->value.integer.value[0] = channel_mixer[fe_id].rule;
2779
2780 return 0;
2781}
2782
2783static int msm_pcm_put_channel_rule_index(struct snd_kcontrol *kcontrol,
2784 struct snd_ctl_elem_value *ucontrol)
2785{
2786 u16 fe_id = 0;
2787
2788 fe_id = ((struct soc_mixer_control *)
2789 kcontrol->private_value)->shift;
2790 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2791 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2792 return -EINVAL;
2793 }
2794
2795 channel_mixer[fe_id].rule = ucontrol->value.integer.value[0];
2796
2797 return 1;
2798}
2799
2800static int msm_pcm_get_out_chs(struct snd_kcontrol *kcontrol,
2801 struct snd_ctl_elem_value *ucontrol)
2802{
2803 u16 fe_id = 0;
2804
2805 fe_id = ((struct soc_multi_mixer_control *)
2806 kcontrol->private_value)->shift;
2807 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2808 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2809 return -EINVAL;
2810 }
2811
2812 ucontrol->value.integer.value[0] =
2813 channel_mixer[fe_id].output_channel;
2814 return 0;
2815}
2816
2817static int msm_pcm_put_out_chs(struct snd_kcontrol *kcontrol,
2818 struct snd_ctl_elem_value *ucontrol)
2819{
2820 u16 fe_id = 0;
2821
2822 fe_id = ((struct soc_multi_mixer_control *)
2823 kcontrol->private_value)->shift;
2824 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2825 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2826 return -EINVAL;
2827 }
2828
2829 pr_debug("%s: fe_id is %d, output channels = %d\n", __func__,
2830 fe_id,
2831 (unsigned int)(ucontrol->value.integer.value[0]));
2832 channel_mixer[fe_id].output_channel =
2833 (unsigned int)(ucontrol->value.integer.value[0]);
2834
2835 return 1;
2836}
2837
2838static const char *const ch_mixer[] = {"Disable", "Enable"};
2839
2840/* If new backend is added, need update this array */
2841static const char *const be_name[] = {
2842"ZERO", "PRI_I2S_RX", "PRI_I2S_TX", "SLIM_0_RX",
2843"SLIM_0_TX", "HDMI_RX", "INT_BT_SCO_RX", "INT_BT_SCO_TX",
2844"INT_FM_RX", "INT_FM_TX", "AFE_PCM_RX", "AFE_PCM_TX",
2845"AUXPCM_RX", "AUXPCM_TX", "VOICE_PLAYBACK_TX", "VOICE2_PLAYBACK_TX",
2846"INCALL_RECORD_RX", "INCALL_RECORD_TX", "MI2S_RX", "MI2S_TX",
2847"SEC_I2S_RX", "SLIM_1_RX", "SLIM_1_TX", "SLIM_2_RX",
2848"SLIM_2_TX", "SLIM_3_RX", "SLIM_3_TX", "SLIM_4_RX",
2849"SLIM_4_TX", "SLIM_5_RX", "SLIM_5_TX", "SLIM_6_RX",
2850"SLIM_6_TX", "SLIM_7_RX", "SLIM_7_TX", "SLIM_8_RX",
2851"SLIM_8_TX", "EXTPROC_RX", "EXTPROC_TX", "EXPROC_EC_TX",
2852"QUAT_MI2S_RX", "QUAT_MI2S_TX", "SECOND_MI2S_RX", "SECOND_MI2S_TX",
2853"PRI_MI2S_RX", "PRI_MI2S_TX", "TERT_MI2S_RX", "TERT_MI2S_TX",
2854"AUDIO_I2S_RX", "SEC_AUXPCM_RX", "SEC_AUXPCM_TX", "SPDIF_RX",
2855"SECOND_MI2S_RX_SD1", "QUIN_MI2S_RX", "QUIN_MI2S_TX", "SENARY_MI2S_TX",
2856"PRI_TDM_RX_0", "PRI_TDM_TX_0", "PRI_TDM_RX_1", "PRI_TDM_TX_1",
2857"PRI_TDM_RX_2", "PRI_TDM_TX_2", "PRI_TDM_RX_3", "PRI_TDM_TX_3",
2858"PRI_TDM_RX_4", "PRI_TDM_TX_4", "PRI_TDM_RX_5", "PRI_TDM_TX_5",
2859"PRI_TDM_RX_6", "PRI_TDM_TX_6", "PRI_TDM_RX_7", "PRI_TDM_TX_7",
2860"SEC_TDM_RX_0", "SEC_TDM_TX_0", "SEC_TDM_RX_1", "SEC_TDM_TX_1",
2861"SEC_TDM_RX_2", "SEC_TDM_TX_2", "SEC_TDM_RX_3", "SEC_TDM_TX_3",
2862"SEC_TDM_RX_4", "SEC_TDM_TX_4", "SEC_TDM_RX_5", "SEC_TDM_TX_5",
2863"SEC_TDM_RX_6", "SEC_TDM_TX_6", "SEC_TDM_RX_7", "SEC_TDM_TX_7",
2864"TERT_TDM_RX_0", "TERT_TDM_TX_0", "TERT_TDM_RX_1", "TERT_TDM_TX_1",
2865"TERT_TDM_RX_2", "TERT_TDM_TX_2", "TERT_TDM_RX_3", "TERT_TDM_TX_3",
2866"TERT_TDM_RX_4", "TERT_TDM_TX_4", "TERT_TDM_RX_5", "TERT_TDM_TX_5",
2867"TERT_TDM_RX_6", "TERT_TDM_TX_6", "TERT_TDM_RX_7", "TERT_TDM_TX_7",
2868"QUAT_TDM_RX_0", "QUAT_TDM_TX_0", "QUAT_TDM_RX_1", "QUAT_TDM_TX_1",
2869"QUAT_TDM_RX_2", "QUAT_TDM_TX_2", "QUAT_TDM_RX_3", "QUAT_TDM_TX_3",
2870"QUAT_TDM_RX_4", "QUAT_TDM_TX_4", "QUAT_TDM_RX_5", "QUAT_TDM_TX_5",
2871"QUAT_TDM_RX_6", "QUAT_TDM_TX_6", "QUAT_TDM_RX_7", "QUAT_TDM_TX_7",
Rohit Kumara5077932017-09-10 22:05:05 +05302872"QUIN_TDM_RX_0", "QUIN_TDM_TX_0", "QUIN_TDM_RX_1", "QUIN_TDM_TX_1",
2873"QUIN_TDM_RX_2", "QUIN_TDM_TX_2", "QUIN_TDM_RX_3", "QUIN_TDM_TX_3",
2874"QUIN_TDM_RX_4", "QUIN_TDM_TX_4", "QUIN_TDM_RX_5", "QUIN_TDM_TX_5",
2875"QUIN_TDM_RX_6", "QUIN_TDM_TX_6", "QUIN_TDM_RX_7", "QUIN_TDM_TX_7",
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302876"INT_BT_A2DP_RX", "USB_RX", "USB_TX", "DISPLAY_PORT_RX",
2877"TERT_AUXPCM_RX", "TERT_AUXPCM_TX", "QUAT_AUXPCM_RX", "QUAT_AUXPCM_TX",
Rohit Kumara5077932017-09-10 22:05:05 +05302878"QUIN_AUXPCM_RX", "QUIN_AUXPCM_TX",
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302879"INT0_MI2S_RX", "INT0_MI2S_TX", "INT1_MI2S_RX", "INT1_MI2S_TX",
2880"INT2_MI2S_RX", "INT2_MI2S_TX", "INT3_MI2S_RX", "INT3_MI2S_TX",
2881"INT4_MI2S_RX", "INT4_MI2S_TX", "INT5_MI2S_RX", "INT5_MI2S_TX",
2882"INT6_MI2S_RX", "INT6_MI2S_TX"
2883};
2884
2885static SOC_ENUM_SINGLE_DECL(mm1_channel_mux,
2886 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, ch_mixer);
2887static SOC_ENUM_SINGLE_DECL(mm2_channel_mux,
2888 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA2, ch_mixer);
2889static SOC_ENUM_SINGLE_DECL(mm3_channel_mux,
2890 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA3, ch_mixer);
2891static SOC_ENUM_SINGLE_DECL(mm4_channel_mux,
2892 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA4, ch_mixer);
2893
2894static SOC_ENUM_DOUBLE_DECL(mm1_ch1_enum,
2895 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 0, be_name);
2896static SOC_ENUM_DOUBLE_DECL(mm1_ch2_enum,
2897 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 1, be_name);
2898static SOC_ENUM_DOUBLE_DECL(mm1_ch3_enum,
2899 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 2, be_name);
2900static SOC_ENUM_DOUBLE_DECL(mm1_ch4_enum,
2901 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 3, be_name);
2902static SOC_ENUM_DOUBLE_DECL(mm1_ch5_enum,
2903 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 4, be_name);
2904static SOC_ENUM_DOUBLE_DECL(mm1_ch6_enum,
2905 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 5, be_name);
2906static SOC_ENUM_DOUBLE_DECL(mm1_ch7_enum,
2907 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 6, be_name);
2908static SOC_ENUM_DOUBLE_DECL(mm1_ch8_enum,
2909 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 7, be_name);
2910
2911static int msm_pcm_get_ctl_enum_info(struct snd_ctl_elem_info *uinfo,
2912 unsigned int channels,
2913 unsigned int items, const char *const names[])
2914{
2915 if (uinfo->value.enumerated.item >= items)
2916 uinfo->value.enumerated.item = items - 1;
2917
2918 WARN(strlen(names[uinfo->value.enumerated.item]) >=
2919 sizeof(uinfo->value.enumerated.name),
2920 "ALSA: too long item name '%s'\n",
2921 names[uinfo->value.enumerated.item]);
2922 strlcpy(uinfo->value.enumerated.name,
2923 names[uinfo->value.enumerated.item],
2924 sizeof(uinfo->value.enumerated.name));
2925 return 0;
2926}
2927
2928static int msm_pcm_channel_mixer_info(struct snd_kcontrol *kcontrol,
2929 struct snd_ctl_elem_info *uinfo)
2930{
2931 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
2932
2933 uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED;
2934 uinfo->count = 1;
2935
2936 uinfo->value.enumerated.items = ARRAY_SIZE(ch_mixer);
2937 msm_pcm_get_ctl_enum_info(uinfo, 1, e->items, e->texts);
2938
2939 return 0;
2940}
2941static int msm_pcm_channel_mixer_get(struct snd_kcontrol *kcontrol,
2942 struct snd_ctl_elem_value *ucontrol)
2943{
2944 u16 fe_id = 0;
2945
2946 fe_id = ((struct soc_enum *)
2947 kcontrol->private_value)->shift_l;
2948 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2949 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2950 return -EINVAL;
2951 }
2952
2953 pr_debug("%s: FE %d %s\n", __func__,
2954 fe_id,
2955 channel_mixer[fe_id].enable ? "Enabled" : "Disabled");
2956 ucontrol->value.enumerated.item[0] = channel_mixer[fe_id].enable;
2957 return 0;
2958}
2959
2960static int msm_pcm_channel_mixer_put(struct snd_kcontrol *kcontrol,
2961 struct snd_ctl_elem_value *ucontrol)
2962{
2963 u16 fe_id = 0;
2964
2965 fe_id = ((struct soc_enum *)
2966 kcontrol->private_value)->shift_l;
2967 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2968 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2969 return -EINVAL;
2970 }
2971
2972 channel_mixer[fe_id].enable = ucontrol->value.enumerated.item[0];
2973 pr_debug("%s: %s FE %d\n", __func__,
2974 channel_mixer[fe_id].enable ? "Enable" : "Disable",
2975 fe_id);
2976 return 0;
2977}
2978
2979static int msm_pcm_channel_input_be_info(struct snd_kcontrol *kcontrol,
2980 struct snd_ctl_elem_info *uinfo)
2981{
2982 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
2983
2984 uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED;
2985 uinfo->count = 1;
2986
2987 uinfo->value.enumerated.items = ARRAY_SIZE(be_name);
2988 msm_pcm_get_ctl_enum_info(uinfo, 1, e->items, e->texts);
2989
2990 return 0;
2991}
2992
2993static int msm_pcm_channel_input_be_put(struct snd_kcontrol *kcontrol,
2994 struct snd_ctl_elem_value *ucontrol)
2995{
2996 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
2997 u16 fe_id = 0, in_ch = 0;
2998
2999 fe_id = e->shift_l;
3000 in_ch = e->shift_r;
3001 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
3002 pr_err("%s: invalid FE %d\n", __func__, fe_id);
3003 return -EINVAL;
3004 }
3005 if (in_ch >= ADM_MAX_CHANNELS) {
3006 pr_err("%s: invalid input channel %d\n", __func__, in_ch);
3007 return -EINVAL;
3008 }
3009
3010 channel_input[fe_id][in_ch] = ucontrol->value.enumerated.item[0];
3011 return 1;
3012}
3013
3014static int msm_pcm_channel_input_be_get(struct snd_kcontrol *kcontrol,
3015 struct snd_ctl_elem_value *ucontrol)
3016{
3017 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
3018 u16 fe_id = 0, in_ch = 0;
3019
3020 fe_id = e->shift_l;
3021 in_ch = e->shift_r;
3022 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
3023 pr_err("%s: invalid FE %d\n", __func__, fe_id);
3024 return -EINVAL;
3025 }
3026 if (in_ch >= ADM_MAX_CHANNELS) {
3027 pr_err("%s: invalid input channel %d\n", __func__, in_ch);
3028 return -EINVAL;
3029 }
3030
3031 ucontrol->value.enumerated.item[0] = channel_input[fe_id][in_ch];
3032 return 1;
3033}
3034
3035
3036static int msm_pcm_channel_weight_info(struct snd_kcontrol *kcontrol,
3037 struct snd_ctl_elem_info *uinfo)
3038{
3039 uinfo->type = SNDRV_CTL_ELEM_TYPE_INTEGER;
3040 uinfo->count = ADM_MAX_CHANNELS;
3041 uinfo->value.integer.min = 0;
3042 uinfo->value.integer.max = WEIGHT_0_DB;
3043
3044 return 0;
3045}
3046
3047static int msm_pcm_channel_weight_put(struct snd_kcontrol *kcontrol,
3048 struct snd_ctl_elem_value *ucontrol)
3049{
3050 u16 fe_id = 0, out_ch = 0;
3051 int i, weight;
3052
3053 fe_id = ((struct soc_multi_mixer_control *)
3054 kcontrol->private_value)->shift;
3055 out_ch = ((struct soc_multi_mixer_control *)
3056 kcontrol->private_value)->rshift;
3057 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
3058 pr_err("%s: invalid FE %d\n", __func__, fe_id);
3059 return -EINVAL;
3060 }
3061 if (out_ch >= ADM_MAX_CHANNELS) {
3062 pr_err("%s: invalid input channel %d\n", __func__, out_ch);
3063 return -EINVAL;
3064 }
3065
3066 pr_debug("%s: FE_ID: %d, channel weight %ld, %ld, %ld, %ld, %ld, %ld, %ld, %ld\n",
3067 __func__, fe_id,
3068 ucontrol->value.integer.value[0],
3069 ucontrol->value.integer.value[1],
3070 ucontrol->value.integer.value[2],
3071 ucontrol->value.integer.value[3],
3072 ucontrol->value.integer.value[4],
3073 ucontrol->value.integer.value[5],
3074 ucontrol->value.integer.value[6],
3075 ucontrol->value.integer.value[7]);
3076
3077 for (i = 0; i < ADM_MAX_CHANNELS; ++i) {
3078 weight = ucontrol->value.integer.value[i];
3079 channel_mixer[fe_id].channel_weight[out_ch][i] = weight;
3080 pr_debug("%s: FE_ID %d, output %d input %d weight %d\n",
3081 __func__, fe_id, out_ch, i,
3082 channel_mixer[fe_id].channel_weight[out_ch][i]);
3083 }
3084
3085 return 0;
3086}
3087
3088static int msm_pcm_channel_weight_get(struct snd_kcontrol *kcontrol,
3089 struct snd_ctl_elem_value *ucontrol)
3090{
3091 u16 fe_id = 0, out_ch = 0;
3092 int i;
3093
3094 fe_id = ((struct soc_multi_mixer_control *)
3095 kcontrol->private_value)->shift;
3096 out_ch = ((struct soc_multi_mixer_control *)
3097 kcontrol->private_value)->rshift;
3098 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
3099 pr_err("%s: invalid FE %d\n", __func__, fe_id);
3100 return -EINVAL;
3101 }
3102 if (out_ch >= ADM_MAX_CHANNELS) {
3103 pr_err("%s: invalid input channel %d\n", __func__, out_ch);
3104 return -EINVAL;
3105 }
3106
3107 for (i = 0; i < ADM_MAX_CHANNELS; ++i)
3108 ucontrol->value.integer.value[i] =
3109 channel_mixer[fe_id].channel_weight[out_ch][i];
3110
3111 pr_debug("%s: FE_ID: %d, weight %ld, %ld, %ld, %ld, %ld, %ld, %ld, %ld",
3112 __func__, fe_id,
3113 ucontrol->value.integer.value[0],
3114 ucontrol->value.integer.value[1],
3115 ucontrol->value.integer.value[2],
3116 ucontrol->value.integer.value[3],
3117 ucontrol->value.integer.value[4],
3118 ucontrol->value.integer.value[5],
3119 ucontrol->value.integer.value[6],
3120 ucontrol->value.integer.value[7]);
3121
3122 return 0;
3123}
3124
3125static const struct snd_kcontrol_new channel_mixer_controls[] = {
3126 SOC_SINGLE_EXT("MultiMedia1 Channel Rule", SND_SOC_NOPM,
3127 MSM_FRONTEND_DAI_MULTIMEDIA1, 8, 0,
3128 msm_pcm_get_channel_rule_index,
3129 msm_pcm_put_channel_rule_index),
3130 SOC_SINGLE_EXT("MultiMedia2 Channel Rule", SND_SOC_NOPM,
3131 MSM_FRONTEND_DAI_MULTIMEDIA2, 8, 0,
3132 msm_pcm_get_channel_rule_index,
3133 msm_pcm_put_channel_rule_index),
3134 SOC_SINGLE_EXT("MultiMedia3 Channel Rule", SND_SOC_NOPM,
3135 MSM_FRONTEND_DAI_MULTIMEDIA3, 8, 0,
3136 msm_pcm_get_channel_rule_index,
3137 msm_pcm_put_channel_rule_index),
3138 SOC_SINGLE_EXT("MultiMedia4 Channel Rule", SND_SOC_NOPM,
3139 MSM_FRONTEND_DAI_MULTIMEDIA4, 8, 0,
3140 msm_pcm_get_channel_rule_index,
3141 msm_pcm_put_channel_rule_index),
3142 SOC_SINGLE_EXT("MultiMedia5 Channel Rule", SND_SOC_NOPM,
3143 MSM_FRONTEND_DAI_MULTIMEDIA5, 8, 0,
3144 msm_pcm_get_channel_rule_index,
3145 msm_pcm_put_channel_rule_index),
3146 SOC_SINGLE_EXT("MultiMedia6 Channel Rule", SND_SOC_NOPM,
3147 MSM_FRONTEND_DAI_MULTIMEDIA6, 8, 0,
3148 msm_pcm_get_channel_rule_index,
3149 msm_pcm_put_channel_rule_index),
3150
3151 SOC_SINGLE_EXT("MultiMedia1 Channels", SND_SOC_NOPM,
3152 MSM_FRONTEND_DAI_MULTIMEDIA1, 8, 0,
3153 msm_pcm_get_out_chs,
3154 msm_pcm_put_out_chs),
3155 SOC_SINGLE_EXT("MultiMedia2 Channels", SND_SOC_NOPM,
3156 MSM_FRONTEND_DAI_MULTIMEDIA2, 8, 0,
3157 msm_pcm_get_out_chs,
3158 msm_pcm_put_out_chs),
3159 SOC_SINGLE_EXT("MultiMedia3 Channels", SND_SOC_NOPM,
3160 MSM_FRONTEND_DAI_MULTIMEDIA3, 8, 0,
3161 msm_pcm_get_out_chs,
3162 msm_pcm_put_out_chs),
3163 SOC_SINGLE_EXT("MultiMedia4 Channels", SND_SOC_NOPM,
3164 MSM_FRONTEND_DAI_MULTIMEDIA4, 8, 0,
3165 msm_pcm_get_out_chs,
3166 msm_pcm_put_out_chs),
3167 SOC_SINGLE_EXT("MultiMedia5 Channels", SND_SOC_NOPM,
3168 MSM_FRONTEND_DAI_MULTIMEDIA5, 8, 0,
3169 msm_pcm_get_out_chs,
3170 msm_pcm_put_out_chs),
3171 SOC_SINGLE_EXT("MultiMedia6 Channels", SND_SOC_NOPM,
3172 MSM_FRONTEND_DAI_MULTIMEDIA6, 8, 0,
3173 msm_pcm_get_out_chs,
3174 msm_pcm_put_out_chs),
3175 {
3176 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3177 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3178 .name = "MultiMedia1 Channel Mixer",
3179 .info = msm_pcm_channel_mixer_info,
3180 .get = msm_pcm_channel_mixer_get,
3181 .put = msm_pcm_channel_mixer_put,
3182 .private_value = (unsigned long)&(mm1_channel_mux)
3183 },
3184 {
3185 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3186 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3187 .name = "MultiMedia2 Channel Mixer",
3188 .info = msm_pcm_channel_mixer_info,
3189 .get = msm_pcm_channel_mixer_get,
3190 .put = msm_pcm_channel_mixer_put,
3191 .private_value = (unsigned long)&(mm2_channel_mux)
3192 },
3193 {
3194 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3195 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3196 .name = "MultiMedia3 Channel Mixer",
3197 .info = msm_pcm_channel_mixer_info,
3198 .get = msm_pcm_channel_mixer_get,
3199 .put = msm_pcm_channel_mixer_put,
3200 .private_value = (unsigned long)&(mm3_channel_mux)
3201 },
3202 {
3203 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3204 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3205 .name = "MultiMedia4 Channel Mixer",
3206 .info = msm_pcm_channel_mixer_info,
3207 .get = msm_pcm_channel_mixer_get,
3208 .put = msm_pcm_channel_mixer_put,
3209 .private_value = (unsigned long)&(mm4_channel_mux)
3210 },
3211 {
3212 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3213 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3214 .name = "MultiMedia1 Output Channel1",
3215 .info = msm_pcm_channel_weight_info,
3216 .get = msm_pcm_channel_weight_get,
3217 .put = msm_pcm_channel_weight_put,
3218 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3219 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 0,}
3220 },
3221 {
3222 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3223 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3224 .name = "MultiMedia1 Output Channel2",
3225 .info = msm_pcm_channel_weight_info,
3226 .get = msm_pcm_channel_weight_get,
3227 .put = msm_pcm_channel_weight_put,
3228 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3229 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 1, }
3230 },
3231 {
3232 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3233 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3234 .name = "MultiMedia1 Output Channel3",
3235 .info = msm_pcm_channel_weight_info,
3236 .get = msm_pcm_channel_weight_get,
3237 .put = msm_pcm_channel_weight_put,
3238 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3239 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 2,}
3240 },
3241 {
3242 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3243 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3244 .name = "MultiMedia1 Output Channel4",
3245 .info = msm_pcm_channel_weight_info,
3246 .get = msm_pcm_channel_weight_get,
3247 .put = msm_pcm_channel_weight_put,
3248 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3249 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 3,}
3250 },
3251 {
3252 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3253 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3254 .name = "MultiMedia1 Output Channel5",
3255 .info = msm_pcm_channel_weight_info,
3256 .get = msm_pcm_channel_weight_get,
3257 .put = msm_pcm_channel_weight_put,
3258 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3259 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 4,}
3260 },
3261 {
3262 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3263 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3264 .name = "MultiMedia1 Output Channel6",
3265 .info = msm_pcm_channel_weight_info,
3266 .get = msm_pcm_channel_weight_get,
3267 .put = msm_pcm_channel_weight_put,
3268 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3269 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 5,}
3270 },
3271 {
3272 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3273 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3274 .name = "MultiMedia1 Output Channel7",
3275 .info = msm_pcm_channel_weight_info,
3276 .get = msm_pcm_channel_weight_get,
3277 .put = msm_pcm_channel_weight_put,
3278 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3279 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 6,}
3280 },
3281 {
3282 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3283 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3284 .name = "MultiMedia1 Output Channel8",
3285 .info = msm_pcm_channel_weight_info,
3286 .get = msm_pcm_channel_weight_get,
3287 .put = msm_pcm_channel_weight_put,
3288 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3289 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 7,}
3290 },
3291 {
3292 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3293 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3294 .name = "MultiMedia2 Output Channel1",
3295 .info = msm_pcm_channel_weight_info,
3296 .get = msm_pcm_channel_weight_get,
3297 .put = msm_pcm_channel_weight_put,
3298 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3299 {.shift = MSM_FRONTEND_DAI_MULTIMEDIA2, .rshift = 0,}
3300 },
3301 {
3302 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3303 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3304 .name = "MultiMedia2 Output Channel2",
3305 .info = msm_pcm_channel_weight_info,
3306 .get = msm_pcm_channel_weight_get,
3307 .put = msm_pcm_channel_weight_put,
3308 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3309 {.shift = MSM_FRONTEND_DAI_MULTIMEDIA2, .rshift = 1,}
3310 },
3311 {
3312 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3313 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3314 .name = "MultiMedia2 Output Channel3",
3315 .info = msm_pcm_channel_weight_info,
3316 .get = msm_pcm_channel_weight_get,
3317 .put = msm_pcm_channel_weight_put,
3318 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3319 {.shift = MSM_FRONTEND_DAI_MULTIMEDIA2, .rshift = 2,}
3320 },
3321 {
3322 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3323 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3324 .name = "MultiMedia3 Output Channel1",
3325 .info = msm_pcm_channel_weight_info,
3326 .get = msm_pcm_channel_weight_get,
3327 .put = msm_pcm_channel_weight_put,
3328 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3329 {.shift = MSM_FRONTEND_DAI_MULTIMEDIA3, .rshift = 0,}
3330 },
3331 {
3332 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3333 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3334 .name = "MultiMedia3 Output Channel2",
3335 .info = msm_pcm_channel_weight_info,
3336 .get = msm_pcm_channel_weight_get,
3337 .put = msm_pcm_channel_weight_put,
3338 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3339 {.shift = MSM_FRONTEND_DAI_MULTIMEDIA3, .rshift = 1,}
3340 },
3341 {
3342 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3343 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3344 .name = "MultiMedia1 Channel1",
3345 .info = msm_pcm_channel_input_be_info,
3346 .get = msm_pcm_channel_input_be_get,
3347 .put = msm_pcm_channel_input_be_put,
3348 .private_value = (unsigned long)&(mm1_ch1_enum)
3349 },
3350 {
3351 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3352 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3353 .name = "MultiMedia1 Channel2",
3354 .info = msm_pcm_channel_input_be_info,
3355 .get = msm_pcm_channel_input_be_get,
3356 .put = msm_pcm_channel_input_be_put,
3357 .private_value = (unsigned long)&(mm1_ch2_enum)
3358 },
3359 {
3360 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3361 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3362 .name = "MultiMedia1 Channel3",
3363 .info = msm_pcm_channel_input_be_info,
3364 .get = msm_pcm_channel_input_be_get,
3365 .put = msm_pcm_channel_input_be_put,
3366 .private_value = (unsigned long)&(mm1_ch3_enum)
3367 },
3368 {
3369 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3370 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3371 .name = "MultiMedia1 Channel4",
3372 .info = msm_pcm_channel_input_be_info,
3373 .get = msm_pcm_channel_input_be_get,
3374 .put = msm_pcm_channel_input_be_put,
3375 .private_value = (unsigned long)&(mm1_ch4_enum)
3376 },
3377 {
3378 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3379 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3380 .name = "MultiMedia1 Channel5",
3381 .info = msm_pcm_channel_input_be_info,
3382 .get = msm_pcm_channel_input_be_get,
3383 .put = msm_pcm_channel_input_be_put,
3384 .private_value = (unsigned long)&(mm1_ch5_enum)
3385 },
3386 {
3387 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3388 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3389 .name = "MultiMedia1 Channel6",
3390 .info = msm_pcm_channel_input_be_info,
3391 .get = msm_pcm_channel_input_be_get,
3392 .put = msm_pcm_channel_input_be_put,
3393 .private_value = (unsigned long)&(mm1_ch6_enum)
3394 },
3395 {
3396 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3397 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3398 .name = "MultiMedia1 Channel7",
3399 .info = msm_pcm_channel_input_be_info,
3400 .get = msm_pcm_channel_input_be_get,
3401 .put = msm_pcm_channel_input_be_put,
3402 .private_value = (unsigned long)&(mm1_ch7_enum)
3403 },
3404 {
3405 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3406 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3407 .name = "MultiMedia1 Channel8",
3408 .info = msm_pcm_channel_input_be_info,
3409 .get = msm_pcm_channel_input_be_get,
3410 .put = msm_pcm_channel_input_be_put,
3411 .private_value = (unsigned long)&(mm1_ch8_enum)
3412 },
3413};
3414static int msm_ec_ref_ch_get(struct snd_kcontrol *kcontrol,
3415 struct snd_ctl_elem_value *ucontrol)
3416{
3417 ucontrol->value.integer.value[0] = msm_ec_ref_ch;
3418 pr_debug("%s: msm_ec_ref_ch = %ld\n", __func__,
3419 ucontrol->value.integer.value[0]);
3420 return 0;
3421}
3422
3423static int msm_ec_ref_ch_put(struct snd_kcontrol *kcontrol,
3424 struct snd_ctl_elem_value *ucontrol)
3425{
3426 msm_ec_ref_ch = ucontrol->value.integer.value[0];
3427 pr_debug("%s: msm_ec_ref_ch = %d\n", __func__, msm_ec_ref_ch);
3428 adm_num_ec_ref_rx_chans(msm_ec_ref_ch);
3429 return 0;
3430}
3431
3432static const char *const ec_ref_ch_text[] = {"Zero", "One", "Two", "Three",
3433 "Four", "Five", "Six", "Seven", "Eight"};
3434
3435static int msm_ec_ref_bit_format_get(struct snd_kcontrol *kcontrol,
3436 struct snd_ctl_elem_value *ucontrol)
3437{
3438 switch (msm_ec_ref_bit_format) {
3439 case SNDRV_PCM_FORMAT_S24_LE:
3440 ucontrol->value.integer.value[0] = 2;
3441 break;
3442 case SNDRV_PCM_FORMAT_S16_LE:
3443 ucontrol->value.integer.value[0] = 1;
3444 break;
3445 default:
3446 ucontrol->value.integer.value[0] = 0;
3447 break;
3448 }
3449 pr_debug("%s: msm_ec_ref_bit_format = %ld\n",
3450 __func__, ucontrol->value.integer.value[0]);
3451 return 0;
3452}
3453
3454static int msm_ec_ref_bit_format_put(struct snd_kcontrol *kcontrol,
3455 struct snd_ctl_elem_value *ucontrol)
3456{
3457 u16 bit_width = 0;
3458
3459 switch (ucontrol->value.integer.value[0]) {
3460 case 2:
3461 msm_ec_ref_bit_format = SNDRV_PCM_FORMAT_S24_LE;
3462 break;
3463 case 1:
3464 msm_ec_ref_bit_format = SNDRV_PCM_FORMAT_S16_LE;
3465 break;
3466 default:
3467 msm_ec_ref_bit_format = 0;
3468 break;
3469 }
3470
3471 if (msm_ec_ref_bit_format == SNDRV_PCM_FORMAT_S16_LE)
3472 bit_width = 16;
3473 else if (msm_ec_ref_bit_format == SNDRV_PCM_FORMAT_S24_LE)
3474 bit_width = 24;
3475
3476 pr_debug("%s: msm_ec_ref_bit_format = %d\n",
3477 __func__, msm_ec_ref_bit_format);
3478 adm_ec_ref_rx_bit_width(bit_width);
3479 return 0;
3480}
3481
3482static char const *ec_ref_bit_format_text[] = {"0", "S16_LE", "S24_LE"};
3483
3484static int msm_ec_ref_rate_get(struct snd_kcontrol *kcontrol,
3485 struct snd_ctl_elem_value *ucontrol)
3486{
3487 ucontrol->value.integer.value[0] = msm_ec_ref_sampling_rate;
3488 pr_debug("%s: msm_ec_ref_sampling_rate = %ld\n",
3489 __func__, ucontrol->value.integer.value[0]);
3490 return 0;
3491}
3492
3493static int msm_ec_ref_rate_put(struct snd_kcontrol *kcontrol,
3494 struct snd_ctl_elem_value *ucontrol)
3495{
3496 switch (ucontrol->value.integer.value[0]) {
3497 case 0:
3498 msm_ec_ref_sampling_rate = 0;
3499 break;
3500 case 1:
3501 msm_ec_ref_sampling_rate = 8000;
3502 break;
3503 case 2:
3504 msm_ec_ref_sampling_rate = 16000;
3505 break;
3506 case 3:
3507 msm_ec_ref_sampling_rate = 32000;
3508 break;
3509 case 4:
3510 msm_ec_ref_sampling_rate = 44100;
3511 break;
3512 case 5:
3513 msm_ec_ref_sampling_rate = 48000;
3514 break;
3515 case 6:
3516 msm_ec_ref_sampling_rate = 96000;
3517 break;
3518 case 7:
3519 msm_ec_ref_sampling_rate = 192000;
3520 break;
3521 case 8:
3522 msm_ec_ref_sampling_rate = 384000;
3523 break;
3524 default:
3525 msm_ec_ref_sampling_rate = 48000;
3526 break;
3527 }
3528 pr_debug("%s: msm_ec_ref_sampling_rate = %d\n",
3529 __func__, msm_ec_ref_sampling_rate);
3530 adm_ec_ref_rx_sampling_rate(msm_ec_ref_sampling_rate);
3531 return 0;
3532}
3533
3534static const char *const ec_ref_rate_text[] = {"0", "8000", "16000",
3535 "32000", "44100", "48000", "96000", "192000", "384000"};
3536
3537static const struct soc_enum msm_route_ec_ref_params_enum[] = {
3538 SOC_ENUM_SINGLE_EXT(9, ec_ref_ch_text),
3539 SOC_ENUM_SINGLE_EXT(3, ec_ref_bit_format_text),
3540 SOC_ENUM_SINGLE_EXT(9, ec_ref_rate_text),
3541};
3542
3543static const struct snd_kcontrol_new ec_ref_param_controls[] = {
3544 SOC_ENUM_EXT("EC Reference Channels", msm_route_ec_ref_params_enum[0],
3545 msm_ec_ref_ch_get, msm_ec_ref_ch_put),
3546 SOC_ENUM_EXT("EC Reference Bit Format", msm_route_ec_ref_params_enum[1],
3547 msm_ec_ref_bit_format_get, msm_ec_ref_bit_format_put),
3548 SOC_ENUM_EXT("EC Reference SampleRate", msm_route_ec_ref_params_enum[2],
3549 msm_ec_ref_rate_get, msm_ec_ref_rate_put),
3550};
3551
3552static int msm_routing_ec_ref_rx_get(struct snd_kcontrol *kcontrol,
3553 struct snd_ctl_elem_value *ucontrol)
3554{
3555 pr_debug("%s: ec_ref_rx = %d", __func__, msm_route_ec_ref_rx);
3556 mutex_lock(&routing_lock);
3557 ucontrol->value.integer.value[0] = msm_route_ec_ref_rx;
3558 mutex_unlock(&routing_lock);
3559 return 0;
3560}
3561
3562static int msm_routing_ec_ref_rx_put(struct snd_kcontrol *kcontrol,
3563 struct snd_ctl_elem_value *ucontrol)
3564{
3565 int ec_ref_port_id;
Asish Bhattacharya34504582017-08-08 12:55:01 +05303566 struct snd_soc_dapm_widget *widget =
3567 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303568 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
3569 struct snd_soc_dapm_update *update = NULL;
3570
3571
3572 mutex_lock(&routing_lock);
3573 switch (ucontrol->value.integer.value[0]) {
3574 case 0:
3575 msm_route_ec_ref_rx = 0;
3576 ec_ref_port_id = AFE_PORT_INVALID;
3577 break;
3578 case 1:
3579 msm_route_ec_ref_rx = 1;
3580 ec_ref_port_id = SLIMBUS_0_RX;
3581 break;
3582 case 2:
3583 msm_route_ec_ref_rx = 2;
3584 ec_ref_port_id = AFE_PORT_ID_PRIMARY_MI2S_RX;
3585 break;
3586 case 3:
3587 msm_route_ec_ref_rx = 3;
3588 ec_ref_port_id = AFE_PORT_ID_PRIMARY_MI2S_TX;
3589 break;
3590 case 4:
3591 msm_route_ec_ref_rx = 4;
3592 ec_ref_port_id = AFE_PORT_ID_SECONDARY_MI2S_TX;
3593 break;
3594 case 5:
3595 msm_route_ec_ref_rx = 5;
3596 ec_ref_port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
3597 break;
3598 case 6:
3599 msm_route_ec_ref_rx = 6;
3600 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_MI2S_TX;
3601 break;
3602 case 7:
3603 msm_route_ec_ref_rx = 7;
3604 ec_ref_port_id = AFE_PORT_ID_SECONDARY_MI2S_RX;
3605 break;
3606 case 9:
3607 msm_route_ec_ref_rx = 9;
3608 ec_ref_port_id = SLIMBUS_5_RX;
3609 break;
3610 case 10:
3611 msm_route_ec_ref_rx = 10;
3612 ec_ref_port_id = SLIMBUS_1_TX;
3613 break;
3614 case 11:
3615 msm_route_ec_ref_rx = 11;
3616 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_TDM_TX_1;
3617 break;
3618 case 12:
3619 msm_route_ec_ref_rx = 12;
3620 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_TDM_RX;
3621 break;
3622 case 13:
3623 msm_route_ec_ref_rx = 13;
3624 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_TDM_RX_1;
3625 break;
3626 case 14:
3627 msm_route_ec_ref_rx = 14;
3628 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_TDM_RX_2;
3629 break;
3630 case 15:
3631 msm_route_ec_ref_rx = 15;
3632 ec_ref_port_id = SLIMBUS_6_RX;
3633 break;
3634 case 16:
3635 msm_route_ec_ref_rx = 16;
3636 ec_ref_port_id = AFE_PORT_ID_TERTIARY_MI2S_RX;
3637 break;
3638 case 17:
3639 msm_route_ec_ref_rx = 17;
3640 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_MI2S_RX;
3641 break;
3642 case 18:
3643 msm_route_ec_ref_rx = 18;
3644 ec_ref_port_id = AFE_PORT_ID_TERTIARY_TDM_TX;
3645 break;
3646 case 19:
3647 msm_route_ec_ref_rx = 19;
3648 ec_ref_port_id = AFE_PORT_ID_USB_RX;
3649 break;
3650 case 20:
3651 msm_route_ec_ref_rx = 20;
3652 ec_ref_port_id = AFE_PORT_ID_INT0_MI2S_RX;
3653 break;
3654 case 21:
3655 msm_route_ec_ref_rx = 21;
3656 ec_ref_port_id = AFE_PORT_ID_INT4_MI2S_RX;
3657 break;
3658 case 22:
3659 msm_route_ec_ref_rx = 22;
3660 ec_ref_port_id = AFE_PORT_ID_INT3_MI2S_TX;
3661 break;
Aalique Grahamee4fd7d52017-11-28 13:24:13 -08003662 case 23:
3663 msm_route_ec_ref_rx = 23;
3664 ec_ref_port_id = AFE_PORT_ID_HDMI_OVER_DP_RX;
3665 break;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303666 default:
3667 msm_route_ec_ref_rx = 0; /* NONE */
3668 pr_err("%s EC ref rx %ld not valid\n",
3669 __func__, ucontrol->value.integer.value[0]);
3670 ec_ref_port_id = AFE_PORT_INVALID;
3671 break;
3672 }
3673 adm_ec_ref_rx_id(ec_ref_port_id);
3674 pr_debug("%s: msm_route_ec_ref_rx = %d\n",
3675 __func__, msm_route_ec_ref_rx);
3676 mutex_unlock(&routing_lock);
3677 snd_soc_dapm_mux_update_power(widget->dapm, kcontrol,
3678 msm_route_ec_ref_rx, e, update);
3679 return 0;
3680}
3681
3682static const char *const ec_ref_rx[] = { "None", "SLIM_RX", "I2S_RX",
3683 "PRI_MI2S_TX", "SEC_MI2S_TX",
3684 "TERT_MI2S_TX", "QUAT_MI2S_TX", "SEC_I2S_RX", "PROXY_RX",
3685 "SLIM_5_RX", "SLIM_1_TX", "QUAT_TDM_TX_1",
3686 "QUAT_TDM_RX_0", "QUAT_TDM_RX_1", "QUAT_TDM_RX_2", "SLIM_6_RX",
3687 "TERT_MI2S_RX", "QUAT_MI2S_RX", "TERT_TDM_TX_0", "USB_AUDIO_RX",
Aalique Grahamee4fd7d52017-11-28 13:24:13 -08003688 "INT0_MI2S_RX", "INT4_MI2S_RX", "INT3_MI2S_TX", "DISPLAY_PORT"};
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303689
3690static const struct soc_enum msm_route_ec_ref_rx_enum[] = {
3691 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(ec_ref_rx), ec_ref_rx),
3692};
3693
3694static const struct snd_kcontrol_new ext_ec_ref_mux_ul1 =
3695 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL1 MUX Mux",
3696 msm_route_ec_ref_rx_enum[0],
3697 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3698
3699static const struct snd_kcontrol_new ext_ec_ref_mux_ul2 =
3700 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL2 MUX Mux",
3701 msm_route_ec_ref_rx_enum[0],
3702 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3703
3704static const struct snd_kcontrol_new ext_ec_ref_mux_ul3 =
3705 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL3 MUX Mux",
3706 msm_route_ec_ref_rx_enum[0],
3707 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3708
3709static const struct snd_kcontrol_new ext_ec_ref_mux_ul4 =
3710 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL4 MUX Mux",
3711 msm_route_ec_ref_rx_enum[0],
3712 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3713
3714static const struct snd_kcontrol_new ext_ec_ref_mux_ul5 =
3715 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL5 MUX Mux",
3716 msm_route_ec_ref_rx_enum[0],
3717 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3718
3719static const struct snd_kcontrol_new ext_ec_ref_mux_ul6 =
3720 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL6 MUX Mux",
3721 msm_route_ec_ref_rx_enum[0],
3722 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3723
3724static const struct snd_kcontrol_new ext_ec_ref_mux_ul8 =
3725 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL8 MUX Mux",
3726 msm_route_ec_ref_rx_enum[0],
3727 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3728
3729static const struct snd_kcontrol_new ext_ec_ref_mux_ul9 =
3730 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL9 MUX Mux",
3731 msm_route_ec_ref_rx_enum[0],
3732 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3733
Asish Bhattacharya34504582017-08-08 12:55:01 +05303734static const struct snd_kcontrol_new ext_ec_ref_mux_ul16 =
3735 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL16 MUX Mux",
3736 msm_route_ec_ref_rx_enum[0],
3737 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3738
Laxminath Kasam38070be2017-08-17 18:21:59 +05303739static const struct snd_kcontrol_new ext_ec_ref_mux_ul10 =
3740 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL10 MUX Mux",
3741 msm_route_ec_ref_rx_enum[0],
3742 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3743
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303744static const struct snd_kcontrol_new ext_ec_ref_mux_ul17 =
3745 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL17 MUX Mux",
3746 msm_route_ec_ref_rx_enum[0],
3747 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3748
3749static const struct snd_kcontrol_new ext_ec_ref_mux_ul18 =
3750 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL18 MUX Mux",
3751 msm_route_ec_ref_rx_enum[0],
3752 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3753
3754static const struct snd_kcontrol_new ext_ec_ref_mux_ul19 =
3755 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL19 MUX Mux",
3756 msm_route_ec_ref_rx_enum[0],
3757 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3758
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05303759static const struct snd_kcontrol_new ext_ec_ref_mux_ul28 =
3760 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL28 MUX Mux",
3761 msm_route_ec_ref_rx_enum[0],
3762 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3763
3764static const struct snd_kcontrol_new ext_ec_ref_mux_ul29 =
3765 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL29 MUX Mux",
3766 msm_route_ec_ref_rx_enum[0],
3767 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3768
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303769static int msm_routing_ext_ec_get(struct snd_kcontrol *kcontrol,
3770 struct snd_ctl_elem_value *ucontrol)
3771{
3772 pr_debug("%s: ext_ec_ref_rx = %x\n", __func__, msm_route_ext_ec_ref);
3773
3774 mutex_lock(&routing_lock);
3775 ucontrol->value.integer.value[0] = msm_route_ext_ec_ref;
3776 mutex_unlock(&routing_lock);
3777 return 0;
3778}
3779
3780static int msm_routing_ext_ec_put(struct snd_kcontrol *kcontrol,
3781 struct snd_ctl_elem_value *ucontrol)
3782{
Asish Bhattacharya34504582017-08-08 12:55:01 +05303783 struct snd_soc_dapm_widget *widget =
3784 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303785 int mux = ucontrol->value.enumerated.item[0];
3786 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
3787 int ret = 1;
3788 bool state = true;
3789 uint16_t ext_ec_ref_port_id;
3790 struct snd_soc_dapm_update *update = NULL;
3791
3792 if (mux >= e->items) {
3793 pr_err("%s: Invalid mux value %d\n", __func__, mux);
3794 return -EINVAL;
3795 }
3796
3797 mutex_lock(&routing_lock);
3798 msm_route_ext_ec_ref = ucontrol->value.integer.value[0];
3799
3800 switch (msm_route_ext_ec_ref) {
3801 case EXT_EC_REF_PRI_MI2S_TX:
3802 ext_ec_ref_port_id = AFE_PORT_ID_PRIMARY_MI2S_TX;
3803 break;
3804 case EXT_EC_REF_SEC_MI2S_TX:
3805 ext_ec_ref_port_id = AFE_PORT_ID_SECONDARY_MI2S_TX;
3806 break;
3807 case EXT_EC_REF_TERT_MI2S_TX:
3808 ext_ec_ref_port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
3809 break;
3810 case EXT_EC_REF_QUAT_MI2S_TX:
3811 ext_ec_ref_port_id = AFE_PORT_ID_QUATERNARY_MI2S_TX;
3812 break;
3813 case EXT_EC_REF_QUIN_MI2S_TX:
3814 ext_ec_ref_port_id = AFE_PORT_ID_QUINARY_MI2S_TX;
3815 break;
3816 case EXT_EC_REF_SLIM_1_TX:
3817 ext_ec_ref_port_id = SLIMBUS_1_TX;
3818 break;
3819 case EXT_EC_REF_NONE:
3820 default:
3821 ext_ec_ref_port_id = AFE_PORT_INVALID;
3822 state = false;
3823 break;
3824 }
3825
3826 pr_debug("%s: val = %d ext_ec_ref_port_id = 0x%0x state = %d\n",
3827 __func__, msm_route_ext_ec_ref, ext_ec_ref_port_id, state);
3828
3829 if (!voc_set_ext_ec_ref_port_id(ext_ec_ref_port_id, state)) {
3830 mutex_unlock(&routing_lock);
3831 snd_soc_dapm_mux_update_power(widget->dapm, kcontrol, mux, e,
3832 update);
3833 } else {
3834 ret = -EINVAL;
3835 mutex_unlock(&routing_lock);
3836 }
3837 return ret;
3838}
3839
3840static const char * const ext_ec_ref_rx[] = {"NONE", "PRI_MI2S_TX",
3841 "SEC_MI2S_TX", "TERT_MI2S_TX",
3842 "QUAT_MI2S_TX", "QUIN_MI2S_TX",
3843 "SLIM_1_TX"};
3844
3845static const struct soc_enum msm_route_ext_ec_ref_rx_enum[] = {
3846 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(ext_ec_ref_rx), ext_ec_ref_rx),
3847};
3848
3849static const struct snd_kcontrol_new voc_ext_ec_mux =
3850 SOC_DAPM_ENUM_EXT("VOC_EXT_EC MUX Mux", msm_route_ext_ec_ref_rx_enum[0],
3851 msm_routing_ext_ec_get, msm_routing_ext_ec_put);
3852
3853
3854static const struct snd_kcontrol_new pri_i2s_rx_mixer_controls[] = {
3855 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_I2S_RX,
3856 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
3857 msm_routing_put_audio_mixer),
3858 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_I2S_RX,
3859 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
3860 msm_routing_put_audio_mixer),
3861 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_I2S_RX,
3862 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
3863 msm_routing_put_audio_mixer),
3864 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_I2S_RX,
3865 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
3866 msm_routing_put_audio_mixer),
3867 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_I2S_RX,
3868 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
3869 msm_routing_put_audio_mixer),
3870 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_I2S_RX,
3871 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
3872 msm_routing_put_audio_mixer),
3873 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_I2S_RX,
3874 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
3875 msm_routing_put_audio_mixer),
3876 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_I2S_RX,
3877 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
3878 msm_routing_put_audio_mixer),
3879 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_I2S_RX,
3880 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
3881 msm_routing_put_audio_mixer),
3882 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_I2S_RX,
3883 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
3884 msm_routing_put_audio_mixer),
3885 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_I2S_RX,
3886 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
3887 msm_routing_put_audio_mixer),
3888 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_I2S_RX,
3889 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
3890 msm_routing_put_audio_mixer),
3891 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_I2S_RX,
3892 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
3893 msm_routing_put_audio_mixer),
3894 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_I2S_RX,
3895 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
3896 msm_routing_put_audio_mixer),
3897 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_I2S_RX,
3898 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
3899 msm_routing_put_audio_mixer),
3900 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_I2S_RX,
3901 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
3902 msm_routing_put_audio_mixer),
3903 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_PRI_I2S_RX,
3904 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
3905 msm_routing_put_audio_mixer),
3906 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_PRI_I2S_RX,
3907 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
3908 msm_routing_put_audio_mixer),
3909 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_PRI_I2S_RX,
3910 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
3911 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05303912 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_PRI_I2S_RX,
3913 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
3914 msm_routing_put_audio_mixer),
3915 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_PRI_I2S_RX,
3916 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
3917 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303918};
3919
3920static const struct snd_kcontrol_new sec_i2s_rx_mixer_controls[] = {
3921 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_I2S_RX,
3922 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
3923 msm_routing_put_audio_mixer),
3924 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_I2S_RX,
3925 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
3926 msm_routing_put_audio_mixer),
3927 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_I2S_RX,
3928 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
3929 msm_routing_put_audio_mixer),
3930 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_I2S_RX,
3931 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
3932 msm_routing_put_audio_mixer),
3933 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_I2S_RX,
3934 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
3935 msm_routing_put_audio_mixer),
3936 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_I2S_RX,
3937 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
3938 msm_routing_put_audio_mixer),
3939 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_I2S_RX,
3940 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
3941 msm_routing_put_audio_mixer),
3942 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_I2S_RX,
3943 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
3944 msm_routing_put_audio_mixer),
3945 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_I2S_RX,
3946 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
3947 msm_routing_put_audio_mixer),
3948 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_I2S_RX,
3949 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
3950 msm_routing_put_audio_mixer),
3951 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_I2S_RX,
3952 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
3953 msm_routing_put_audio_mixer),
3954 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_I2S_RX,
3955 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
3956 msm_routing_put_audio_mixer),
3957 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_I2S_RX,
3958 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
3959 msm_routing_put_audio_mixer),
3960 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_I2S_RX,
3961 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
3962 msm_routing_put_audio_mixer),
3963 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_I2S_RX,
3964 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
3965 msm_routing_put_audio_mixer),
3966 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_I2S_RX,
3967 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
3968 msm_routing_put_audio_mixer),
3969 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SEC_I2S_RX,
3970 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
3971 msm_routing_put_audio_mixer),
3972 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SEC_I2S_RX,
3973 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
3974 msm_routing_put_audio_mixer),
3975 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SEC_I2S_RX,
3976 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
3977 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05303978 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_SEC_I2S_RX,
3979 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
3980 msm_routing_put_audio_mixer),
3981 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_SEC_I2S_RX,
3982 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
3983 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303984};
3985
3986static const struct snd_kcontrol_new spdif_rx_mixer_controls[] = {
3987 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SPDIF_RX,
3988 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
3989 msm_routing_put_audio_mixer),
3990 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SPDIF_RX,
3991 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
3992 msm_routing_put_audio_mixer),
3993 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SPDIF_RX,
3994 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
3995 msm_routing_put_audio_mixer),
3996 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SPDIF_RX,
3997 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
3998 msm_routing_put_audio_mixer),
3999 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SPDIF_RX,
4000 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4001 msm_routing_put_audio_mixer),
4002 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SPDIF_RX,
4003 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4004 msm_routing_put_audio_mixer),
4005 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SPDIF_RX,
4006 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4007 msm_routing_put_audio_mixer),
4008 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SPDIF_RX,
4009 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4010 msm_routing_put_audio_mixer),
4011 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SPDIF_RX,
4012 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4013 msm_routing_put_audio_mixer),
4014 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SPDIF_RX,
4015 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4016 msm_routing_put_audio_mixer),
4017 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SPDIF_RX,
4018 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4019 msm_routing_put_audio_mixer),
4020 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SPDIF_RX,
4021 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4022 msm_routing_put_audio_mixer),
4023 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SPDIF_RX,
4024 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4025 msm_routing_put_audio_mixer),
4026 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SPDIF_RX,
4027 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4028 msm_routing_put_audio_mixer),
4029 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SPDIF_RX,
4030 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4031 msm_routing_put_audio_mixer),
4032 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SPDIF_RX,
4033 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4034 msm_routing_put_audio_mixer),
4035 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SPDIF_RX,
4036 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4037 msm_routing_put_audio_mixer),
4038 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SPDIF_RX,
4039 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4040 msm_routing_put_audio_mixer),
4041 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SPDIF_RX,
4042 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4043 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304044 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_SPDIF_RX,
4045 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4046 msm_routing_put_audio_mixer),
4047 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_SPDIF_RX,
4048 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4049 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304050};
4051
4052static const struct snd_kcontrol_new slimbus_2_rx_mixer_controls[] = {
4053 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4054 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4055 msm_routing_put_audio_mixer),
4056 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4057 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4058 msm_routing_put_audio_mixer),
4059 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4060 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4061 msm_routing_put_audio_mixer),
4062 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4063 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4064 msm_routing_put_audio_mixer),
4065 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4066 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4067 msm_routing_put_audio_mixer),
4068 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4069 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4070 msm_routing_put_audio_mixer),
4071 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4072 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4073 msm_routing_put_audio_mixer),
4074 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4075 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4076 msm_routing_put_audio_mixer),
4077 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4078 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4079 msm_routing_put_audio_mixer),
4080 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4081 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4082 msm_routing_put_audio_mixer),
4083 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4084 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4085 msm_routing_put_audio_mixer),
4086 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4087 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4088 msm_routing_put_audio_mixer),
4089 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4090 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4091 msm_routing_put_audio_mixer),
4092 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4093 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4094 msm_routing_put_audio_mixer),
4095 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4096 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4097 msm_routing_put_audio_mixer),
4098 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4099 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4100 msm_routing_put_audio_mixer),
4101};
4102
4103static const struct snd_kcontrol_new slimbus_5_rx_mixer_controls[] = {
4104 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4105 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4106 msm_routing_put_audio_mixer),
4107 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4108 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4109 msm_routing_put_audio_mixer),
4110 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4111 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4112 msm_routing_put_audio_mixer),
4113 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4114 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4115 msm_routing_put_audio_mixer),
4116 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4117 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4118 msm_routing_put_audio_mixer),
4119 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4120 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4121 msm_routing_put_audio_mixer),
4122 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4123 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4124 msm_routing_put_audio_mixer),
4125 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4126 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4127 msm_routing_put_audio_mixer),
4128 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4129 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4130 msm_routing_put_audio_mixer),
4131 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4132 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4133 msm_routing_put_audio_mixer),
4134 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4135 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4136 msm_routing_put_audio_mixer),
4137 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4138 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4139 msm_routing_put_audio_mixer),
4140 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4141 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4142 msm_routing_put_audio_mixer),
4143 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4144 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4145 msm_routing_put_audio_mixer),
4146 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4147 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4148 msm_routing_put_audio_mixer),
4149 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4150 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4151 msm_routing_put_audio_mixer),
4152 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4153 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4154 msm_routing_put_audio_mixer),
4155 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4156 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4157 msm_routing_put_audio_mixer),
4158 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4159 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4160 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304161 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4162 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4163 msm_routing_put_audio_mixer),
4164 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4165 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4166 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304167};
4168
4169static const struct snd_kcontrol_new slimbus_rx_mixer_controls[] = {
4170 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4171 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4172 msm_routing_put_audio_mixer),
4173 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4174 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4175 msm_routing_put_audio_mixer),
4176 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4177 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4178 msm_routing_put_audio_mixer),
4179 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4180 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4181 msm_routing_put_audio_mixer),
4182 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4183 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4184 msm_routing_put_audio_mixer),
4185 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4186 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4187 msm_routing_put_audio_mixer),
4188 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4189 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4190 msm_routing_put_audio_mixer),
4191 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4192 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4193 msm_routing_put_audio_mixer),
4194 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4195 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4196 msm_routing_put_audio_mixer),
4197 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4198 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4199 msm_routing_put_audio_mixer),
4200 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4201 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4202 msm_routing_put_audio_mixer),
4203 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4204 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4205 msm_routing_put_audio_mixer),
4206 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4207 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4208 msm_routing_put_audio_mixer),
4209 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4210 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4211 msm_routing_put_audio_mixer),
4212 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4213 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4214 msm_routing_put_audio_mixer),
4215 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4216 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4217 msm_routing_put_audio_mixer),
4218 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4219 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4220 msm_routing_put_audio_mixer),
4221 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4222 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4223 msm_routing_put_audio_mixer),
4224 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4225 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4226 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304227 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4228 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4229 msm_routing_put_audio_mixer),
4230 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4231 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4232 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304233};
4234
4235static const struct snd_kcontrol_new mi2s_rx_mixer_controls[] = {
4236 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_MI2S_RX,
4237 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4238 msm_routing_put_audio_mixer),
4239 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_MI2S_RX,
4240 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4241 msm_routing_put_audio_mixer),
4242 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_MI2S_RX,
4243 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4244 msm_routing_put_audio_mixer),
4245 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_MI2S_RX,
4246 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4247 msm_routing_put_audio_mixer),
4248 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_MI2S_RX,
4249 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4250 msm_routing_put_audio_mixer),
4251 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_MI2S_RX,
4252 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4253 msm_routing_put_audio_mixer),
4254 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_MI2S_RX,
4255 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4256 msm_routing_put_audio_mixer),
4257 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_MI2S_RX,
4258 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4259 msm_routing_put_audio_mixer),
4260 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_MI2S_RX,
4261 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4262 msm_routing_put_audio_mixer),
4263 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_MI2S_RX,
4264 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4265 msm_routing_put_audio_mixer),
4266 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_MI2S_RX,
4267 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4268 msm_routing_put_audio_mixer),
4269 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_MI2S_RX,
4270 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4271 msm_routing_put_audio_mixer),
4272 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_MI2S_RX,
4273 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4274 msm_routing_put_audio_mixer),
4275 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_MI2S_RX,
4276 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4277 msm_routing_put_audio_mixer),
4278 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_MI2S_RX,
4279 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4280 msm_routing_put_audio_mixer),
4281 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_MI2S_RX,
4282 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4283 msm_routing_put_audio_mixer),
4284 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_MI2S_RX,
4285 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4286 msm_routing_put_audio_mixer),
4287 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_MI2S_RX,
4288 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4289 msm_routing_put_audio_mixer),
4290 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_MI2S_RX,
4291 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4292 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304293 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_MI2S_RX,
4294 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4295 msm_routing_put_audio_mixer),
4296 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_MI2S_RX,
4297 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4298 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304299};
4300
4301static const struct snd_kcontrol_new quaternary_mi2s_rx_mixer_controls[] = {
4302 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4303 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4304 msm_routing_put_audio_mixer),
4305 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4306 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4307 msm_routing_put_audio_mixer),
4308 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4309 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4310 msm_routing_put_audio_mixer),
4311 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4312 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4313 msm_routing_put_audio_mixer),
4314 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4315 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4316 msm_routing_put_audio_mixer),
4317 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4318 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4319 msm_routing_put_audio_mixer),
4320 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4321 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4322 msm_routing_put_audio_mixer),
4323 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4324 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4325 msm_routing_put_audio_mixer),
4326 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4327 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4328 msm_routing_put_audio_mixer),
4329 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4330 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4331 msm_routing_put_audio_mixer),
4332 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4333 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4334 msm_routing_put_audio_mixer),
4335 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4336 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4337 msm_routing_put_audio_mixer),
4338 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4339 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4340 msm_routing_put_audio_mixer),
4341 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4342 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4343 msm_routing_put_audio_mixer),
4344 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4345 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4346 msm_routing_put_audio_mixer),
4347 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4348 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4349 msm_routing_put_audio_mixer),
4350 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4351 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4352 msm_routing_put_audio_mixer),
4353 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4354 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4355 msm_routing_put_audio_mixer),
4356 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4357 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4358 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304359 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4360 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4361 msm_routing_put_audio_mixer),
4362 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4363 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4364 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304365};
4366
4367static const struct snd_kcontrol_new quinary_mi2s_rx_mixer_controls[] = {
4368 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4369 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4370 msm_routing_put_audio_mixer),
4371 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4372 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4373 msm_routing_put_audio_mixer),
4374 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4375 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4376 msm_routing_put_audio_mixer),
4377 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4378 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4379 msm_routing_put_audio_mixer),
4380 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4381 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4382 msm_routing_put_audio_mixer),
4383 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4384 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4385 msm_routing_put_audio_mixer),
4386 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4387 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4388 msm_routing_put_audio_mixer),
4389 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4390 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4391 msm_routing_put_audio_mixer),
4392 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4393 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4394 msm_routing_put_audio_mixer),
4395 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4396 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4397 msm_routing_put_audio_mixer),
4398 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4399 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4400 msm_routing_put_audio_mixer),
4401 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4402 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4403 msm_routing_put_audio_mixer),
4404 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4405 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4406 msm_routing_put_audio_mixer),
4407 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4408 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4409 msm_routing_put_audio_mixer),
4410 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4411 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4412 msm_routing_put_audio_mixer),
4413 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4414 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4415 msm_routing_put_audio_mixer),
4416 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4417 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4418 msm_routing_put_audio_mixer),
4419 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4420 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4421 msm_routing_put_audio_mixer),
4422 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4423 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4424 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304425 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4426 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4427 msm_routing_put_audio_mixer),
4428 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4429 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4430 msm_routing_put_audio_mixer),
4431
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304432};
4433
4434static const struct snd_kcontrol_new tertiary_mi2s_rx_mixer_controls[] = {
4435 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4436 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4437 msm_routing_put_audio_mixer),
4438 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4439 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4440 msm_routing_put_audio_mixer),
4441 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4442 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4443 msm_routing_put_audio_mixer),
4444 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4445 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4446 msm_routing_put_audio_mixer),
4447 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4448 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4449 msm_routing_put_audio_mixer),
4450 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4451 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4452 msm_routing_put_audio_mixer),
4453 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4454 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4455 msm_routing_put_audio_mixer),
4456 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4457 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4458 msm_routing_put_audio_mixer),
4459 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4460 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4461 msm_routing_put_audio_mixer),
4462 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4463 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4464 msm_routing_put_audio_mixer),
4465 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4466 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4467 msm_routing_put_audio_mixer),
4468 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4469 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4470 msm_routing_put_audio_mixer),
4471 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4472 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4473 msm_routing_put_audio_mixer),
4474 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4475 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4476 msm_routing_put_audio_mixer),
4477 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4478 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4479 msm_routing_put_audio_mixer),
4480 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4481 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4482 msm_routing_put_audio_mixer),
4483 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4484 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4485 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304486 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4487 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4488 msm_routing_put_audio_mixer),
4489 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4490 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4491 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304492};
4493
4494static const struct snd_kcontrol_new secondary_mi2s_rx2_mixer_controls[] = {
4495 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SECONDARY_MI2S_RX_SD1,
4496 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4497 msm_routing_put_audio_mixer),
4498};
4499
4500static const struct snd_kcontrol_new secondary_mi2s_rx_mixer_controls[] = {
4501 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4502 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4503 msm_routing_put_audio_mixer),
4504 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4505 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4506 msm_routing_put_audio_mixer),
4507 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4508 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4509 msm_routing_put_audio_mixer),
4510 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4511 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4512 msm_routing_put_audio_mixer),
4513 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4514 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4515 msm_routing_put_audio_mixer),
4516 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4517 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4518 msm_routing_put_audio_mixer),
4519 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4520 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4521 msm_routing_put_audio_mixer),
4522 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4523 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4524 msm_routing_put_audio_mixer),
4525 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4526 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4527 msm_routing_put_audio_mixer),
4528 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4529 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4530 msm_routing_put_audio_mixer),
4531 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4532 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4533 msm_routing_put_audio_mixer),
4534 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4535 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4536 msm_routing_put_audio_mixer),
4537 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4538 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4539 msm_routing_put_audio_mixer),
4540 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4541 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4542 msm_routing_put_audio_mixer),
4543 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4544 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4545 msm_routing_put_audio_mixer),
4546 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4547 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4548 msm_routing_put_audio_mixer),
4549 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4550 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4551 msm_routing_put_audio_mixer),
4552 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4553 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4554 msm_routing_put_audio_mixer),
4555 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4556 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4557 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304558 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4559 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4560 msm_routing_put_audio_mixer),
4561 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4562 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4563 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304564};
4565
4566static const struct snd_kcontrol_new primary_mi2s_rx_mixer_controls[] = {
4567 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_MI2S_RX,
4568 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4569 msm_routing_put_audio_mixer),
4570 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_MI2S_RX,
4571 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4572 msm_routing_put_audio_mixer),
4573 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_MI2S_RX,
4574 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4575 msm_routing_put_audio_mixer),
4576 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_MI2S_RX,
4577 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4578 msm_routing_put_audio_mixer),
4579 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_MI2S_RX,
4580 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4581 msm_routing_put_audio_mixer),
4582 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_MI2S_RX,
4583 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4584 msm_routing_put_audio_mixer),
4585 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_MI2S_RX,
4586 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4587 msm_routing_put_audio_mixer),
4588 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_MI2S_RX,
4589 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4590 msm_routing_put_audio_mixer),
4591 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_MI2S_RX,
4592 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4593 msm_routing_put_audio_mixer),
4594 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_MI2S_RX,
4595 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4596 msm_routing_put_audio_mixer),
4597 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_MI2S_RX,
4598 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4599 msm_routing_put_audio_mixer),
4600 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_MI2S_RX,
4601 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4602 msm_routing_put_audio_mixer),
4603 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_MI2S_RX,
4604 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4605 msm_routing_put_audio_mixer),
4606 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_MI2S_RX,
4607 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4608 msm_routing_put_audio_mixer),
4609 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_MI2S_RX,
4610 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4611 msm_routing_put_audio_mixer),
4612 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_MI2S_RX,
4613 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4614 msm_routing_put_audio_mixer),
4615 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_PRI_MI2S_RX,
4616 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4617 msm_routing_put_audio_mixer),
4618 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_PRI_MI2S_RX,
4619 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4620 msm_routing_put_audio_mixer),
4621 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_PRI_MI2S_RX,
4622 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4623 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304624 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_PRI_MI2S_RX,
4625 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4626 msm_routing_put_audio_mixer),
4627 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_PRI_MI2S_RX,
4628 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4629 msm_routing_put_audio_mixer),
4630
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304631};
4632
4633static const struct snd_kcontrol_new int0_mi2s_rx_mixer_controls[] = {
4634 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_INT0_MI2S_RX,
4635 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4636 msm_routing_put_audio_mixer),
4637 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_INT0_MI2S_RX,
4638 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4639 msm_routing_put_audio_mixer),
4640 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_INT0_MI2S_RX,
4641 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4642 msm_routing_put_audio_mixer),
4643 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_INT0_MI2S_RX,
4644 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4645 msm_routing_put_audio_mixer),
4646 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_INT0_MI2S_RX,
4647 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4648 msm_routing_put_audio_mixer),
4649 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_INT0_MI2S_RX,
4650 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4651 msm_routing_put_audio_mixer),
4652 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_INT0_MI2S_RX,
4653 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4654 msm_routing_put_audio_mixer),
4655 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_INT0_MI2S_RX,
4656 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4657 msm_routing_put_audio_mixer),
4658 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_INT0_MI2S_RX,
4659 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4660 msm_routing_put_audio_mixer),
4661 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_INT0_MI2S_RX,
4662 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4663 msm_routing_put_audio_mixer),
4664 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_INT0_MI2S_RX,
4665 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4666 msm_routing_put_audio_mixer),
4667 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_INT0_MI2S_RX,
4668 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4669 msm_routing_put_audio_mixer),
4670 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_INT0_MI2S_RX,
4671 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4672 msm_routing_put_audio_mixer),
4673 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_INT0_MI2S_RX,
4674 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4675 msm_routing_put_audio_mixer),
4676 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_INT0_MI2S_RX,
4677 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4678 msm_routing_put_audio_mixer),
4679 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_INT0_MI2S_RX,
4680 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4681 msm_routing_put_audio_mixer),
4682};
4683
4684static const struct snd_kcontrol_new int4_mi2s_rx_mixer_controls[] = {
4685 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_INT4_MI2S_RX,
4686 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4687 msm_routing_put_audio_mixer),
4688 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_INT4_MI2S_RX,
4689 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4690 msm_routing_put_audio_mixer),
4691 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_INT4_MI2S_RX,
4692 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4693 msm_routing_put_audio_mixer),
4694 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_INT4_MI2S_RX,
4695 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4696 msm_routing_put_audio_mixer),
4697 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_INT4_MI2S_RX,
4698 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4699 msm_routing_put_audio_mixer),
4700 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_INT4_MI2S_RX,
4701 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4702 msm_routing_put_audio_mixer),
4703 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_INT4_MI2S_RX,
4704 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4705 msm_routing_put_audio_mixer),
4706 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_INT4_MI2S_RX,
4707 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4708 msm_routing_put_audio_mixer),
4709 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_INT4_MI2S_RX,
4710 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4711 msm_routing_put_audio_mixer),
4712 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_INT4_MI2S_RX,
4713 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4714 msm_routing_put_audio_mixer),
4715 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_INT4_MI2S_RX,
4716 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4717 msm_routing_put_audio_mixer),
4718 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_INT4_MI2S_RX,
4719 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4720 msm_routing_put_audio_mixer),
4721 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_INT4_MI2S_RX,
4722 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4723 msm_routing_put_audio_mixer),
4724 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_INT4_MI2S_RX,
4725 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4726 msm_routing_put_audio_mixer),
4727 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_INT4_MI2S_RX,
4728 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4729 msm_routing_put_audio_mixer),
4730 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_INT4_MI2S_RX,
4731 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4732 msm_routing_put_audio_mixer),
4733};
4734
4735static const struct snd_kcontrol_new hdmi_mixer_controls[] = {
4736 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_HDMI_RX,
4737 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4738 msm_routing_put_audio_mixer),
4739 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_HDMI_RX,
4740 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4741 msm_routing_put_audio_mixer),
4742 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_HDMI_RX,
4743 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4744 msm_routing_put_audio_mixer),
4745 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_HDMI_RX,
4746 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4747 msm_routing_put_audio_mixer),
4748 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_HDMI_RX,
4749 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4750 msm_routing_put_audio_mixer),
4751 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_HDMI_RX,
4752 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4753 msm_routing_put_audio_mixer),
4754 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_HDMI_RX,
4755 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4756 msm_routing_put_audio_mixer),
4757 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_HDMI_RX,
4758 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4759 msm_routing_put_audio_mixer),
4760 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_HDMI_RX,
4761 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4762 msm_routing_put_audio_mixer),
4763 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_HDMI_RX,
4764 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4765 msm_routing_put_audio_mixer),
4766 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_HDMI_RX,
4767 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4768 msm_routing_put_audio_mixer),
4769 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_HDMI_RX,
4770 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4771 msm_routing_put_audio_mixer),
4772 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_HDMI_RX,
4773 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4774 msm_routing_put_audio_mixer),
4775 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_HDMI_RX,
4776 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4777 msm_routing_put_audio_mixer),
4778 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_HDMI_RX,
4779 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4780 msm_routing_put_audio_mixer),
4781 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_HDMI_RX,
4782 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4783 msm_routing_put_audio_mixer),
4784 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_HDMI_RX,
4785 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4786 msm_routing_put_audio_mixer),
4787 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_HDMI_RX,
4788 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4789 msm_routing_put_audio_mixer),
4790 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_HDMI_RX,
4791 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4792 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304793 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_HDMI_RX,
4794 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4795 msm_routing_put_audio_mixer),
4796 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_HDMI_RX,
4797 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4798 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304799};
4800
4801static const struct snd_kcontrol_new display_port_mixer_controls[] = {
4802 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4803 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4804 msm_routing_put_audio_mixer),
4805 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4806 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4807 msm_routing_put_audio_mixer),
4808 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4809 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4810 msm_routing_put_audio_mixer),
4811 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4812 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4813 msm_routing_put_audio_mixer),
4814 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4815 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4816 msm_routing_put_audio_mixer),
4817 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4818 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4819 msm_routing_put_audio_mixer),
4820 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4821 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4822 msm_routing_put_audio_mixer),
4823 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4824 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4825 msm_routing_put_audio_mixer),
4826 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4827 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4828 msm_routing_put_audio_mixer),
4829 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4830 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4831 msm_routing_put_audio_mixer),
4832 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4833 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4834 msm_routing_put_audio_mixer),
4835 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4836 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4837 msm_routing_put_audio_mixer),
4838 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4839 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4840 msm_routing_put_audio_mixer),
4841 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4842 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4843 msm_routing_put_audio_mixer),
4844 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4845 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4846 msm_routing_put_audio_mixer),
4847 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4848 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4849 msm_routing_put_audio_mixer),
4850};
4851
4852 /* incall music delivery mixer */
4853static const struct snd_kcontrol_new incall_music_delivery_mixer_controls[] = {
4854 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_VOICE_PLAYBACK_TX,
4855 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4856 msm_routing_put_audio_mixer),
4857 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_VOICE_PLAYBACK_TX,
4858 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4859 msm_routing_put_audio_mixer),
4860 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_VOICE_PLAYBACK_TX,
4861 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4862 msm_routing_put_audio_mixer),
4863 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_VOICE_PLAYBACK_TX,
4864 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4865 msm_routing_put_audio_mixer),
4866};
4867
4868static const struct snd_kcontrol_new incall_music2_delivery_mixer_controls[] = {
4869 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_VOICE2_PLAYBACK_TX,
4870 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4871 msm_routing_put_audio_mixer),
4872 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_VOICE2_PLAYBACK_TX,
4873 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4874 msm_routing_put_audio_mixer),
4875 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_VOICE2_PLAYBACK_TX,
4876 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4877 msm_routing_put_audio_mixer),
4878 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_VOICE2_PLAYBACK_TX,
4879 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4880 msm_routing_put_audio_mixer),
4881};
4882
4883static const struct snd_kcontrol_new slimbus_4_rx_mixer_controls[] = {
4884 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_4_RX,
4885 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4886 msm_routing_put_audio_mixer),
4887 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_4_RX,
4888 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4889 msm_routing_put_audio_mixer),
4890 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_4_RX,
4891 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4892 msm_routing_put_audio_mixer),
4893 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_4_RX,
4894 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4895 msm_routing_put_audio_mixer),
4896};
4897
4898static const struct snd_kcontrol_new slimbus_6_rx_mixer_controls[] = {
4899 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4900 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4901 msm_routing_put_audio_mixer),
4902 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4903 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4904 msm_routing_put_audio_mixer),
4905 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4906 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4907 msm_routing_put_audio_mixer),
4908 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4909 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4910 msm_routing_put_audio_mixer),
4911 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4912 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4913 msm_routing_put_audio_mixer),
4914 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4915 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4916 msm_routing_put_audio_mixer),
4917 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4918 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4919 msm_routing_put_audio_mixer),
4920 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4921 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4922 msm_routing_put_audio_mixer),
4923 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4924 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4925 msm_routing_put_audio_mixer),
4926 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4927 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4928 msm_routing_put_audio_mixer),
4929 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4930 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4931 msm_routing_put_audio_mixer),
4932 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4933 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4934 msm_routing_put_audio_mixer),
4935 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4936 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4937 msm_routing_put_audio_mixer),
4938 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4939 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4940 msm_routing_put_audio_mixer),
4941 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4942 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4943 msm_routing_put_audio_mixer),
4944 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4945 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4946 msm_routing_put_audio_mixer),
4947};
4948
4949static const struct snd_kcontrol_new slimbus_7_rx_mixer_controls[] = {
4950 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4951 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4952 msm_routing_put_audio_mixer),
4953 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4954 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4955 msm_routing_put_audio_mixer),
4956 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4957 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4958 msm_routing_put_audio_mixer),
4959 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4960 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4961 msm_routing_put_audio_mixer),
4962 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4963 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4964 msm_routing_put_audio_mixer),
4965 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4966 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4967 msm_routing_put_audio_mixer),
4968 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4969 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4970 msm_routing_put_audio_mixer),
4971 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4972 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4973 msm_routing_put_audio_mixer),
4974 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4975 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4976 msm_routing_put_audio_mixer),
4977 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4978 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4979 msm_routing_put_audio_mixer),
4980 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4981 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4982 msm_routing_put_audio_mixer),
4983 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4984 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4985 msm_routing_put_audio_mixer),
4986 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4987 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4988 msm_routing_put_audio_mixer),
4989 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4990 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4991 msm_routing_put_audio_mixer),
4992 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4993 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4994 msm_routing_put_audio_mixer),
4995 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4996 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4997 msm_routing_put_audio_mixer),
4998};
4999
5000static const struct snd_kcontrol_new usb_audio_rx_mixer_controls[] = {
5001 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_USB_RX,
5002 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5003 msm_routing_put_audio_mixer),
5004 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_USB_RX,
5005 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5006 msm_routing_put_audio_mixer),
5007 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_USB_RX,
5008 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5009 msm_routing_put_audio_mixer),
5010 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_USB_RX,
5011 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5012 msm_routing_put_audio_mixer),
5013 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_USB_RX,
5014 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5015 msm_routing_put_audio_mixer),
5016 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_USB_RX,
5017 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5018 msm_routing_put_audio_mixer),
5019 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_USB_RX,
5020 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5021 msm_routing_put_audio_mixer),
5022 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_USB_RX,
5023 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5024 msm_routing_put_audio_mixer),
5025 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_USB_RX,
5026 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5027 msm_routing_put_audio_mixer),
5028 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_USB_RX,
5029 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5030 msm_routing_put_audio_mixer),
5031 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_USB_RX,
5032 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5033 msm_routing_put_audio_mixer),
5034 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_USB_RX,
5035 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5036 msm_routing_put_audio_mixer),
5037 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_USB_RX,
5038 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5039 msm_routing_put_audio_mixer),
5040 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_USB_RX,
5041 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5042 msm_routing_put_audio_mixer),
5043 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_USB_RX,
5044 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5045 msm_routing_put_audio_mixer),
5046 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_USB_RX,
5047 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5048 msm_routing_put_audio_mixer),
5049};
5050
5051static const struct snd_kcontrol_new int_bt_sco_rx_mixer_controls[] = {
5052 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5053 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5054 msm_routing_put_audio_mixer),
5055 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5056 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5057 msm_routing_put_audio_mixer),
5058 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5059 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5060 msm_routing_put_audio_mixer),
5061 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5062 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5063 msm_routing_put_audio_mixer),
5064 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5065 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5066 msm_routing_put_audio_mixer),
5067 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5068 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5069 msm_routing_put_audio_mixer),
5070 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5071 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5072 msm_routing_put_audio_mixer),
5073 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5074 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5075 msm_routing_put_audio_mixer),
5076 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5077 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5078 msm_routing_put_audio_mixer),
5079 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5080 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5081 msm_routing_put_audio_mixer),
5082 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5083 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5084 msm_routing_put_audio_mixer),
5085 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5086 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5087 msm_routing_put_audio_mixer),
5088 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5089 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5090 msm_routing_put_audio_mixer),
5091 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5092 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5093 msm_routing_put_audio_mixer),
5094 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5095 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5096 msm_routing_put_audio_mixer),
5097 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5098 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5099 msm_routing_put_audio_mixer),
5100 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5101 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
5102 msm_routing_put_audio_mixer),
5103 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5104 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
5105 msm_routing_put_audio_mixer),
5106 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5107 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
5108 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05305109 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5110 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
5111 msm_routing_put_audio_mixer),
5112 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5113 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
5114 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305115};
5116
5117static const struct snd_kcontrol_new int_bt_a2dp_rx_mixer_controls[] = {
5118 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5119 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5120 msm_routing_put_audio_mixer),
5121 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5122 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5123 msm_routing_put_audio_mixer),
5124 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5125 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5126 msm_routing_put_audio_mixer),
5127 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5128 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5129 msm_routing_put_audio_mixer),
5130 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5131 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5132 msm_routing_put_audio_mixer),
5133 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5134 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5135 msm_routing_put_audio_mixer),
5136 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5137 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5138 msm_routing_put_audio_mixer),
5139 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5140 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5141 msm_routing_put_audio_mixer),
5142 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5143 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5144 msm_routing_put_audio_mixer),
5145 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5146 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5147 msm_routing_put_audio_mixer),
5148 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5149 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5150 msm_routing_put_audio_mixer),
5151 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5152 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5153 msm_routing_put_audio_mixer),
5154 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5155 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5156 msm_routing_put_audio_mixer),
5157 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5158 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5159 msm_routing_put_audio_mixer),
5160 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5161 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5162 msm_routing_put_audio_mixer),
5163 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5164 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5165 msm_routing_put_audio_mixer),
5166};
5167
5168static const struct snd_kcontrol_new int_fm_rx_mixer_controls[] = {
5169 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_INT_FM_RX,
5170 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5171 msm_routing_put_audio_mixer),
5172 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_INT_FM_RX,
5173 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5174 msm_routing_put_audio_mixer),
5175 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_INT_FM_RX,
5176 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5177 msm_routing_put_audio_mixer),
5178 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_INT_FM_RX,
5179 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5180 msm_routing_put_audio_mixer),
5181 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_INT_FM_RX,
5182 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5183 msm_routing_put_audio_mixer),
5184 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_INT_FM_RX,
5185 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5186 msm_routing_put_audio_mixer),
5187 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_INT_FM_RX,
5188 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5189 msm_routing_put_audio_mixer),
5190 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_INT_FM_RX,
5191 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5192 msm_routing_put_audio_mixer),
5193 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_INT_FM_RX,
5194 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5195 msm_routing_put_audio_mixer),
5196 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_INT_FM_RX,
5197 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5198 msm_routing_put_audio_mixer),
5199 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_INT_FM_RX,
5200 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5201 msm_routing_put_audio_mixer),
5202 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_INT_FM_RX,
5203 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5204 msm_routing_put_audio_mixer),
5205 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_INT_FM_RX,
5206 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5207 msm_routing_put_audio_mixer),
5208 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_INT_FM_RX,
5209 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5210 msm_routing_put_audio_mixer),
5211 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_INT_FM_RX,
5212 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5213 msm_routing_put_audio_mixer),
5214 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_INT_FM_RX,
5215 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5216 msm_routing_put_audio_mixer),
5217 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_INT_FM_RX,
5218 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
5219 msm_routing_put_audio_mixer),
5220 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_INT_FM_RX,
5221 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
5222 msm_routing_put_audio_mixer),
5223 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_INT_FM_RX,
5224 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
5225 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05305226 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_INT_FM_RX,
5227 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
5228 msm_routing_put_audio_mixer),
5229 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_INT_FM_RX,
5230 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
5231 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305232};
5233
5234static const struct snd_kcontrol_new afe_pcm_rx_mixer_controls[] = {
5235 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_AFE_PCM_RX,
5236 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5237 msm_routing_put_audio_mixer),
5238 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_AFE_PCM_RX,
5239 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5240 msm_routing_put_audio_mixer),
5241 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_AFE_PCM_RX,
5242 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5243 msm_routing_put_audio_mixer),
5244 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_AFE_PCM_RX,
5245 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5246 msm_routing_put_audio_mixer),
5247 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_AFE_PCM_RX,
5248 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5249 msm_routing_put_audio_mixer),
5250 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_AFE_PCM_RX,
5251 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5252 msm_routing_put_audio_mixer),
5253 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_AFE_PCM_RX,
5254 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5255 msm_routing_put_audio_mixer),
5256 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_AFE_PCM_RX,
5257 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5258 msm_routing_put_audio_mixer),
5259 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_AFE_PCM_RX,
5260 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5261 msm_routing_put_audio_mixer),
5262 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_AFE_PCM_RX,
5263 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5264 msm_routing_put_audio_mixer),
5265 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_AFE_PCM_RX,
5266 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5267 msm_routing_put_audio_mixer),
5268 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_AFE_PCM_RX,
5269 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5270 msm_routing_put_audio_mixer),
5271 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_AFE_PCM_RX,
5272 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5273 msm_routing_put_audio_mixer),
5274 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_AFE_PCM_RX,
5275 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5276 msm_routing_put_audio_mixer),
5277 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_AFE_PCM_RX,
5278 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5279 msm_routing_put_audio_mixer),
5280 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_AFE_PCM_RX,
5281 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5282 msm_routing_put_audio_mixer),
5283 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_AFE_PCM_RX,
5284 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
5285 msm_routing_put_audio_mixer),
5286 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_AFE_PCM_RX,
5287 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
5288 msm_routing_put_audio_mixer),
5289 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_AFE_PCM_RX,
5290 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
5291 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05305292 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_AFE_PCM_RX,
5293 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
5294 msm_routing_put_audio_mixer),
5295 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_AFE_PCM_RX,
5296 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
5297 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305298};
5299
5300static const struct snd_kcontrol_new auxpcm_rx_mixer_controls[] = {
5301 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_AUXPCM_RX,
5302 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5303 msm_routing_put_audio_mixer),
5304 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_AUXPCM_RX,
5305 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5306 msm_routing_put_audio_mixer),
5307 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_AUXPCM_RX,
5308 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5309 msm_routing_put_audio_mixer),
5310 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_AUXPCM_RX,
5311 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5312 msm_routing_put_audio_mixer),
5313 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_AUXPCM_RX,
5314 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5315 msm_routing_put_audio_mixer),
5316 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_AUXPCM_RX,
5317 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5318 msm_routing_put_audio_mixer),
5319 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_AUXPCM_RX,
5320 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5321 msm_routing_put_audio_mixer),
5322 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_AUXPCM_RX,
5323 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5324 msm_routing_put_audio_mixer),
5325 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_AUXPCM_RX,
5326 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5327 msm_routing_put_audio_mixer),
5328 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_AUXPCM_RX,
5329 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5330 msm_routing_put_audio_mixer),
5331 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_AUXPCM_RX,
5332 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5333 msm_routing_put_audio_mixer),
5334 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_AUXPCM_RX,
5335 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5336 msm_routing_put_audio_mixer),
5337 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_AUXPCM_RX,
5338 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5339 msm_routing_put_audio_mixer),
5340 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_AUXPCM_RX,
5341 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5342 msm_routing_put_audio_mixer),
5343 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_AUXPCM_RX,
5344 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5345 msm_routing_put_audio_mixer),
5346 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_AUXPCM_RX,
5347 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5348 msm_routing_put_audio_mixer),
5349 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_AUXPCM_RX,
5350 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
5351 msm_routing_put_audio_mixer),
5352 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_AUXPCM_RX,
5353 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
5354 msm_routing_put_audio_mixer),
5355 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_AUXPCM_RX,
5356 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
5357 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05305358 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_AUXPCM_RX,
5359 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
5360 msm_routing_put_audio_mixer),
5361 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_AUXPCM_RX,
5362 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
5363 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305364};
5365
5366static const struct snd_kcontrol_new sec_auxpcm_rx_mixer_controls[] = {
5367 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5368 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5369 msm_routing_put_audio_mixer),
5370 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5371 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5372 msm_routing_put_audio_mixer),
5373 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5374 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5375 msm_routing_put_audio_mixer),
5376 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5377 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5378 msm_routing_put_audio_mixer),
5379 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5380 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5381 msm_routing_put_audio_mixer),
5382 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5383 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5384 msm_routing_put_audio_mixer),
5385 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5386 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5387 msm_routing_put_audio_mixer),
5388 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5389 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5390 msm_routing_put_audio_mixer),
5391 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5392 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5393 msm_routing_put_audio_mixer),
5394 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5395 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5396 msm_routing_put_audio_mixer),
5397 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5398 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5399 msm_routing_put_audio_mixer),
5400 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5401 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5402 msm_routing_put_audio_mixer),
5403 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5404 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5405 msm_routing_put_audio_mixer),
5406 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5407 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5408 msm_routing_put_audio_mixer),
5409 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5410 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5411 msm_routing_put_audio_mixer),
5412 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5413 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5414 msm_routing_put_audio_mixer),
5415 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5416 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
5417 msm_routing_put_audio_mixer),
5418 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5419 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
5420 msm_routing_put_audio_mixer),
5421 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5422 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
5423 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05305424 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5425 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
5426 msm_routing_put_audio_mixer),
5427 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5428 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
5429 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305430};
5431
5432static const struct snd_kcontrol_new tert_auxpcm_rx_mixer_controls[] = {
5433 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5434 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5435 msm_routing_put_audio_mixer),
5436 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5437 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5438 msm_routing_put_audio_mixer),
5439 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5440 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5441 msm_routing_put_audio_mixer),
5442 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5443 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5444 msm_routing_put_audio_mixer),
5445 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5446 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5447 msm_routing_put_audio_mixer),
5448 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5449 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5450 msm_routing_put_audio_mixer),
5451 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5452 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5453 msm_routing_put_audio_mixer),
5454 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5455 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5456 msm_routing_put_audio_mixer),
5457 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5458 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5459 msm_routing_put_audio_mixer),
5460 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5461 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5462 msm_routing_put_audio_mixer),
5463 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5464 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5465 msm_routing_put_audio_mixer),
5466 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5467 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5468 msm_routing_put_audio_mixer),
5469 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5470 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5471 msm_routing_put_audio_mixer),
5472 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5473 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5474 msm_routing_put_audio_mixer),
5475 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5476 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5477 msm_routing_put_audio_mixer),
5478 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5479 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5480 msm_routing_put_audio_mixer),
5481};
5482
5483static const struct snd_kcontrol_new quat_auxpcm_rx_mixer_controls[] = {
5484 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5485 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5486 msm_routing_put_audio_mixer),
5487 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5488 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5489 msm_routing_put_audio_mixer),
5490 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5491 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5492 msm_routing_put_audio_mixer),
5493 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5494 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5495 msm_routing_put_audio_mixer),
5496 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5497 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5498 msm_routing_put_audio_mixer),
5499 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5500 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5501 msm_routing_put_audio_mixer),
5502 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5503 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5504 msm_routing_put_audio_mixer),
5505 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5506 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5507 msm_routing_put_audio_mixer),
5508 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5509 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5510 msm_routing_put_audio_mixer),
5511 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5512 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5513 msm_routing_put_audio_mixer),
5514 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5515 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5516 msm_routing_put_audio_mixer),
5517 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5518 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5519 msm_routing_put_audio_mixer),
5520 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5521 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5522 msm_routing_put_audio_mixer),
5523 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5524 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5525 msm_routing_put_audio_mixer),
5526 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5527 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5528 msm_routing_put_audio_mixer),
5529 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5530 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5531 msm_routing_put_audio_mixer),
5532};
5533
Rohit Kumara5077932017-09-10 22:05:05 +05305534static const struct snd_kcontrol_new quin_auxpcm_rx_mixer_controls[] = {
5535 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5536 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5537 msm_routing_put_audio_mixer),
5538 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5539 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5540 msm_routing_put_audio_mixer),
5541 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5542 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5543 msm_routing_put_audio_mixer),
5544 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5545 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5546 msm_routing_put_audio_mixer),
5547 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5548 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5549 msm_routing_put_audio_mixer),
5550 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5551 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5552 msm_routing_put_audio_mixer),
5553 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5554 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5555 msm_routing_put_audio_mixer),
5556 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5557 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5558 msm_routing_put_audio_mixer),
5559 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5560 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5561 msm_routing_put_audio_mixer),
5562 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5563 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5564 msm_routing_put_audio_mixer),
5565 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5566 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5567 msm_routing_put_audio_mixer),
5568 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5569 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5570 msm_routing_put_audio_mixer),
5571 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5572 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5573 msm_routing_put_audio_mixer),
5574 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5575 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5576 msm_routing_put_audio_mixer),
5577 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5578 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5579 msm_routing_put_audio_mixer),
5580 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5581 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5582 msm_routing_put_audio_mixer),
5583};
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305584static const struct snd_kcontrol_new pri_tdm_rx_0_mixer_controls[] = {
5585 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5586 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5587 msm_routing_put_audio_mixer),
5588 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5589 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5590 msm_routing_put_audio_mixer),
5591 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5592 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5593 msm_routing_put_audio_mixer),
5594 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5595 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5596 msm_routing_put_audio_mixer),
5597 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5598 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5599 msm_routing_put_audio_mixer),
5600 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5601 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5602 msm_routing_put_audio_mixer),
5603 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5604 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5605 msm_routing_put_audio_mixer),
5606 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5607 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5608 msm_routing_put_audio_mixer),
5609 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5610 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5611 msm_routing_put_audio_mixer),
5612 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5613 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5614 msm_routing_put_audio_mixer),
5615 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5616 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5617 msm_routing_put_audio_mixer),
5618 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5619 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5620 msm_routing_put_audio_mixer),
5621 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5622 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5623 msm_routing_put_audio_mixer),
5624 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5625 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5626 msm_routing_put_audio_mixer),
5627 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5628 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5629 msm_routing_put_audio_mixer),
5630 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5631 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5632 msm_routing_put_audio_mixer),
5633};
5634
5635static const struct snd_kcontrol_new pri_tdm_rx_1_mixer_controls[] = {
5636 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5637 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5638 msm_routing_put_audio_mixer),
5639 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5640 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5641 msm_routing_put_audio_mixer),
5642 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5643 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5644 msm_routing_put_audio_mixer),
5645 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5646 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5647 msm_routing_put_audio_mixer),
5648 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5649 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5650 msm_routing_put_audio_mixer),
5651 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5652 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5653 msm_routing_put_audio_mixer),
5654 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5655 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5656 msm_routing_put_audio_mixer),
5657 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5658 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5659 msm_routing_put_audio_mixer),
5660 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5661 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5662 msm_routing_put_audio_mixer),
5663 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5664 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5665 msm_routing_put_audio_mixer),
5666 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5667 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5668 msm_routing_put_audio_mixer),
5669 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5670 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5671 msm_routing_put_audio_mixer),
5672 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5673 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5674 msm_routing_put_audio_mixer),
5675 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5676 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5677 msm_routing_put_audio_mixer),
5678 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5679 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5680 msm_routing_put_audio_mixer),
5681 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5682 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5683 msm_routing_put_audio_mixer),
5684};
5685
5686static const struct snd_kcontrol_new pri_tdm_rx_2_mixer_controls[] = {
5687 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5688 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5689 msm_routing_put_audio_mixer),
5690 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5691 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5692 msm_routing_put_audio_mixer),
5693 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5694 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5695 msm_routing_put_audio_mixer),
5696 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5697 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5698 msm_routing_put_audio_mixer),
5699 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5700 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5701 msm_routing_put_audio_mixer),
5702 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5703 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5704 msm_routing_put_audio_mixer),
5705 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5706 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5707 msm_routing_put_audio_mixer),
5708 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5709 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5710 msm_routing_put_audio_mixer),
5711 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5712 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5713 msm_routing_put_audio_mixer),
5714 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5715 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5716 msm_routing_put_audio_mixer),
5717 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5718 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5719 msm_routing_put_audio_mixer),
5720 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5721 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5722 msm_routing_put_audio_mixer),
5723 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5724 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5725 msm_routing_put_audio_mixer),
5726 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5727 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5728 msm_routing_put_audio_mixer),
5729 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5730 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5731 msm_routing_put_audio_mixer),
5732 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5733 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5734 msm_routing_put_audio_mixer),
5735};
5736
5737static const struct snd_kcontrol_new pri_tdm_rx_3_mixer_controls[] = {
5738 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5739 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5740 msm_routing_put_audio_mixer),
5741 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5742 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5743 msm_routing_put_audio_mixer),
5744 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5745 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5746 msm_routing_put_audio_mixer),
5747 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5748 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5749 msm_routing_put_audio_mixer),
5750 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5751 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5752 msm_routing_put_audio_mixer),
5753 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5754 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5755 msm_routing_put_audio_mixer),
5756 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5757 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5758 msm_routing_put_audio_mixer),
5759 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5760 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5761 msm_routing_put_audio_mixer),
5762 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5763 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5764 msm_routing_put_audio_mixer),
5765 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5766 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5767 msm_routing_put_audio_mixer),
5768 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5769 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5770 msm_routing_put_audio_mixer),
5771 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5772 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5773 msm_routing_put_audio_mixer),
5774 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5775 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5776 msm_routing_put_audio_mixer),
5777 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5778 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5779 msm_routing_put_audio_mixer),
5780 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5781 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5782 msm_routing_put_audio_mixer),
5783 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5784 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5785 msm_routing_put_audio_mixer),
5786};
5787
5788static const struct snd_kcontrol_new pri_tdm_tx_0_mixer_controls[] = {
5789 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5790 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5791 msm_routing_put_audio_mixer),
5792 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5793 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5794 msm_routing_put_audio_mixer),
5795 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5796 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5797 msm_routing_put_audio_mixer),
5798 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5799 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5800 msm_routing_put_audio_mixer),
5801 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5802 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5803 msm_routing_put_audio_mixer),
5804 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5805 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5806 msm_routing_put_audio_mixer),
5807 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5808 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5809 msm_routing_put_audio_mixer),
5810 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5811 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5812 msm_routing_put_audio_mixer),
5813 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5814 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5815 msm_routing_put_audio_mixer),
5816 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5817 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5818 msm_routing_put_audio_mixer),
5819 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5820 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5821 msm_routing_put_audio_mixer),
5822 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5823 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5824 msm_routing_put_audio_mixer),
5825 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5826 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5827 msm_routing_put_audio_mixer),
5828 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5829 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5830 msm_routing_put_audio_mixer),
5831 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5832 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5833 msm_routing_put_audio_mixer),
5834 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5835 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5836 msm_routing_put_audio_mixer),
5837};
5838
5839static const struct snd_kcontrol_new sec_tdm_rx_0_mixer_controls[] = {
5840 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5841 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5842 msm_routing_put_audio_mixer),
5843 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5844 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5845 msm_routing_put_audio_mixer),
5846 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5847 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5848 msm_routing_put_audio_mixer),
5849 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5850 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5851 msm_routing_put_audio_mixer),
5852 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5853 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5854 msm_routing_put_audio_mixer),
5855 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5856 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5857 msm_routing_put_audio_mixer),
5858 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5859 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5860 msm_routing_put_audio_mixer),
5861 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5862 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5863 msm_routing_put_audio_mixer),
5864 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5865 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5866 msm_routing_put_audio_mixer),
5867 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5868 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5869 msm_routing_put_audio_mixer),
5870 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5871 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5872 msm_routing_put_audio_mixer),
5873 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5874 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5875 msm_routing_put_audio_mixer),
5876 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5877 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5878 msm_routing_put_audio_mixer),
5879 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5880 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5881 msm_routing_put_audio_mixer),
5882 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5883 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5884 msm_routing_put_audio_mixer),
5885 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5886 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5887 msm_routing_put_audio_mixer),
5888};
5889
5890static const struct snd_kcontrol_new sec_tdm_rx_1_mixer_controls[] = {
5891 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5892 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5893 msm_routing_put_audio_mixer),
5894 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5895 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5896 msm_routing_put_audio_mixer),
5897 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5898 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5899 msm_routing_put_audio_mixer),
5900 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5901 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5902 msm_routing_put_audio_mixer),
5903 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5904 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5905 msm_routing_put_audio_mixer),
5906 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5907 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5908 msm_routing_put_audio_mixer),
5909 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5910 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5911 msm_routing_put_audio_mixer),
5912 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5913 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5914 msm_routing_put_audio_mixer),
5915 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5916 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5917 msm_routing_put_audio_mixer),
5918 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5919 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5920 msm_routing_put_audio_mixer),
5921 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5922 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5923 msm_routing_put_audio_mixer),
5924 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5925 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5926 msm_routing_put_audio_mixer),
5927 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5928 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5929 msm_routing_put_audio_mixer),
5930 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5931 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5932 msm_routing_put_audio_mixer),
5933 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5934 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5935 msm_routing_put_audio_mixer),
5936 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5937 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5938 msm_routing_put_audio_mixer),
5939};
5940
5941static const struct snd_kcontrol_new sec_tdm_rx_2_mixer_controls[] = {
5942 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5943 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5944 msm_routing_put_audio_mixer),
5945 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5946 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5947 msm_routing_put_audio_mixer),
5948 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5949 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5950 msm_routing_put_audio_mixer),
5951 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5952 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5953 msm_routing_put_audio_mixer),
5954 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5955 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5956 msm_routing_put_audio_mixer),
5957 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5958 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5959 msm_routing_put_audio_mixer),
5960 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5961 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5962 msm_routing_put_audio_mixer),
5963 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5964 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5965 msm_routing_put_audio_mixer),
5966 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5967 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5968 msm_routing_put_audio_mixer),
5969 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5970 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5971 msm_routing_put_audio_mixer),
5972 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5973 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5974 msm_routing_put_audio_mixer),
5975 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5976 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5977 msm_routing_put_audio_mixer),
5978 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5979 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5980 msm_routing_put_audio_mixer),
5981 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5982 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5983 msm_routing_put_audio_mixer),
5984 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5985 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5986 msm_routing_put_audio_mixer),
5987 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5988 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5989 msm_routing_put_audio_mixer),
5990};
5991
5992static const struct snd_kcontrol_new sec_tdm_rx_3_mixer_controls[] = {
5993 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5994 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5995 msm_routing_put_audio_mixer),
5996 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5997 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5998 msm_routing_put_audio_mixer),
5999 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6000 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6001 msm_routing_put_audio_mixer),
6002 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6003 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6004 msm_routing_put_audio_mixer),
6005 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6006 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6007 msm_routing_put_audio_mixer),
6008 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6009 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6010 msm_routing_put_audio_mixer),
6011 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6012 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6013 msm_routing_put_audio_mixer),
6014 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6015 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6016 msm_routing_put_audio_mixer),
6017 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6018 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6019 msm_routing_put_audio_mixer),
6020 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6021 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6022 msm_routing_put_audio_mixer),
6023 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6024 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6025 msm_routing_put_audio_mixer),
6026 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6027 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6028 msm_routing_put_audio_mixer),
6029 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6030 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6031 msm_routing_put_audio_mixer),
6032 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6033 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6034 msm_routing_put_audio_mixer),
6035 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6036 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6037 msm_routing_put_audio_mixer),
6038 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6039 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6040 msm_routing_put_audio_mixer),
6041};
6042
6043static const struct snd_kcontrol_new sec_tdm_tx_0_mixer_controls[] = {
6044 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6045 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6046 msm_routing_put_audio_mixer),
6047 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6048 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6049 msm_routing_put_audio_mixer),
6050 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6051 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6052 msm_routing_put_audio_mixer),
6053 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6054 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6055 msm_routing_put_audio_mixer),
6056 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6057 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6058 msm_routing_put_audio_mixer),
6059 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6060 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6061 msm_routing_put_audio_mixer),
6062 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6063 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6064 msm_routing_put_audio_mixer),
6065 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6066 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6067 msm_routing_put_audio_mixer),
6068 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6069 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6070 msm_routing_put_audio_mixer),
6071 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6072 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6073 msm_routing_put_audio_mixer),
6074 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6075 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6076 msm_routing_put_audio_mixer),
6077 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6078 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6079 msm_routing_put_audio_mixer),
6080 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6081 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6082 msm_routing_put_audio_mixer),
6083 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6084 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6085 msm_routing_put_audio_mixer),
6086 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6087 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6088 msm_routing_put_audio_mixer),
6089 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6090 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6091 msm_routing_put_audio_mixer),
6092};
6093
6094static const struct snd_kcontrol_new tert_tdm_rx_0_mixer_controls[] = {
6095 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6096 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6097 msm_routing_put_audio_mixer),
6098 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6099 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6100 msm_routing_put_audio_mixer),
6101 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6102 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6103 msm_routing_put_audio_mixer),
6104 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6105 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6106 msm_routing_put_audio_mixer),
6107 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6108 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6109 msm_routing_put_audio_mixer),
6110 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6111 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6112 msm_routing_put_audio_mixer),
6113 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6114 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6115 msm_routing_put_audio_mixer),
6116 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6117 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6118 msm_routing_put_audio_mixer),
6119 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6120 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6121 msm_routing_put_audio_mixer),
6122 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6123 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6124 msm_routing_put_audio_mixer),
6125 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6126 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6127 msm_routing_put_audio_mixer),
6128 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6129 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6130 msm_routing_put_audio_mixer),
6131 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6132 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6133 msm_routing_put_audio_mixer),
6134 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6135 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6136 msm_routing_put_audio_mixer),
6137 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6138 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6139 msm_routing_put_audio_mixer),
6140 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6141 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6142 msm_routing_put_audio_mixer),
6143};
6144
6145static const struct snd_kcontrol_new tert_tdm_tx_0_mixer_controls[] = {
6146 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6147 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6148 msm_routing_put_audio_mixer),
6149 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6150 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6151 msm_routing_put_audio_mixer),
6152 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6153 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6154 msm_routing_put_audio_mixer),
6155 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6156 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6157 msm_routing_put_audio_mixer),
6158 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6159 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6160 msm_routing_put_audio_mixer),
6161 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6162 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6163 msm_routing_put_audio_mixer),
6164 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6165 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6166 msm_routing_put_audio_mixer),
6167 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6168 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6169 msm_routing_put_audio_mixer),
6170 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6171 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6172 msm_routing_put_audio_mixer),
6173 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6174 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6175 msm_routing_put_audio_mixer),
6176 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6177 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6178 msm_routing_put_audio_mixer),
6179 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6180 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6181 msm_routing_put_audio_mixer),
6182 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6183 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6184 msm_routing_put_audio_mixer),
6185 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6186 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6187 msm_routing_put_audio_mixer),
6188 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6189 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6190 msm_routing_put_audio_mixer),
6191 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6192 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6193 msm_routing_put_audio_mixer),
6194};
6195
6196static const struct snd_kcontrol_new tert_tdm_rx_1_mixer_controls[] = {
6197 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6198 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6199 msm_routing_put_audio_mixer),
6200 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6201 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6202 msm_routing_put_audio_mixer),
6203 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6204 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6205 msm_routing_put_audio_mixer),
6206 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6207 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6208 msm_routing_put_audio_mixer),
6209 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6210 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6211 msm_routing_put_audio_mixer),
6212 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6213 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6214 msm_routing_put_audio_mixer),
6215 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6216 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6217 msm_routing_put_audio_mixer),
6218 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6219 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6220 msm_routing_put_audio_mixer),
6221 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6222 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6223 msm_routing_put_audio_mixer),
6224 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6225 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6226 msm_routing_put_audio_mixer),
6227 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6228 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6229 msm_routing_put_audio_mixer),
6230 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6231 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6232 msm_routing_put_audio_mixer),
6233 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6234 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6235 msm_routing_put_audio_mixer),
6236 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6237 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6238 msm_routing_put_audio_mixer),
6239 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6240 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6241 msm_routing_put_audio_mixer),
6242 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6243 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6244 msm_routing_put_audio_mixer),
6245};
6246
6247static const struct snd_kcontrol_new tert_tdm_rx_2_mixer_controls[] = {
6248 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6249 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6250 msm_routing_put_audio_mixer),
6251 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6252 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6253 msm_routing_put_audio_mixer),
6254 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6255 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6256 msm_routing_put_audio_mixer),
6257 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6258 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6259 msm_routing_put_audio_mixer),
6260 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6261 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6262 msm_routing_put_audio_mixer),
6263 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6264 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6265 msm_routing_put_audio_mixer),
6266 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6267 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6268 msm_routing_put_audio_mixer),
6269 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6270 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6271 msm_routing_put_audio_mixer),
6272 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6273 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6274 msm_routing_put_audio_mixer),
6275 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6276 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6277 msm_routing_put_audio_mixer),
6278 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6279 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6280 msm_routing_put_audio_mixer),
6281 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6282 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6283 msm_routing_put_audio_mixer),
6284 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6285 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6286 msm_routing_put_audio_mixer),
6287 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6288 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6289 msm_routing_put_audio_mixer),
6290 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6291 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6292 msm_routing_put_audio_mixer),
6293 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6294 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6295 msm_routing_put_audio_mixer),
6296};
6297
6298static const struct snd_kcontrol_new tert_tdm_rx_3_mixer_controls[] = {
6299 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6300 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6301 msm_routing_put_audio_mixer),
6302 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6303 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6304 msm_routing_put_audio_mixer),
6305 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6306 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6307 msm_routing_put_audio_mixer),
6308 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6309 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6310 msm_routing_put_audio_mixer),
6311 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6312 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6313 msm_routing_put_audio_mixer),
6314 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6315 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6316 msm_routing_put_audio_mixer),
6317 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6318 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6319 msm_routing_put_audio_mixer),
6320 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6321 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6322 msm_routing_put_audio_mixer),
6323 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6324 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6325 msm_routing_put_audio_mixer),
6326 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6327 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6328 msm_routing_put_audio_mixer),
6329 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6330 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6331 msm_routing_put_audio_mixer),
6332 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6333 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6334 msm_routing_put_audio_mixer),
6335 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6336 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6337 msm_routing_put_audio_mixer),
6338 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6339 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6340 msm_routing_put_audio_mixer),
6341 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6342 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6343 msm_routing_put_audio_mixer),
6344 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6345 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6346 msm_routing_put_audio_mixer),
6347};
6348
6349static const struct snd_kcontrol_new tert_tdm_rx_4_mixer_controls[] = {
6350 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6351 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6352 msm_routing_put_audio_mixer),
6353 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6354 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6355 msm_routing_put_audio_mixer),
6356 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6357 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6358 msm_routing_put_audio_mixer),
6359 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6360 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6361 msm_routing_put_audio_mixer),
6362 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6363 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6364 msm_routing_put_audio_mixer),
6365 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6366 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6367 msm_routing_put_audio_mixer),
6368 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6369 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6370 msm_routing_put_audio_mixer),
6371 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6372 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6373 msm_routing_put_audio_mixer),
6374 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6375 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6376 msm_routing_put_audio_mixer),
6377 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6378 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6379 msm_routing_put_audio_mixer),
6380 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6381 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6382 msm_routing_put_audio_mixer),
6383 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6384 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6385 msm_routing_put_audio_mixer),
6386 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6387 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6388 msm_routing_put_audio_mixer),
6389 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6390 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6391 msm_routing_put_audio_mixer),
6392 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6393 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6394 msm_routing_put_audio_mixer),
6395 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6396 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6397 msm_routing_put_audio_mixer),
6398};
6399
6400static const struct snd_kcontrol_new quat_tdm_rx_0_mixer_controls[] = {
6401 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6402 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6403 msm_routing_put_audio_mixer),
6404 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6405 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6406 msm_routing_put_audio_mixer),
6407 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6408 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6409 msm_routing_put_audio_mixer),
6410 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6411 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6412 msm_routing_put_audio_mixer),
6413 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6414 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6415 msm_routing_put_audio_mixer),
6416 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6417 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6418 msm_routing_put_audio_mixer),
6419 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6420 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6421 msm_routing_put_audio_mixer),
6422 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6423 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6424 msm_routing_put_audio_mixer),
6425 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6426 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6427 msm_routing_put_audio_mixer),
6428 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6429 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6430 msm_routing_put_audio_mixer),
6431 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6432 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6433 msm_routing_put_audio_mixer),
6434 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6435 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6436 msm_routing_put_audio_mixer),
6437 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6438 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6439 msm_routing_put_audio_mixer),
6440 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6441 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6442 msm_routing_put_audio_mixer),
6443 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6444 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6445 msm_routing_put_audio_mixer),
6446 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6447 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6448 msm_routing_put_audio_mixer),
6449 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6450 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6451 msm_routing_put_audio_mixer),
6452};
6453
6454static const struct snd_kcontrol_new quat_tdm_tx_0_mixer_controls[] = {
6455 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6456 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6457 msm_routing_put_audio_mixer),
6458 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6459 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6460 msm_routing_put_audio_mixer),
6461 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6462 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6463 msm_routing_put_audio_mixer),
6464 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6465 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6466 msm_routing_put_audio_mixer),
6467 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6468 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6469 msm_routing_put_audio_mixer),
6470 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6471 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6472 msm_routing_put_audio_mixer),
6473 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6474 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6475 msm_routing_put_audio_mixer),
6476 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6477 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6478 msm_routing_put_audio_mixer),
6479 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6480 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6481 msm_routing_put_audio_mixer),
6482 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6483 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6484 msm_routing_put_audio_mixer),
6485 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6486 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6487 msm_routing_put_audio_mixer),
6488 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6489 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6490 msm_routing_put_audio_mixer),
6491 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6492 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6493 msm_routing_put_audio_mixer),
6494 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6495 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6496 msm_routing_put_audio_mixer),
6497 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6498 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6499 msm_routing_put_audio_mixer),
6500 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6501 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6502 msm_routing_put_audio_mixer),
6503};
6504
6505static const struct snd_kcontrol_new quat_tdm_rx_1_mixer_controls[] = {
6506 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6507 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6508 msm_routing_put_audio_mixer),
6509 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6510 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6511 msm_routing_put_audio_mixer),
6512 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6513 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6514 msm_routing_put_audio_mixer),
6515 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6516 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6517 msm_routing_put_audio_mixer),
6518 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6519 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6520 msm_routing_put_audio_mixer),
6521 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6522 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6523 msm_routing_put_audio_mixer),
6524 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6525 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6526 msm_routing_put_audio_mixer),
6527 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6528 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6529 msm_routing_put_audio_mixer),
6530 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6531 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6532 msm_routing_put_audio_mixer),
6533 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6534 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6535 msm_routing_put_audio_mixer),
6536 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6537 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6538 msm_routing_put_audio_mixer),
6539 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6540 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6541 msm_routing_put_audio_mixer),
6542 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6543 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6544 msm_routing_put_audio_mixer),
6545 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6546 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6547 msm_routing_put_audio_mixer),
6548 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6549 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6550 msm_routing_put_audio_mixer),
6551 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6552 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6553 msm_routing_put_audio_mixer),
6554 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6555 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6556 msm_routing_put_audio_mixer),
6557};
6558
6559static const struct snd_kcontrol_new quat_tdm_rx_2_mixer_controls[] = {
6560 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6561 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6562 msm_routing_put_audio_mixer),
6563 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6564 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6565 msm_routing_put_audio_mixer),
6566 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6567 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6568 msm_routing_put_audio_mixer),
6569 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6570 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6571 msm_routing_put_audio_mixer),
6572 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6573 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6574 msm_routing_put_audio_mixer),
6575 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6576 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6577 msm_routing_put_audio_mixer),
6578 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6579 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6580 msm_routing_put_audio_mixer),
6581 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6582 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6583 msm_routing_put_audio_mixer),
6584 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6585 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6586 msm_routing_put_audio_mixer),
6587 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6588 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6589 msm_routing_put_audio_mixer),
6590 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6591 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6592 msm_routing_put_audio_mixer),
6593 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6594 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6595 msm_routing_put_audio_mixer),
6596 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6597 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6598 msm_routing_put_audio_mixer),
6599 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6600 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6601 msm_routing_put_audio_mixer),
6602 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6603 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6604 msm_routing_put_audio_mixer),
6605 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6606 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6607 msm_routing_put_audio_mixer),
6608 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6609 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6610 msm_routing_put_audio_mixer),
6611};
6612
6613static const struct snd_kcontrol_new quat_tdm_rx_3_mixer_controls[] = {
6614 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6615 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6616 msm_routing_put_audio_mixer),
6617 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6618 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6619 msm_routing_put_audio_mixer),
6620 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6621 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6622 msm_routing_put_audio_mixer),
6623 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6624 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6625 msm_routing_put_audio_mixer),
6626 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6627 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6628 msm_routing_put_audio_mixer),
6629 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6630 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6631 msm_routing_put_audio_mixer),
6632 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6633 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6634 msm_routing_put_audio_mixer),
6635 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6636 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6637 msm_routing_put_audio_mixer),
6638 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6639 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6640 msm_routing_put_audio_mixer),
6641 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6642 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6643 msm_routing_put_audio_mixer),
6644 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6645 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6646 msm_routing_put_audio_mixer),
6647 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6648 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6649 msm_routing_put_audio_mixer),
6650 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6651 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6652 msm_routing_put_audio_mixer),
6653 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6654 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6655 msm_routing_put_audio_mixer),
6656 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6657 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6658 msm_routing_put_audio_mixer),
6659 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6660 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6661 msm_routing_put_audio_mixer),
6662 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6663 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6664 msm_routing_put_audio_mixer),
6665};
6666
Rohit Kumara5077932017-09-10 22:05:05 +05306667static const struct snd_kcontrol_new quin_tdm_rx_0_mixer_controls[] = {
6668 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6669 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6670 msm_routing_put_audio_mixer),
6671 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6672 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6673 msm_routing_put_audio_mixer),
6674 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6675 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6676 msm_routing_put_audio_mixer),
6677 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6678 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6679 msm_routing_put_audio_mixer),
6680 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6681 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6682 msm_routing_put_audio_mixer),
6683 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6684 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6685 msm_routing_put_audio_mixer),
6686 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6687 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6688 msm_routing_put_audio_mixer),
6689 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6690 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6691 msm_routing_put_audio_mixer),
6692 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6693 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6694 msm_routing_put_audio_mixer),
6695 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6696 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6697 msm_routing_put_audio_mixer),
6698 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6699 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6700 msm_routing_put_audio_mixer),
6701 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6702 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6703 msm_routing_put_audio_mixer),
6704 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6705 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6706 msm_routing_put_audio_mixer),
6707 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6708 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6709 msm_routing_put_audio_mixer),
6710 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6711 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6712 msm_routing_put_audio_mixer),
6713 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6714 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6715 msm_routing_put_audio_mixer),
6716 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6717 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6718 msm_routing_put_audio_mixer),
6719};
6720
6721static const struct snd_kcontrol_new quin_tdm_tx_0_mixer_controls[] = {
6722 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6723 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6724 msm_routing_put_audio_mixer),
6725 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6726 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6727 msm_routing_put_audio_mixer),
6728 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6729 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6730 msm_routing_put_audio_mixer),
6731 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6732 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6733 msm_routing_put_audio_mixer),
6734 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6735 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6736 msm_routing_put_audio_mixer),
6737 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6738 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6739 msm_routing_put_audio_mixer),
6740 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6741 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6742 msm_routing_put_audio_mixer),
6743 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6744 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6745 msm_routing_put_audio_mixer),
6746 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6747 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6748 msm_routing_put_audio_mixer),
6749 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6750 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6751 msm_routing_put_audio_mixer),
6752 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6753 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6754 msm_routing_put_audio_mixer),
6755 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6756 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6757 msm_routing_put_audio_mixer),
6758 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6759 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6760 msm_routing_put_audio_mixer),
6761 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6762 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6763 msm_routing_put_audio_mixer),
6764 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6765 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6766 msm_routing_put_audio_mixer),
6767 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6768 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6769 msm_routing_put_audio_mixer),
6770};
6771
6772static const struct snd_kcontrol_new quin_tdm_rx_1_mixer_controls[] = {
6773 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6774 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6775 msm_routing_put_audio_mixer),
6776 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6777 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6778 msm_routing_put_audio_mixer),
6779 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6780 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6781 msm_routing_put_audio_mixer),
6782 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6783 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6784 msm_routing_put_audio_mixer),
6785 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6786 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6787 msm_routing_put_audio_mixer),
6788 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6789 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6790 msm_routing_put_audio_mixer),
6791 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6792 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6793 msm_routing_put_audio_mixer),
6794 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6795 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6796 msm_routing_put_audio_mixer),
6797 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6798 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6799 msm_routing_put_audio_mixer),
6800 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6801 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6802 msm_routing_put_audio_mixer),
6803 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6804 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6805 msm_routing_put_audio_mixer),
6806 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6807 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6808 msm_routing_put_audio_mixer),
6809 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6810 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6811 msm_routing_put_audio_mixer),
6812 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6813 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6814 msm_routing_put_audio_mixer),
6815 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6816 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6817 msm_routing_put_audio_mixer),
6818 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6819 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6820 msm_routing_put_audio_mixer),
6821 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6822 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6823 msm_routing_put_audio_mixer),
6824};
6825
6826static const struct snd_kcontrol_new quin_tdm_rx_2_mixer_controls[] = {
6827 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6828 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6829 msm_routing_put_audio_mixer),
6830 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6831 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6832 msm_routing_put_audio_mixer),
6833 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6834 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6835 msm_routing_put_audio_mixer),
6836 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6837 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6838 msm_routing_put_audio_mixer),
6839 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6840 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6841 msm_routing_put_audio_mixer),
6842 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6843 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6844 msm_routing_put_audio_mixer),
6845 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6846 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6847 msm_routing_put_audio_mixer),
6848 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6849 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6850 msm_routing_put_audio_mixer),
6851 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6852 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6853 msm_routing_put_audio_mixer),
6854 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6855 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6856 msm_routing_put_audio_mixer),
6857 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6858 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6859 msm_routing_put_audio_mixer),
6860 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6861 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6862 msm_routing_put_audio_mixer),
6863 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6864 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6865 msm_routing_put_audio_mixer),
6866 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6867 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6868 msm_routing_put_audio_mixer),
6869 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6870 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6871 msm_routing_put_audio_mixer),
6872 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6873 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6874 msm_routing_put_audio_mixer),
6875 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6876 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6877 msm_routing_put_audio_mixer),
6878};
6879
6880static const struct snd_kcontrol_new quin_tdm_rx_3_mixer_controls[] = {
6881 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6882 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6883 msm_routing_put_audio_mixer),
6884 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6885 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6886 msm_routing_put_audio_mixer),
6887 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6888 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6889 msm_routing_put_audio_mixer),
6890 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6891 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6892 msm_routing_put_audio_mixer),
6893 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6894 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6895 msm_routing_put_audio_mixer),
6896 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6897 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6898 msm_routing_put_audio_mixer),
6899 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6900 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6901 msm_routing_put_audio_mixer),
6902 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6903 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6904 msm_routing_put_audio_mixer),
6905 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6906 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6907 msm_routing_put_audio_mixer),
6908 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6909 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6910 msm_routing_put_audio_mixer),
6911 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6912 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6913 msm_routing_put_audio_mixer),
6914 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6915 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6916 msm_routing_put_audio_mixer),
6917 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6918 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6919 msm_routing_put_audio_mixer),
6920 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6921 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6922 msm_routing_put_audio_mixer),
6923 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6924 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6925 msm_routing_put_audio_mixer),
6926 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6927 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6928 msm_routing_put_audio_mixer),
6929 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6930 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6931 msm_routing_put_audio_mixer),
6932};
6933
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306934static const struct snd_kcontrol_new mmul1_mixer_controls[] = {
6935 SOC_SINGLE_EXT("PRI_TX", MSM_BACKEND_DAI_PRI_I2S_TX,
6936 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6937 msm_routing_put_audio_mixer),
6938 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
6939 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6940 msm_routing_put_audio_mixer),
6941 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
6942 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6943 msm_routing_put_audio_mixer),
6944 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
6945 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6946 msm_routing_put_audio_mixer),
6947 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
6948 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6949 msm_routing_put_audio_mixer),
6950 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
6951 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6952 msm_routing_put_audio_mixer),
6953 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
6954 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6955 msm_routing_put_audio_mixer),
6956 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
6957 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6958 msm_routing_put_audio_mixer),
6959 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
6960 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6961 msm_routing_put_audio_mixer),
6962 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
6963 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6964 msm_routing_put_audio_mixer),
6965 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
6966 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6967 msm_routing_put_audio_mixer),
6968 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
6969 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6970 msm_routing_put_audio_mixer),
6971 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
6972 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6973 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05306974 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
6975 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6976 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306977 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
6978 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6979 msm_routing_put_audio_mixer),
6980 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
6981 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6982 msm_routing_put_audio_mixer),
6983 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
6984 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6985 msm_routing_put_audio_mixer),
6986 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
6987 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6988 msm_routing_put_audio_mixer),
6989 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
6990 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6991 msm_routing_put_audio_mixer),
6992 SOC_SINGLE_EXT("SLIM_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
6993 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6994 msm_routing_put_audio_mixer),
6995 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
6996 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6997 msm_routing_put_audio_mixer),
6998 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_TX,
6999 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7000 msm_routing_put_audio_mixer),
7001 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7002 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7003 msm_routing_put_audio_mixer),
7004 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7005 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7006 msm_routing_put_audio_mixer),
7007 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7008 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7009 msm_routing_put_audio_mixer),
7010 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7011 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7012 msm_routing_put_audio_mixer),
7013 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7014 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7015 msm_routing_put_audio_mixer),
7016 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7017 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7018 msm_routing_put_audio_mixer),
7019 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7020 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7021 msm_routing_put_audio_mixer),
7022 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7023 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7024 msm_routing_put_audio_mixer),
7025 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7026 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7027 msm_routing_put_audio_mixer),
7028 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7029 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7030 msm_routing_put_audio_mixer),
7031 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7032 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7033 msm_routing_put_audio_mixer),
7034 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7035 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7036 msm_routing_put_audio_mixer),
7037 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7038 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7039 msm_routing_put_audio_mixer),
7040 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7041 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7042 msm_routing_put_audio_mixer),
7043 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7044 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7045 msm_routing_put_audio_mixer),
7046 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7047 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7048 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307049 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7050 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7051 msm_routing_put_audio_mixer),
7052 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7053 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7054 msm_routing_put_audio_mixer),
7055 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7056 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7057 msm_routing_put_audio_mixer),
7058 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7059 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7060 msm_routing_put_audio_mixer),
Raja Mallik425e1d32018-05-20 19:21:10 +05307061 SOC_SINGLE_EXT("AFE_LOOPBACK_TX", MSM_BACKEND_DAI_AFE_LOOPBACK_TX,
7062 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7063 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307064 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
7065 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7066 msm_routing_put_audio_mixer),
7067 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
7068 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7069 msm_routing_put_audio_mixer),
7070 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7071 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7072 msm_routing_put_audio_mixer),
7073};
7074
7075static const struct snd_kcontrol_new mmul2_mixer_controls[] = {
7076 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7077 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7078 msm_routing_put_audio_mixer),
7079 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
7080 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7081 msm_routing_put_audio_mixer),
7082 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7083 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7084 msm_routing_put_audio_mixer),
7085 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7086 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7087 msm_routing_put_audio_mixer),
7088 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7089 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7090 msm_routing_put_audio_mixer),
7091 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7092 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7093 msm_routing_put_audio_mixer),
7094 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7095 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7096 msm_routing_put_audio_mixer),
7097 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7098 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7099 msm_routing_put_audio_mixer),
7100 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7101 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7102 msm_routing_put_audio_mixer),
7103 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
7104 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7105 msm_routing_put_audio_mixer),
7106 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
7107 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7108 msm_routing_put_audio_mixer),
7109 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_TX,
7110 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7111 msm_routing_put_audio_mixer),
7112 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7113 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7114 msm_routing_put_audio_mixer),
7115 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7116 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7117 msm_routing_put_audio_mixer),
7118 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7119 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7120 msm_routing_put_audio_mixer),
7121 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7122 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7123 msm_routing_put_audio_mixer),
7124 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7125 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7126 msm_routing_put_audio_mixer),
7127 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7128 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7129 msm_routing_put_audio_mixer),
7130 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7131 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7132 msm_routing_put_audio_mixer),
7133 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7134 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7135 msm_routing_put_audio_mixer),
7136 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7137 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7138 msm_routing_put_audio_mixer),
7139 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7140 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7141 msm_routing_put_audio_mixer),
7142 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7143 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7144 msm_routing_put_audio_mixer),
7145 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7146 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7147 msm_routing_put_audio_mixer),
7148 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7149 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7150 msm_routing_put_audio_mixer),
7151 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7152 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7153 msm_routing_put_audio_mixer),
7154 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7155 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7156 msm_routing_put_audio_mixer),
7157 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7158 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7159 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307160 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7161 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7162 msm_routing_put_audio_mixer),
Raja Mallik425e1d32018-05-20 19:21:10 +05307163 SOC_SINGLE_EXT("AFE_LOOPBACK_TX", MSM_BACKEND_DAI_AFE_LOOPBACK_TX,
7164 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7165 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307166 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7167 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7168 msm_routing_put_audio_mixer),
7169 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7170 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7171 msm_routing_put_audio_mixer),
7172 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7173 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7174 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307175 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
7176 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7177 msm_routing_put_audio_mixer),
7178 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7179 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7180 msm_routing_put_audio_mixer),
7181};
7182
7183static const struct snd_kcontrol_new mmul3_mixer_controls[] = {
7184 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7185 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7186 msm_routing_put_audio_mixer),
7187 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7188 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7189 msm_routing_put_audio_mixer),
7190 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
7191 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7192 msm_routing_put_audio_mixer),
7193 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7194 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7195 msm_routing_put_audio_mixer),
7196 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7197 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7198 msm_routing_put_audio_mixer),
7199 SOC_SINGLE_EXT("AUX_PCM_TX", MSM_BACKEND_DAI_AUXPCM_TX,
7200 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7201 msm_routing_put_audio_mixer),
7202 SOC_SINGLE_EXT("SEC_AUX_PCM_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
7203 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7204 msm_routing_put_audio_mixer),
7205 SOC_SINGLE_EXT("TERT_AUX_PCM_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
7206 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7207 msm_routing_put_audio_mixer),
7208 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
7209 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7210 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307211 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
7212 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7213 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307214 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7215 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7216 msm_routing_put_audio_mixer),
7217 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7218 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7219 msm_routing_put_audio_mixer),
7220 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7221 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7222 msm_routing_put_audio_mixer),
7223 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7224 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7225 msm_routing_put_audio_mixer),
7226 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7227 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7228 msm_routing_put_audio_mixer),
7229 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7230 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7231 msm_routing_put_audio_mixer),
7232 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7233 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7234 msm_routing_put_audio_mixer),
7235 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7236 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7237 msm_routing_put_audio_mixer),
7238 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7239 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7240 msm_routing_put_audio_mixer),
7241 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7242 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7243 msm_routing_put_audio_mixer),
7244 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7245 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7246 msm_routing_put_audio_mixer),
7247 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7248 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7249 msm_routing_put_audio_mixer),
7250 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7251 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7252 msm_routing_put_audio_mixer),
7253 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7254 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7255 msm_routing_put_audio_mixer),
7256 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7257 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7258 msm_routing_put_audio_mixer),
7259 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7260 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7261 msm_routing_put_audio_mixer),
7262 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7263 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7264 msm_routing_put_audio_mixer),
7265 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7266 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7267 msm_routing_put_audio_mixer),
7268 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7269 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7270 msm_routing_put_audio_mixer),
7271 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7272 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7273 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307274 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7275 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7276 msm_routing_put_audio_mixer),
7277 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7278 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7279 msm_routing_put_audio_mixer),
7280 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7281 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7282 msm_routing_put_audio_mixer),
7283 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7284 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7285 msm_routing_put_audio_mixer),
Raja Mallik425e1d32018-05-20 19:21:10 +05307286 SOC_SINGLE_EXT("AFE_LOOPBACK_TX", MSM_BACKEND_DAI_AFE_LOOPBACK_TX,
7287 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7288 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307289};
7290
7291static const struct snd_kcontrol_new mmul4_mixer_controls[] = {
7292 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7293 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7294 msm_routing_put_audio_mixer),
7295 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7296 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7297 msm_routing_put_audio_mixer),
7298 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7299 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7300 msm_routing_put_audio_mixer),
7301 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7302 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7303 msm_routing_put_audio_mixer),
7304 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7305 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7306 msm_routing_put_audio_mixer),
7307 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7308 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7309 msm_routing_put_audio_mixer),
7310 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7311 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7312 msm_routing_put_audio_mixer),
7313 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7314 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7315 msm_routing_put_audio_mixer),
7316 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7317 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7318 msm_routing_put_audio_mixer),
7319 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7320 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7321 msm_routing_put_audio_mixer),
7322 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7323 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7324 msm_routing_put_audio_mixer),
7325 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7326 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7327 msm_routing_put_audio_mixer),
7328 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7329 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7330 msm_routing_put_audio_mixer),
7331 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7332 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7333 msm_routing_put_audio_mixer),
7334 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7335 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7336 msm_routing_put_audio_mixer),
7337 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7338 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7339 msm_routing_put_audio_mixer),
7340 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7341 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7342 msm_routing_put_audio_mixer),
7343 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7344 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7345 msm_routing_put_audio_mixer),
7346 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7347 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7348 msm_routing_put_audio_mixer),
7349 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7350 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7351 msm_routing_put_audio_mixer),
7352 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7353 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7354 msm_routing_put_audio_mixer),
7355 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7356 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7357 msm_routing_put_audio_mixer),
7358 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7359 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7360 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307361 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7362 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7363 msm_routing_put_audio_mixer),
7364 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7365 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7366 msm_routing_put_audio_mixer),
7367 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7368 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7369 msm_routing_put_audio_mixer),
7370 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7371 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7372 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307373 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7374 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7375 msm_routing_put_audio_mixer),
7376 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7377 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7378 msm_routing_put_audio_mixer),
7379 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7380 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7381 msm_routing_put_audio_mixer),
7382 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7383 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7384 msm_routing_put_audio_mixer),
7385 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7386 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7387 msm_routing_put_audio_mixer),
Raja Mallik425e1d32018-05-20 19:21:10 +05307388 SOC_SINGLE_EXT("AFE_LOOPBACK_TX", MSM_BACKEND_DAI_AFE_LOOPBACK_TX,
7389 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7390 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307391 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7392 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7393 msm_routing_put_audio_mixer),
7394};
7395
7396static const struct snd_kcontrol_new mmul5_mixer_controls[] = {
7397 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7398 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7399 msm_routing_put_audio_mixer),
7400 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7401 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7402 msm_routing_put_audio_mixer),
7403 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
7404 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7405 msm_routing_put_audio_mixer),
7406 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7407 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7408 msm_routing_put_audio_mixer),
7409 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7410 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7411 msm_routing_put_audio_mixer),
7412 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
7413 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7414 msm_routing_put_audio_mixer),
7415 SOC_SINGLE_EXT("SEC_AUX_PCM_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
7416 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7417 msm_routing_put_audio_mixer),
7418 SOC_SINGLE_EXT("TERT_AUX_PCM_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
7419 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7420 msm_routing_put_audio_mixer),
7421 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
7422 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7423 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307424 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
7425 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7426 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307427 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7428 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7429 msm_routing_put_audio_mixer),
7430 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7431 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7432 msm_routing_put_audio_mixer),
7433 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7434 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7435 msm_routing_put_audio_mixer),
7436 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7437 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7438 msm_routing_put_audio_mixer),
7439 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7440 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7441 msm_routing_put_audio_mixer),
7442 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7443 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7444 msm_routing_put_audio_mixer),
7445 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7446 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7447 msm_routing_put_audio_mixer),
7448 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7449 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7450 msm_routing_put_audio_mixer),
7451 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7452 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7453 msm_routing_put_audio_mixer),
7454 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7455 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7456 msm_routing_put_audio_mixer),
7457 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7458 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7459 msm_routing_put_audio_mixer),
7460 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7461 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7462 msm_routing_put_audio_mixer),
7463 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7464 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7465 msm_routing_put_audio_mixer),
7466 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7467 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7468 msm_routing_put_audio_mixer),
7469 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7470 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7471 msm_routing_put_audio_mixer),
7472 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7473 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7474 msm_routing_put_audio_mixer),
7475 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7476 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7477 msm_routing_put_audio_mixer),
7478 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7479 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7480 msm_routing_put_audio_mixer),
7481 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7482 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7483 msm_routing_put_audio_mixer),
7484 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7485 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7486 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307487 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7488 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7489 msm_routing_put_audio_mixer),
7490 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7491 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7492 msm_routing_put_audio_mixer),
7493 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7494 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7495 msm_routing_put_audio_mixer),
7496 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7497 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7498 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307499 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7500 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7501 msm_routing_put_audio_mixer),
7502 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7503 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7504 msm_routing_put_audio_mixer),
Raja Mallik425e1d32018-05-20 19:21:10 +05307505 SOC_SINGLE_EXT("AFE_LOOPBACK_TX", MSM_BACKEND_DAI_AFE_LOOPBACK_TX,
7506 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7507 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307508 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
7509 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7510 msm_routing_put_audio_mixer),
7511 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
7512 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7513 msm_routing_put_audio_mixer),
7514 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7515 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7516 msm_routing_put_audio_mixer),
7517};
7518
7519static const struct snd_kcontrol_new mmul6_mixer_controls[] = {
7520 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7521 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7522 msm_routing_put_audio_mixer),
7523 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7524 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7525 msm_routing_put_audio_mixer),
7526 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7527 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7528 msm_routing_put_audio_mixer),
7529 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7530 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7531 msm_routing_put_audio_mixer),
7532 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7533 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7534 msm_routing_put_audio_mixer),
7535 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7536 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7537 msm_routing_put_audio_mixer),
7538 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7539 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7540 msm_routing_put_audio_mixer),
7541 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7542 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7543 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307544 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_TX,
7545 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7546 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307547 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
7548 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7549 msm_routing_put_audio_mixer),
7550 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
7551 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7552 msm_routing_put_audio_mixer),
7553 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
7554 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7555 msm_routing_put_audio_mixer),
7556 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
7557 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7558 msm_routing_put_audio_mixer),
7559 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7560 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7561 msm_routing_put_audio_mixer),
7562 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7563 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7564 msm_routing_put_audio_mixer),
7565 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7566 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7567 msm_routing_put_audio_mixer),
7568 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7569 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7570 msm_routing_put_audio_mixer),
7571 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7572 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7573 msm_routing_put_audio_mixer),
7574 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7575 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7576 msm_routing_put_audio_mixer),
7577 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7578 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7579 msm_routing_put_audio_mixer),
7580 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7581 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7582 msm_routing_put_audio_mixer),
7583 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7584 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7585 msm_routing_put_audio_mixer),
7586 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7587 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7588 msm_routing_put_audio_mixer),
7589 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7590 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7591 msm_routing_put_audio_mixer),
7592 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7593 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7594 msm_routing_put_audio_mixer),
7595 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7596 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7597 msm_routing_put_audio_mixer),
7598 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7599 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7600 msm_routing_put_audio_mixer),
7601 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7602 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7603 msm_routing_put_audio_mixer),
7604 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7605 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7606 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307607 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7608 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7609 msm_routing_put_audio_mixer),
7610 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7611 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7612 msm_routing_put_audio_mixer),
7613 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7614 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7615 msm_routing_put_audio_mixer),
7616 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7617 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7618 msm_routing_put_audio_mixer),
Raja Mallik425e1d32018-05-20 19:21:10 +05307619 SOC_SINGLE_EXT("AFE_LOOPBACK_TX", MSM_BACKEND_DAI_AFE_LOOPBACK_TX,
7620 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7621 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307622 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7623 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7624 msm_routing_put_audio_mixer),
7625};
7626
7627static const struct snd_kcontrol_new mmul8_mixer_controls[] = {
7628 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7629 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7630 msm_routing_put_audio_mixer),
7631 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7632 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7633 msm_routing_put_audio_mixer),
7634 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7635 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7636 msm_routing_put_audio_mixer),
7637 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7638 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7639 msm_routing_put_audio_mixer),
7640 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7641 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7642 msm_routing_put_audio_mixer),
7643 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7644 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7645 msm_routing_put_audio_mixer),
7646 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7647 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7648 msm_routing_put_audio_mixer),
7649 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7650 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7651 msm_routing_put_audio_mixer),
7652 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7653 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7654 msm_routing_put_audio_mixer),
7655 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7656 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7657 msm_routing_put_audio_mixer),
7658 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7659 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7660 msm_routing_put_audio_mixer),
7661 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7662 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7663 msm_routing_put_audio_mixer),
7664 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
7665 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7666 msm_routing_put_audio_mixer),
7667 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7668 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7669 msm_routing_put_audio_mixer),
7670 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7671 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7672 msm_routing_put_audio_mixer),
7673 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7674 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7675 msm_routing_put_audio_mixer),
7676 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7677 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7678 msm_routing_put_audio_mixer),
7679 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7680 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7681 msm_routing_put_audio_mixer),
7682 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7683 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7684 msm_routing_put_audio_mixer),
7685 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7686 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7687 msm_routing_put_audio_mixer),
7688 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7689 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7690 msm_routing_put_audio_mixer),
7691 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7692 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7693 msm_routing_put_audio_mixer),
7694 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7695 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7696 msm_routing_put_audio_mixer),
7697 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7698 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7699 msm_routing_put_audio_mixer),
7700 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7701 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7702 msm_routing_put_audio_mixer),
7703 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7704 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7705 msm_routing_put_audio_mixer),
7706 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7707 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7708 msm_routing_put_audio_mixer),
7709 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7710 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7711 msm_routing_put_audio_mixer),
7712 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7713 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7714 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307715 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7716 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7717 msm_routing_put_audio_mixer),
7718 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7719 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7720 msm_routing_put_audio_mixer),
7721 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7722 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7723 msm_routing_put_audio_mixer),
7724 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7725 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7726 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307727 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
7728 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7729 msm_routing_put_audio_mixer),
7730 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7731 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7732 msm_routing_put_audio_mixer),
7733};
7734
Asish Bhattacharya34504582017-08-08 12:55:01 +05307735static const struct snd_kcontrol_new mmul16_mixer_controls[] = {
7736 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7737 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7738 msm_routing_put_audio_mixer),
7739 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7740 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7741 msm_routing_put_audio_mixer),
7742 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7743 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7744 msm_routing_put_audio_mixer),
7745 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7746 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7747 msm_routing_put_audio_mixer),
7748 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7749 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7750 msm_routing_put_audio_mixer),
7751 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7752 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7753 msm_routing_put_audio_mixer),
7754 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7755 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7756 msm_routing_put_audio_mixer),
7757 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7758 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7759 msm_routing_put_audio_mixer),
7760 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7761 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7762 msm_routing_put_audio_mixer),
7763 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7764 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7765 msm_routing_put_audio_mixer),
7766 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7767 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7768 msm_routing_put_audio_mixer),
7769 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7770 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7771 msm_routing_put_audio_mixer),
7772 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
7773 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7774 msm_routing_put_audio_mixer),
7775 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7776 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7777 msm_routing_put_audio_mixer),
7778 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7779 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7780 msm_routing_put_audio_mixer),
7781 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7782 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7783 msm_routing_put_audio_mixer),
7784 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7785 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7786 msm_routing_put_audio_mixer),
7787 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7788 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7789 msm_routing_put_audio_mixer),
7790 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7791 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7792 msm_routing_put_audio_mixer),
7793 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7794 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7795 msm_routing_put_audio_mixer),
7796 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7797 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7798 msm_routing_put_audio_mixer),
7799 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7800 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7801 msm_routing_put_audio_mixer),
7802 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7803 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7804 msm_routing_put_audio_mixer),
7805 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7806 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7807 msm_routing_put_audio_mixer),
7808 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7809 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7810 msm_routing_put_audio_mixer),
7811 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7812 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7813 msm_routing_put_audio_mixer),
7814 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7815 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7816 msm_routing_put_audio_mixer),
7817 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7818 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7819 msm_routing_put_audio_mixer),
7820 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7821 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7822 msm_routing_put_audio_mixer),
Raja Mallik425e1d32018-05-20 19:21:10 +05307823 SOC_SINGLE_EXT("AFE_LOOPBACK_TX", MSM_BACKEND_DAI_AFE_LOOPBACK_TX,
7824 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7825 msm_routing_put_audio_mixer),
Asish Bhattacharya34504582017-08-08 12:55:01 +05307826 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
7827 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7828 msm_routing_put_audio_mixer),
7829 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7830 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7831 msm_routing_put_audio_mixer),
7832 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
7833 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7834 msm_routing_put_audio_mixer),
7835 SOC_SINGLE_EXT("AUX_PCM_TX", MSM_BACKEND_DAI_AUXPCM_TX,
7836 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7837 msm_routing_put_audio_mixer),
7838 SOC_SINGLE_EXT("SEC_AUX_PCM_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
7839 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7840 msm_routing_put_audio_mixer),
7841 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
7842 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7843 msm_routing_put_audio_mixer),
7844};
7845
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307846static const struct snd_kcontrol_new mmul9_mixer_controls[] = {
7847 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7848 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7849 msm_routing_put_audio_mixer),
7850 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7851 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7852 msm_routing_put_audio_mixer),
7853 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7854 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7855 msm_routing_put_audio_mixer),
7856 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7857 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7858 msm_routing_put_audio_mixer),
7859 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7860 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7861 msm_routing_put_audio_mixer),
7862 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7863 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7864 msm_routing_put_audio_mixer),
7865 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7866 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7867 msm_routing_put_audio_mixer),
7868 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
7869 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7870 msm_routing_put_audio_mixer),
7871 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7872 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7873 msm_routing_put_audio_mixer),
7874 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7875 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7876 msm_routing_put_audio_mixer),
7877 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7878 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7879 msm_routing_put_audio_mixer),
7880 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7881 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7882 msm_routing_put_audio_mixer),
7883 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7884 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7885 msm_routing_put_audio_mixer),
7886 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7887 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7888 msm_routing_put_audio_mixer),
7889 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7890 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7891 msm_routing_put_audio_mixer),
7892 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7893 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7894 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307895 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7896 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7897 msm_routing_put_audio_mixer),
7898 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7899 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7900 msm_routing_put_audio_mixer),
7901 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7902 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7903 msm_routing_put_audio_mixer),
7904 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7905 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7906 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307907};
7908
Laxminath Kasam38070be2017-08-17 18:21:59 +05307909static const struct snd_kcontrol_new mmul10_mixer_controls[] = {
7910 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7911 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7912 msm_routing_put_audio_mixer),
7913 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7914 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7915 msm_routing_put_audio_mixer),
7916 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7917 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7918 msm_routing_put_audio_mixer),
7919 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7920 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7921 msm_routing_put_audio_mixer),
7922 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7923 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7924 msm_routing_put_audio_mixer),
7925 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7926 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7927 msm_routing_put_audio_mixer),
7928 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7929 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7930 msm_routing_put_audio_mixer),
7931 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
7932 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7933 msm_routing_put_audio_mixer),
Vikram Panduranga72863152017-09-06 15:47:35 -07007934 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
7935 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7936 msm_routing_put_audio_mixer),
Laxminath Kasam38070be2017-08-17 18:21:59 +05307937 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7938 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7939 msm_routing_put_audio_mixer),
7940 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7941 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7942 msm_routing_put_audio_mixer),
7943 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7944 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7945 msm_routing_put_audio_mixer),
7946 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7947 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7948 msm_routing_put_audio_mixer),
7949 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7950 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7951 msm_routing_put_audio_mixer),
7952 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7953 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7954 msm_routing_put_audio_mixer),
7955 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7956 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7957 msm_routing_put_audio_mixer),
7958 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7959 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7960 msm_routing_put_audio_mixer),
7961 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7962 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7963 msm_routing_put_audio_mixer),
Vikram Panduranga016c49f2017-09-11 15:15:56 -07007964 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
7965 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7966 msm_routing_put_audio_mixer),
7967 SOC_SINGLE_EXT("AUX_PCM_TX", MSM_BACKEND_DAI_AUXPCM_TX,
Raja Mallik425e1d32018-05-20 19:21:10 +05307968 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7969 msm_routing_put_audio_mixer),
7970 SOC_SINGLE_EXT("AFE_LOOPBACK_TX", MSM_BACKEND_DAI_AFE_LOOPBACK_TX,
Vikram Panduranga016c49f2017-09-11 15:15:56 -07007971 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7972 msm_routing_put_audio_mixer),
7973 SOC_SINGLE_EXT("SEC_AUX_PCM_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
7974 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7975 msm_routing_put_audio_mixer),
7976 SOC_SINGLE_EXT("TERT_AUX_PCM_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
7977 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7978 msm_routing_put_audio_mixer),
7979 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
7980 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7981 msm_routing_put_audio_mixer),
7982 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7983 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7984 msm_routing_put_audio_mixer),
7985 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7986 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7987 msm_routing_put_audio_mixer),
7988 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7989 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7990 msm_routing_put_audio_mixer),
Laxminath Kasam38070be2017-08-17 18:21:59 +05307991};
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307992static const struct snd_kcontrol_new mmul17_mixer_controls[] = {
7993 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7994 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7995 msm_routing_put_audio_mixer),
7996 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7997 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7998 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05307999 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
8000 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
8001 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308002 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
8003 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
8004 msm_routing_put_audio_mixer),
8005 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
8006 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
8007 msm_routing_put_audio_mixer),
8008 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
8009 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
8010 msm_routing_put_audio_mixer),
8011 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
8012 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
8013 msm_routing_put_audio_mixer),
8014 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
8015 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
8016 msm_routing_put_audio_mixer),
Meng Wangbe8194e2018-04-25 10:40:01 +08008017 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
8018 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
8019 msm_routing_put_audio_mixer),
8020 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
8021 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
8022 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308023};
8024
8025static const struct snd_kcontrol_new mmul18_mixer_controls[] = {
8026 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8027 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
8028 msm_routing_put_audio_mixer),
8029 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
8030 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
8031 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05308032 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
8033 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
8034 msm_routing_put_audio_mixer),
Meng Wangbe8194e2018-04-25 10:40:01 +08008035 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
8036 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
8037 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308038 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
8039 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
8040 msm_routing_put_audio_mixer),
8041 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
8042 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
8043 msm_routing_put_audio_mixer),
8044 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
8045 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
8046 msm_routing_put_audio_mixer),
8047 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
8048 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
8049 msm_routing_put_audio_mixer),
8050 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
8051 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
8052 msm_routing_put_audio_mixer),
8053 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
8054 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
8055 msm_routing_put_audio_mixer),
8056};
8057
8058static const struct snd_kcontrol_new mmul19_mixer_controls[] = {
8059 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8060 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
8061 msm_routing_put_audio_mixer),
8062 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
8063 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
8064 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05308065 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
8066 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
8067 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308068 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
8069 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
8070 msm_routing_put_audio_mixer),
8071 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
8072 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
8073 msm_routing_put_audio_mixer),
8074 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
8075 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
8076 msm_routing_put_audio_mixer),
8077 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
8078 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
8079 msm_routing_put_audio_mixer),
8080 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
8081 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
8082 msm_routing_put_audio_mixer),
Meng Wangbe8194e2018-04-25 10:40:01 +08008083 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
8084 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
8085 msm_routing_put_audio_mixer),
8086 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
8087 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
8088 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308089};
8090
8091static const struct snd_kcontrol_new mmul20_mixer_controls[] = {
8092 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
8093 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8094 msm_routing_put_audio_mixer),
8095 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
8096 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8097 msm_routing_put_audio_mixer),
8098 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
8099 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8100 msm_routing_put_audio_mixer),
8101 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
8102 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8103 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308104 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_TX,
8105 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8106 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308107 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
8108 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8109 msm_routing_put_audio_mixer),
8110 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
8111 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8112 msm_routing_put_audio_mixer),
8113 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
8114 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8115 msm_routing_put_audio_mixer),
8116 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
8117 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8118 msm_routing_put_audio_mixer),
8119 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
8120 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8121 msm_routing_put_audio_mixer),
8122 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
8123 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8124 msm_routing_put_audio_mixer),
8125 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
8126 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8127 msm_routing_put_audio_mixer),
8128 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
8129 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8130 msm_routing_put_audio_mixer),
8131 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
8132 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8133 msm_routing_put_audio_mixer),
8134 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
8135 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8136 msm_routing_put_audio_mixer),
8137 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
8138 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8139 msm_routing_put_audio_mixer),
8140 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
8141 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8142 msm_routing_put_audio_mixer),
8143 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
8144 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8145 msm_routing_put_audio_mixer),
8146 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
8147 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8148 msm_routing_put_audio_mixer),
8149 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
8150 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8151 msm_routing_put_audio_mixer),
8152 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
8153 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8154 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308155 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
8156 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8157 msm_routing_put_audio_mixer),
8158 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
8159 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8160 msm_routing_put_audio_mixer),
8161 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
8162 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8163 msm_routing_put_audio_mixer),
8164 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
8165 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8166 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308167};
8168
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05308169static const struct snd_kcontrol_new mmul28_mixer_controls[] = {
8170 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8171 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
8172 msm_routing_put_audio_mixer),
8173 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
8174 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
8175 msm_routing_put_audio_mixer),
8176 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
8177 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
8178 msm_routing_put_audio_mixer),
8179 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
8180 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
8181 msm_routing_put_audio_mixer),
8182 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
8183 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
8184 msm_routing_put_audio_mixer),
8185 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
8186 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
8187 msm_routing_put_audio_mixer),
8188 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
8189 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
8190 msm_routing_put_audio_mixer),
8191 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
8192 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
8193 msm_routing_put_audio_mixer),
Meng Wangbe8194e2018-04-25 10:40:01 +08008194 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
8195 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
8196 msm_routing_put_audio_mixer),
8197 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
8198 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
8199 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05308200};
8201
8202static const struct snd_kcontrol_new mmul29_mixer_controls[] = {
8203 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8204 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
8205 msm_routing_put_audio_mixer),
8206 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
8207 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
8208 msm_routing_put_audio_mixer),
8209 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
8210 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
8211 msm_routing_put_audio_mixer),
8212 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
8213 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
8214 msm_routing_put_audio_mixer),
8215 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
8216 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
8217 msm_routing_put_audio_mixer),
8218 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
8219 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
8220 msm_routing_put_audio_mixer),
8221 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
8222 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
8223 msm_routing_put_audio_mixer),
8224 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
8225 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
8226 msm_routing_put_audio_mixer),
Meng Wangbe8194e2018-04-25 10:40:01 +08008227 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
8228 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
8229 msm_routing_put_audio_mixer),
8230 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
8231 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
8232 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05308233};
8234
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308235static const struct snd_kcontrol_new pri_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308236 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_PRI_I2S_RX,
8237 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8238 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308239 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_PRI_I2S_RX,
8240 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8241 msm_routing_put_voice_mixer),
8242 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_PRI_I2S_RX,
8243 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8244 msm_routing_put_voice_mixer),
8245 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_PRI_I2S_RX,
8246 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8247 msm_routing_put_voice_mixer),
8248 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_PRI_I2S_RX,
8249 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8250 msm_routing_put_voice_mixer),
8251};
8252
8253static const struct snd_kcontrol_new sec_i2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308254 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SEC_I2S_RX,
8255 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8256 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308257 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SEC_I2S_RX,
8258 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8259 msm_routing_put_voice_mixer),
8260 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SEC_I2S_RX,
8261 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8262 msm_routing_put_voice_mixer),
8263};
8264
8265static const struct snd_kcontrol_new sec_mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308266 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
8267 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8268 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308269 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
8270 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8271 msm_routing_put_voice_mixer),
8272 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
8273 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8274 msm_routing_put_voice_mixer),
8275 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
8276 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8277 msm_routing_put_voice_mixer),
8278 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
8279 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8280 msm_routing_put_voice_mixer),
8281};
8282
8283static const struct snd_kcontrol_new slimbus_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308284 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8285 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8286 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308287 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8288 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8289 msm_routing_put_voice_mixer),
8290 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8291 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8292 msm_routing_put_voice_mixer),
8293 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8294 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8295 msm_routing_put_voice_mixer),
8296 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8297 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8298 msm_routing_put_voice_mixer),
8299};
8300
8301static const struct snd_kcontrol_new slimbus_6_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308302 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8303 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8304 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308305 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8306 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8307 msm_routing_put_voice_mixer),
8308 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8309 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8310 msm_routing_put_voice_mixer),
8311 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8312 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8313 msm_routing_put_voice_mixer),
8314 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8315 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8316 msm_routing_put_voice_mixer),
8317};
8318
8319static const struct snd_kcontrol_new usb_audio_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308320 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_USB_RX,
8321 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8322 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308323 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_USB_RX,
8324 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8325 msm_routing_put_voice_mixer),
8326 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_USB_RX,
8327 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8328 msm_routing_put_voice_mixer),
8329 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_USB_RX,
8330 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8331 msm_routing_put_voice_mixer),
8332 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_USB_RX,
8333 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8334 msm_routing_put_voice_mixer),
8335};
8336
Aalique Grahamee4fd7d52017-11-28 13:24:13 -08008337static const struct snd_kcontrol_new display_port_rx_voice_mixer_controls[] = {
8338 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
8339 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8340 msm_routing_put_voice_mixer),
Aalique Grahamee4fd7d52017-11-28 13:24:13 -08008341 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
8342 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8343 msm_routing_put_voice_mixer),
8344 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
8345 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8346 msm_routing_put_voice_mixer),
8347 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
8348 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8349 msm_routing_put_voice_mixer),
8350 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
8351 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8352 msm_routing_put_voice_mixer),
8353};
8354
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308355static const struct snd_kcontrol_new bt_sco_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308356 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8357 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8358 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308359 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8360 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8361 msm_routing_put_voice_mixer),
8362 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8363 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8364 msm_routing_put_voice_mixer),
8365 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8366 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8367 msm_routing_put_voice_mixer),
8368 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8369 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8370 msm_routing_put_voice_mixer),
8371};
8372
8373static const struct snd_kcontrol_new mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308374 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_MI2S_RX,
8375 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8376 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308377 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_MI2S_RX,
8378 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8379 msm_routing_put_voice_mixer),
8380 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_MI2S_RX,
8381 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8382 msm_routing_put_voice_mixer),
8383 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_MI2S_RX,
8384 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8385 msm_routing_put_voice_mixer),
8386 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_MI2S_RX,
8387 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8388 msm_routing_put_voice_mixer),
8389};
8390
8391static const struct snd_kcontrol_new pri_mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308392 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_PRI_MI2S_RX,
8393 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8394 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308395 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_PRI_MI2S_RX,
8396 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8397 msm_routing_put_voice_mixer),
8398 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_PRI_MI2S_RX,
8399 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8400 msm_routing_put_voice_mixer),
8401 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_PRI_MI2S_RX,
8402 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8403 msm_routing_put_voice_mixer),
8404 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_PRI_MI2S_RX,
8405 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8406 msm_routing_put_voice_mixer),
8407};
8408
8409static const struct snd_kcontrol_new int0_mi2s_rx_voice_mixer_controls[] = {
8410 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_INT0_MI2S_RX,
8411 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8412 msm_routing_put_voice_mixer),
8413 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_INT0_MI2S_RX,
8414 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8415 msm_routing_put_voice_mixer),
8416 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_INT0_MI2S_RX,
8417 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8418 msm_routing_put_voice_mixer),
8419 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_INT0_MI2S_RX,
8420 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8421 msm_routing_put_voice_mixer),
8422 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_INT0_MI2S_RX,
8423 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8424 msm_routing_put_voice_mixer),
8425};
8426
8427static const struct snd_kcontrol_new int4_mi2s_rx_voice_mixer_controls[] = {
8428 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_INT4_MI2S_RX,
8429 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8430 msm_routing_put_voice_mixer),
8431 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_INT4_MI2S_RX,
8432 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8433 msm_routing_put_voice_mixer),
8434 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_INT4_MI2S_RX,
8435 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8436 msm_routing_put_voice_mixer),
8437 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_INT4_MI2S_RX,
8438 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8439 msm_routing_put_voice_mixer),
8440 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_INT4_MI2S_RX,
8441 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8442 msm_routing_put_voice_mixer),
8443};
8444
8445static const struct snd_kcontrol_new tert_mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308446 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8447 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8448 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308449 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8450 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8451 msm_routing_put_voice_mixer),
8452 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8453 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8454 msm_routing_put_voice_mixer),
8455 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8456 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8457 msm_routing_put_voice_mixer),
8458 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8459 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8460 msm_routing_put_voice_mixer),
8461};
8462
8463static const struct snd_kcontrol_new quat_mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308464 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8465 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8466 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308467 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8468 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8469 msm_routing_put_voice_mixer),
8470 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8471 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8472 msm_routing_put_voice_mixer),
8473 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8474 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8475 msm_routing_put_voice_mixer),
8476 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8477 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8478 msm_routing_put_voice_mixer),
8479};
8480
8481static const struct snd_kcontrol_new quin_mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308482 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8483 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8484 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308485 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8486 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8487 msm_routing_put_voice_mixer),
8488 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8489 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8490 msm_routing_put_voice_mixer),
8491 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8492 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8493 msm_routing_put_voice_mixer),
8494 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8495 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8496 msm_routing_put_voice_mixer),
8497};
8498
8499static const struct snd_kcontrol_new afe_pcm_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308500 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_AFE_PCM_RX,
8501 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8502 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308503 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_AFE_PCM_RX,
8504 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8505 msm_routing_put_voice_mixer),
8506 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_AFE_PCM_RX,
8507 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8508 msm_routing_put_voice_mixer),
8509 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_AFE_PCM_RX,
8510 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8511 msm_routing_put_voice_mixer),
8512 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_AFE_PCM_RX,
8513 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8514 msm_routing_put_voice_mixer),
8515};
8516
8517static const struct snd_kcontrol_new aux_pcm_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308518 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_AUXPCM_RX,
8519 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8520 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308521 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_AUXPCM_RX,
8522 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8523 msm_routing_put_voice_mixer),
8524 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_AUXPCM_RX,
8525 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8526 msm_routing_put_voice_mixer),
8527 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_AUXPCM_RX,
8528 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8529 msm_routing_put_voice_mixer),
8530 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_AUXPCM_RX,
8531 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8532 msm_routing_put_voice_mixer),
8533};
8534
8535static const struct snd_kcontrol_new sec_aux_pcm_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308536 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8537 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8538 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308539 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8540 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8541 msm_routing_put_voice_mixer),
8542 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8543 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8544 msm_routing_put_voice_mixer),
8545 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8546 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8547 msm_routing_put_voice_mixer),
8548 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8549 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8550 msm_routing_put_voice_mixer),
8551};
8552
8553static const struct snd_kcontrol_new tert_aux_pcm_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308554 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8555 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8556 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308557 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8558 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8559 msm_routing_put_voice_mixer),
8560 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8561 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8562 msm_routing_put_voice_mixer),
8563 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8564 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8565 msm_routing_put_voice_mixer),
8566 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8567 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8568 msm_routing_put_voice_mixer),
8569};
8570
8571static const struct snd_kcontrol_new quat_aux_pcm_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308572 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8573 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8574 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308575 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8576 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8577 msm_routing_put_voice_mixer),
8578 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8579 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8580 msm_routing_put_voice_mixer),
8581 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8582 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8583 msm_routing_put_voice_mixer),
8584 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8585 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8586 msm_routing_put_voice_mixer),
8587};
8588
Rohit Kumara5077932017-09-10 22:05:05 +05308589static const struct snd_kcontrol_new quin_aux_pcm_rx_voice_mixer_controls[] = {
Rohit Kumara5077932017-09-10 22:05:05 +05308590 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
8591 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8592 msm_routing_put_voice_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308593 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
8594 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8595 msm_routing_put_voice_mixer),
8596 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
8597 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8598 msm_routing_put_voice_mixer),
8599 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
8600 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8601 msm_routing_put_voice_mixer),
8602 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
8603 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8604 msm_routing_put_voice_mixer),
8605};
8606
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308607static const struct snd_kcontrol_new hdmi_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308608 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_HDMI_RX,
8609 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8610 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308611 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_HDMI_RX,
8612 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8613 msm_routing_put_voice_mixer),
8614 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_HDMI_RX,
8615 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8616 msm_routing_put_voice_mixer),
8617 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_HDMI_RX,
8618 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8619 msm_routing_put_voice_mixer),
8620 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_HDMI_RX,
8621 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8622 msm_routing_put_voice_mixer),
8623};
8624
Raja Mallik321d5712018-05-04 17:22:11 +05308625static const struct snd_kcontrol_new pri_tdm_rx_0_voice_mixer_controls[] = {
8626 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_PRI_TDM_RX_0,
8627 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8628 msm_routing_put_voice_mixer),
8629 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_PRI_TDM_RX_0,
8630 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8631 msm_routing_put_voice_stub_mixer),
8632 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_PRI_TDM_RX_0,
8633 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8634 msm_routing_put_voice_stub_mixer),
8635 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_PRI_TDM_RX_0,
8636 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_mixer,
8637 msm_routing_put_voice_mixer),
8638 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_PRI_TDM_RX_0,
8639 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8640 msm_routing_put_voice_mixer),
8641 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_PRI_TDM_RX_0,
8642 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8643 msm_routing_put_voice_mixer),
8644 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_PRI_TDM_RX_0,
8645 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8646 msm_routing_put_voice_mixer),
8647 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_PRI_TDM_RX_0,
8648 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8649 msm_routing_put_voice_mixer),
8650};
8651
8652static const struct snd_kcontrol_new pri_tdm_rx_1_voice_mixer_controls[] = {
8653 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_PRI_TDM_RX_1,
8654 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8655 msm_routing_put_voice_mixer),
8656 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_PRI_TDM_RX_1,
8657 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8658 msm_routing_put_voice_stub_mixer),
8659 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_PRI_TDM_RX_1,
8660 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8661 msm_routing_put_voice_stub_mixer),
8662 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_PRI_TDM_RX_1,
8663 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_mixer,
8664 msm_routing_put_voice_mixer),
8665 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_PRI_TDM_RX_1,
8666 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8667 msm_routing_put_voice_mixer),
8668 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_PRI_TDM_RX_1,
8669 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8670 msm_routing_put_voice_mixer),
8671 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_PRI_TDM_RX_1,
8672 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8673 msm_routing_put_voice_mixer),
8674 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_PRI_TDM_RX_1,
8675 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8676 msm_routing_put_voice_mixer),
8677};
8678
8679static const struct snd_kcontrol_new pri_tdm_rx_2_voice_mixer_controls[] = {
8680 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_PRI_TDM_RX_2,
8681 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8682 msm_routing_put_voice_mixer),
8683 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_PRI_TDM_RX_2,
8684 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8685 msm_routing_put_voice_stub_mixer),
8686 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_PRI_TDM_RX_2,
8687 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8688 msm_routing_put_voice_stub_mixer),
8689 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_PRI_TDM_RX_2,
8690 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_mixer,
8691 msm_routing_put_voice_mixer),
8692 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_PRI_TDM_RX_2,
8693 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8694 msm_routing_put_voice_mixer),
8695 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_PRI_TDM_RX_2,
8696 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8697 msm_routing_put_voice_mixer),
8698 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_PRI_TDM_RX_2,
8699 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8700 msm_routing_put_voice_mixer),
8701 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_PRI_TDM_RX_2,
8702 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8703 msm_routing_put_voice_mixer),
8704};
8705
8706static const struct snd_kcontrol_new pri_tdm_rx_3_voice_mixer_controls[] = {
8707 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_PRI_TDM_RX_3,
8708 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8709 msm_routing_put_voice_mixer),
8710 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_PRI_TDM_RX_3,
8711 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8712 msm_routing_put_voice_stub_mixer),
8713 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_PRI_TDM_RX_3,
8714 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8715 msm_routing_put_voice_stub_mixer),
8716 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_PRI_TDM_RX_3,
8717 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_mixer,
8718 msm_routing_put_voice_mixer),
8719 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_PRI_TDM_RX_3,
8720 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8721 msm_routing_put_voice_mixer),
8722 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_PRI_TDM_RX_3,
8723 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8724 msm_routing_put_voice_mixer),
8725 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_PRI_TDM_RX_3,
8726 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8727 msm_routing_put_voice_mixer),
8728 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_PRI_TDM_RX_3,
8729 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8730 msm_routing_put_voice_mixer),
8731};
8732
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308733static const struct snd_kcontrol_new slimbus_7_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308734 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8735 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8736 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308737 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8738 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8739 msm_routing_put_voice_mixer),
8740 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8741 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8742 msm_routing_put_voice_mixer),
8743 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8744 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8745 msm_routing_put_voice_mixer),
8746 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8747 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8748 msm_routing_put_voice_mixer),
8749};
8750
8751static const struct snd_kcontrol_new slimbus_8_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308752 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8753 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8754 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308755 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8756 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8757 msm_routing_put_voice_mixer),
8758 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8759 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8760 msm_routing_put_voice_mixer),
8761 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8762 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8763 msm_routing_put_voice_mixer),
8764 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8765 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8766 msm_routing_put_voice_mixer),
8767};
8768
8769static const struct snd_kcontrol_new quat_tdm_rx_2_voice_mixer_controls[] = {
8770 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
8771 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8772 msm_routing_put_voice_mixer),
8773};
8774
8775static const struct snd_kcontrol_new stub_rx_mixer_controls[] = {
kunleizdf5a00a2017-11-27 15:27:36 +08008776 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_EXTPROC_RX,
8777 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8778 msm_routing_put_voice_mixer),
8779 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_EXTPROC_RX,
8780 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8781 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308782};
8783
8784static const struct snd_kcontrol_new slimbus_1_rx_mixer_controls[] = {
kunleizdf5a00a2017-11-27 15:27:36 +08008785 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_1_RX,
8786 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8787 msm_routing_put_voice_mixer),
8788 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_1_RX,
8789 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8790 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308791};
8792
8793static const struct snd_kcontrol_new slimbus_3_rx_mixer_controls[] = {
kunleizdf5a00a2017-11-27 15:27:36 +08008794 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_3_RX,
8795 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8796 msm_routing_put_voice_mixer),
8797 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_3_RX,
8798 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8799 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308800};
8801
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308802static const struct snd_kcontrol_new tx_voicemmode1_mixer_controls[] = {
8803 SOC_SINGLE_EXT("PRI_TX_MMode1", MSM_BACKEND_DAI_PRI_I2S_TX,
8804 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8805 msm_routing_put_voice_mixer),
8806 SOC_SINGLE_EXT("MI2S_TX_MMode1", MSM_BACKEND_DAI_MI2S_TX,
8807 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8808 msm_routing_put_voice_mixer),
8809 SOC_SINGLE_EXT("SLIM_0_TX_MMode1",
8810 MSM_BACKEND_DAI_SLIMBUS_0_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8811 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8812 SOC_SINGLE_EXT("INT_BT_SCO_TX_MMode1",
8813 MSM_BACKEND_DAI_INT_BT_SCO_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8814 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8815 SOC_SINGLE_EXT("AFE_PCM_TX_MMode1",
8816 MSM_BACKEND_DAI_AFE_PCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0,
8817 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8818 SOC_SINGLE_EXT("AUX_PCM_TX_MMode1",
8819 MSM_BACKEND_DAI_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0,
8820 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8821 SOC_SINGLE_EXT("SEC_AUX_PCM_TX_MMode1",
8822 MSM_BACKEND_DAI_SEC_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8823 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8824 SOC_SINGLE_EXT("TERT_AUX_PCM_TX_MMode1",
8825 MSM_BACKEND_DAI_TERT_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8826 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8827 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX_MMode1",
8828 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8829 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308830 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX_MMode1",
8831 MSM_BACKEND_DAI_QUIN_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8832 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308833 SOC_SINGLE_EXT("PRI_MI2S_TX_MMode1",
8834 MSM_BACKEND_DAI_PRI_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0,
8835 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8836 SOC_SINGLE_EXT("TERT_MI2S_TX_MMode1",
8837 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE1,
8838 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8839 SOC_SINGLE_EXT("INT3_MI2S_TX_MMode1",
8840 MSM_BACKEND_DAI_INT3_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE1,
8841 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8842 SOC_SINGLE_EXT("SLIM_7_TX_MMode1",
8843 MSM_BACKEND_DAI_SLIMBUS_7_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8844 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8845 SOC_SINGLE_EXT("SLIM_8_TX_MMode1",
8846 MSM_BACKEND_DAI_SLIMBUS_8_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8847 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8848 SOC_SINGLE_EXT("USB_AUDIO_TX_MMode1", MSM_BACKEND_DAI_USB_TX,
8849 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8850 msm_routing_put_voice_mixer),
8851 SOC_SINGLE_EXT("QUAT_TDM_TX_0_MMode1",
8852 MSM_BACKEND_DAI_QUAT_TDM_TX_0, MSM_FRONTEND_DAI_VOICEMMODE1,
8853 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Raja Mallik321d5712018-05-04 17:22:11 +05308854 SOC_SINGLE_EXT("PRI_TDM_TX_3_MMode1",
8855 MSM_BACKEND_DAI_PRI_TDM_TX_3, MSM_FRONTEND_DAI_VOICEMMODE1,
8856 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Aditya Bavanari769c3102018-02-23 16:34:40 +05308857 SOC_SINGLE_EXT("QUAT_MI2S_TX_MMode1",
8858 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0,
8859 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8860 SOC_SINGLE_EXT("QUIN_MI2S_TX_MMode1",
8861 MSM_BACKEND_DAI_QUINARY_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE1,
8862 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308863};
8864
8865static const struct snd_kcontrol_new tx_voicemmode2_mixer_controls[] = {
8866 SOC_SINGLE_EXT("PRI_TX_MMode2", MSM_BACKEND_DAI_PRI_I2S_TX,
8867 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8868 msm_routing_put_voice_mixer),
8869 SOC_SINGLE_EXT("MI2S_TX_MMode2", MSM_BACKEND_DAI_MI2S_TX,
8870 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8871 msm_routing_put_voice_mixer),
8872 SOC_SINGLE_EXT("SLIM_0_TX_MMode2",
8873 MSM_BACKEND_DAI_SLIMBUS_0_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8874 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8875 SOC_SINGLE_EXT("INT_BT_SCO_TX_MMode2",
8876 MSM_BACKEND_DAI_INT_BT_SCO_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8877 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8878 SOC_SINGLE_EXT("AFE_PCM_TX_MMode2",
8879 MSM_BACKEND_DAI_AFE_PCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0,
8880 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8881 SOC_SINGLE_EXT("AUX_PCM_TX_MMode2",
8882 MSM_BACKEND_DAI_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0,
8883 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8884 SOC_SINGLE_EXT("SEC_AUX_PCM_TX_MMode2",
8885 MSM_BACKEND_DAI_SEC_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8886 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8887 SOC_SINGLE_EXT("TERT_AUX_PCM_TX_MMode2",
8888 MSM_BACKEND_DAI_TERT_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8889 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8890 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX_MMode2",
8891 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8892 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308893 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX_MMode2",
8894 MSM_BACKEND_DAI_QUIN_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8895 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308896 SOC_SINGLE_EXT("PRI_MI2S_TX_MMode2",
8897 MSM_BACKEND_DAI_PRI_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0,
8898 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8899 SOC_SINGLE_EXT("TERT_MI2S_TX_MMode2",
8900 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE2,
8901 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Raja Mallik321d5712018-05-04 17:22:11 +05308902 SOC_SINGLE_EXT("PRI_TDM_TX_3_MMode2",
8903 MSM_BACKEND_DAI_PRI_TDM_TX_3, MSM_FRONTEND_DAI_VOICEMMODE2,
8904 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308905 SOC_SINGLE_EXT("INT3_MI2S_TX_MMode2",
8906 MSM_BACKEND_DAI_INT3_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE2,
8907 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8908 SOC_SINGLE_EXT("SLIM_7_TX_MMode2",
8909 MSM_BACKEND_DAI_SLIMBUS_7_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8910 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8911 SOC_SINGLE_EXT("SLIM_8_TX_MMode2",
8912 MSM_BACKEND_DAI_SLIMBUS_8_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8913 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8914 SOC_SINGLE_EXT("USB_AUDIO_TX_MMode2",
8915 MSM_BACKEND_DAI_USB_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8916 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Aditya Bavanari769c3102018-02-23 16:34:40 +05308917 SOC_SINGLE_EXT("QUAT_MI2S_TX_MMode2",
8918 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0,
8919 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8920 SOC_SINGLE_EXT("QUIN_MI2S_TX_MMode2",
8921 MSM_BACKEND_DAI_QUINARY_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE2,
8922 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308923};
8924
8925static const struct snd_kcontrol_new tx_voip_mixer_controls[] = {
8926 SOC_SINGLE_EXT("PRI_TX_Voip", MSM_BACKEND_DAI_PRI_I2S_TX,
8927 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8928 msm_routing_put_voice_mixer),
8929 SOC_SINGLE_EXT("MI2S_TX_Voip", MSM_BACKEND_DAI_MI2S_TX,
8930 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8931 msm_routing_put_voice_mixer),
8932 SOC_SINGLE_EXT("SLIM_0_TX_Voip", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8933 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8934 msm_routing_put_voice_mixer),
8935 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX_Voip", MSM_BACKEND_DAI_INT_BT_SCO_TX,
8936 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8937 msm_routing_put_voice_mixer),
8938 SOC_SINGLE_EXT("AFE_PCM_TX_Voip", MSM_BACKEND_DAI_AFE_PCM_TX,
8939 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8940 msm_routing_put_voice_mixer),
8941 SOC_SINGLE_EXT("AUX_PCM_TX_Voip", MSM_BACKEND_DAI_AUXPCM_TX,
8942 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8943 msm_routing_put_voice_mixer),
8944 SOC_SINGLE_EXT("SEC_AUX_PCM_TX_Voip", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
8945 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8946 msm_routing_put_voice_mixer),
8947 SOC_SINGLE_EXT("TERT_AUX_PCM_TX_Voip", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
8948 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8949 msm_routing_put_voice_mixer),
8950 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX_Voip", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
8951 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8952 msm_routing_put_voice_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308953 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX_Voip", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
8954 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8955 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308956 SOC_SINGLE_EXT("PRI_MI2S_TX_Voip", MSM_BACKEND_DAI_PRI_MI2S_TX,
8957 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8958 msm_routing_put_voice_mixer),
8959 SOC_SINGLE_EXT("TERT_MI2S_TX_Voip", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
8960 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8961 msm_routing_put_voice_mixer),
8962 SOC_SINGLE_EXT("INT3_MI2S_TX_Voip", MSM_BACKEND_DAI_INT3_MI2S_TX,
8963 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8964 msm_routing_put_voice_mixer),
8965 SOC_SINGLE_EXT("SLIM_7_TX_Voip", MSM_BACKEND_DAI_SLIMBUS_7_TX,
8966 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8967 msm_routing_put_voice_mixer),
8968 SOC_SINGLE_EXT("SLIM_8_TX_Voip", MSM_BACKEND_DAI_SLIMBUS_8_TX,
8969 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8970 msm_routing_put_voice_mixer),
8971 SOC_SINGLE_EXT("USB_AUDIO_TX_Voip", MSM_BACKEND_DAI_USB_TX,
8972 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8973 msm_routing_put_voice_mixer),
Bala Kishore Pati38de3862018-06-15 17:38:40 +05308974 SOC_SINGLE_EXT("PRI_TDM_TX_3_Voip", MSM_BACKEND_DAI_PRI_TDM_TX_3,
8975 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8976 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308977};
8978
8979static const struct snd_kcontrol_new tx_voice_stub_mixer_controls[] = {
8980 SOC_SINGLE_EXT("STUB_TX_HL", MSM_BACKEND_DAI_EXTPROC_TX,
8981 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8982 msm_routing_put_voice_stub_mixer),
8983 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
8984 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8985 msm_routing_put_voice_stub_mixer),
8986 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
8987 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8988 msm_routing_put_voice_stub_mixer),
8989 SOC_SINGLE_EXT("STUB_1_TX_HL", MSM_BACKEND_DAI_EXTPROC_EC_TX,
8990 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8991 msm_routing_put_voice_stub_mixer),
8992 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
8993 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8994 msm_routing_put_voice_stub_mixer),
8995 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
8996 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8997 msm_routing_put_voice_stub_mixer),
8998 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
8999 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9000 msm_routing_put_voice_stub_mixer),
9001 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
9002 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9003 msm_routing_put_voice_stub_mixer),
9004 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
9005 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9006 msm_routing_put_voice_stub_mixer),
9007 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
9008 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9009 msm_routing_put_voice_stub_mixer),
9010 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
9011 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9012 msm_routing_put_voice_stub_mixer),
9013 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
9014 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9015 msm_routing_put_voice_stub_mixer),
9016 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
9017 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9018 msm_routing_put_voice_stub_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309019 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
9020 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9021 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309022 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
9023 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9024 msm_routing_put_voice_stub_mixer),
9025 SOC_SINGLE_EXT("SLIM_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
9026 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9027 msm_routing_put_voice_stub_mixer),
9028 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
9029 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9030 msm_routing_put_voice_stub_mixer),
9031 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
9032 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9033 msm_routing_put_voice_stub_mixer),
9034 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
9035 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9036 msm_routing_put_voice_stub_mixer),
9037};
9038
9039static const struct snd_kcontrol_new tx_voice2_stub_mixer_controls[] = {
9040 SOC_SINGLE_EXT("STUB_TX_HL", MSM_BACKEND_DAI_EXTPROC_TX,
9041 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9042 msm_routing_put_voice_stub_mixer),
9043 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
9044 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9045 msm_routing_put_voice_stub_mixer),
9046 SOC_SINGLE_EXT("STUB_1_TX_HL", MSM_BACKEND_DAI_EXTPROC_EC_TX,
9047 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9048 msm_routing_put_voice_stub_mixer),
9049 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
9050 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9051 msm_routing_put_voice_stub_mixer),
9052 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
9053 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9054 msm_routing_put_voice_stub_mixer),
9055 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
9056 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9057 msm_routing_put_voice_stub_mixer),
9058 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
9059 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9060 msm_routing_put_voice_stub_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309061 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
9062 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9063 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309064 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
9065 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9066 msm_routing_put_voice_stub_mixer),
9067 SOC_SINGLE_EXT("SLIM_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
9068 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9069 msm_routing_put_voice_stub_mixer),
9070 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
9071 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9072 msm_routing_put_voice_stub_mixer),
9073 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
9074 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9075 msm_routing_put_voice_stub_mixer),
9076 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
9077 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9078 msm_routing_put_voice_stub_mixer),
9079 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
9080 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9081 msm_routing_put_voice_stub_mixer),
9082 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
9083 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9084 msm_routing_put_voice_stub_mixer),
9085};
9086
9087static const struct snd_kcontrol_new tx_volte_stub_mixer_controls[] = {
9088 SOC_SINGLE_EXT("STUB_TX_HL", MSM_BACKEND_DAI_EXTPROC_TX,
9089 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9090 msm_routing_put_voice_stub_mixer),
9091 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
9092 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9093 msm_routing_put_voice_stub_mixer),
9094 SOC_SINGLE_EXT("STUB_1_TX_HL", MSM_BACKEND_DAI_EXTPROC_EC_TX,
9095 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9096 msm_routing_put_voice_stub_mixer),
9097 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
9098 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9099 msm_routing_put_voice_stub_mixer),
9100 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
9101 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9102 msm_routing_put_voice_stub_mixer),
9103 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
9104 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9105 msm_routing_put_voice_stub_mixer),
9106 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
9107 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9108 msm_routing_put_voice_stub_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309109 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
9110 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9111 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309112 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
9113 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9114 msm_routing_put_voice_stub_mixer),
9115 SOC_SINGLE_EXT("SLIM_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
9116 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9117 msm_routing_put_voice_stub_mixer),
9118 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
9119 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9120 msm_routing_put_voice_stub_mixer),
9121 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
9122 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9123 msm_routing_put_voice_stub_mixer),
9124 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
9125 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9126 msm_routing_put_voice_stub_mixer),
9127 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
9128 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9129 msm_routing_put_voice_stub_mixer),
9130 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
9131 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9132 msm_routing_put_voice_stub_mixer),
9133};
9134
9135static const struct snd_kcontrol_new tx_qchat_mixer_controls[] = {
9136 SOC_SINGLE_EXT("PRI_TX_QCHAT", MSM_BACKEND_DAI_PRI_I2S_TX,
9137 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9138 msm_routing_put_voice_mixer),
9139 SOC_SINGLE_EXT("SLIM_0_TX_QCHAT", MSM_BACKEND_DAI_SLIMBUS_0_TX,
9140 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9141 msm_routing_put_voice_mixer),
9142 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX_QCHAT",
9143 MSM_BACKEND_DAI_INT_BT_SCO_TX, MSM_FRONTEND_DAI_QCHAT, 1, 0,
9144 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
9145 SOC_SINGLE_EXT("AFE_PCM_TX_QCHAT", MSM_BACKEND_DAI_AFE_PCM_TX,
9146 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9147 msm_routing_put_voice_mixer),
9148 SOC_SINGLE_EXT("AUX_PCM_TX_QCHAT", MSM_BACKEND_DAI_AUXPCM_TX,
9149 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9150 msm_routing_put_voice_mixer),
9151 SOC_SINGLE_EXT("SEC_AUX_PCM_TX_QCHAT", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
9152 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9153 msm_routing_put_voice_mixer),
9154 SOC_SINGLE_EXT("TERT_AUX_PCM_TX_QCHAT", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
9155 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9156 msm_routing_put_voice_mixer),
9157 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX_QCHAT", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
9158 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9159 msm_routing_put_voice_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309160 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX_QCHAT", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
9161 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9162 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309163 SOC_SINGLE_EXT("MI2S_TX_QCHAT", MSM_BACKEND_DAI_MI2S_TX,
9164 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9165 msm_routing_put_voice_mixer),
9166 SOC_SINGLE_EXT("PRI_MI2S_TX_QCHAT", MSM_BACKEND_DAI_PRI_MI2S_TX,
9167 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9168 msm_routing_put_voice_mixer),
9169 SOC_SINGLE_EXT("TERT_MI2S_TX_QCHAT", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
9170 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9171 msm_routing_put_voice_mixer),
9172 SOC_SINGLE_EXT("INT3_MI2S_TX_QCHAT", MSM_BACKEND_DAI_INT3_MI2S_TX,
9173 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9174 msm_routing_put_voice_mixer),
9175 SOC_SINGLE_EXT("SLIM_7_TX_QCHAT", MSM_BACKEND_DAI_SLIMBUS_7_TX,
9176 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9177 msm_routing_put_voice_mixer),
9178 SOC_SINGLE_EXT("SLIM_8_TX_QCHAT", MSM_BACKEND_DAI_SLIMBUS_8_TX,
9179 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9180 msm_routing_put_voice_mixer),
9181 SOC_SINGLE_EXT("USB_AUDIO_TX_QCHAT", MSM_BACKEND_DAI_USB_TX,
9182 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9183 msm_routing_put_voice_mixer),
9184};
9185
9186static const struct snd_kcontrol_new int0_mi2s_rx_port_mixer_controls[] = {
9187 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9188 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9189 msm_routing_put_port_mixer),
9190 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9191 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9192 msm_routing_put_port_mixer),
9193 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9194 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9195 msm_routing_put_port_mixer),
9196 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9197 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9198 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309199 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9200 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9201 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309202 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9203 MSM_BACKEND_DAI_INT3_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9204 msm_routing_put_port_mixer),
9205 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9206 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9207 msm_routing_put_port_mixer),
9208 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9209 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
9210 msm_routing_put_port_mixer),
9211 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9212 MSM_BACKEND_DAI_SLIMBUS_7_TX, 1, 0, msm_routing_get_port_mixer,
9213 msm_routing_put_port_mixer),
9214 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9215 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9216 msm_routing_put_port_mixer),
9217};
9218
9219static const struct snd_kcontrol_new int4_mi2s_rx_port_mixer_controls[] = {
9220 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9221 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9222 msm_routing_put_port_mixer),
9223 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9224 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9225 msm_routing_put_port_mixer),
9226 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9227 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9228 msm_routing_put_port_mixer),
9229 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9230 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9231 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309232 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9233 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9234 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309235 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9236 MSM_BACKEND_DAI_INT3_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9237 msm_routing_put_port_mixer),
9238 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9239 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9240 msm_routing_put_port_mixer),
9241 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9242 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
9243 msm_routing_put_port_mixer),
9244 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9245 MSM_BACKEND_DAI_SLIMBUS_7_TX, 1, 0, msm_routing_get_port_mixer,
9246 msm_routing_put_port_mixer),
9247 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9248 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9249 msm_routing_put_port_mixer),
9250};
9251
9252static const struct snd_kcontrol_new sbus_0_rx_port_mixer_controls[] = {
9253 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9254 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9255 msm_routing_put_port_mixer),
9256 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9257 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9258 msm_routing_put_port_mixer),
9259 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9260 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9261 msm_routing_put_port_mixer),
9262 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9263 MSM_BACKEND_DAI_SLIMBUS_7_TX, 1, 0, msm_routing_get_port_mixer,
9264 msm_routing_put_port_mixer),
9265 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9266 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9267 msm_routing_put_port_mixer),
9268 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9269 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9270 msm_routing_put_port_mixer),
9271 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9272 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9273 msm_routing_put_port_mixer),
9274 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9275 MSM_BACKEND_DAI_TERT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9276 msm_routing_put_port_mixer),
9277 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9278 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9279 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309280 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9281 MSM_BACKEND_DAI_QUIN_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9282 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309283 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9284 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9285 msm_routing_put_port_mixer),
9286 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9287 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9288 msm_routing_put_port_mixer),
9289 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9290 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9291 msm_routing_put_port_mixer),
9292 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9293 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9294 msm_routing_put_port_mixer),
9295 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9296 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9297 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309298 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9299 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9300 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309301 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9302 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
9303 msm_routing_put_port_mixer),
9304 SOC_SINGLE_EXT("PRI_MI2S_RX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9305 MSM_BACKEND_DAI_PRI_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
9306 msm_routing_put_port_mixer),
9307 SOC_SINGLE_EXT("SEC_MI2S_RX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9308 MSM_BACKEND_DAI_SECONDARY_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
9309 msm_routing_put_port_mixer),
9310 SOC_SINGLE_EXT("TERT_MI2S_RX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9311 MSM_BACKEND_DAI_TERTIARY_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
9312 msm_routing_put_port_mixer),
9313 SOC_SINGLE_EXT("QUAT_MI2S_RX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9314 MSM_BACKEND_DAI_QUATERNARY_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
9315 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309316 SOC_SINGLE_EXT("QUIN_MI2S_RX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9317 MSM_BACKEND_DAI_QUINARY_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
9318 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309319};
9320
9321static const struct snd_kcontrol_new aux_pcm_rx_port_mixer_controls[] = {
9322 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_RX,
9323 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9324 msm_routing_put_port_mixer),
9325 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_AUXPCM_RX,
9326 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9327 msm_routing_put_port_mixer),
9328 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_AUXPCM_RX,
9329 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9330 msm_routing_put_port_mixer),
9331 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_RX,
9332 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9333 msm_routing_put_port_mixer),
9334 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_AUXPCM_RX,
9335 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0, msm_routing_get_port_mixer,
9336 msm_routing_put_port_mixer),
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -08009337 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_AUXPCM_RX,
9338 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9339 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309340};
9341
9342static const struct snd_kcontrol_new sec_auxpcm_rx_port_mixer_controls[] = {
9343 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
9344 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9345 msm_routing_put_port_mixer),
9346 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
9347 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9348 msm_routing_put_port_mixer),
9349 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
9350 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9351 msm_routing_put_port_mixer),
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -08009352 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
9353 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9354 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309355};
9356
9357static const struct snd_kcontrol_new tert_auxpcm_rx_port_mixer_controls[] = {
9358 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
9359 MSM_BACKEND_DAI_TERT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9360 msm_routing_put_port_mixer),
9361 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
9362 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9363 msm_routing_put_port_mixer),
9364 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
9365 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9366 msm_routing_put_port_mixer),
9367};
9368
9369static const struct snd_kcontrol_new quat_auxpcm_rx_port_mixer_controls[] = {
9370 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
9371 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9372 msm_routing_put_port_mixer),
9373 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
9374 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9375 msm_routing_put_port_mixer),
9376 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
9377 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9378 msm_routing_put_port_mixer),
9379};
9380
Rohit Kumara5077932017-09-10 22:05:05 +05309381static const struct snd_kcontrol_new quin_auxpcm_rx_port_mixer_controls[] = {
9382 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
9383 MSM_BACKEND_DAI_QUIN_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9384 msm_routing_put_port_mixer),
9385 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
9386 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9387 msm_routing_put_port_mixer),
9388 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
9389 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9390 msm_routing_put_port_mixer),
9391};
9392
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309393static const struct snd_kcontrol_new sbus_1_rx_port_mixer_controls[] = {
9394 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9395 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
9396 msm_routing_put_port_mixer),
9397 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9398 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0, msm_routing_get_port_mixer,
9399 msm_routing_put_port_mixer),
9400 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9401 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9402 msm_routing_put_port_mixer),
9403 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9404 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9405 msm_routing_put_port_mixer),
9406 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9407 MSM_BACKEND_DAI_TERT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9408 msm_routing_put_port_mixer),
9409 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9410 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9411 msm_routing_put_port_mixer),
9412};
9413
9414static const struct snd_kcontrol_new sbus_3_rx_port_mixer_controls[] = {
9415 SOC_SINGLE_EXT("INTERNAL_BT_SCO_RX", MSM_BACKEND_DAI_SLIMBUS_3_RX,
9416 MSM_BACKEND_DAI_INT_BT_SCO_RX, 1, 0, msm_routing_get_port_mixer,
9417 msm_routing_put_port_mixer),
9418 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_3_RX,
9419 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9420 msm_routing_put_port_mixer),
9421 SOC_SINGLE_EXT("AFE_PCM_RX", MSM_BACKEND_DAI_SLIMBUS_3_RX,
9422 MSM_BACKEND_DAI_AFE_PCM_RX, 1, 0, msm_routing_get_port_mixer,
9423 msm_routing_put_port_mixer),
9424 SOC_SINGLE_EXT("AUX_PCM_RX", MSM_BACKEND_DAI_SLIMBUS_3_RX,
9425 MSM_BACKEND_DAI_AUXPCM_RX, 1, 0, msm_routing_get_port_mixer,
9426 msm_routing_put_port_mixer),
9427 SOC_SINGLE_EXT("SLIM_0_RX", MSM_BACKEND_DAI_SLIMBUS_3_RX,
9428 MSM_BACKEND_DAI_SLIMBUS_0_RX, 1, 0, msm_routing_get_port_mixer,
9429 msm_routing_put_port_mixer),
9430};
9431
9432static const struct snd_kcontrol_new sbus_6_rx_port_mixer_controls[] = {
9433 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9434 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9435 msm_routing_put_port_mixer),
9436 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9437 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9438 msm_routing_put_port_mixer),
9439 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9440 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9441 msm_routing_put_port_mixer),
9442 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9443 MSM_BACKEND_DAI_SLIMBUS_7_TX, 1, 0, msm_routing_get_port_mixer,
9444 msm_routing_put_port_mixer),
9445 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9446 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9447 msm_routing_put_port_mixer),
9448 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9449 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9450 msm_routing_put_port_mixer),
9451 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9452 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9453 msm_routing_put_port_mixer),
9454 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9455 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9456 msm_routing_put_port_mixer),
9457 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9458 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9459 msm_routing_put_port_mixer),
9460 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9461 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9462 msm_routing_put_port_mixer),
9463 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9464 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9465 msm_routing_put_port_mixer),
9466 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9467 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
9468 msm_routing_put_port_mixer),
9469};
9470
9471static const struct snd_kcontrol_new bt_sco_rx_port_mixer_controls[] = {
9472 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_INT_BT_SCO_RX,
9473 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9474 msm_routing_put_port_mixer),
9475 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_INT_BT_SCO_RX,
9476 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9477 msm_routing_put_port_mixer),
9478};
9479
9480static const struct snd_kcontrol_new afe_pcm_rx_port_mixer_controls[] = {
9481 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_AFE_PCM_RX,
9482 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9483 msm_routing_put_port_mixer),
9484 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_AFE_PCM_RX,
9485 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9486 msm_routing_put_port_mixer),
9487};
9488
9489
9490static const struct snd_kcontrol_new hdmi_rx_port_mixer_controls[] = {
9491 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_HDMI_RX,
9492 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9493 msm_routing_put_port_mixer),
9494};
9495
9496static const struct snd_kcontrol_new display_port_rx_port_mixer_controls[] = {
9497 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
9498 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9499 msm_routing_put_port_mixer),
9500};
9501
9502static const struct snd_kcontrol_new sec_i2s_rx_port_mixer_controls[] = {
9503 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_SEC_I2S_RX,
9504 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9505 msm_routing_put_port_mixer),
9506};
9507
9508static const struct snd_kcontrol_new mi2s_rx_port_mixer_controls[] = {
9509 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_MI2S_RX,
9510 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9511 msm_routing_put_port_mixer),
9512 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_RX,
9513 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9514 msm_routing_put_port_mixer),
9515};
9516
9517static const struct snd_kcontrol_new primary_mi2s_rx_port_mixer_controls[] = {
9518 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9519 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9520 msm_routing_put_port_mixer),
9521 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9522 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9523 msm_routing_put_port_mixer),
9524 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9525 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9526 msm_routing_put_port_mixer),
9527 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9528 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9529 msm_routing_put_port_mixer),
9530 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9531 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
9532 msm_routing_put_port_mixer),
9533 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9534 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9535 msm_routing_put_port_mixer),
9536 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9537 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9538 msm_routing_put_port_mixer),
9539 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9540 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9541 msm_routing_put_port_mixer),
9542 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9543 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9544 msm_routing_put_port_mixer),
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -08009545 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9546 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9547 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309548};
9549
9550static const struct snd_kcontrol_new usb_rx_port_mixer_controls[] = {
9551 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_RX,
9552 MSM_BACKEND_DAI_USB_TX, 1, 0, msm_routing_get_port_mixer,
9553 msm_routing_put_port_mixer),
9554};
9555
9556static const struct snd_kcontrol_new quat_mi2s_rx_port_mixer_controls[] = {
9557 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9558 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9559 msm_routing_put_port_mixer),
9560 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9561 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9562 msm_routing_put_port_mixer),
9563 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9564 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9565 msm_routing_put_port_mixer),
9566 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9567 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9568 msm_routing_put_port_mixer),
9569 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9570 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9571 msm_routing_put_port_mixer),
9572 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9573 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9574 msm_routing_put_port_mixer),
9575 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9576 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9577 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309578 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9579 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9580 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309581 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9582 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9583 msm_routing_put_port_mixer),
9584};
9585
Rohit Kumara5077932017-09-10 22:05:05 +05309586static const struct snd_kcontrol_new quin_mi2s_rx_port_mixer_controls[] = {
9587 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9588 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9589 msm_routing_put_port_mixer),
9590 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9591 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9592 msm_routing_put_port_mixer),
9593 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9594 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9595 msm_routing_put_port_mixer),
9596 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9597 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9598 msm_routing_put_port_mixer),
9599 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9600 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9601 msm_routing_put_port_mixer),
9602 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9603 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9604 msm_routing_put_port_mixer),
9605 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9606 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9607 msm_routing_put_port_mixer),
9608};
9609
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309610static const struct snd_kcontrol_new pri_tdm_rx_0_port_mixer_controls[] = {
9611 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9612 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9613 msm_routing_get_port_mixer,
9614 msm_routing_put_port_mixer),
9615 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9616 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9617 msm_routing_get_port_mixer,
9618 msm_routing_put_port_mixer),
9619 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9620 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9621 msm_routing_get_port_mixer,
9622 msm_routing_put_port_mixer),
9623 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9624 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9625 msm_routing_get_port_mixer,
9626 msm_routing_put_port_mixer),
9627 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9628 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9629 msm_routing_get_port_mixer,
9630 msm_routing_put_port_mixer),
9631 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9632 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9633 msm_routing_get_port_mixer,
9634 msm_routing_put_port_mixer),
9635 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9636 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9637 msm_routing_get_port_mixer,
9638 msm_routing_put_port_mixer),
9639 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9640 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9641 msm_routing_get_port_mixer,
9642 msm_routing_put_port_mixer),
9643 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9644 MSM_BACKEND_DAI_PRI_TDM_TX_0, 1, 0,
9645 msm_routing_get_port_mixer,
9646 msm_routing_put_port_mixer),
9647 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9648 MSM_BACKEND_DAI_PRI_TDM_TX_1, 1, 0,
9649 msm_routing_get_port_mixer,
9650 msm_routing_put_port_mixer),
9651 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9652 MSM_BACKEND_DAI_PRI_TDM_TX_2, 1, 0,
9653 msm_routing_get_port_mixer,
9654 msm_routing_put_port_mixer),
9655 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9656 MSM_BACKEND_DAI_PRI_TDM_TX_3, 1, 0,
9657 msm_routing_get_port_mixer,
9658 msm_routing_put_port_mixer),
9659 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9660 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9661 msm_routing_get_port_mixer,
9662 msm_routing_put_port_mixer),
9663 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9664 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9665 msm_routing_get_port_mixer,
9666 msm_routing_put_port_mixer),
9667 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9668 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9669 msm_routing_get_port_mixer,
9670 msm_routing_put_port_mixer),
9671 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9672 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9673 msm_routing_get_port_mixer,
9674 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309675 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9676 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9677 msm_routing_get_port_mixer,
9678 msm_routing_put_port_mixer),
9679 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9680 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9681 msm_routing_get_port_mixer,
9682 msm_routing_put_port_mixer),
9683 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9684 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9685 msm_routing_get_port_mixer,
9686 msm_routing_put_port_mixer),
9687 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9688 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9689 msm_routing_get_port_mixer,
9690 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309691};
9692
9693static const struct snd_kcontrol_new pri_tdm_rx_1_port_mixer_controls[] = {
9694 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9695 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9696 msm_routing_get_port_mixer,
9697 msm_routing_put_port_mixer),
9698 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9699 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9700 msm_routing_get_port_mixer,
9701 msm_routing_put_port_mixer),
9702 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9703 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9704 msm_routing_get_port_mixer,
9705 msm_routing_put_port_mixer),
9706 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9707 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9708 msm_routing_get_port_mixer,
9709 msm_routing_put_port_mixer),
9710 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9711 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9712 msm_routing_get_port_mixer,
9713 msm_routing_put_port_mixer),
9714 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9715 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9716 msm_routing_get_port_mixer,
9717 msm_routing_put_port_mixer),
9718 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9719 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9720 msm_routing_get_port_mixer,
9721 msm_routing_put_port_mixer),
9722 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9723 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9724 msm_routing_get_port_mixer,
9725 msm_routing_put_port_mixer),
9726 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9727 MSM_BACKEND_DAI_PRI_TDM_TX_0, 1, 0,
9728 msm_routing_get_port_mixer,
9729 msm_routing_put_port_mixer),
9730 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9731 MSM_BACKEND_DAI_PRI_TDM_TX_1, 1, 0,
9732 msm_routing_get_port_mixer,
9733 msm_routing_put_port_mixer),
9734 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9735 MSM_BACKEND_DAI_PRI_TDM_TX_2, 1, 0,
9736 msm_routing_get_port_mixer,
9737 msm_routing_put_port_mixer),
9738 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9739 MSM_BACKEND_DAI_PRI_TDM_TX_3, 1, 0,
9740 msm_routing_get_port_mixer,
9741 msm_routing_put_port_mixer),
9742 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9743 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9744 msm_routing_get_port_mixer,
9745 msm_routing_put_port_mixer),
9746 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9747 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9748 msm_routing_get_port_mixer,
9749 msm_routing_put_port_mixer),
9750 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9751 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9752 msm_routing_get_port_mixer,
9753 msm_routing_put_port_mixer),
9754 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9755 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9756 msm_routing_get_port_mixer,
9757 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309758 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9759 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9760 msm_routing_get_port_mixer,
9761 msm_routing_put_port_mixer),
9762 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9763 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9764 msm_routing_get_port_mixer,
9765 msm_routing_put_port_mixer),
9766 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9767 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9768 msm_routing_get_port_mixer,
9769 msm_routing_put_port_mixer),
9770 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9771 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9772 msm_routing_get_port_mixer,
9773 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309774};
9775
9776static const struct snd_kcontrol_new pri_tdm_rx_2_port_mixer_controls[] = {
9777 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9778 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9779 msm_routing_get_port_mixer,
9780 msm_routing_put_port_mixer),
9781 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9782 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9783 msm_routing_get_port_mixer,
9784 msm_routing_put_port_mixer),
9785 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9786 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9787 msm_routing_get_port_mixer,
9788 msm_routing_put_port_mixer),
9789 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9790 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9791 msm_routing_get_port_mixer,
9792 msm_routing_put_port_mixer),
9793 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9794 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9795 msm_routing_get_port_mixer,
9796 msm_routing_put_port_mixer),
9797 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9798 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9799 msm_routing_get_port_mixer,
9800 msm_routing_put_port_mixer),
9801 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9802 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9803 msm_routing_get_port_mixer,
9804 msm_routing_put_port_mixer),
9805 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9806 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9807 msm_routing_get_port_mixer,
9808 msm_routing_put_port_mixer),
9809 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9810 MSM_BACKEND_DAI_PRI_TDM_TX_0, 1, 0,
9811 msm_routing_get_port_mixer,
9812 msm_routing_put_port_mixer),
9813 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9814 MSM_BACKEND_DAI_PRI_TDM_TX_1, 1, 0,
9815 msm_routing_get_port_mixer,
9816 msm_routing_put_port_mixer),
9817 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9818 MSM_BACKEND_DAI_PRI_TDM_TX_2, 1, 0,
9819 msm_routing_get_port_mixer,
9820 msm_routing_put_port_mixer),
9821 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9822 MSM_BACKEND_DAI_PRI_TDM_TX_3, 1, 0,
9823 msm_routing_get_port_mixer,
9824 msm_routing_put_port_mixer),
9825 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9826 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9827 msm_routing_get_port_mixer,
9828 msm_routing_put_port_mixer),
9829 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9830 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9831 msm_routing_get_port_mixer,
9832 msm_routing_put_port_mixer),
9833 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9834 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9835 msm_routing_get_port_mixer,
9836 msm_routing_put_port_mixer),
9837 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9838 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9839 msm_routing_get_port_mixer,
9840 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309841 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9842 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9843 msm_routing_get_port_mixer,
9844 msm_routing_put_port_mixer),
9845 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9846 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9847 msm_routing_get_port_mixer,
9848 msm_routing_put_port_mixer),
9849 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9850 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9851 msm_routing_get_port_mixer,
9852 msm_routing_put_port_mixer),
9853 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9854 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9855 msm_routing_get_port_mixer,
9856 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309857};
9858
9859static const struct snd_kcontrol_new pri_tdm_rx_3_port_mixer_controls[] = {
9860 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9861 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9862 msm_routing_get_port_mixer,
9863 msm_routing_put_port_mixer),
9864 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9865 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9866 msm_routing_get_port_mixer,
9867 msm_routing_put_port_mixer),
9868 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9869 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9870 msm_routing_get_port_mixer,
9871 msm_routing_put_port_mixer),
9872 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9873 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9874 msm_routing_get_port_mixer,
9875 msm_routing_put_port_mixer),
9876 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9877 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9878 msm_routing_get_port_mixer,
9879 msm_routing_put_port_mixer),
9880 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9881 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9882 msm_routing_get_port_mixer,
9883 msm_routing_put_port_mixer),
9884 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9885 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9886 msm_routing_get_port_mixer,
9887 msm_routing_put_port_mixer),
9888 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9889 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9890 msm_routing_get_port_mixer,
9891 msm_routing_put_port_mixer),
9892 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9893 MSM_BACKEND_DAI_PRI_TDM_TX_0, 1, 0,
9894 msm_routing_get_port_mixer,
9895 msm_routing_put_port_mixer),
9896 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9897 MSM_BACKEND_DAI_PRI_TDM_TX_1, 1, 0,
9898 msm_routing_get_port_mixer,
9899 msm_routing_put_port_mixer),
9900 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9901 MSM_BACKEND_DAI_PRI_TDM_TX_2, 1, 0,
9902 msm_routing_get_port_mixer,
9903 msm_routing_put_port_mixer),
9904 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9905 MSM_BACKEND_DAI_PRI_TDM_TX_3, 1, 0,
9906 msm_routing_get_port_mixer,
9907 msm_routing_put_port_mixer),
9908 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9909 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9910 msm_routing_get_port_mixer,
9911 msm_routing_put_port_mixer),
9912 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9913 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9914 msm_routing_get_port_mixer,
9915 msm_routing_put_port_mixer),
9916 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9917 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9918 msm_routing_get_port_mixer,
9919 msm_routing_put_port_mixer),
9920 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9921 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9922 msm_routing_get_port_mixer,
9923 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309924 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9925 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9926 msm_routing_get_port_mixer,
9927 msm_routing_put_port_mixer),
9928 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9929 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9930 msm_routing_get_port_mixer,
9931 msm_routing_put_port_mixer),
9932 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9933 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9934 msm_routing_get_port_mixer,
9935 msm_routing_put_port_mixer),
9936 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9937 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9938 msm_routing_get_port_mixer,
9939 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309940};
9941
9942static const struct snd_kcontrol_new sec_tdm_rx_0_port_mixer_controls[] = {
9943 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9944 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9945 msm_routing_get_port_mixer,
9946 msm_routing_put_port_mixer),
9947 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9948 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9949 msm_routing_get_port_mixer,
9950 msm_routing_put_port_mixer),
9951 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9952 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9953 msm_routing_get_port_mixer,
9954 msm_routing_put_port_mixer),
9955 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9956 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9957 msm_routing_get_port_mixer,
9958 msm_routing_put_port_mixer),
9959 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9960 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9961 msm_routing_get_port_mixer,
9962 msm_routing_put_port_mixer),
9963 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9964 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9965 msm_routing_get_port_mixer,
9966 msm_routing_put_port_mixer),
9967 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9968 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9969 msm_routing_get_port_mixer,
9970 msm_routing_put_port_mixer),
9971 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9972 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9973 msm_routing_get_port_mixer,
9974 msm_routing_put_port_mixer),
9975 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9976 MSM_BACKEND_DAI_SEC_TDM_TX_0, 1, 0,
9977 msm_routing_get_port_mixer,
9978 msm_routing_put_port_mixer),
9979 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9980 MSM_BACKEND_DAI_SEC_TDM_TX_1, 1, 0,
9981 msm_routing_get_port_mixer,
9982 msm_routing_put_port_mixer),
9983 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9984 MSM_BACKEND_DAI_SEC_TDM_TX_2, 1, 0,
9985 msm_routing_get_port_mixer,
9986 msm_routing_put_port_mixer),
9987 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9988 MSM_BACKEND_DAI_SEC_TDM_TX_3, 1, 0,
9989 msm_routing_get_port_mixer,
9990 msm_routing_put_port_mixer),
9991 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9992 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9993 msm_routing_get_port_mixer,
9994 msm_routing_put_port_mixer),
9995 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9996 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9997 msm_routing_get_port_mixer,
9998 msm_routing_put_port_mixer),
9999 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_0,
10000 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10001 msm_routing_get_port_mixer,
10002 msm_routing_put_port_mixer),
10003 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_0,
10004 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10005 msm_routing_get_port_mixer,
10006 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010007 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_0,
10008 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10009 msm_routing_get_port_mixer,
10010 msm_routing_put_port_mixer),
10011 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_0,
10012 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10013 msm_routing_get_port_mixer,
10014 msm_routing_put_port_mixer),
10015 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_0,
10016 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10017 msm_routing_get_port_mixer,
10018 msm_routing_put_port_mixer),
10019 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_0,
10020 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10021 msm_routing_get_port_mixer,
10022 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010023};
10024
10025static const struct snd_kcontrol_new sec_tdm_rx_1_port_mixer_controls[] = {
10026 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10027 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10028 msm_routing_get_port_mixer,
10029 msm_routing_put_port_mixer),
10030 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10031 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10032 msm_routing_get_port_mixer,
10033 msm_routing_put_port_mixer),
10034 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10035 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
10036 msm_routing_get_port_mixer,
10037 msm_routing_put_port_mixer),
10038 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10039 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10040 msm_routing_get_port_mixer,
10041 msm_routing_put_port_mixer),
10042 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10043 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10044 msm_routing_get_port_mixer,
10045 msm_routing_put_port_mixer),
10046 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10047 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10048 msm_routing_get_port_mixer,
10049 msm_routing_put_port_mixer),
10050 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10051 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10052 msm_routing_get_port_mixer,
10053 msm_routing_put_port_mixer),
10054 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10055 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10056 msm_routing_get_port_mixer,
10057 msm_routing_put_port_mixer),
10058 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10059 MSM_BACKEND_DAI_SEC_TDM_TX_0, 1, 0,
10060 msm_routing_get_port_mixer,
10061 msm_routing_put_port_mixer),
10062 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10063 MSM_BACKEND_DAI_SEC_TDM_TX_1, 1, 0,
10064 msm_routing_get_port_mixer,
10065 msm_routing_put_port_mixer),
10066 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10067 MSM_BACKEND_DAI_SEC_TDM_TX_2, 1, 0,
10068 msm_routing_get_port_mixer,
10069 msm_routing_put_port_mixer),
10070 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10071 MSM_BACKEND_DAI_SEC_TDM_TX_3, 1, 0,
10072 msm_routing_get_port_mixer,
10073 msm_routing_put_port_mixer),
10074 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10075 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10076 msm_routing_get_port_mixer,
10077 msm_routing_put_port_mixer),
10078 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10079 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10080 msm_routing_get_port_mixer,
10081 msm_routing_put_port_mixer),
10082 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10083 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10084 msm_routing_get_port_mixer,
10085 msm_routing_put_port_mixer),
10086 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10087 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10088 msm_routing_get_port_mixer,
10089 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010090 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10091 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10092 msm_routing_get_port_mixer,
10093 msm_routing_put_port_mixer),
10094 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10095 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10096 msm_routing_get_port_mixer,
10097 msm_routing_put_port_mixer),
10098 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10099 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10100 msm_routing_get_port_mixer,
10101 msm_routing_put_port_mixer),
10102 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10103 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10104 msm_routing_get_port_mixer,
10105 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010106};
10107
10108static const struct snd_kcontrol_new sec_tdm_rx_2_port_mixer_controls[] = {
10109 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10110 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10111 msm_routing_get_port_mixer,
10112 msm_routing_put_port_mixer),
10113 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10114 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10115 msm_routing_get_port_mixer,
10116 msm_routing_put_port_mixer),
10117 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10118 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
10119 msm_routing_get_port_mixer,
10120 msm_routing_put_port_mixer),
10121 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10122 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10123 msm_routing_get_port_mixer,
10124 msm_routing_put_port_mixer),
10125 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10126 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10127 msm_routing_get_port_mixer,
10128 msm_routing_put_port_mixer),
10129 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10130 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10131 msm_routing_get_port_mixer,
10132 msm_routing_put_port_mixer),
10133 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10134 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10135 msm_routing_get_port_mixer,
10136 msm_routing_put_port_mixer),
10137 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10138 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10139 msm_routing_get_port_mixer,
10140 msm_routing_put_port_mixer),
10141 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10142 MSM_BACKEND_DAI_SEC_TDM_TX_0, 1, 0,
10143 msm_routing_get_port_mixer,
10144 msm_routing_put_port_mixer),
10145 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10146 MSM_BACKEND_DAI_SEC_TDM_TX_1, 1, 0,
10147 msm_routing_get_port_mixer,
10148 msm_routing_put_port_mixer),
10149 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10150 MSM_BACKEND_DAI_SEC_TDM_TX_2, 1, 0,
10151 msm_routing_get_port_mixer,
10152 msm_routing_put_port_mixer),
10153 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10154 MSM_BACKEND_DAI_SEC_TDM_TX_3, 1, 0,
10155 msm_routing_get_port_mixer,
10156 msm_routing_put_port_mixer),
10157 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10158 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10159 msm_routing_get_port_mixer,
10160 msm_routing_put_port_mixer),
10161 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10162 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10163 msm_routing_get_port_mixer,
10164 msm_routing_put_port_mixer),
10165 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10166 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10167 msm_routing_get_port_mixer,
10168 msm_routing_put_port_mixer),
10169 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10170 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10171 msm_routing_get_port_mixer,
10172 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010173 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10174 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10175 msm_routing_get_port_mixer,
10176 msm_routing_put_port_mixer),
10177 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10178 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10179 msm_routing_get_port_mixer,
10180 msm_routing_put_port_mixer),
10181 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10182 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10183 msm_routing_get_port_mixer,
10184 msm_routing_put_port_mixer),
10185 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10186 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10187 msm_routing_get_port_mixer,
10188 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010189};
10190
10191static const struct snd_kcontrol_new sec_tdm_rx_3_port_mixer_controls[] = {
10192 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10193 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10194 msm_routing_get_port_mixer,
10195 msm_routing_put_port_mixer),
10196 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10197 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10198 msm_routing_get_port_mixer,
10199 msm_routing_put_port_mixer),
10200 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10201 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
10202 msm_routing_get_port_mixer,
10203 msm_routing_put_port_mixer),
10204 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10205 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10206 msm_routing_get_port_mixer,
10207 msm_routing_put_port_mixer),
10208 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10209 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10210 msm_routing_get_port_mixer,
10211 msm_routing_put_port_mixer),
10212 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10213 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10214 msm_routing_get_port_mixer,
10215 msm_routing_put_port_mixer),
10216 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10217 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10218 msm_routing_get_port_mixer,
10219 msm_routing_put_port_mixer),
10220 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10221 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10222 msm_routing_get_port_mixer,
10223 msm_routing_put_port_mixer),
10224 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10225 MSM_BACKEND_DAI_SEC_TDM_TX_0, 1, 0,
10226 msm_routing_get_port_mixer,
10227 msm_routing_put_port_mixer),
10228 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10229 MSM_BACKEND_DAI_SEC_TDM_TX_1, 1, 0,
10230 msm_routing_get_port_mixer,
10231 msm_routing_put_port_mixer),
10232 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10233 MSM_BACKEND_DAI_SEC_TDM_TX_2, 1, 0,
10234 msm_routing_get_port_mixer,
10235 msm_routing_put_port_mixer),
10236 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10237 MSM_BACKEND_DAI_SEC_TDM_TX_3, 1, 0,
10238 msm_routing_get_port_mixer,
10239 msm_routing_put_port_mixer),
10240 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10241 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10242 msm_routing_get_port_mixer,
10243 msm_routing_put_port_mixer),
10244 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10245 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10246 msm_routing_get_port_mixer,
10247 msm_routing_put_port_mixer),
10248 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10249 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10250 msm_routing_get_port_mixer,
10251 msm_routing_put_port_mixer),
10252 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10253 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10254 msm_routing_get_port_mixer,
10255 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010256 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10257 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10258 msm_routing_get_port_mixer,
10259 msm_routing_put_port_mixer),
10260 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10261 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10262 msm_routing_get_port_mixer,
10263 msm_routing_put_port_mixer),
10264 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10265 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10266 msm_routing_get_port_mixer,
10267 msm_routing_put_port_mixer),
10268 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10269 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10270 msm_routing_get_port_mixer,
10271 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010272};
10273
10274static const struct snd_kcontrol_new tert_tdm_rx_0_port_mixer_controls[] = {
10275 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10276 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10277 msm_routing_get_port_mixer,
10278 msm_routing_put_port_mixer),
10279 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10280 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10281 msm_routing_get_port_mixer,
10282 msm_routing_put_port_mixer),
10283 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10284 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
10285 msm_routing_get_port_mixer,
10286 msm_routing_put_port_mixer),
10287 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10288 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10289 msm_routing_get_port_mixer,
10290 msm_routing_put_port_mixer),
10291 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10292 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10293 msm_routing_get_port_mixer,
10294 msm_routing_put_port_mixer),
10295 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10296 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10297 msm_routing_get_port_mixer,
10298 msm_routing_put_port_mixer),
10299 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10300 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10301 msm_routing_get_port_mixer,
10302 msm_routing_put_port_mixer),
10303 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10304 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10305 msm_routing_get_port_mixer,
10306 msm_routing_put_port_mixer),
10307 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10308 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10309 msm_routing_get_port_mixer,
10310 msm_routing_put_port_mixer),
10311 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10312 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10313 msm_routing_get_port_mixer,
10314 msm_routing_put_port_mixer),
10315 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10316 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10317 msm_routing_get_port_mixer,
10318 msm_routing_put_port_mixer),
10319 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10320 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10321 msm_routing_get_port_mixer,
10322 msm_routing_put_port_mixer),
10323 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10324 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10325 msm_routing_get_port_mixer,
10326 msm_routing_put_port_mixer),
10327 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10328 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10329 msm_routing_get_port_mixer,
10330 msm_routing_put_port_mixer),
10331 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10332 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10333 msm_routing_get_port_mixer,
10334 msm_routing_put_port_mixer),
10335 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10336 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10337 msm_routing_get_port_mixer,
10338 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010339 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10340 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10341 msm_routing_get_port_mixer,
10342 msm_routing_put_port_mixer),
10343 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10344 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10345 msm_routing_get_port_mixer,
10346 msm_routing_put_port_mixer),
10347 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10348 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10349 msm_routing_get_port_mixer,
10350 msm_routing_put_port_mixer),
10351 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10352 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10353 msm_routing_get_port_mixer,
10354 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010355};
10356
10357static const struct snd_kcontrol_new tert_tdm_rx_1_port_mixer_controls[] = {
10358 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10359 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10360 msm_routing_get_port_mixer,
10361 msm_routing_put_port_mixer),
10362 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10363 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10364 msm_routing_get_port_mixer,
10365 msm_routing_put_port_mixer),
10366 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10367 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
10368 msm_routing_get_port_mixer,
10369 msm_routing_put_port_mixer),
10370 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10371 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10372 msm_routing_get_port_mixer,
10373 msm_routing_put_port_mixer),
10374 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10375 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10376 msm_routing_get_port_mixer,
10377 msm_routing_put_port_mixer),
10378 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10379 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10380 msm_routing_get_port_mixer,
10381 msm_routing_put_port_mixer),
10382 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10383 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10384 msm_routing_get_port_mixer,
10385 msm_routing_put_port_mixer),
10386 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10387 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10388 msm_routing_get_port_mixer,
10389 msm_routing_put_port_mixer),
10390 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10391 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10392 msm_routing_get_port_mixer,
10393 msm_routing_put_port_mixer),
10394 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10395 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10396 msm_routing_get_port_mixer,
10397 msm_routing_put_port_mixer),
10398 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10399 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10400 msm_routing_get_port_mixer,
10401 msm_routing_put_port_mixer),
10402 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10403 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10404 msm_routing_get_port_mixer,
10405 msm_routing_put_port_mixer),
10406 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10407 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10408 msm_routing_get_port_mixer,
10409 msm_routing_put_port_mixer),
10410 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10411 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10412 msm_routing_get_port_mixer,
10413 msm_routing_put_port_mixer),
10414 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10415 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10416 msm_routing_get_port_mixer,
10417 msm_routing_put_port_mixer),
10418 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10419 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10420 msm_routing_get_port_mixer,
10421 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010422 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10423 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10424 msm_routing_get_port_mixer,
10425 msm_routing_put_port_mixer),
10426 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10427 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10428 msm_routing_get_port_mixer,
10429 msm_routing_put_port_mixer),
10430 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10431 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10432 msm_routing_get_port_mixer,
10433 msm_routing_put_port_mixer),
10434 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10435 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10436 msm_routing_get_port_mixer,
10437 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010438};
10439
10440static const struct snd_kcontrol_new tert_tdm_rx_2_port_mixer_controls[] = {
10441 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10442 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10443 msm_routing_get_port_mixer,
10444 msm_routing_put_port_mixer),
10445 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10446 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10447 msm_routing_get_port_mixer,
10448 msm_routing_put_port_mixer),
10449 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10450 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
10451 msm_routing_get_port_mixer,
10452 msm_routing_put_port_mixer),
10453 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10454 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10455 msm_routing_get_port_mixer,
10456 msm_routing_put_port_mixer),
10457 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10458 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10459 msm_routing_get_port_mixer,
10460 msm_routing_put_port_mixer),
10461 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10462 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10463 msm_routing_get_port_mixer,
10464 msm_routing_put_port_mixer),
10465 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10466 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10467 msm_routing_get_port_mixer,
10468 msm_routing_put_port_mixer),
10469 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10470 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10471 msm_routing_get_port_mixer,
10472 msm_routing_put_port_mixer),
10473 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10474 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10475 msm_routing_get_port_mixer,
10476 msm_routing_put_port_mixer),
10477 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10478 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10479 msm_routing_get_port_mixer,
10480 msm_routing_put_port_mixer),
10481 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10482 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10483 msm_routing_get_port_mixer,
10484 msm_routing_put_port_mixer),
10485 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10486 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10487 msm_routing_get_port_mixer,
10488 msm_routing_put_port_mixer),
10489 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10490 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10491 msm_routing_get_port_mixer,
10492 msm_routing_put_port_mixer),
10493 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10494 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10495 msm_routing_get_port_mixer,
10496 msm_routing_put_port_mixer),
10497 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10498 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10499 msm_routing_get_port_mixer,
10500 msm_routing_put_port_mixer),
10501 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10502 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10503 msm_routing_get_port_mixer,
10504 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010505 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10506 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10507 msm_routing_get_port_mixer,
10508 msm_routing_put_port_mixer),
10509 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10510 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10511 msm_routing_get_port_mixer,
10512 msm_routing_put_port_mixer),
10513 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10514 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10515 msm_routing_get_port_mixer,
10516 msm_routing_put_port_mixer),
10517 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10518 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10519 msm_routing_get_port_mixer,
10520 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010521};
10522
10523static const struct snd_kcontrol_new tert_tdm_rx_3_port_mixer_controls[] = {
10524 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10525 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10526 msm_routing_get_port_mixer,
10527 msm_routing_put_port_mixer),
10528 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10529 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10530 msm_routing_get_port_mixer,
10531 msm_routing_put_port_mixer),
10532 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10533 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
10534 msm_routing_get_port_mixer,
10535 msm_routing_put_port_mixer),
10536 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10537 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10538 msm_routing_get_port_mixer,
10539 msm_routing_put_port_mixer),
10540 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10541 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10542 msm_routing_get_port_mixer,
10543 msm_routing_put_port_mixer),
10544 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10545 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10546 msm_routing_get_port_mixer,
10547 msm_routing_put_port_mixer),
10548 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10549 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10550 msm_routing_get_port_mixer,
10551 msm_routing_put_port_mixer),
10552 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10553 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10554 msm_routing_get_port_mixer,
10555 msm_routing_put_port_mixer),
10556 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10557 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10558 msm_routing_get_port_mixer,
10559 msm_routing_put_port_mixer),
10560 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10561 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10562 msm_routing_get_port_mixer,
10563 msm_routing_put_port_mixer),
10564 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10565 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10566 msm_routing_get_port_mixer,
10567 msm_routing_put_port_mixer),
10568 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10569 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10570 msm_routing_get_port_mixer,
10571 msm_routing_put_port_mixer),
10572 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10573 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10574 msm_routing_get_port_mixer,
10575 msm_routing_put_port_mixer),
10576 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10577 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10578 msm_routing_get_port_mixer,
10579 msm_routing_put_port_mixer),
10580 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10581 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10582 msm_routing_get_port_mixer,
10583 msm_routing_put_port_mixer),
10584 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10585 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10586 msm_routing_get_port_mixer,
10587 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010588 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10589 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10590 msm_routing_get_port_mixer,
10591 msm_routing_put_port_mixer),
10592 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10593 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10594 msm_routing_get_port_mixer,
10595 msm_routing_put_port_mixer),
10596 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10597 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10598 msm_routing_get_port_mixer,
10599 msm_routing_put_port_mixer),
10600 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10601 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10602 msm_routing_get_port_mixer,
10603 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010604};
10605
10606static const struct snd_kcontrol_new quat_tdm_rx_0_port_mixer_controls[] = {
10607 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10608 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10609 msm_routing_get_port_mixer,
10610 msm_routing_put_port_mixer),
10611 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10612 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10613 msm_routing_get_port_mixer,
10614 msm_routing_put_port_mixer),
10615 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10616 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10617 msm_routing_get_port_mixer,
10618 msm_routing_put_port_mixer),
10619 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10620 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10621 msm_routing_get_port_mixer,
10622 msm_routing_put_port_mixer),
10623 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10624 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10625 msm_routing_get_port_mixer,
10626 msm_routing_put_port_mixer),
10627 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10628 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10629 msm_routing_get_port_mixer,
10630 msm_routing_put_port_mixer),
10631 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10632 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10633 msm_routing_get_port_mixer,
10634 msm_routing_put_port_mixer),
10635 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10636 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10637 msm_routing_get_port_mixer,
10638 msm_routing_put_port_mixer),
10639 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10640 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10641 msm_routing_get_port_mixer,
10642 msm_routing_put_port_mixer),
10643 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10644 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10645 msm_routing_get_port_mixer,
10646 msm_routing_put_port_mixer),
10647 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10648 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10649 msm_routing_get_port_mixer,
10650 msm_routing_put_port_mixer),
10651 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10652 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10653 msm_routing_get_port_mixer,
10654 msm_routing_put_port_mixer),
10655 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10656 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10657 msm_routing_get_port_mixer,
10658 msm_routing_put_port_mixer),
10659 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10660 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10661 msm_routing_get_port_mixer,
10662 msm_routing_put_port_mixer),
10663 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10664 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10665 msm_routing_get_port_mixer,
10666 msm_routing_put_port_mixer),
10667 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10668 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10669 msm_routing_get_port_mixer,
10670 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010671 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10672 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10673 msm_routing_get_port_mixer,
10674 msm_routing_put_port_mixer),
10675 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10676 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10677 msm_routing_get_port_mixer,
10678 msm_routing_put_port_mixer),
10679 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10680 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10681 msm_routing_get_port_mixer,
10682 msm_routing_put_port_mixer),
10683 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10684 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10685 msm_routing_get_port_mixer,
10686 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010687};
10688
10689static const struct snd_kcontrol_new quat_tdm_rx_1_port_mixer_controls[] = {
10690 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10691 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10692 msm_routing_get_port_mixer,
10693 msm_routing_put_port_mixer),
10694 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10695 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10696 msm_routing_get_port_mixer,
10697 msm_routing_put_port_mixer),
10698 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10699 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10700 msm_routing_get_port_mixer,
10701 msm_routing_put_port_mixer),
10702 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10703 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10704 msm_routing_get_port_mixer,
10705 msm_routing_put_port_mixer),
10706 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10707 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10708 msm_routing_get_port_mixer,
10709 msm_routing_put_port_mixer),
10710 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10711 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10712 msm_routing_get_port_mixer,
10713 msm_routing_put_port_mixer),
10714 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10715 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10716 msm_routing_get_port_mixer,
10717 msm_routing_put_port_mixer),
10718 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10719 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10720 msm_routing_get_port_mixer,
10721 msm_routing_put_port_mixer),
10722 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10723 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10724 msm_routing_get_port_mixer,
10725 msm_routing_put_port_mixer),
10726 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10727 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10728 msm_routing_get_port_mixer,
10729 msm_routing_put_port_mixer),
10730 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10731 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10732 msm_routing_get_port_mixer,
10733 msm_routing_put_port_mixer),
10734 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10735 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10736 msm_routing_get_port_mixer,
10737 msm_routing_put_port_mixer),
10738 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10739 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10740 msm_routing_get_port_mixer,
10741 msm_routing_put_port_mixer),
10742 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10743 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10744 msm_routing_get_port_mixer,
10745 msm_routing_put_port_mixer),
10746 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10747 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10748 msm_routing_get_port_mixer,
10749 msm_routing_put_port_mixer),
10750 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10751 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10752 msm_routing_get_port_mixer,
10753 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010754 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10755 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10756 msm_routing_get_port_mixer,
10757 msm_routing_put_port_mixer),
10758 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10759 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10760 msm_routing_get_port_mixer,
10761 msm_routing_put_port_mixer),
10762 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10763 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10764 msm_routing_get_port_mixer,
10765 msm_routing_put_port_mixer),
10766 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10767 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10768 msm_routing_get_port_mixer,
10769 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010770};
10771
10772static const struct snd_kcontrol_new quat_tdm_rx_2_port_mixer_controls[] = {
10773 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10774 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10775 msm_routing_get_port_mixer,
10776 msm_routing_put_port_mixer),
10777 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10778 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10779 msm_routing_get_port_mixer,
10780 msm_routing_put_port_mixer),
10781 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10782 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10783 msm_routing_get_port_mixer,
10784 msm_routing_put_port_mixer),
10785 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10786 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10787 msm_routing_get_port_mixer,
10788 msm_routing_put_port_mixer),
10789 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10790 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10791 msm_routing_get_port_mixer,
10792 msm_routing_put_port_mixer),
10793 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10794 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10795 msm_routing_get_port_mixer,
10796 msm_routing_put_port_mixer),
10797 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10798 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10799 msm_routing_get_port_mixer,
10800 msm_routing_put_port_mixer),
10801 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10802 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10803 msm_routing_get_port_mixer,
10804 msm_routing_put_port_mixer),
10805 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10806 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10807 msm_routing_get_port_mixer,
10808 msm_routing_put_port_mixer),
10809 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10810 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10811 msm_routing_get_port_mixer,
10812 msm_routing_put_port_mixer),
10813 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10814 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10815 msm_routing_get_port_mixer,
10816 msm_routing_put_port_mixer),
10817 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10818 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10819 msm_routing_get_port_mixer,
10820 msm_routing_put_port_mixer),
10821 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10822 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10823 msm_routing_get_port_mixer,
10824 msm_routing_put_port_mixer),
10825 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10826 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10827 msm_routing_get_port_mixer,
10828 msm_routing_put_port_mixer),
10829 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10830 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10831 msm_routing_get_port_mixer,
10832 msm_routing_put_port_mixer),
10833 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10834 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10835 msm_routing_get_port_mixer,
10836 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010837 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10838 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10839 msm_routing_get_port_mixer,
10840 msm_routing_put_port_mixer),
10841 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10842 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10843 msm_routing_get_port_mixer,
10844 msm_routing_put_port_mixer),
10845 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10846 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10847 msm_routing_get_port_mixer,
10848 msm_routing_put_port_mixer),
10849 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10850 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10851 msm_routing_get_port_mixer,
10852 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010853};
10854
10855static const struct snd_kcontrol_new quat_tdm_rx_3_port_mixer_controls[] = {
10856 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10857 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10858 msm_routing_get_port_mixer,
10859 msm_routing_put_port_mixer),
10860 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10861 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10862 msm_routing_get_port_mixer,
10863 msm_routing_put_port_mixer),
10864 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10865 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10866 msm_routing_get_port_mixer,
10867 msm_routing_put_port_mixer),
10868 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10869 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10870 msm_routing_get_port_mixer,
10871 msm_routing_put_port_mixer),
10872 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10873 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10874 msm_routing_get_port_mixer,
10875 msm_routing_put_port_mixer),
10876 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10877 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10878 msm_routing_get_port_mixer,
10879 msm_routing_put_port_mixer),
10880 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10881 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10882 msm_routing_get_port_mixer,
10883 msm_routing_put_port_mixer),
10884 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10885 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10886 msm_routing_get_port_mixer,
10887 msm_routing_put_port_mixer),
10888 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10889 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10890 msm_routing_get_port_mixer,
10891 msm_routing_put_port_mixer),
10892 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10893 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10894 msm_routing_get_port_mixer,
10895 msm_routing_put_port_mixer),
10896 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10897 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10898 msm_routing_get_port_mixer,
10899 msm_routing_put_port_mixer),
10900 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10901 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10902 msm_routing_get_port_mixer,
10903 msm_routing_put_port_mixer),
10904 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10905 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10906 msm_routing_get_port_mixer,
10907 msm_routing_put_port_mixer),
10908 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10909 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10910 msm_routing_get_port_mixer,
10911 msm_routing_put_port_mixer),
10912 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10913 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10914 msm_routing_get_port_mixer,
10915 msm_routing_put_port_mixer),
10916 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10917 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10918 msm_routing_get_port_mixer,
10919 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010920 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10921 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10922 msm_routing_get_port_mixer,
10923 msm_routing_put_port_mixer),
10924 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10925 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10926 msm_routing_get_port_mixer,
10927 msm_routing_put_port_mixer),
10928 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10929 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10930 msm_routing_get_port_mixer,
10931 msm_routing_put_port_mixer),
10932 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10933 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10934 msm_routing_get_port_mixer,
10935 msm_routing_put_port_mixer),
10936};
10937
10938static const struct snd_kcontrol_new quin_tdm_rx_0_port_mixer_controls[] = {
10939 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10940 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10941 msm_routing_get_port_mixer,
10942 msm_routing_put_port_mixer),
10943 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10944 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10945 msm_routing_get_port_mixer,
10946 msm_routing_put_port_mixer),
10947 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10948 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10949 msm_routing_get_port_mixer,
10950 msm_routing_put_port_mixer),
10951 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10952 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10953 msm_routing_get_port_mixer,
10954 msm_routing_put_port_mixer),
10955 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10956 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10957 msm_routing_get_port_mixer,
10958 msm_routing_put_port_mixer),
10959 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10960 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10961 msm_routing_get_port_mixer,
10962 msm_routing_put_port_mixer),
10963 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10964 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10965 msm_routing_get_port_mixer,
10966 msm_routing_put_port_mixer),
10967 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10968 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10969 msm_routing_get_port_mixer,
10970 msm_routing_put_port_mixer),
10971 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10972 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10973 msm_routing_get_port_mixer,
10974 msm_routing_put_port_mixer),
10975 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10976 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10977 msm_routing_get_port_mixer,
10978 msm_routing_put_port_mixer),
10979 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10980 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10981 msm_routing_get_port_mixer,
10982 msm_routing_put_port_mixer),
10983 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10984 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10985 msm_routing_get_port_mixer,
10986 msm_routing_put_port_mixer),
10987 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10988 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10989 msm_routing_get_port_mixer,
10990 msm_routing_put_port_mixer),
10991 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10992 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10993 msm_routing_get_port_mixer,
10994 msm_routing_put_port_mixer),
10995 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10996 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10997 msm_routing_get_port_mixer,
10998 msm_routing_put_port_mixer),
10999 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
11000 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
11001 msm_routing_get_port_mixer,
11002 msm_routing_put_port_mixer),
11003 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
11004 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
11005 msm_routing_get_port_mixer,
11006 msm_routing_put_port_mixer),
11007 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
11008 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
11009 msm_routing_get_port_mixer,
11010 msm_routing_put_port_mixer),
11011 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
11012 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
11013 msm_routing_get_port_mixer,
11014 msm_routing_put_port_mixer),
11015 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
11016 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
11017 msm_routing_get_port_mixer,
11018 msm_routing_put_port_mixer),
11019};
11020
11021static const struct snd_kcontrol_new quin_tdm_rx_1_port_mixer_controls[] = {
11022 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11023 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
11024 msm_routing_get_port_mixer,
11025 msm_routing_put_port_mixer),
11026 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11027 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
11028 msm_routing_get_port_mixer,
11029 msm_routing_put_port_mixer),
11030 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11031 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
11032 msm_routing_get_port_mixer,
11033 msm_routing_put_port_mixer),
11034 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11035 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
11036 msm_routing_get_port_mixer,
11037 msm_routing_put_port_mixer),
11038 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11039 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
11040 msm_routing_get_port_mixer,
11041 msm_routing_put_port_mixer),
11042 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11043 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
11044 msm_routing_get_port_mixer,
11045 msm_routing_put_port_mixer),
11046 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11047 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
11048 msm_routing_get_port_mixer,
11049 msm_routing_put_port_mixer),
11050 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11051 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
11052 msm_routing_get_port_mixer,
11053 msm_routing_put_port_mixer),
11054 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11055 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
11056 msm_routing_get_port_mixer,
11057 msm_routing_put_port_mixer),
11058 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11059 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
11060 msm_routing_get_port_mixer,
11061 msm_routing_put_port_mixer),
11062 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11063 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
11064 msm_routing_get_port_mixer,
11065 msm_routing_put_port_mixer),
11066 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11067 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
11068 msm_routing_get_port_mixer,
11069 msm_routing_put_port_mixer),
11070 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11071 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
11072 msm_routing_get_port_mixer,
11073 msm_routing_put_port_mixer),
11074 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11075 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
11076 msm_routing_get_port_mixer,
11077 msm_routing_put_port_mixer),
11078 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11079 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
11080 msm_routing_get_port_mixer,
11081 msm_routing_put_port_mixer),
11082 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11083 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
11084 msm_routing_get_port_mixer,
11085 msm_routing_put_port_mixer),
11086 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11087 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
11088 msm_routing_get_port_mixer,
11089 msm_routing_put_port_mixer),
11090 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11091 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
11092 msm_routing_get_port_mixer,
11093 msm_routing_put_port_mixer),
11094 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11095 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
11096 msm_routing_get_port_mixer,
11097 msm_routing_put_port_mixer),
11098 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11099 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
11100 msm_routing_get_port_mixer,
11101 msm_routing_put_port_mixer),
11102};
11103
11104static const struct snd_kcontrol_new quin_tdm_rx_2_port_mixer_controls[] = {
11105 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11106 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
11107 msm_routing_get_port_mixer,
11108 msm_routing_put_port_mixer),
11109 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11110 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
11111 msm_routing_get_port_mixer,
11112 msm_routing_put_port_mixer),
11113 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11114 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
11115 msm_routing_get_port_mixer,
11116 msm_routing_put_port_mixer),
11117 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11118 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
11119 msm_routing_get_port_mixer,
11120 msm_routing_put_port_mixer),
11121 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11122 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
11123 msm_routing_get_port_mixer,
11124 msm_routing_put_port_mixer),
11125 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11126 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
11127 msm_routing_get_port_mixer,
11128 msm_routing_put_port_mixer),
11129 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11130 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
11131 msm_routing_get_port_mixer,
11132 msm_routing_put_port_mixer),
11133 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11134 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
11135 msm_routing_get_port_mixer,
11136 msm_routing_put_port_mixer),
11137 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11138 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
11139 msm_routing_get_port_mixer,
11140 msm_routing_put_port_mixer),
11141 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11142 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
11143 msm_routing_get_port_mixer,
11144 msm_routing_put_port_mixer),
11145 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11146 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
11147 msm_routing_get_port_mixer,
11148 msm_routing_put_port_mixer),
11149 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11150 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
11151 msm_routing_get_port_mixer,
11152 msm_routing_put_port_mixer),
11153 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11154 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
11155 msm_routing_get_port_mixer,
11156 msm_routing_put_port_mixer),
11157 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11158 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
11159 msm_routing_get_port_mixer,
11160 msm_routing_put_port_mixer),
11161 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11162 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
11163 msm_routing_get_port_mixer,
11164 msm_routing_put_port_mixer),
11165 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11166 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
11167 msm_routing_get_port_mixer,
11168 msm_routing_put_port_mixer),
11169 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11170 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
11171 msm_routing_get_port_mixer,
11172 msm_routing_put_port_mixer),
11173 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11174 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
11175 msm_routing_get_port_mixer,
11176 msm_routing_put_port_mixer),
11177 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11178 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
11179 msm_routing_get_port_mixer,
11180 msm_routing_put_port_mixer),
11181 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11182 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
11183 msm_routing_get_port_mixer,
11184 msm_routing_put_port_mixer),
11185};
11186
11187static const struct snd_kcontrol_new quin_tdm_rx_3_port_mixer_controls[] = {
11188 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11189 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
11190 msm_routing_get_port_mixer,
11191 msm_routing_put_port_mixer),
11192 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11193 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
11194 msm_routing_get_port_mixer,
11195 msm_routing_put_port_mixer),
11196 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11197 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
11198 msm_routing_get_port_mixer,
11199 msm_routing_put_port_mixer),
11200 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11201 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
11202 msm_routing_get_port_mixer,
11203 msm_routing_put_port_mixer),
11204 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11205 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
11206 msm_routing_get_port_mixer,
11207 msm_routing_put_port_mixer),
11208 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11209 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
11210 msm_routing_get_port_mixer,
11211 msm_routing_put_port_mixer),
11212 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11213 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
11214 msm_routing_get_port_mixer,
11215 msm_routing_put_port_mixer),
11216 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11217 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
11218 msm_routing_get_port_mixer,
11219 msm_routing_put_port_mixer),
11220 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11221 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
11222 msm_routing_get_port_mixer,
11223 msm_routing_put_port_mixer),
11224 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11225 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
11226 msm_routing_get_port_mixer,
11227 msm_routing_put_port_mixer),
11228 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11229 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
11230 msm_routing_get_port_mixer,
11231 msm_routing_put_port_mixer),
11232 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11233 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
11234 msm_routing_get_port_mixer,
11235 msm_routing_put_port_mixer),
11236 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11237 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
11238 msm_routing_get_port_mixer,
11239 msm_routing_put_port_mixer),
11240 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11241 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
11242 msm_routing_get_port_mixer,
11243 msm_routing_put_port_mixer),
11244 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11245 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
11246 msm_routing_get_port_mixer,
11247 msm_routing_put_port_mixer),
11248 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11249 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
11250 msm_routing_get_port_mixer,
11251 msm_routing_put_port_mixer),
11252 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11253 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
11254 msm_routing_get_port_mixer,
11255 msm_routing_put_port_mixer),
11256 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11257 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
11258 msm_routing_get_port_mixer,
11259 msm_routing_put_port_mixer),
11260 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11261 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
11262 msm_routing_get_port_mixer,
11263 msm_routing_put_port_mixer),
11264 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11265 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
11266 msm_routing_get_port_mixer,
11267 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011268};
11269
11270static const struct snd_kcontrol_new tert_mi2s_rx_port_mixer_controls[] = {
11271 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
11272 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11273 msm_routing_put_port_mixer),
11274 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
11275 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11276 msm_routing_put_port_mixer),
11277 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
11278 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
11279 msm_routing_put_port_mixer),
11280 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
11281 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11282 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053011283 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
11284 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11285 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011286 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
11287 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11288 msm_routing_put_port_mixer),
11289 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
11290 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
11291 msm_routing_put_port_mixer),
11292};
11293
11294static const struct snd_kcontrol_new sec_mi2s_rx_port_mixer_controls[] = {
11295 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11296 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11297 msm_routing_put_port_mixer),
11298 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11299 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11300 msm_routing_put_port_mixer),
11301 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11302 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11303 msm_routing_put_port_mixer),
11304 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11305 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11306 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053011307 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11308 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11309 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011310 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11311 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
11312 msm_routing_put_port_mixer),
11313 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11314 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
11315 msm_routing_put_port_mixer),
11316 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11317 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
11318 msm_routing_put_port_mixer),
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -080011319 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11320 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
11321 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011322};
11323
11324static const struct snd_kcontrol_new lsm1_mixer_controls[] = {
11325 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11326 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11327 msm_routing_put_listen_mixer),
11328 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11329 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11330 msm_routing_put_listen_mixer),
11331 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11332 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11333 msm_routing_put_listen_mixer),
11334 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11335 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11336 msm_routing_put_listen_mixer),
11337 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11338 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11339 msm_routing_put_listen_mixer),
11340 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11341 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11342 msm_routing_put_listen_mixer),
11343 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11344 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11345 msm_routing_put_listen_mixer),
11346 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11347 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11348 msm_routing_put_listen_mixer),
Ashish Jain01b10322018-05-12 15:37:44 +053011349 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
11350 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11351 msm_routing_put_listen_mixer),
11352 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
11353 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11354 msm_routing_put_listen_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011355};
11356
11357static const struct snd_kcontrol_new lsm2_mixer_controls[] = {
11358 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11359 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11360 msm_routing_put_listen_mixer),
11361 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11362 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11363 msm_routing_put_listen_mixer),
11364 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11365 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11366 msm_routing_put_listen_mixer),
11367 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11368 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11369 msm_routing_put_listen_mixer),
11370 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11371 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11372 msm_routing_put_listen_mixer),
11373 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11374 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11375 msm_routing_put_listen_mixer),
11376 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11377 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11378 msm_routing_put_listen_mixer),
11379 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11380 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11381 msm_routing_put_listen_mixer),
Ashish Jain01b10322018-05-12 15:37:44 +053011382 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
11383 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11384 msm_routing_put_listen_mixer),
11385 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
11386 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11387 msm_routing_put_listen_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011388};
11389
11390static const struct snd_kcontrol_new lsm3_mixer_controls[] = {
11391 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11392 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11393 msm_routing_put_listen_mixer),
11394 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11395 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11396 msm_routing_put_listen_mixer),
11397 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11398 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11399 msm_routing_put_listen_mixer),
11400 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11401 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11402 msm_routing_put_listen_mixer),
11403 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11404 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11405 msm_routing_put_listen_mixer),
11406 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11407 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11408 msm_routing_put_listen_mixer),
11409 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11410 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11411 msm_routing_put_listen_mixer),
11412 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11413 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11414 msm_routing_put_listen_mixer),
Ashish Jain01b10322018-05-12 15:37:44 +053011415 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
11416 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11417 msm_routing_put_listen_mixer),
11418 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
11419 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11420 msm_routing_put_listen_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011421};
11422
11423static const struct snd_kcontrol_new lsm4_mixer_controls[] = {
11424 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11425 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11426 msm_routing_put_listen_mixer),
11427 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11428 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11429 msm_routing_put_listen_mixer),
11430 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11431 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11432 msm_routing_put_listen_mixer),
11433 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11434 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11435 msm_routing_put_listen_mixer),
11436 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11437 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11438 msm_routing_put_listen_mixer),
11439 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11440 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11441 msm_routing_put_listen_mixer),
11442 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11443 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11444 msm_routing_put_listen_mixer),
11445 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11446 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11447 msm_routing_put_listen_mixer),
Ashish Jain01b10322018-05-12 15:37:44 +053011448 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
11449 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11450 msm_routing_put_listen_mixer),
11451 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
11452 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11453 msm_routing_put_listen_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011454};
11455
11456static const struct snd_kcontrol_new lsm5_mixer_controls[] = {
11457 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11458 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11459 msm_routing_put_listen_mixer),
11460 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11461 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11462 msm_routing_put_listen_mixer),
11463 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11464 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11465 msm_routing_put_listen_mixer),
11466 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11467 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11468 msm_routing_put_listen_mixer),
11469 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11470 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11471 msm_routing_put_listen_mixer),
11472 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11473 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11474 msm_routing_put_listen_mixer),
11475 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11476 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11477 msm_routing_put_listen_mixer),
11478 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11479 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11480 msm_routing_put_listen_mixer),
Ashish Jain01b10322018-05-12 15:37:44 +053011481 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
11482 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11483 msm_routing_put_listen_mixer),
11484 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
11485 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11486 msm_routing_put_listen_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011487};
11488
11489static const struct snd_kcontrol_new lsm6_mixer_controls[] = {
11490 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11491 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11492 msm_routing_put_listen_mixer),
11493 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11494 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11495 msm_routing_put_listen_mixer),
11496 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11497 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11498 msm_routing_put_listen_mixer),
11499 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11500 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11501 msm_routing_put_listen_mixer),
11502 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11503 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11504 msm_routing_put_listen_mixer),
11505 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11506 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11507 msm_routing_put_listen_mixer),
11508 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11509 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11510 msm_routing_put_listen_mixer),
11511 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11512 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11513 msm_routing_put_listen_mixer),
Ashish Jain01b10322018-05-12 15:37:44 +053011514 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
11515 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11516 msm_routing_put_listen_mixer),
11517 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
11518 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11519 msm_routing_put_listen_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011520};
11521
11522static const struct snd_kcontrol_new lsm7_mixer_controls[] = {
11523 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11524 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11525 msm_routing_put_listen_mixer),
11526 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11527 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11528 msm_routing_put_listen_mixer),
11529 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11530 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11531 msm_routing_put_listen_mixer),
11532 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11533 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11534 msm_routing_put_listen_mixer),
11535 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11536 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11537 msm_routing_put_listen_mixer),
11538 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11539 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11540 msm_routing_put_listen_mixer),
11541 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11542 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11543 msm_routing_put_listen_mixer),
11544 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11545 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11546 msm_routing_put_listen_mixer),
Ashish Jain01b10322018-05-12 15:37:44 +053011547 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
11548 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11549 msm_routing_put_listen_mixer),
11550 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
11551 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11552 msm_routing_put_listen_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011553};
11554
11555static const struct snd_kcontrol_new lsm8_mixer_controls[] = {
11556 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11557 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11558 msm_routing_put_listen_mixer),
11559 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11560 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11561 msm_routing_put_listen_mixer),
11562 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11563 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11564 msm_routing_put_listen_mixer),
11565 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11566 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11567 msm_routing_put_listen_mixer),
11568 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11569 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11570 msm_routing_put_listen_mixer),
11571 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11572 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11573 msm_routing_put_listen_mixer),
11574 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11575 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11576 msm_routing_put_listen_mixer),
11577 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11578 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11579 msm_routing_put_listen_mixer),
Ashish Jain01b10322018-05-12 15:37:44 +053011580 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
11581 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11582 msm_routing_put_listen_mixer),
11583 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
11584 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11585 msm_routing_put_listen_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011586};
11587
11588static const struct snd_kcontrol_new slim_fm_switch_mixer_controls =
11589 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11590 0, 1, 0, msm_routing_get_switch_mixer,
11591 msm_routing_put_switch_mixer);
11592
11593static const struct snd_kcontrol_new slim1_fm_switch_mixer_controls =
11594 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11595 0, 1, 0, msm_routing_get_switch_mixer,
11596 msm_routing_put_switch_mixer);
11597
11598static const struct snd_kcontrol_new slim3_fm_switch_mixer_controls =
11599 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11600 0, 1, 0, msm_routing_get_switch_mixer,
11601 msm_routing_put_switch_mixer);
11602
11603static const struct snd_kcontrol_new slim4_fm_switch_mixer_controls =
11604 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11605 0, 1, 0, msm_routing_get_switch_mixer,
11606 msm_routing_put_switch_mixer);
11607
11608static const struct snd_kcontrol_new slim6_fm_switch_mixer_controls =
11609 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11610 0, 1, 0, msm_routing_get_switch_mixer,
11611 msm_routing_put_switch_mixer);
11612
11613static const struct snd_kcontrol_new pcm_rx_switch_mixer_controls =
11614 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11615 0, 1, 0, msm_routing_get_fm_pcmrx_switch_mixer,
11616 msm_routing_put_fm_pcmrx_switch_mixer);
11617
11618static const struct snd_kcontrol_new int0_mi2s_rx_switch_mixer_controls =
11619 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11620 0, 1, 0, msm_routing_get_int0_mi2s_switch_mixer,
11621 msm_routing_put_int0_mi2s_switch_mixer);
11622
11623static const struct snd_kcontrol_new int4_mi2s_rx_switch_mixer_controls =
11624 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11625 0, 1, 0, msm_routing_get_int4_mi2s_switch_mixer,
11626 msm_routing_put_int4_mi2s_switch_mixer);
11627
11628static const struct snd_kcontrol_new pri_mi2s_rx_switch_mixer_controls =
11629 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11630 0, 1, 0, msm_routing_get_pri_mi2s_switch_mixer,
11631 msm_routing_put_pri_mi2s_switch_mixer);
11632
11633static const struct snd_kcontrol_new sec_mi2s_rx_switch_mixer_controls =
11634 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11635 0, 1, 0, msm_routing_get_sec_mi2s_switch_mixer,
11636 msm_routing_put_sec_mi2s_switch_mixer);
11637
11638static const struct snd_kcontrol_new tert_mi2s_rx_switch_mixer_controls =
11639 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11640 0, 1, 0, msm_routing_get_tert_mi2s_switch_mixer,
11641 msm_routing_put_tert_mi2s_switch_mixer);
11642
11643static const struct snd_kcontrol_new quat_mi2s_rx_switch_mixer_controls =
11644 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11645 0, 1, 0, msm_routing_get_quat_mi2s_switch_mixer,
11646 msm_routing_put_quat_mi2s_switch_mixer);
11647
Rohit Kumara5077932017-09-10 22:05:05 +053011648static const struct snd_kcontrol_new quin_mi2s_rx_switch_mixer_controls =
11649 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11650 0, 1, 0, msm_routing_get_quin_mi2s_switch_mixer,
11651 msm_routing_put_quin_mi2s_switch_mixer);
11652
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011653static const struct snd_kcontrol_new hfp_pri_aux_switch_mixer_controls =
11654 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11655 0, 1, 0, msm_routing_get_hfp_switch_mixer,
11656 msm_routing_put_hfp_switch_mixer);
11657
11658static const struct snd_kcontrol_new hfp_aux_switch_mixer_controls =
11659 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11660 0, 1, 0, msm_routing_get_hfp_switch_mixer,
11661 msm_routing_put_hfp_switch_mixer);
11662
11663static const struct snd_kcontrol_new hfp_int_switch_mixer_controls =
11664 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11665 0, 1, 0, msm_routing_get_hfp_switch_mixer,
11666 msm_routing_put_hfp_switch_mixer);
11667
11668static const struct snd_kcontrol_new hfp_slim7_switch_mixer_controls =
11669 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11670 0, 1, 0, msm_routing_get_hfp_switch_mixer,
11671 msm_routing_put_hfp_switch_mixer);
11672
11673static const struct snd_kcontrol_new usb_switch_mixer_controls =
11674 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11675 0, 1, 0, msm_routing_get_usb_switch_mixer,
11676 msm_routing_put_usb_switch_mixer);
11677
11678static const struct soc_enum lsm_port_enum =
11679 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(lsm_port_text), lsm_port_text);
11680
11681static const char * const lsm_func_text[] = {
11682 "None", "AUDIO", "BEACON", "ULTRASOUND", "SWAUDIO",
11683};
11684static const struct soc_enum lsm_func_enum =
11685 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(lsm_func_text), lsm_func_text);
11686
11687static const struct snd_kcontrol_new lsm_controls[] = {
11688 /* kcontrol of lsm_function */
11689 SOC_ENUM_EXT(SLIMBUS_0_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11690 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11691 SOC_ENUM_EXT(SLIMBUS_1_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11692 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11693 SOC_ENUM_EXT(SLIMBUS_2_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11694 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11695 SOC_ENUM_EXT(SLIMBUS_3_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11696 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11697 SOC_ENUM_EXT(SLIMBUS_4_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11698 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11699 SOC_ENUM_EXT(SLIMBUS_5_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11700 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11701 SOC_ENUM_EXT(TERT_MI2S_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11702 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11703 SOC_ENUM_EXT(QUAT_MI2S_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11704 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11705 SOC_ENUM_EXT(INT3_MI2S_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11706 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
Ashish Jain01b10322018-05-12 15:37:44 +053011707 SOC_ENUM_EXT(PRI_TDM_TX_2_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11708 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11709 SOC_ENUM_EXT(PRI_TDM_TX_3_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11710 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011711 /* kcontrol of lsm_port */
11712 SOC_ENUM_EXT("LSM1 Port", lsm_port_enum,
11713 msm_routing_lsm_port_get,
11714 msm_routing_lsm_port_put),
11715 SOC_ENUM_EXT("LSM2 Port", lsm_port_enum,
11716 msm_routing_lsm_port_get,
11717 msm_routing_lsm_port_put),
11718 SOC_ENUM_EXT("LSM3 Port", lsm_port_enum,
11719 msm_routing_lsm_port_get,
11720 msm_routing_lsm_port_put),
11721 SOC_ENUM_EXT("LSM4 Port", lsm_port_enum,
11722 msm_routing_lsm_port_get,
11723 msm_routing_lsm_port_put),
11724 SOC_ENUM_EXT("LSM5 Port", lsm_port_enum,
11725 msm_routing_lsm_port_get,
11726 msm_routing_lsm_port_put),
11727 SOC_ENUM_EXT("LSM6 Port", lsm_port_enum,
11728 msm_routing_lsm_port_get,
11729 msm_routing_lsm_port_put),
11730 SOC_ENUM_EXT("LSM7 Port", lsm_port_enum,
11731 msm_routing_lsm_port_get,
11732 msm_routing_lsm_port_put),
11733 SOC_ENUM_EXT("LSM8 Port", lsm_port_enum,
11734 msm_routing_lsm_port_get,
11735 msm_routing_lsm_port_put),
11736};
11737
11738static const char * const aanc_slim_0_rx_text[] = {
11739 "ZERO", "SLIMBUS_0_TX", "SLIMBUS_1_TX", "SLIMBUS_2_TX", "SLIMBUS_3_TX",
11740 "SLIMBUS_4_TX", "SLIMBUS_5_TX", "SLIMBUS_6_TX"
11741};
11742
11743static const struct soc_enum aanc_slim_0_rx_enum =
11744 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(aanc_slim_0_rx_text),
11745 aanc_slim_0_rx_text);
11746
11747static const struct snd_kcontrol_new aanc_slim_0_rx_mux[] = {
11748 SOC_ENUM_EXT("AANC_SLIM_0_RX MUX", aanc_slim_0_rx_enum,
11749 msm_routing_slim_0_rx_aanc_mux_get,
11750 msm_routing_slim_0_rx_aanc_mux_put)
11751};
11752
11753static int msm_routing_get_stereo_to_custom_stereo_control(
11754 struct snd_kcontrol *kcontrol,
11755 struct snd_ctl_elem_value *ucontrol)
11756{
11757 ucontrol->value.integer.value[0] = is_custom_stereo_on;
11758 return 0;
11759}
11760
11761static int msm_routing_put_stereo_to_custom_stereo_control(
11762 struct snd_kcontrol *kcontrol,
11763 struct snd_ctl_elem_value *ucontrol)
11764{
11765 int flag = 0, i = 0, rc = 0, idx = 0;
11766 int be_index = 0, port_id, topo_id;
11767 unsigned int session_id = 0;
11768 uint16_t op_FL_ip_FL_weight = 0;
11769 uint16_t op_FL_ip_FR_weight = 0;
11770 uint16_t op_FR_ip_FL_weight = 0;
11771 uint16_t op_FR_ip_FR_weight = 0;
11772
11773 flag = ucontrol->value.integer.value[0];
11774 pr_debug("%s E flag %d\n", __func__, flag);
11775
11776 if ((is_custom_stereo_on && flag) || (!is_custom_stereo_on && !flag)) {
11777 pr_err("%s: is_custom_stereo_on %d, flag %d\n",
11778 __func__, is_custom_stereo_on, flag);
11779 return 0;
11780 }
11781 is_custom_stereo_on = flag ? true : false;
11782 pr_debug("%s:is_custom_stereo_on %d\n", __func__, is_custom_stereo_on);
11783 for (be_index = 0; be_index < MSM_BACKEND_DAI_MAX; be_index++) {
11784 port_id = msm_bedais[be_index].port_id;
11785 if (!msm_bedais[be_index].active)
11786 continue;
11787 if ((port_id != SLIMBUS_0_RX) &&
11788 (port_id != RT_PROXY_PORT_001_RX) &&
11789 (port_id != AFE_PORT_ID_PRIMARY_MI2S_RX) &&
11790 (port_id != AFE_PORT_ID_INT4_MI2S_RX))
11791 continue;
11792
11793 for_each_set_bit(i, &msm_bedais[be_index].fe_sessions[0],
11794 MSM_FRONTEND_DAI_MM_SIZE) {
11795 if (fe_dai_map[i][SESSION_TYPE_RX].perf_mode !=
11796 LEGACY_PCM_MODE)
11797 goto skip_send_custom_stereo;
11798 session_id =
11799 fe_dai_map[i][SESSION_TYPE_RX].strm_id;
11800 if (is_custom_stereo_on) {
11801 op_FL_ip_FL_weight =
11802 Q14_GAIN_ZERO_POINT_FIVE;
11803 op_FL_ip_FR_weight =
11804 Q14_GAIN_ZERO_POINT_FIVE;
11805 op_FR_ip_FL_weight =
11806 Q14_GAIN_ZERO_POINT_FIVE;
11807 op_FR_ip_FR_weight =
11808 Q14_GAIN_ZERO_POINT_FIVE;
11809 } else {
11810 op_FL_ip_FL_weight = Q14_GAIN_UNITY;
11811 op_FL_ip_FR_weight = 0;
11812 op_FR_ip_FL_weight = 0;
11813 op_FR_ip_FR_weight = Q14_GAIN_UNITY;
11814 }
11815 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++) {
11816 unsigned long copp =
11817 session_copp_map[i]
11818 [SESSION_TYPE_RX][be_index];
11819 if (!test_bit(idx, &copp))
11820 goto skip_send_custom_stereo;
11821 topo_id = adm_get_topology_for_port_copp_idx(
11822 msm_bedais[be_index].port_id, idx);
11823 if (topo_id < 0)
11824 pr_debug("%s:Err:custom stereo topo %d",
11825 __func__, topo_id);
11826 pr_debug("idx %d\n", idx);
11827 if (topo_id == DS2_ADM_COPP_TOPOLOGY_ID)
11828 rc = msm_ds2_dap_set_custom_stereo_onoff
11829 (msm_bedais[be_index].port_id,
11830 idx, is_custom_stereo_on);
11831 else if (topo_id == DOLBY_ADM_COPP_TOPOLOGY_ID)
11832 rc = dolby_dap_set_custom_stereo_onoff(
11833 msm_bedais[be_index].port_id,
11834 idx, is_custom_stereo_on);
11835 else
11836 rc = msm_qti_pp_send_stereo_to_custom_stereo_cmd
11837 (msm_bedais[be_index].port_id,
11838 idx, session_id,
11839 op_FL_ip_FL_weight,
11840 op_FL_ip_FR_weight,
11841 op_FR_ip_FL_weight,
11842 op_FR_ip_FR_weight);
11843 if (rc < 0)
11844skip_send_custom_stereo:
11845 pr_err("%s: err setting custom stereo\n",
11846 __func__);
11847 }
11848
11849 }
11850 }
11851 return 0;
11852}
11853
11854static const struct snd_kcontrol_new stereo_to_custom_stereo_controls[] = {
11855 SOC_SINGLE_EXT("Set Custom Stereo OnOff", SND_SOC_NOPM, 0,
11856 1, 0, msm_routing_get_stereo_to_custom_stereo_control,
11857 msm_routing_put_stereo_to_custom_stereo_control),
11858};
11859
11860static int msm_routing_get_app_type_cfg_control(struct snd_kcontrol *kcontrol,
11861 struct snd_ctl_elem_value *ucontrol)
11862{
11863 return 0;
11864}
11865
11866static int msm_routing_put_app_type_cfg_control(struct snd_kcontrol *kcontrol,
11867 struct snd_ctl_elem_value *ucontrol)
11868{
11869 int i = 0, j;
11870 int num_app_types = ucontrol->value.integer.value[i++];
11871
11872 pr_debug("%s\n", __func__);
11873
11874 memset(app_type_cfg, 0, MAX_APP_TYPES*
11875 sizeof(struct msm_pcm_routing_app_type_data));
11876 if (num_app_types > MAX_APP_TYPES) {
11877 pr_err("%s: number of app types exceed the max supported\n",
11878 __func__);
11879 return -EINVAL;
11880 }
11881 for (j = 0; j < num_app_types; j++) {
11882 app_type_cfg[j].app_type =
11883 ucontrol->value.integer.value[i++];
11884 app_type_cfg[j].sample_rate =
11885 ucontrol->value.integer.value[i++];
11886 app_type_cfg[j].bit_width =
11887 ucontrol->value.integer.value[i++];
11888 }
11889
11890 return 0;
11891}
11892
11893static int msm_routing_put_app_type_gain_control(struct snd_kcontrol *kcontrol,
11894 struct snd_ctl_elem_value *ucontrol)
11895{
11896 int j, fe_id, be_id, port_type;
11897 int ret = 0;
11898 unsigned long copp;
11899 struct msm_pcm_routing_bdai_data *bedai;
11900 int dir = ucontrol->value.integer.value[0] ? SESSION_TYPE_TX :
11901 SESSION_TYPE_RX;
11902 int app_type = ucontrol->value.integer.value[1];
11903 int gain = (ucontrol->value.integer.value[2] +
11904 ucontrol->value.integer.value[3])/2;
11905
11906 port_type = (dir == SESSION_TYPE_RX) ? MSM_AFE_PORT_TYPE_RX :
11907 MSM_AFE_PORT_TYPE_TX;
11908
11909 mutex_lock(&routing_lock);
11910 for (be_id = 0; be_id < MSM_BACKEND_DAI_MAX; be_id++) {
11911 if (is_be_dai_extproc(be_id))
11912 continue;
11913
11914 bedai = &msm_bedais[be_id];
11915 if (afe_get_port_type(bedai->port_id) != port_type)
11916 continue;
11917
11918 if (!bedai->active)
11919 continue;
11920
11921 for (fe_id = 0; fe_id < MSM_FRONTEND_DAI_MAX; fe_id++) {
11922 if (!test_bit(fe_id, &bedai->fe_sessions[0]))
11923 continue;
11924
11925 if (app_type !=
11926 fe_dai_app_type_cfg[fe_id][dir][be_id].app_type)
11927 continue;
11928
11929 copp = session_copp_map[fe_id][dir][be_id];
11930 for (j = 0; j < MAX_COPPS_PER_PORT; j++) {
11931 if (!test_bit(j, &copp))
11932 continue;
11933 ret |= adm_set_volume(bedai->port_id, j, gain);
11934 }
11935 }
11936 }
11937 mutex_unlock(&routing_lock);
11938 return ret ? -EINVAL : 0;
11939}
11940
11941static const struct snd_kcontrol_new app_type_cfg_controls[] = {
11942 SOC_SINGLE_MULTI_EXT("App Type Config", SND_SOC_NOPM, 0,
11943 0xFFFFFFFF, 0, 128, msm_routing_get_app_type_cfg_control,
11944 msm_routing_put_app_type_cfg_control),
11945 SOC_SINGLE_MULTI_EXT("App Type Gain", SND_SOC_NOPM, 0,
11946 0x2000, 0, 4, NULL, msm_routing_put_app_type_gain_control)
11947};
11948
Vikram Pandurangaee9c03a2017-09-07 15:06:17 -070011949static int msm_routing_put_module_cfg_control(struct snd_kcontrol *kcontrol,
11950 struct snd_ctl_elem_value *ucontrol)
11951{
11952 int copp_idx, fe_id, be_id, port_type;
11953 int ret = 0;
11954 unsigned long copp;
11955 struct msm_pcm_routing_bdai_data *bedai;
11956 char *param_data = NULL;
11957 uint32_t *update_param_data = NULL;
11958 uint32_t param_size = sizeof(uint32_t) +
11959 sizeof(struct adm_param_data_v5);
11960 int dir = ucontrol->value.integer.value[0] ? SESSION_TYPE_TX :
11961 SESSION_TYPE_RX;
11962 int app_type = ucontrol->value.integer.value[1];
11963 int module_id = ucontrol->value.integer.value[2];
11964 int instance_id = ucontrol->value.integer.value[3];
11965 int param_id = ucontrol->value.integer.value[4];
11966 int param_value = ucontrol->value.integer.value[5];
11967
11968 port_type = (dir == SESSION_TYPE_RX) ? MSM_AFE_PORT_TYPE_RX :
11969 MSM_AFE_PORT_TYPE_TX;
11970 pr_debug("%s app_type:%d mod_id:%d instance_id:%d param_id:%d value:%d\n",
11971 __func__, app_type, module_id,
11972 instance_id, param_id, param_value);
11973
11974 param_data = kzalloc(param_size, GFP_KERNEL);
11975 if (!param_data)
11976 return -ENOMEM;
11977
11978 update_param_data = (uint32_t *)param_data;
11979 *update_param_data++ = module_id;
11980 *update_param_data++ = param_id;
11981 *update_param_data++ = sizeof(uint32_t);
11982 *update_param_data++ = param_value;
11983
11984 mutex_lock(&routing_lock);
11985 for (be_id = 0; be_id < MSM_BACKEND_DAI_MAX; be_id++) {
11986 if (is_be_dai_extproc(be_id))
11987 continue;
11988
11989 bedai = &msm_bedais[be_id];
11990 if (afe_get_port_type(bedai->port_id) != port_type)
11991 continue;
11992
11993 if (!bedai->active)
11994 continue;
11995
11996 for (fe_id = 0; fe_id < MSM_FRONTEND_DAI_MAX; fe_id++) {
11997 if (!test_bit(fe_id, &bedai->fe_sessions[0]))
11998 continue;
11999
12000 if (app_type !=
12001 fe_dai_app_type_cfg[fe_id][dir][be_id].app_type)
12002 continue;
12003
12004 copp = session_copp_map[fe_id][dir][be_id];
12005 for (copp_idx = 0; copp_idx < MAX_COPPS_PER_PORT;
12006 copp_idx++) {
12007 if (!test_bit(copp_idx, &copp))
12008 continue;
12009
12010 ret = adm_send_params_v5(bedai->port_id,
12011 copp_idx,
12012 param_data,
12013 param_size);
12014 if (ret) {
12015 pr_err("%s: Setting param failed with err=%d\n",
12016 __func__, ret);
12017 ret = -EINVAL;
12018 goto done;
12019 }
12020 }
12021 }
12022 }
12023done:
12024 mutex_unlock(&routing_lock);
12025 kfree(param_data);
12026 return ret;
12027}
12028
12029static const struct snd_kcontrol_new module_cfg_controls[] = {
12030 SOC_SINGLE_MULTI_EXT("Audio Effect", SND_SOC_NOPM, 0,
12031 0x2000, 0, 6, NULL, msm_routing_put_module_cfg_control)
12032};
12033
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012034static int msm_routing_get_lsm_app_type_cfg_control(
12035 struct snd_kcontrol *kcontrol,
12036 struct snd_ctl_elem_value *ucontrol)
12037{
12038 return 0;
12039}
12040
12041static int msm_routing_put_lsm_app_type_cfg_control(
12042 struct snd_kcontrol *kcontrol,
12043 struct snd_ctl_elem_value *ucontrol)
12044{
12045 int i = 0, j;
12046 int num_app_types = ucontrol->value.integer.value[i++];
12047
12048 memset(lsm_app_type_cfg, 0, MAX_APP_TYPES*
12049 sizeof(struct msm_pcm_routing_app_type_data));
12050 if (num_app_types > MAX_APP_TYPES) {
12051 pr_err("%s: number of app types exceed the max supported\n",
12052 __func__);
12053 return -EINVAL;
12054 }
12055 for (j = 0; j < num_app_types; j++) {
12056 lsm_app_type_cfg[j].app_type =
12057 ucontrol->value.integer.value[i++];
12058 lsm_app_type_cfg[j].sample_rate =
12059 ucontrol->value.integer.value[i++];
12060 lsm_app_type_cfg[j].bit_width =
12061 ucontrol->value.integer.value[i++];
12062 }
12063
12064 return 0;
12065}
12066
12067static const struct snd_kcontrol_new lsm_app_type_cfg_controls[] = {
12068 SOC_SINGLE_MULTI_EXT("Listen App Type Config", SND_SOC_NOPM, 0,
12069 0xFFFFFFFF, 0, 128, msm_routing_get_lsm_app_type_cfg_control,
12070 msm_routing_put_lsm_app_type_cfg_control),
12071};
12072
12073static int msm_routing_get_use_ds1_or_ds2_control(
12074 struct snd_kcontrol *kcontrol,
12075 struct snd_ctl_elem_value *ucontrol)
12076{
12077 ucontrol->value.integer.value[0] = is_ds2_on;
12078 return 0;
12079}
12080
12081static int msm_routing_put_use_ds1_or_ds2_control(
12082 struct snd_kcontrol *kcontrol,
12083 struct snd_ctl_elem_value *ucontrol)
12084{
12085 is_ds2_on = ucontrol->value.integer.value[0];
12086 return 0;
12087}
12088
12089static const struct snd_kcontrol_new use_ds1_or_ds2_controls[] = {
12090 SOC_SINGLE_EXT("DS2 OnOff", SND_SOC_NOPM, 0,
12091 1, 0, msm_routing_get_use_ds1_or_ds2_control,
12092 msm_routing_put_use_ds1_or_ds2_control),
12093};
12094
12095int msm_routing_get_rms_value_control(struct snd_kcontrol *kcontrol,
12096 struct snd_ctl_elem_value *ucontrol) {
12097 int rc = 0;
12098 int be_idx = 0;
12099 char *param_value;
12100 int *update_param_value;
12101 uint32_t param_length = sizeof(uint32_t);
12102 uint32_t param_payload_len = RMS_PAYLOAD_LEN * sizeof(uint32_t);
12103
12104 param_value = kzalloc(param_length + param_payload_len, GFP_KERNEL);
12105 if (!param_value)
12106 return -ENOMEM;
12107
12108 for (be_idx = 0; be_idx < MSM_BACKEND_DAI_MAX; be_idx++)
12109 if (msm_bedais[be_idx].port_id == SLIMBUS_0_TX)
12110 break;
12111 if ((be_idx < MSM_BACKEND_DAI_MAX) && msm_bedais[be_idx].active) {
12112 rc = adm_get_params(SLIMBUS_0_TX, 0,
12113 RMS_MODULEID_APPI_PASSTHRU,
12114 RMS_PARAM_FIRST_SAMPLE,
12115 param_length + param_payload_len,
12116 param_value);
12117 if (rc) {
12118 pr_err("%s: get parameters failed:%d\n", __func__, rc);
12119 kfree(param_value);
12120 return -EINVAL;
12121 }
12122 update_param_value = (int *)param_value;
12123 ucontrol->value.integer.value[0] = update_param_value[0];
12124
12125 pr_debug("%s: FROM DSP value[0] 0x%x\n",
12126 __func__, update_param_value[0]);
12127 }
12128 kfree(param_value);
12129 return 0;
12130}
12131
12132static int msm_voc_session_id_put(struct snd_kcontrol *kcontrol,
12133 struct snd_ctl_elem_value *ucontrol)
12134{
12135 voc_session_id = ucontrol->value.integer.value[0];
12136
12137 pr_debug("%s: voc_session_id=%u\n", __func__, voc_session_id);
12138
12139 return 0;
12140}
12141
12142static int msm_voc_session_id_get(struct snd_kcontrol *kcontrol,
12143 struct snd_ctl_elem_value *ucontrol)
12144{
12145 ucontrol->value.integer.value[0] = voc_session_id;
12146
12147 return 0;
12148}
12149
12150static struct snd_kcontrol_new msm_voc_session_controls[] = {
12151 SOC_SINGLE_MULTI_EXT("Voc VSID", SND_SOC_NOPM, 0,
12152 0xFFFFFFFF, 0, 1, msm_voc_session_id_get,
12153 msm_voc_session_id_put),
12154};
12155
12156static int msm_sound_focus_info(struct snd_kcontrol *kcontrol,
12157 struct snd_ctl_elem_info *uinfo)
12158{
12159 uinfo->type = SNDRV_CTL_ELEM_TYPE_BYTES;
12160 uinfo->count = sizeof(struct sound_focus_param);
12161
12162 return 0;
12163}
12164
12165static int msm_voice_sound_focus_put(struct snd_kcontrol *kcontrol,
12166 struct snd_ctl_elem_value *ucontrol)
12167{
12168 int ret = 0;
12169 struct sound_focus_param soundFocusData;
12170
12171 memcpy((void *)&soundFocusData, ucontrol->value.bytes.data,
12172 sizeof(struct sound_focus_param));
12173 ret = voc_set_sound_focus(soundFocusData);
12174 if (ret) {
12175 pr_err("%s: Error setting Sound Focus Params, err=%d\n",
12176 __func__, ret);
12177
12178 ret = -EINVAL;
12179 }
12180
12181 return ret;
12182}
12183
12184static int msm_voice_sound_focus_get(struct snd_kcontrol *kcontrol,
12185 struct snd_ctl_elem_value *ucontrol)
12186{
12187 int ret = 0;
12188 struct sound_focus_param soundFocusData;
12189
12190 memset(&soundFocusData, 0, sizeof(struct sound_focus_param));
12191
12192 ret = voc_get_sound_focus(&soundFocusData);
12193 if (ret) {
12194 pr_err("%s: Error getting Sound Focus Params, err=%d\n",
12195 __func__, ret);
12196
12197 ret = -EINVAL;
12198 goto done;
12199 }
12200 memcpy(ucontrol->value.bytes.data, (void *)&soundFocusData,
12201 sizeof(struct sound_focus_param));
12202
12203done:
12204 return ret;
12205}
12206
12207static int msm_source_tracking_info(struct snd_kcontrol *kcontrol,
12208 struct snd_ctl_elem_info *uinfo)
12209{
12210 uinfo->type = SNDRV_CTL_ELEM_TYPE_BYTES;
12211 uinfo->count = sizeof(struct source_tracking_param);
12212
12213 return 0;
12214}
12215
12216static int msm_voice_source_tracking_get(struct snd_kcontrol *kcontrol,
12217 struct snd_ctl_elem_value *ucontrol)
12218{
12219 int ret = 0;
12220 struct source_tracking_param sourceTrackingData;
12221
12222 memset(&sourceTrackingData, 0, sizeof(struct source_tracking_param));
12223
12224 ret = voc_get_source_tracking(&sourceTrackingData);
12225 if (ret) {
12226 pr_err("%s: Error getting Source Tracking Params, err=%d\n",
12227 __func__, ret);
12228
12229 ret = -EINVAL;
12230 goto done;
12231 }
12232 memcpy(ucontrol->value.bytes.data, (void *)&sourceTrackingData,
12233 sizeof(struct source_tracking_param));
12234
12235done:
12236 return ret;
12237}
12238
12239static int msm_audio_get_copp_idx_from_port_id(int port_id, int session_type,
12240 int *copp_idx)
12241{
12242 int i, idx, be_idx;
12243 int ret = 0;
12244 unsigned long copp;
12245
12246 pr_debug("%s: Enter, port_id=%d\n", __func__, port_id);
12247
12248 ret = q6audio_validate_port(port_id);
12249 if (ret < 0) {
12250 pr_err("%s: port validation failed id 0x%x ret %d\n",
12251 __func__, port_id, ret);
12252
12253 ret = -EINVAL;
12254 goto done;
12255 }
12256
12257 for (be_idx = 0; be_idx < MSM_BACKEND_DAI_MAX; be_idx++) {
12258 if (msm_bedais[be_idx].port_id == port_id)
12259 break;
12260 }
12261 if (be_idx >= MSM_BACKEND_DAI_MAX) {
12262 pr_err("%s: Invalid be id %d\n", __func__, be_idx);
12263
12264 ret = -EINVAL;
12265 goto done;
12266 }
12267
12268 for_each_set_bit(i, &msm_bedais[be_idx].fe_sessions[0],
12269 MSM_FRONTEND_DAI_MM_SIZE) {
12270 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++) {
12271 copp = session_copp_map[i]
12272 [session_type][be_idx];
12273 if (test_bit(idx, &copp))
12274 break;
12275 }
12276 if (idx >= MAX_COPPS_PER_PORT)
12277 continue;
12278 else
12279 break;
12280 }
12281 if (i >= MSM_FRONTEND_DAI_MM_SIZE) {
12282 pr_err("%s: Invalid FE, exiting\n", __func__);
12283
12284 ret = -EINVAL;
12285 goto done;
12286 }
12287 *copp_idx = idx;
12288 pr_debug("%s: copp_idx=%d\n", __func__, *copp_idx);
12289
12290done:
12291 return ret;
12292}
12293
12294static int msm_audio_sound_focus_derive_port_id(struct snd_kcontrol *kcontrol,
12295 const char *prefix, int *port_id)
12296{
12297 int ret = 0;
12298
12299 pr_debug("%s: Enter, prefix:%s\n", __func__, prefix);
12300
12301 /*
12302 * Mixer control name will be like "Sound Focus Audio Tx SLIMBUS_0"
12303 * where the prefix is "Sound Focus Audio Tx ". Skip the prefix
12304 * and compare the string with the backend name to derive the port id.
12305 */
12306 if (!strcmp(kcontrol->id.name + strlen(prefix),
12307 "SLIMBUS_0")) {
12308 *port_id = SLIMBUS_0_TX;
12309 } else if (!strcmp(kcontrol->id.name + strlen(prefix),
12310 "TERT_MI2S")) {
12311 *port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
12312 } else if (!strcmp(kcontrol->id.name + strlen(prefix),
12313 "INT3_MI2S")) {
12314 *port_id = AFE_PORT_ID_INT3_MI2S_TX;
Sachin Mohan Gadag8c6e2db2018-07-16 19:53:19 +053012315 } else if (!strcmp(kcontrol->id.name + strlen(prefix),
12316 "PRIMARY_TDM")) {
12317 *port_id = AFE_PORT_ID_PRIMARY_TDM_TX;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012318 } else {
12319 pr_err("%s: mixer ctl name=%s, could not derive valid port id\n",
12320 __func__, kcontrol->id.name);
12321
12322 ret = -EINVAL;
12323 goto done;
12324 }
12325 pr_debug("%s: mixer ctl name=%s, derived port_id=%d\n",
12326 __func__, kcontrol->id.name, *port_id);
12327
12328done:
12329 return ret;
12330}
12331
12332static int msm_audio_sound_focus_put(struct snd_kcontrol *kcontrol,
12333 struct snd_ctl_elem_value *ucontrol)
12334{
12335 int ret = 0;
12336 struct sound_focus_param soundFocusData;
12337 int port_id, copp_idx;
12338
12339 ret = msm_audio_sound_focus_derive_port_id(kcontrol,
12340 "Sound Focus Audio Tx ", &port_id);
12341 if (ret != 0) {
12342 pr_err("%s: Error in deriving port id, err=%d\n",
12343 __func__, ret);
12344
12345 ret = -EINVAL;
12346 goto done;
12347 }
12348
12349 ret = msm_audio_get_copp_idx_from_port_id(port_id, SESSION_TYPE_TX,
12350 &copp_idx);
12351 if (ret) {
12352 pr_err("%s: Could not get copp idx for port_id=%d\n",
12353 __func__, port_id);
12354
12355 ret = -EINVAL;
12356 goto done;
12357 }
12358
12359 memcpy((void *)&soundFocusData, ucontrol->value.bytes.data,
12360 sizeof(struct sound_focus_param));
12361
12362 ret = adm_set_sound_focus(port_id, copp_idx, soundFocusData);
12363 if (ret) {
12364 pr_err("%s: Error setting Sound Focus Params, err=%d\n",
12365 __func__, ret);
12366
12367 ret = -EINVAL;
12368 goto done;
12369 }
12370
12371done:
12372 return ret;
12373}
12374
12375static int msm_audio_sound_focus_get(struct snd_kcontrol *kcontrol,
12376 struct snd_ctl_elem_value *ucontrol)
12377{
12378 int ret = 0;
12379 struct sound_focus_param soundFocusData;
12380 int port_id, copp_idx;
12381
12382 ret = msm_audio_sound_focus_derive_port_id(kcontrol,
12383 "Sound Focus Audio Tx ", &port_id);
12384 if (ret) {
12385 pr_err("%s: Error in deriving port id, err=%d\n",
12386 __func__, ret);
12387
12388 ret = -EINVAL;
12389 goto done;
12390 }
12391
12392 ret = msm_audio_get_copp_idx_from_port_id(port_id, SESSION_TYPE_TX,
12393 &copp_idx);
12394 if (ret) {
12395 pr_err("%s: Could not get copp idx for port_id=%d\n",
12396 __func__, port_id);
12397
12398 ret = -EINVAL;
12399 goto done;
12400 }
12401
12402 ret = adm_get_sound_focus(port_id, copp_idx, &soundFocusData);
12403 if (ret) {
12404 pr_err("%s: Error getting Sound Focus Params, err=%d\n",
12405 __func__, ret);
12406
12407 ret = -EINVAL;
12408 goto done;
12409 }
12410
12411 memcpy(ucontrol->value.bytes.data, (void *)&soundFocusData,
12412 sizeof(struct sound_focus_param));
12413
12414done:
12415 return ret;
12416}
12417
12418static int msm_audio_source_tracking_get(struct snd_kcontrol *kcontrol,
12419 struct snd_ctl_elem_value *ucontrol)
12420{
12421 int ret = 0;
12422 struct source_tracking_param sourceTrackingData;
12423 int port_id, copp_idx;
12424
12425 ret = msm_audio_sound_focus_derive_port_id(kcontrol,
12426 "Source Tracking Audio Tx ", &port_id);
12427 if (ret) {
12428 pr_err("%s: Error in deriving port id, err=%d\n",
12429 __func__, ret);
12430
12431 ret = -EINVAL;
12432 goto done;
12433 }
12434
12435 ret = msm_audio_get_copp_idx_from_port_id(port_id, SESSION_TYPE_TX,
12436 &copp_idx);
12437 if (ret) {
12438 pr_err("%s: Could not get copp idx for port_id=%d\n",
12439 __func__, port_id);
12440
12441 ret = -EINVAL;
12442 goto done;
12443 }
12444
12445 ret = adm_get_source_tracking(port_id, copp_idx, &sourceTrackingData);
12446 if (ret) {
12447 pr_err("%s: Error getting Source Tracking Params, err=%d\n",
12448 __func__, ret);
12449
12450 ret = -EINVAL;
12451 goto done;
12452 }
12453
12454 memcpy(ucontrol->value.bytes.data, (void *)&sourceTrackingData,
12455 sizeof(struct source_tracking_param));
12456
12457done:
12458 return ret;
12459}
12460
12461static const struct snd_kcontrol_new msm_source_tracking_controls[] = {
12462 {
12463 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12464 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12465 .name = "Sound Focus Voice Tx SLIMBUS_0",
12466 .info = msm_sound_focus_info,
12467 .get = msm_voice_sound_focus_get,
12468 .put = msm_voice_sound_focus_put,
12469 },
12470 {
12471 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12472 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12473 .name = "Source Tracking Voice Tx SLIMBUS_0",
12474 .info = msm_source_tracking_info,
12475 .get = msm_voice_source_tracking_get,
12476 },
12477 {
12478 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12479 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12480 .name = "Sound Focus Audio Tx SLIMBUS_0",
12481 .info = msm_sound_focus_info,
12482 .get = msm_audio_sound_focus_get,
12483 .put = msm_audio_sound_focus_put,
12484 },
12485 {
12486 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12487 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12488 .name = "Source Tracking Audio Tx SLIMBUS_0",
12489 .info = msm_source_tracking_info,
12490 .get = msm_audio_source_tracking_get,
12491 },
12492 {
12493 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12494 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12495 .name = "Sound Focus Voice Tx TERT_MI2S",
12496 .info = msm_sound_focus_info,
12497 .get = msm_voice_sound_focus_get,
12498 .put = msm_voice_sound_focus_put,
12499 },
12500 {
12501 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12502 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12503 .name = "Source Tracking Voice Tx TERT_MI2S",
12504 .info = msm_source_tracking_info,
12505 .get = msm_voice_source_tracking_get,
12506 },
12507 {
12508 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12509 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12510 .name = "Sound Focus Audio Tx TERT_MI2S",
12511 .info = msm_sound_focus_info,
12512 .get = msm_audio_sound_focus_get,
12513 .put = msm_audio_sound_focus_put,
12514 },
12515 {
12516 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12517 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12518 .name = "Source Tracking Audio Tx TERT_MI2S",
12519 .info = msm_source_tracking_info,
12520 .get = msm_audio_source_tracking_get,
12521 },
12522 {
12523 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12524 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12525 .name = "Sound Focus Voice Tx INT3_MI2S",
12526 .info = msm_sound_focus_info,
12527 .get = msm_voice_sound_focus_get,
12528 .put = msm_voice_sound_focus_put,
12529 },
12530 {
12531 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12532 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12533 .name = "Source Tracking Voice Tx INT3_MI2S",
12534 .info = msm_source_tracking_info,
12535 .get = msm_voice_source_tracking_get,
12536 },
12537 {
12538 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12539 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12540 .name = "Sound Focus Audio Tx INT3_MI2S",
12541 .info = msm_sound_focus_info,
12542 .get = msm_audio_sound_focus_get,
12543 .put = msm_audio_sound_focus_put,
12544 },
12545 {
12546 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12547 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12548 .name = "Source Tracking Audio Tx INT3_MI2S",
12549 .info = msm_source_tracking_info,
12550 .get = msm_audio_source_tracking_get,
12551 },
Sachin Mohan Gadag8c6e2db2018-07-16 19:53:19 +053012552 {
12553 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12554 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12555 .name = "Sound Focus Audio Tx PRIMARY_TDM",
12556 .info = msm_sound_focus_info,
12557 .get = msm_audio_sound_focus_get,
12558 .put = msm_audio_sound_focus_put,
12559 },
12560 {
12561 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12562 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12563 .name = "Source Tracking Audio Tx PRIMARY_TDM",
12564 .info = msm_source_tracking_info,
12565 .get = msm_audio_source_tracking_get,
12566 },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012567};
12568
12569static int spkr_prot_put_vi_lch_port(struct snd_kcontrol *kcontrol,
12570 struct snd_ctl_elem_value *ucontrol)
12571{
12572 int ret = 0;
12573 int item;
12574 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
12575
12576 pr_debug("%s item is %d\n", __func__,
12577 ucontrol->value.enumerated.item[0]);
12578 mutex_lock(&routing_lock);
12579 item = ucontrol->value.enumerated.item[0];
12580 if (item < e->items) {
12581 pr_debug("%s RX DAI ID %d TX DAI id %d\n",
12582 __func__, e->shift_l, e->values[item]);
12583 if (e->shift_l < MSM_BACKEND_DAI_MAX &&
12584 e->values[item] < MSM_BACKEND_DAI_MAX)
12585 /* Enable feedback TX path */
12586 ret = afe_spk_prot_feed_back_cfg(
12587 msm_bedais[e->values[item]].port_id,
12588 msm_bedais[e->shift_l].port_id, 1, 0, 1);
12589 else {
12590 pr_debug("%s values are out of range item %d\n",
12591 __func__, e->values[item]);
12592 /* Disable feedback TX path */
12593 if (e->values[item] == MSM_BACKEND_DAI_MAX)
12594 ret = afe_spk_prot_feed_back_cfg(0, 0, 0, 0, 0);
12595 else
12596 ret = -EINVAL;
12597 }
12598 } else {
12599 pr_err("%s item value is out of range item\n", __func__);
12600 ret = -EINVAL;
12601 }
12602 mutex_unlock(&routing_lock);
12603 return ret;
12604}
12605
12606static int spkr_prot_put_vi_rch_port(struct snd_kcontrol *kcontrol,
12607 struct snd_ctl_elem_value *ucontrol)
12608{
12609 int ret = 0;
12610 int item;
12611 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
12612
12613 pr_debug("%s item is %d\n", __func__,
12614 ucontrol->value.enumerated.item[0]);
12615 mutex_lock(&routing_lock);
12616 item = ucontrol->value.enumerated.item[0];
12617 if (item < e->items) {
12618 pr_debug("%s RX DAI ID %d TX DAI id %d\n",
12619 __func__, e->shift_l, e->values[item]);
12620 if (e->shift_l < MSM_BACKEND_DAI_MAX &&
12621 e->values[item] < MSM_BACKEND_DAI_MAX)
12622 /* Enable feedback TX path */
12623 ret = afe_spk_prot_feed_back_cfg(
12624 msm_bedais[e->values[item]].port_id,
12625 msm_bedais[e->shift_l].port_id,
12626 1, 1, 1);
12627 else {
12628 pr_debug("%s values are out of range item %d\n",
12629 __func__, e->values[item]);
12630 /* Disable feedback TX path */
12631 if (e->values[item] == MSM_BACKEND_DAI_MAX)
12632 ret = afe_spk_prot_feed_back_cfg(0,
12633 0, 0, 0, 0);
12634 else
12635 ret = -EINVAL;
12636 }
12637 } else {
12638 pr_err("%s item value is out of range item\n", __func__);
12639 ret = -EINVAL;
12640 }
12641 mutex_unlock(&routing_lock);
12642 return ret;
12643}
12644
12645static int spkr_prot_get_vi_lch_port(struct snd_kcontrol *kcontrol,
12646 struct snd_ctl_elem_value *ucontrol)
12647{
12648 pr_debug("%s\n", __func__);
12649 return 0;
12650}
12651
12652static int spkr_prot_get_vi_rch_port(struct snd_kcontrol *kcontrol,
12653 struct snd_ctl_elem_value *ucontrol)
12654{
12655 pr_debug("%s\n", __func__);
12656 ucontrol->value.enumerated.item[0] = 0;
12657 return 0;
12658}
12659
12660static const char * const slim0_rx_vi_fb_tx_lch_mux_text[] = {
12661 "ZERO", "SLIM4_TX"
12662};
12663
12664static const char * const slim0_rx_vi_fb_tx_rch_mux_text[] = {
12665 "ZERO", "SLIM4_TX"
12666};
12667
12668static const char * const mi2s_rx_vi_fb_tx_mux_text[] = {
12669 "ZERO", "SENARY_TX"
12670};
12671
12672static const char * const int4_mi2s_rx_vi_fb_tx_mono_mux_text[] = {
12673 "ZERO", "INT5_MI2S_TX"
12674};
12675
12676static const char * const int4_mi2s_rx_vi_fb_tx_stereo_mux_text[] = {
12677 "ZERO", "INT5_MI2S_TX"
12678};
12679
12680static const int const slim0_rx_vi_fb_tx_lch_value[] = {
12681 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_SLIMBUS_4_TX
12682};
12683
12684static const int const slim0_rx_vi_fb_tx_rch_value[] = {
12685 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_SLIMBUS_4_TX
12686};
12687
12688static const int const mi2s_rx_vi_fb_tx_value[] = {
12689 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_SENARY_MI2S_TX
12690};
12691
12692static const int const int4_mi2s_rx_vi_fb_tx_mono_ch_value[] = {
12693 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_INT5_MI2S_TX
12694};
12695
12696static const int const int4_mi2s_rx_vi_fb_tx_stereo_ch_value[] = {
12697 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_INT5_MI2S_TX
12698};
12699
12700static const struct soc_enum slim0_rx_vi_fb_lch_mux_enum =
12701 SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_SLIMBUS_0_RX, 0, 0,
12702 ARRAY_SIZE(slim0_rx_vi_fb_tx_lch_mux_text),
12703 slim0_rx_vi_fb_tx_lch_mux_text, slim0_rx_vi_fb_tx_lch_value);
12704
12705static const struct soc_enum slim0_rx_vi_fb_rch_mux_enum =
12706 SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_SLIMBUS_0_RX, 0, 0,
12707 ARRAY_SIZE(slim0_rx_vi_fb_tx_rch_mux_text),
12708 slim0_rx_vi_fb_tx_rch_mux_text, slim0_rx_vi_fb_tx_rch_value);
12709
12710static const struct soc_enum mi2s_rx_vi_fb_mux_enum =
12711 SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_PRI_MI2S_RX, 0, 0,
12712 ARRAY_SIZE(mi2s_rx_vi_fb_tx_mux_text),
12713 mi2s_rx_vi_fb_tx_mux_text, mi2s_rx_vi_fb_tx_value);
12714
12715static const struct soc_enum int4_mi2s_rx_vi_fb_mono_ch_mux_enum =
12716 SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_INT4_MI2S_RX, 0, 0,
12717 ARRAY_SIZE(int4_mi2s_rx_vi_fb_tx_mono_mux_text),
12718 int4_mi2s_rx_vi_fb_tx_mono_mux_text,
12719 int4_mi2s_rx_vi_fb_tx_mono_ch_value);
12720
12721static const struct soc_enum int4_mi2s_rx_vi_fb_stereo_ch_mux_enum =
12722 SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_INT4_MI2S_RX, 0, 0,
12723 ARRAY_SIZE(int4_mi2s_rx_vi_fb_tx_stereo_mux_text),
12724 int4_mi2s_rx_vi_fb_tx_stereo_mux_text,
12725 int4_mi2s_rx_vi_fb_tx_stereo_ch_value);
12726
12727static const struct snd_kcontrol_new slim0_rx_vi_fb_lch_mux =
12728 SOC_DAPM_ENUM_EXT("SLIM0_RX_VI_FB_LCH_MUX",
12729 slim0_rx_vi_fb_lch_mux_enum, spkr_prot_get_vi_lch_port,
12730 spkr_prot_put_vi_lch_port);
12731
12732static const struct snd_kcontrol_new slim0_rx_vi_fb_rch_mux =
12733 SOC_DAPM_ENUM_EXT("SLIM0_RX_VI_FB_RCH_MUX",
12734 slim0_rx_vi_fb_rch_mux_enum, spkr_prot_get_vi_rch_port,
12735 spkr_prot_put_vi_rch_port);
12736
12737static const struct snd_kcontrol_new mi2s_rx_vi_fb_mux =
12738 SOC_DAPM_ENUM_EXT("PRI_MI2S_RX_VI_FB_MUX",
12739 mi2s_rx_vi_fb_mux_enum, spkr_prot_get_vi_lch_port,
12740 spkr_prot_put_vi_lch_port);
12741
12742static const struct snd_kcontrol_new int4_mi2s_rx_vi_fb_mono_ch_mux =
12743 SOC_DAPM_ENUM_EXT("INT4_MI2S_RX_VI_FB_MONO_CH_MUX",
12744 int4_mi2s_rx_vi_fb_mono_ch_mux_enum, spkr_prot_get_vi_lch_port,
12745 spkr_prot_put_vi_lch_port);
12746
12747static const struct snd_kcontrol_new int4_mi2s_rx_vi_fb_stereo_ch_mux =
12748 SOC_DAPM_ENUM_EXT("INT4_MI2S_RX_VI_FB_STEREO_CH_MUX",
12749 int4_mi2s_rx_vi_fb_stereo_ch_mux_enum, spkr_prot_get_vi_rch_port,
12750 spkr_prot_put_vi_rch_port);
12751
12752static const struct snd_soc_dapm_widget msm_qdsp6_widgets[] = {
12753 /* Frontend AIF */
12754 /* Widget name equals to Front-End DAI name<Need confirmation>,
12755 * Stream name must contains substring of front-end dai name
12756 */
12757 SND_SOC_DAPM_AIF_IN("MM_DL1", "MultiMedia1 Playback", 0, 0, 0, 0),
12758 SND_SOC_DAPM_AIF_IN("MM_DL2", "MultiMedia2 Playback", 0, 0, 0, 0),
12759 SND_SOC_DAPM_AIF_IN("MM_DL3", "MultiMedia3 Playback", 0, 0, 0, 0),
12760 SND_SOC_DAPM_AIF_IN("MM_DL4", "MultiMedia4 Playback", 0, 0, 0, 0),
12761 SND_SOC_DAPM_AIF_IN("MM_DL5", "MultiMedia5 Playback", 0, 0, 0, 0),
12762 SND_SOC_DAPM_AIF_IN("MM_DL6", "MultiMedia6 Playback", 0, 0, 0, 0),
12763 SND_SOC_DAPM_AIF_IN("MM_DL7", "MultiMedia7 Playback", 0, 0, 0, 0),
12764 SND_SOC_DAPM_AIF_IN("MM_DL8", "MultiMedia8 Playback", 0, 0, 0, 0),
12765 SND_SOC_DAPM_AIF_IN("MM_DL9", "MultiMedia9 Playback", 0, 0, 0, 0),
12766 SND_SOC_DAPM_AIF_IN("MM_DL10", "MultiMedia10 Playback", 0, 0, 0, 0),
12767 SND_SOC_DAPM_AIF_IN("MM_DL11", "MultiMedia11 Playback", 0, 0, 0, 0),
12768 SND_SOC_DAPM_AIF_IN("MM_DL12", "MultiMedia12 Playback", 0, 0, 0, 0),
12769 SND_SOC_DAPM_AIF_IN("MM_DL13", "MultiMedia13 Playback", 0, 0, 0, 0),
12770 SND_SOC_DAPM_AIF_IN("MM_DL14", "MultiMedia14 Playback", 0, 0, 0, 0),
12771 SND_SOC_DAPM_AIF_IN("MM_DL15", "MultiMedia15 Playback", 0, 0, 0, 0),
12772 SND_SOC_DAPM_AIF_IN("MM_DL16", "MultiMedia16 Playback", 0, 0, 0, 0),
12773 SND_SOC_DAPM_AIF_IN("MM_DL20", "MultiMedia20 Playback", 0, 0, 0, 0),
12774 SND_SOC_DAPM_AIF_IN("VOIP_DL", "VoIP Playback", 0, 0, 0, 0),
12775 SND_SOC_DAPM_AIF_OUT("MM_UL1", "MultiMedia1 Capture", 0, 0, 0, 0),
12776 SND_SOC_DAPM_AIF_OUT("MM_UL2", "MultiMedia2 Capture", 0, 0, 0, 0),
12777 SND_SOC_DAPM_AIF_OUT("MM_UL3", "MultiMedia3 Capture", 0, 0, 0, 0),
12778 SND_SOC_DAPM_AIF_OUT("MM_UL4", "MultiMedia4 Capture", 0, 0, 0, 0),
12779 SND_SOC_DAPM_AIF_OUT("MM_UL5", "MultiMedia5 Capture", 0, 0, 0, 0),
12780 SND_SOC_DAPM_AIF_OUT("MM_UL6", "MultiMedia6 Capture", 0, 0, 0, 0),
12781 SND_SOC_DAPM_AIF_OUT("MM_UL8", "MultiMedia8 Capture", 0, 0, 0, 0),
12782 SND_SOC_DAPM_AIF_OUT("MM_UL9", "MultiMedia9 Capture", 0, 0, 0, 0),
Laxminath Kasam38070be2017-08-17 18:21:59 +053012783 SND_SOC_DAPM_AIF_OUT("MM_UL10", "MultiMedia10 Capture", 0, 0, 0, 0),
Asish Bhattacharya34504582017-08-08 12:55:01 +053012784 SND_SOC_DAPM_AIF_OUT("MM_UL16", "MultiMedia16 Capture", 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012785 SND_SOC_DAPM_AIF_OUT("MM_UL17", "MultiMedia17 Capture", 0, 0, 0, 0),
12786 SND_SOC_DAPM_AIF_OUT("MM_UL18", "MultiMedia18 Capture", 0, 0, 0, 0),
12787 SND_SOC_DAPM_AIF_OUT("MM_UL19", "MultiMedia19 Capture", 0, 0, 0, 0),
12788 SND_SOC_DAPM_AIF_OUT("MM_UL20", "MultiMedia20 Capture", 0, 0, 0, 0),
Meng Wangbe8194e2018-04-25 10:40:01 +080012789 SND_SOC_DAPM_AIF_OUT("MM_UL28", "MultiMedia28 Capture", 0, 0, 0, 0),
12790 SND_SOC_DAPM_AIF_OUT("MM_UL29", "MultiMedia29 Capture", 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012791 SND_SOC_DAPM_AIF_OUT("VOIP_UL", "VoIP Capture", 0, 0, 0, 0),
12792 SND_SOC_DAPM_AIF_IN("VOICEMMODE1_DL",
12793 "VoiceMMode1 Playback", 0, 0, 0, 0),
12794 SND_SOC_DAPM_AIF_OUT("VOICEMMODE1_UL",
12795 "VoiceMMode1 Capture", 0, 0, 0, 0),
12796 SND_SOC_DAPM_AIF_IN("VOICEMMODE2_DL",
12797 "VoiceMMode2 Playback", 0, 0, 0, 0),
12798 SND_SOC_DAPM_AIF_OUT("VOICEMMODE2_UL",
12799 "VoiceMMode2 Capture", 0, 0, 0, 0),
12800 SND_SOC_DAPM_AIF_IN("SLIM0_DL_HL", "SLIMBUS0_HOSTLESS Playback",
12801 0, 0, 0, 0),
12802 SND_SOC_DAPM_AIF_OUT("SLIM0_UL_HL", "SLIMBUS0_HOSTLESS Capture",
12803 0, 0, 0, 0),
12804 SND_SOC_DAPM_AIF_OUT("CPE_LSM_UL_HL", "CPE LSM capture",
12805 0, 0, 0, 0),
12806 SND_SOC_DAPM_AIF_IN("SLIM1_DL_HL", "SLIMBUS1_HOSTLESS Playback",
12807 0, 0, 0, 0),
12808 SND_SOC_DAPM_AIF_OUT("SLIM1_UL_HL", "SLIMBUS1_HOSTLESS Capture",
12809 0, 0, 0, 0),
12810 SND_SOC_DAPM_AIF_IN("SLIM3_DL_HL", "SLIMBUS3_HOSTLESS Playback",
12811 0, 0, 0, 0),
12812 SND_SOC_DAPM_AIF_OUT("SLIM3_UL_HL", "SLIMBUS3_HOSTLESS Capture",
12813 0, 0, 0, 0),
12814 SND_SOC_DAPM_AIF_IN("SLIM4_DL_HL", "SLIMBUS4_HOSTLESS Playback",
12815 0, 0, 0, 0),
12816 SND_SOC_DAPM_AIF_OUT("SLIM4_UL_HL", "SLIMBUS4_HOSTLESS Capture",
12817 0, 0, 0, 0),
12818 SND_SOC_DAPM_AIF_IN("SLIM6_DL_HL", "SLIMBUS6_HOSTLESS Playback",
12819 0, 0, 0, 0),
12820 SND_SOC_DAPM_AIF_OUT("SLIM6_UL_HL", "SLIMBUS6_HOSTLESS Capture",
12821 0, 0, 0, 0),
12822 SND_SOC_DAPM_AIF_IN("SLIM7_DL_HL", "SLIMBUS7_HOSTLESS Playback",
12823 0, 0, 0, 0),
12824 SND_SOC_DAPM_AIF_OUT("SLIM7_UL_HL", "SLIMBUS7_HOSTLESS Capture",
12825 0, 0, 0, 0),
12826 SND_SOC_DAPM_AIF_IN("SLIM8_DL_HL", "SLIMBUS8_HOSTLESS Playback",
12827 0, 0, 0, 0),
12828 SND_SOC_DAPM_AIF_OUT("SLIM8_UL_HL", "SLIMBUS8_HOSTLESS Capture",
12829 0, 0, 0, 0),
12830 SND_SOC_DAPM_AIF_IN("INTFM_DL_HL", "INT_FM_HOSTLESS Playback",
12831 0, 0, 0, 0),
12832 SND_SOC_DAPM_AIF_OUT("INTFM_UL_HL", "INT_FM_HOSTLESS Capture",
12833 0, 0, 0, 0),
12834 SND_SOC_DAPM_AIF_IN("INTHFP_DL_HL", "INT_HFP_BT_HOSTLESS Playback",
12835 0, 0, 0, 0),
12836 SND_SOC_DAPM_AIF_OUT("INTHFP_UL_HL", "INT_HFP_BT_HOSTLESS Capture",
12837 0, 0, 0, 0),
12838 SND_SOC_DAPM_AIF_IN("USBAUDIO_DL_HL", "USBAUDIO_HOSTLESS Playback",
12839 0, 0, 0, 0),
12840 SND_SOC_DAPM_AIF_OUT("USBAUDIO_UL_HL", "USBAUDIO_HOSTLESS Capture",
12841 0, 0, 0, 0),
12842 SND_SOC_DAPM_AIF_IN("HDMI_DL_HL", "HDMI_HOSTLESS Playback", 0, 0, 0, 0),
12843 SND_SOC_DAPM_AIF_IN("SEC_I2S_DL_HL", "SEC_I2S_RX_HOSTLESS Playback",
12844 0, 0, 0, 0),
12845 SND_SOC_DAPM_AIF_IN("INT0_MI2S_DL_HL",
12846 "INT0 MI2S_RX Hostless Playback",
12847 0, 0, 0, 0),
12848 SND_SOC_DAPM_AIF_IN("INT4_MI2S_DL_HL",
12849 "INT4 MI2S_RX Hostless Playback",
12850 0, 0, 0, 0),
12851 SND_SOC_DAPM_AIF_IN("PRI_MI2S_DL_HL",
12852 "Primary MI2S_RX Hostless Playback",
12853 0, 0, 0, 0),
12854 SND_SOC_DAPM_AIF_IN("SEC_MI2S_DL_HL",
12855 "Secondary MI2S_RX Hostless Playback",
12856 0, 0, 0, 0),
12857 SND_SOC_DAPM_AIF_IN("TERT_MI2S_DL_HL",
12858 "Tertiary MI2S_RX Hostless Playback",
12859 0, 0, 0, 0),
12860 SND_SOC_DAPM_AIF_IN("QUAT_MI2S_DL_HL",
12861 "Quaternary MI2S_RX Hostless Playback",
12862 0, 0, 0, 0),
Rohit Kumara5077932017-09-10 22:05:05 +053012863 SND_SOC_DAPM_AIF_IN("QUIN_MI2S_DL_HL",
12864 "Quinary MI2S_RX Hostless Playback",
12865 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012866
12867 SND_SOC_DAPM_AIF_IN("AUXPCM_DL_HL", "AUXPCM_HOSTLESS Playback",
12868 0, 0, 0, 0),
12869 SND_SOC_DAPM_AIF_OUT("AUXPCM_UL_HL", "AUXPCM_HOSTLESS Capture",
12870 0, 0, 0, 0),
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -080012871 SND_SOC_DAPM_AIF_IN("SEC_AUXPCM_DL_HL", "SEC_AUXPCM_HOSTLESS Playback",
12872 0, 0, 0, 0),
12873 SND_SOC_DAPM_AIF_OUT("SEC_AUXPCM_UL_HL", "SEC_AUXPCM_HOSTLESS Capture",
12874 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012875 SND_SOC_DAPM_AIF_OUT("MI2S_UL_HL", "MI2S_TX_HOSTLESS Capture",
12876 0, 0, 0, 0),
12877 SND_SOC_DAPM_AIF_OUT("INT3_MI2S_UL_HL",
12878 "INT3 MI2S_TX Hostless Capture",
12879 0, 0, 0, 0),
12880 SND_SOC_DAPM_AIF_OUT("TERT_MI2S_UL_HL",
12881 "Tertiary MI2S_TX Hostless Capture",
12882 0, 0, 0, 0),
12883 SND_SOC_DAPM_AIF_OUT("SEC_MI2S_UL_HL",
12884 "Secondary MI2S_TX Hostless Capture",
12885 0, 0, 0, 0),
12886 SND_SOC_DAPM_AIF_OUT("PRI_MI2S_UL_HL",
12887 "Primary MI2S_TX Hostless Capture",
12888 0, 0, 0, 0),
12889 SND_SOC_DAPM_AIF_OUT("MI2S_DL_HL", "MI2S_RX_HOSTLESS Playback",
12890 0, 0, 0, 0),
12891 SND_SOC_DAPM_AIF_IN("DTMF_DL_HL", "DTMF_RX_HOSTLESS Playback",
12892 0, 0, 0, 0),
12893 SND_SOC_DAPM_AIF_OUT("QUAT_MI2S_UL_HL",
12894 "Quaternary MI2S_TX Hostless Capture",
12895 0, 0, 0, 0),
Rohit Kumara5077932017-09-10 22:05:05 +053012896 SND_SOC_DAPM_AIF_OUT("QUIN_MI2S_UL_HL",
12897 "Quinary MI2S_TX Hostless Capture",
12898 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012899
12900 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_0_DL_HL",
12901 "Primary TDM0 Hostless Playback",
12902 0, 0, 0, 0),
12903 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_0_UL_HL",
12904 "Primary TDM0 Hostless Capture",
12905 0, 0, 0, 0),
12906 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_1_DL_HL",
12907 "Primary TDM1 Hostless Playback",
12908 0, 0, 0, 0),
12909 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_1_UL_HL",
12910 "Primary TDM1 Hostless Capture",
12911 0, 0, 0, 0),
12912 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_2_DL_HL",
12913 "Primary TDM2 Hostless Playback",
12914 0, 0, 0, 0),
12915 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_2_UL_HL",
12916 "Primary TDM2 Hostless Capture",
12917 0, 0, 0, 0),
12918 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_3_DL_HL",
12919 "Primary TDM3 Hostless Playback",
12920 0, 0, 0, 0),
12921 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_3_UL_HL",
12922 "Primary TDM3 Hostless Capture",
12923 0, 0, 0, 0),
12924 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_4_DL_HL",
12925 "Primary TDM4 Hostless Playback",
12926 0, 0, 0, 0),
12927 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_4_UL_HL",
12928 "Primary TDM4 Hostless Capture",
12929 0, 0, 0, 0),
12930 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_5_DL_HL",
12931 "Primary TDM5 Hostless Playback",
12932 0, 0, 0, 0),
12933 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_5_UL_HL",
12934 "Primary TDM5 Hostless Capture",
12935 0, 0, 0, 0),
12936 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_6_DL_HL",
12937 "Primary TDM6 Hostless Playback",
12938 0, 0, 0, 0),
12939 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_6_UL_HL",
12940 "Primary TDM6 Hostless Capture",
12941 0, 0, 0, 0),
12942 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_7_DL_HL",
12943 "Primary TDM7 Hostless Playback",
12944 0, 0, 0, 0),
12945 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_7_UL_HL",
12946 "Primary TDM7 Hostless Capture",
12947 0, 0, 0, 0),
12948 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_0_DL_HL",
12949 "Secondary TDM0 Hostless Playback",
12950 0, 0, 0, 0),
12951 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_0_UL_HL",
12952 "Secondary TDM0 Hostless Capture",
12953 0, 0, 0, 0),
12954 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_1_DL_HL",
12955 "Secondary TDM1 Hostless Playback",
12956 0, 0, 0, 0),
12957 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_1_UL_HL",
12958 "Secondary TDM1 Hostless Capture",
12959 0, 0, 0, 0),
12960 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_2_DL_HL",
12961 "Secondary TDM2 Hostless Playback",
12962 0, 0, 0, 0),
12963 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_2_UL_HL",
12964 "Secondary TDM2 Hostless Capture",
12965 0, 0, 0, 0),
12966 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_3_DL_HL",
12967 "Secondary TDM3 Hostless Playback",
12968 0, 0, 0, 0),
12969 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_3_UL_HL",
12970 "Secondary TDM3 Hostless Capture",
12971 0, 0, 0, 0),
12972 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_4_DL_HL",
12973 "Secondary TDM4 Hostless Playback",
12974 0, 0, 0, 0),
12975 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_4_UL_HL",
12976 "Secondary TDM4 Hostless Capture",
12977 0, 0, 0, 0),
12978 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_5_DL_HL",
12979 "Secondary TDM5 Hostless Playback",
12980 0, 0, 0, 0),
12981 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_5_UL_HL",
12982 "Secondary TDM5 Hostless Capture",
12983 0, 0, 0, 0),
12984 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_6_DL_HL",
12985 "Secondary TDM6 Hostless Playback",
12986 0, 0, 0, 0),
12987 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_6_UL_HL",
12988 "Secondary TDM6 Hostless Capture",
12989 0, 0, 0, 0),
12990 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_7_DL_HL",
12991 "Secondary TDM7 Hostless Playback",
12992 0, 0, 0, 0),
12993 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_7_UL_HL",
12994 "Secondary TDM7 Hostless Capture",
12995 0, 0, 0, 0),
12996 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_0_DL_HL",
12997 "Tertiary TDM0 Hostless Playback",
12998 0, 0, 0, 0),
12999 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_0_UL_HL",
13000 "Tertiary TDM0 Hostless Capture",
13001 0, 0, 0, 0),
13002 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_1_DL_HL",
13003 "Tertiary TDM1 Hostless Playback",
13004 0, 0, 0, 0),
13005 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_1_UL_HL",
13006 "Tertiary TDM1 Hostless Capture",
13007 0, 0, 0, 0),
13008 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_2_DL_HL",
13009 "Tertiary TDM2 Hostless Playback",
13010 0, 0, 0, 0),
13011 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_2_UL_HL",
13012 "Tertiary TDM2 Hostless Capture",
13013 0, 0, 0, 0),
13014 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_3_DL_HL",
13015 "Tertiary TDM3 Hostless Playback",
13016 0, 0, 0, 0),
13017 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_3_UL_HL",
13018 "Tertiary TDM3 Hostless Capture",
13019 0, 0, 0, 0),
13020 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_4_DL_HL",
13021 "Tertiary TDM4 Hostless Playback",
13022 0, 0, 0, 0),
13023 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_4_UL_HL",
13024 "Tertiary TDM4 Hostless Capture",
13025 0, 0, 0, 0),
13026 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_5_DL_HL",
13027 "Tertiary TDM5 Hostless Playback",
13028 0, 0, 0, 0),
13029 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_5_UL_HL",
13030 "Tertiary TDM5 Hostless Capture",
13031 0, 0, 0, 0),
13032 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_6_DL_HL",
13033 "Tertiary TDM6 Hostless Playback",
13034 0, 0, 0, 0),
13035 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_6_UL_HL",
13036 "Tertiary TDM6 Hostless Capture",
13037 0, 0, 0, 0),
13038 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_7_DL_HL",
13039 "Tertiary TDM7 Hostless Playback",
13040 0, 0, 0, 0),
13041 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_7_UL_HL",
13042 "Tertiary TDM7 Hostless Capture",
13043 0, 0, 0, 0),
13044 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_0_DL_HL",
13045 "Quaternary TDM0 Hostless Playback",
13046 0, 0, 0, 0),
13047 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_0_UL_HL",
13048 "Quaternary TDM0 Hostless Capture",
13049 0, 0, 0, 0),
13050 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_1_DL_HL",
13051 "Quaternary TDM1 Hostless Playback",
13052 0, 0, 0, 0),
13053 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_1_UL_HL",
13054 "Quaternary TDM1 Hostless Capture",
13055 0, 0, 0, 0),
13056 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_2_DL_HL",
13057 "Quaternary TDM2 Hostless Playback",
13058 0, 0, 0, 0),
13059 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_2_UL_HL",
13060 "Quaternary TDM2 Hostless Capture",
13061 0, 0, 0, 0),
13062 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_3_DL_HL",
13063 "Quaternary TDM3 Hostless Playback",
13064 0, 0, 0, 0),
13065 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_3_UL_HL",
13066 "Quaternary TDM3 Hostless Capture",
13067 0, 0, 0, 0),
13068 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_4_DL_HL",
13069 "Quaternary TDM4 Hostless Playback",
13070 0, 0, 0, 0),
13071 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_4_UL_HL",
13072 "Quaternary TDM4 Hostless Capture",
13073 0, 0, 0, 0),
13074 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_5_DL_HL",
13075 "Quaternary TDM5 Hostless Playback",
13076 0, 0, 0, 0),
13077 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_5_UL_HL",
13078 "Quaternary TDM5 Hostless Capture",
13079 0, 0, 0, 0),
13080 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_6_DL_HL",
13081 "Quaternary TDM6 Hostless Playback",
13082 0, 0, 0, 0),
13083 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_6_UL_HL",
13084 "Quaternary TDM6 Hostless Capture",
13085 0, 0, 0, 0),
13086 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_7_DL_HL",
13087 "Quaternary TDM7 Hostless Playback",
13088 0, 0, 0, 0),
13089 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_7_UL_HL",
13090 "Quaternary TDM7 Hostless Capture",
13091 0, 0, 0, 0),
Rohit Kumara5077932017-09-10 22:05:05 +053013092 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_0_DL_HL",
13093 "Quinary TDM0 Hostless Playback",
13094 0, 0, 0, 0),
13095 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_0_UL_HL",
13096 "Quinary TDM0 Hostless Capture",
13097 0, 0, 0, 0),
13098 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_1_DL_HL",
13099 "Quinary TDM1 Hostless Playback",
13100 0, 0, 0, 0),
13101 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_1_UL_HL",
13102 "Quinary TDM1 Hostless Capture",
13103 0, 0, 0, 0),
13104 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_2_DL_HL",
13105 "Quinary TDM2 Hostless Playback",
13106 0, 0, 0, 0),
13107 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_2_UL_HL",
13108 "Quinary TDM2 Hostless Capture",
13109 0, 0, 0, 0),
13110 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_3_DL_HL",
13111 "Quinary TDM3 Hostless Playback",
13112 0, 0, 0, 0),
13113 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_3_UL_HL",
13114 "Quinary TDM3 Hostless Capture",
13115 0, 0, 0, 0),
13116 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_4_DL_HL",
13117 "Quinary TDM4 Hostless Playback",
13118 0, 0, 0, 0),
13119 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_4_UL_HL",
13120 "Quinary TDM4 Hostless Capture",
13121 0, 0, 0, 0),
13122 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_5_DL_HL",
13123 "Quinary TDM5 Hostless Playback",
13124 0, 0, 0, 0),
13125 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_5_UL_HL",
13126 "Quinary TDM5 Hostless Capture",
13127 0, 0, 0, 0),
13128 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_6_DL_HL",
13129 "Quinary TDM6 Hostless Playback",
13130 0, 0, 0, 0),
13131 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_6_UL_HL",
13132 "Quinary TDM6 Hostless Capture",
13133 0, 0, 0, 0),
13134 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_7_DL_HL",
13135 "Quinary TDM7 Hostless Playback",
13136 0, 0, 0, 0),
13137 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_7_UL_HL",
13138 "Quinary TDM7 Hostless Capture",
13139 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013140
13141 /* LSM */
13142 SND_SOC_DAPM_AIF_OUT("LSM1_UL_HL", "Listen 1 Audio Service Capture",
13143 0, 0, 0, 0),
13144 SND_SOC_DAPM_AIF_OUT("LSM2_UL_HL", "Listen 2 Audio Service Capture",
13145 0, 0, 0, 0),
13146 SND_SOC_DAPM_AIF_OUT("LSM3_UL_HL", "Listen 3 Audio Service Capture",
13147 0, 0, 0, 0),
13148 SND_SOC_DAPM_AIF_OUT("LSM4_UL_HL", "Listen 4 Audio Service Capture",
13149 0, 0, 0, 0),
13150 SND_SOC_DAPM_AIF_OUT("LSM5_UL_HL", "Listen 5 Audio Service Capture",
13151 0, 0, 0, 0),
13152 SND_SOC_DAPM_AIF_OUT("LSM6_UL_HL", "Listen 6 Audio Service Capture",
13153 0, 0, 0, 0),
13154 SND_SOC_DAPM_AIF_OUT("LSM7_UL_HL", "Listen 7 Audio Service Capture",
13155 0, 0, 0, 0),
13156 SND_SOC_DAPM_AIF_OUT("LSM8_UL_HL", "Listen 8 Audio Service Capture",
13157 0, 0, 0, 0),
13158 SND_SOC_DAPM_AIF_IN("QCHAT_DL", "QCHAT Playback", 0, 0, 0, 0),
13159 SND_SOC_DAPM_AIF_OUT("QCHAT_UL", "QCHAT Capture", 0, 0, 0, 0),
13160 /* Backend AIF */
13161 /* Stream name equals to backend dai link stream name */
13162 SND_SOC_DAPM_AIF_OUT("PRI_I2S_RX", "Primary I2S Playback", 0, 0, 0, 0),
13163 SND_SOC_DAPM_AIF_OUT("SEC_I2S_RX", "Secondary I2S Playback",
13164 0, 0, 0, 0),
13165 SND_SOC_DAPM_AIF_OUT("SPDIF_RX", "SPDIF Playback", 0, 0, 0, 0),
13166 SND_SOC_DAPM_AIF_OUT("SLIMBUS_0_RX", "Slimbus Playback", 0, 0, 0, 0),
13167 SND_SOC_DAPM_AIF_OUT("SLIMBUS_2_RX", "Slimbus2 Playback", 0, 0, 0, 0),
13168 SND_SOC_DAPM_AIF_OUT("SLIMBUS_5_RX", "Slimbus5 Playback", 0, 0, 0, 0),
13169 SND_SOC_DAPM_AIF_OUT("HDMI", "HDMI Playback", 0, 0, 0, 0),
13170 SND_SOC_DAPM_AIF_OUT("DISPLAY_PORT", "Display Port Playback",
13171 0, 0, 0, 0),
13172 SND_SOC_DAPM_AIF_OUT("MI2S_RX", "MI2S Playback", 0, 0, 0, 0),
13173 SND_SOC_DAPM_AIF_OUT("QUAT_MI2S_RX", "Quaternary MI2S Playback",
13174 0, 0, 0, 0),
13175 SND_SOC_DAPM_AIF_OUT("TERT_MI2S_RX", "Tertiary MI2S Playback",
13176 0, 0, 0, 0),
13177 SND_SOC_DAPM_AIF_OUT("SEC_MI2S_RX", "Secondary MI2S Playback",
13178 0, 0, 0, 0),
13179 SND_SOC_DAPM_AIF_OUT("SEC_MI2S_RX_SD1",
13180 "Secondary MI2S Playback SD1",
13181 0, 0, 0, 0),
13182 SND_SOC_DAPM_AIF_OUT("PRI_MI2S_RX", "Primary MI2S Playback",
13183 0, 0, 0, 0),
13184 SND_SOC_DAPM_AIF_OUT("INT0_MI2S_RX", "INT0 MI2S Playback",
13185 0, 0, 0, 0),
Laxminath Kasam52697fe2017-11-29 15:44:14 +053013186 SND_SOC_DAPM_AIF_OUT("INT2_MI2S_RX", "INT2 MI2S Playback",
13187 0, 0, 0, 0),
13188 SND_SOC_DAPM_AIF_OUT("INT3_MI2S_RX", "INT3 MI2S Playback",
13189 0, 0, 0, 0),
13190 SND_SOC_DAPM_AIF_OUT("INT5_MI2S_RX", "INT5 MI2S Playback",
13191 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013192 SND_SOC_DAPM_AIF_OUT("INT4_MI2S_RX", "INT4 MI2S Playback",
13193 0, 0, 0, 0),
Laxminath Kasam52697fe2017-11-29 15:44:14 +053013194 SND_SOC_DAPM_AIF_OUT("INT4_MI2S_TX", "INT4 MI2S Capture",
13195 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013196 SND_SOC_DAPM_AIF_OUT("QUIN_MI2S_RX", "Quinary MI2S Playback",
13197 0, 0, 0, 0),
13198 SND_SOC_DAPM_AIF_IN("PRI_I2S_TX", "Primary I2S Capture", 0, 0, 0, 0),
13199 SND_SOC_DAPM_AIF_IN("MI2S_TX", "MI2S Capture", 0, 0, 0, 0),
13200 SND_SOC_DAPM_AIF_IN("QUAT_MI2S_TX", "Quaternary MI2S Capture",
13201 0, 0, 0, 0),
13202 SND_SOC_DAPM_AIF_IN("PRI_MI2S_TX", "Primary MI2S Capture",
13203 0, 0, 0, 0),
13204 SND_SOC_DAPM_AIF_IN("TERT_MI2S_TX", "Tertiary MI2S Capture",
13205 0, 0, 0, 0),
Laxminath Kasam52697fe2017-11-29 15:44:14 +053013206 SND_SOC_DAPM_AIF_OUT("INT0_MI2S_TX", "INT0 MI2S Capture",
13207 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013208 SND_SOC_DAPM_AIF_IN("INT2_MI2S_TX", "INT2 MI2S Capture",
13209 0, 0, 0, 0),
13210 SND_SOC_DAPM_AIF_IN("INT3_MI2S_TX", "INT3 MI2S Capture",
13211 0, 0, 0, 0),
13212 SND_SOC_DAPM_AIF_IN("SEC_MI2S_TX", "Secondary MI2S Capture",
13213 0, 0, 0, 0),
13214 SND_SOC_DAPM_AIF_IN("SLIMBUS_0_TX", "Slimbus Capture", 0, 0, 0, 0),
13215 SND_SOC_DAPM_AIF_IN("SLIMBUS_2_TX", "Slimbus2 Capture", 0, 0, 0, 0),
13216 SND_SOC_DAPM_AIF_IN("QUIN_MI2S_TX", "Quinary MI2S Capture",
13217 0, 0, 0, 0),
13218 SND_SOC_DAPM_AIF_IN("SENARY_MI2S_TX", "Senary MI2S Capture",
13219 0, 0, 0, 0),
13220 SND_SOC_DAPM_AIF_OUT("INT_BT_SCO_RX", "Internal BT-SCO Playback",
13221 0, 0, 0, 0),
13222 SND_SOC_DAPM_AIF_IN("INT_BT_SCO_TX", "Internal BT-SCO Capture",
13223 0, 0, 0, 0),
13224 SND_SOC_DAPM_AIF_OUT("INT_BT_A2DP_RX", "Internal BT-A2DP Playback",
13225 0, 0, 0, 0),
13226 SND_SOC_DAPM_AIF_OUT("INT_FM_RX", "Internal FM Playback",
13227 0, 0, 0, 0),
13228 SND_SOC_DAPM_AIF_IN("INT_FM_TX", "Internal FM Capture",
13229 0, 0, 0, 0),
13230 SND_SOC_DAPM_AIF_OUT("PCM_RX", "AFE Playback",
13231 0, 0, 0, 0),
13232 SND_SOC_DAPM_AIF_IN("PCM_TX", "AFE Capture",
13233 0, 0, 0, 0),
13234 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_0", "Primary TDM0 Playback",
13235 0, 0, 0, 0),
13236 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_0", "Primary TDM0 Capture",
13237 0, 0, 0, 0),
13238 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_1", "Primary TDM1 Playback",
13239 0, 0, 0, 0),
13240 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_1", "Primary TDM1 Capture",
13241 0, 0, 0, 0),
13242 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_2", "Primary TDM2 Playback",
13243 0, 0, 0, 0),
13244 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_2", "Primary TDM2 Capture",
13245 0, 0, 0, 0),
13246 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_3", "Primary TDM3 Playback",
13247 0, 0, 0, 0),
13248 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_3", "Primary TDM3 Capture",
13249 0, 0, 0, 0),
13250 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_4", "Primary TDM4 Playback",
13251 0, 0, 0, 0),
13252 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_4", "Primary TDM4 Capture",
13253 0, 0, 0, 0),
13254 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_5", "Primary TDM5 Playback",
13255 0, 0, 0, 0),
13256 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_5", "Primary TDM5 Capture",
13257 0, 0, 0, 0),
13258 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_6", "Primary TDM6 Playback",
13259 0, 0, 0, 0),
13260 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_6", "Primary TDM6 Capture",
13261 0, 0, 0, 0),
13262 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_7", "Primary TDM7 Playback",
13263 0, 0, 0, 0),
13264 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_7", "Primary TDM7 Capture",
13265 0, 0, 0, 0),
13266 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_0", "Secondary TDM0 Playback",
13267 0, 0, 0, 0),
13268 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_0", "Secondary TDM0 Capture",
13269 0, 0, 0, 0),
13270 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_1", "Secondary TDM1 Playback",
13271 0, 0, 0, 0),
13272 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_1", "Secondary TDM1 Capture",
13273 0, 0, 0, 0),
13274 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_2", "Secondary TDM2 Playback",
13275 0, 0, 0, 0),
13276 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_2", "Secondary TDM2 Capture",
13277 0, 0, 0, 0),
13278 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_3", "Secondary TDM3 Playback",
13279 0, 0, 0, 0),
13280 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_3", "Secondary TDM3 Capture",
13281 0, 0, 0, 0),
13282 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_4", "Secondary TDM4 Playback",
13283 0, 0, 0, 0),
13284 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_4", "Secondary TDM4 Capture",
13285 0, 0, 0, 0),
13286 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_5", "Secondary TDM5 Playback",
13287 0, 0, 0, 0),
13288 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_5", "Secondary TDM5 Capture",
13289 0, 0, 0, 0),
13290 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_6", "Secondary TDM6 Playback",
13291 0, 0, 0, 0),
13292 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_6", "Secondary TDM6 Capture",
13293 0, 0, 0, 0),
13294 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_7", "Secondary TDM7 Playback",
13295 0, 0, 0, 0),
13296 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_7", "Secondary TDM7 Capture",
13297 0, 0, 0, 0),
13298 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_0", "Tertiary TDM0 Playback",
13299 0, 0, 0, 0),
13300 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_0", "Tertiary TDM0 Capture",
13301 0, 0, 0, 0),
13302 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_1", "Tertiary TDM1 Playback",
13303 0, 0, 0, 0),
13304 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_1", "Tertiary TDM1 Capture",
13305 0, 0, 0, 0),
13306 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_2", "Tertiary TDM2 Playback",
13307 0, 0, 0, 0),
13308 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_2", "Tertiary TDM2 Capture",
13309 0, 0, 0, 0),
13310 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_3", "Tertiary TDM3 Playback",
13311 0, 0, 0, 0),
13312 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_3", "Tertiary TDM3 Capture",
13313 0, 0, 0, 0),
13314 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_4", "Tertiary TDM4 Playback",
13315 0, 0, 0, 0),
13316 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_4", "Tertiary TDM4 Capture",
13317 0, 0, 0, 0),
13318 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_5", "Tertiary TDM5 Playback",
13319 0, 0, 0, 0),
13320 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_5", "Tertiary TDM5 Capture",
13321 0, 0, 0, 0),
13322 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_6", "Tertiary TDM6 Playback",
13323 0, 0, 0, 0),
13324 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_6", "Tertiary TDM6 Capture",
13325 0, 0, 0, 0),
13326 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_7", "Tertiary TDM7 Playback",
13327 0, 0, 0, 0),
13328 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_7", "Tertiary TDM7 Capture",
13329 0, 0, 0, 0),
13330 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_0", "Quaternary TDM0 Playback",
13331 0, 0, 0, 0),
13332 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_0", "Quaternary TDM0 Capture",
13333 0, 0, 0, 0),
13334 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_1", "Quaternary TDM1 Playback",
13335 0, 0, 0, 0),
13336 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_1", "Quaternary TDM1 Capture",
13337 0, 0, 0, 0),
13338 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_2", "Quaternary TDM2 Playback",
13339 0, 0, 0, 0),
13340 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_2", "Quaternary TDM2 Capture",
13341 0, 0, 0, 0),
13342 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_3", "Quaternary TDM3 Playback",
13343 0, 0, 0, 0),
13344 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_3", "Quaternary TDM3 Capture",
13345 0, 0, 0, 0),
13346 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_4", "Quaternary TDM4 Playback",
13347 0, 0, 0, 0),
13348 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_4", "Quaternary TDM4 Capture",
13349 0, 0, 0, 0),
13350 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_5", "Quaternary TDM5 Playback",
13351 0, 0, 0, 0),
13352 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_5", "Quaternary TDM5 Capture",
13353 0, 0, 0, 0),
13354 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_6", "Quaternary TDM6 Playback",
13355 0, 0, 0, 0),
13356 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_6", "Quaternary TDM6 Capture",
13357 0, 0, 0, 0),
13358 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_7", "Quaternary TDM7 Playback",
13359 0, 0, 0, 0),
13360 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_7", "Quaternary TDM7 Capture",
13361 0, 0, 0, 0),
Rohit Kumara5077932017-09-10 22:05:05 +053013362 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_0", "Quinary TDM0 Playback",
13363 0, 0, 0, 0),
13364 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_0", "Quinary TDM0 Capture",
13365 0, 0, 0, 0),
13366 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_1", "Quinary TDM1 Playback",
13367 0, 0, 0, 0),
13368 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_1", "Quinary TDM1 Capture",
13369 0, 0, 0, 0),
13370 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_2", "Quinary TDM2 Playback",
13371 0, 0, 0, 0),
13372 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_2", "Quinary TDM2 Capture",
13373 0, 0, 0, 0),
13374 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_3", "Quinary TDM3 Playback",
13375 0, 0, 0, 0),
13376 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_3", "Quinary TDM3 Capture",
13377 0, 0, 0, 0),
13378 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_4", "Quinary TDM4 Playback",
13379 0, 0, 0, 0),
13380 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_4", "Quinary TDM4 Capture",
13381 0, 0, 0, 0),
13382 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_5", "Quinary TDM5 Playback",
13383 0, 0, 0, 0),
13384 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_5", "Quinary TDM5 Capture",
13385 0, 0, 0, 0),
13386 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_6", "Quinary TDM6 Playback",
13387 0, 0, 0, 0),
13388 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_6", "Quinary TDM6 Capture",
13389 0, 0, 0, 0),
13390 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_7", "Quinary TDM7 Playback",
13391 0, 0, 0, 0),
13392 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_7", "Quinary TDM7 Capture",
13393 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013394 /* incall */
13395 SND_SOC_DAPM_AIF_OUT("VOICE_PLAYBACK_TX", "Voice Farend Playback",
13396 0, 0, 0, 0),
13397 SND_SOC_DAPM_AIF_OUT("VOICE2_PLAYBACK_TX", "Voice2 Farend Playback",
13398 0, 0, 0, 0),
13399 SND_SOC_DAPM_AIF_OUT("SLIMBUS_4_RX", "Slimbus4 Playback",
13400 0, 0, 0, 0),
13401 SND_SOC_DAPM_AIF_IN("INCALL_RECORD_TX", "Voice Uplink Capture",
13402 0, 0, 0, 0),
13403 SND_SOC_DAPM_AIF_IN("INCALL_RECORD_RX", "Voice Downlink Capture",
13404 0, 0, 0, 0),
13405 SND_SOC_DAPM_AIF_IN("SLIMBUS_4_TX", "Slimbus4 Capture",
13406 0, 0, 0, 0),
13407 SND_SOC_DAPM_AIF_IN("SENARY_TX", "Senary_mi2s Capture",
13408 0, 0, 0, 0),
13409 SND_SOC_DAPM_AIF_IN("INT5_MI2S_TX", "INT5 MI2S Capture",
13410 0, 0, 0, 0),
13411 SND_SOC_DAPM_AIF_IN("SLIMBUS_5_TX", "Slimbus5 Capture", 0, 0, 0, 0),
13412
13413 SND_SOC_DAPM_AIF_OUT("AUX_PCM_RX", "AUX PCM Playback", 0, 0, 0, 0),
13414 SND_SOC_DAPM_AIF_IN("AUX_PCM_TX", "AUX PCM Capture", 0, 0, 0, 0),
13415 SND_SOC_DAPM_AIF_OUT("SEC_AUX_PCM_RX", "Sec AUX PCM Playback",
13416 0, 0, 0, 0),
13417 SND_SOC_DAPM_AIF_IN("SEC_AUX_PCM_TX", "Sec AUX PCM Capture",
13418 0, 0, 0, 0),
13419 SND_SOC_DAPM_AIF_OUT("TERT_AUX_PCM_RX", "Tert AUX PCM Playback",
13420 0, 0, 0, 0),
13421 SND_SOC_DAPM_AIF_IN("TERT_AUX_PCM_TX", "Tert AUX PCM Capture",
13422 0, 0, 0, 0),
13423 SND_SOC_DAPM_AIF_OUT("QUAT_AUX_PCM_RX", "Quat AUX PCM Playback",
13424 0, 0, 0, 0),
13425 SND_SOC_DAPM_AIF_IN("QUAT_AUX_PCM_TX", "Quat AUX PCM Capture",
13426 0, 0, 0, 0),
Rohit Kumara5077932017-09-10 22:05:05 +053013427 SND_SOC_DAPM_AIF_OUT("QUIN_AUX_PCM_RX", "Quin AUX PCM Playback",
13428 0, 0, 0, 0),
13429 SND_SOC_DAPM_AIF_IN("QUIN_AUX_PCM_TX", "Quin AUX PCM Capture",
13430 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013431 SND_SOC_DAPM_AIF_IN("VOICE_STUB_DL", "VOICE_STUB Playback", 0, 0, 0, 0),
13432 SND_SOC_DAPM_AIF_OUT("VOICE_STUB_UL", "VOICE_STUB Capture", 0, 0, 0, 0),
13433 SND_SOC_DAPM_AIF_IN("VOICE2_STUB_DL", "VOICE2_STUB Playback",
13434 0, 0, 0, 0),
13435 SND_SOC_DAPM_AIF_OUT("VOICE2_STUB_UL", "VOICE2_STUB Capture",
13436 0, 0, 0, 0),
13437 SND_SOC_DAPM_AIF_IN("VOLTE_STUB_DL", "VOLTE_STUB Playback", 0, 0, 0, 0),
13438 SND_SOC_DAPM_AIF_OUT("VOLTE_STUB_UL", "VOLTE_STUB Capture", 0, 0, 0, 0),
13439 SND_SOC_DAPM_AIF_OUT("STUB_RX", "Stub Playback", 0, 0, 0, 0),
13440 SND_SOC_DAPM_AIF_IN("STUB_TX", "Stub Capture", 0, 0, 0, 0),
13441 SND_SOC_DAPM_AIF_OUT("SLIMBUS_1_RX", "Slimbus1 Playback", 0, 0, 0, 0),
13442 SND_SOC_DAPM_AIF_IN("SLIMBUS_1_TX", "Slimbus1 Capture", 0, 0, 0, 0),
13443 SND_SOC_DAPM_AIF_IN("STUB_1_TX", "Stub1 Capture", 0, 0, 0, 0),
13444 SND_SOC_DAPM_AIF_OUT("SLIMBUS_3_RX", "Slimbus3 Playback", 0, 0, 0, 0),
13445 SND_SOC_DAPM_AIF_IN("SLIMBUS_3_TX", "Slimbus3 Capture", 0, 0, 0, 0),
13446 /* In- call recording */
13447 SND_SOC_DAPM_AIF_OUT("SLIMBUS_6_RX", "Slimbus6 Playback", 0, 0, 0, 0),
13448 SND_SOC_DAPM_AIF_IN("SLIMBUS_6_TX", "Slimbus6 Capture", 0, 0, 0, 0),
Raja Mallik425e1d32018-05-20 19:21:10 +053013449 SND_SOC_DAPM_AIF_IN("AFE_LOOPBACK_TX", "AFE Loopback Capture",
13450 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013451 SND_SOC_DAPM_AIF_OUT("SLIMBUS_7_RX", "Slimbus7 Playback", 0, 0, 0, 0),
13452 SND_SOC_DAPM_AIF_IN("SLIMBUS_7_TX", "Slimbus7 Capture", 0, 0, 0, 0),
13453
13454 SND_SOC_DAPM_AIF_OUT("SLIMBUS_8_RX", "Slimbus8 Playback", 0, 0, 0, 0),
13455 SND_SOC_DAPM_AIF_IN("SLIMBUS_8_TX", "Slimbus8 Capture", 0, 0, 0, 0),
13456 SND_SOC_DAPM_AIF_OUT("USB_AUDIO_RX", "USB Audio Playback", 0, 0, 0, 0),
13457 SND_SOC_DAPM_AIF_IN("USB_AUDIO_TX", "USB Audio Capture", 0, 0, 0, 0),
13458
13459 /* Switch Definitions */
13460 SND_SOC_DAPM_SWITCH("SLIMBUS_DL_HL", SND_SOC_NOPM, 0, 0,
13461 &slim_fm_switch_mixer_controls),
13462 SND_SOC_DAPM_SWITCH("SLIMBUS1_DL_HL", SND_SOC_NOPM, 0, 0,
13463 &slim1_fm_switch_mixer_controls),
13464 SND_SOC_DAPM_SWITCH("SLIMBUS3_DL_HL", SND_SOC_NOPM, 0, 0,
13465 &slim3_fm_switch_mixer_controls),
13466 SND_SOC_DAPM_SWITCH("SLIMBUS4_DL_HL", SND_SOC_NOPM, 0, 0,
13467 &slim4_fm_switch_mixer_controls),
13468 SND_SOC_DAPM_SWITCH("SLIMBUS6_DL_HL", SND_SOC_NOPM, 0, 0,
13469 &slim6_fm_switch_mixer_controls),
13470 SND_SOC_DAPM_SWITCH("PCM_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13471 &pcm_rx_switch_mixer_controls),
13472 SND_SOC_DAPM_SWITCH("INT0_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13473 &int0_mi2s_rx_switch_mixer_controls),
13474 SND_SOC_DAPM_SWITCH("INT4_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13475 &int4_mi2s_rx_switch_mixer_controls),
13476 SND_SOC_DAPM_SWITCH("PRI_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13477 &pri_mi2s_rx_switch_mixer_controls),
13478 SND_SOC_DAPM_SWITCH("SEC_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13479 &sec_mi2s_rx_switch_mixer_controls),
13480 SND_SOC_DAPM_SWITCH("TERT_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13481 &tert_mi2s_rx_switch_mixer_controls),
13482 SND_SOC_DAPM_SWITCH("QUAT_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13483 &quat_mi2s_rx_switch_mixer_controls),
Rohit Kumara5077932017-09-10 22:05:05 +053013484 SND_SOC_DAPM_SWITCH("QUIN_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13485 &quin_mi2s_rx_switch_mixer_controls),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013486 SND_SOC_DAPM_SWITCH("HFP_PRI_AUX_UL_HL", SND_SOC_NOPM, 0, 0,
13487 &hfp_pri_aux_switch_mixer_controls),
13488 SND_SOC_DAPM_SWITCH("HFP_AUX_UL_HL", SND_SOC_NOPM, 0, 0,
13489 &hfp_aux_switch_mixer_controls),
13490 SND_SOC_DAPM_SWITCH("HFP_INT_UL_HL", SND_SOC_NOPM, 0, 0,
13491 &hfp_int_switch_mixer_controls),
13492 SND_SOC_DAPM_SWITCH("HFP_SLIM7_UL_HL", SND_SOC_NOPM, 0, 0,
13493 &hfp_slim7_switch_mixer_controls),
13494 SND_SOC_DAPM_SWITCH("USB_DL_HL", SND_SOC_NOPM, 0, 0,
13495 &usb_switch_mixer_controls),
13496
13497 /* Mixer definitions */
13498 SND_SOC_DAPM_MIXER("PRI_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13499 pri_i2s_rx_mixer_controls, ARRAY_SIZE(pri_i2s_rx_mixer_controls)),
13500 SND_SOC_DAPM_MIXER("SEC_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13501 sec_i2s_rx_mixer_controls, ARRAY_SIZE(sec_i2s_rx_mixer_controls)),
13502 SND_SOC_DAPM_MIXER("SLIMBUS_0_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13503 slimbus_rx_mixer_controls, ARRAY_SIZE(slimbus_rx_mixer_controls)),
13504 SND_SOC_DAPM_MIXER("SLIMBUS_2_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13505 slimbus_2_rx_mixer_controls, ARRAY_SIZE(slimbus_2_rx_mixer_controls)),
13506 SND_SOC_DAPM_MIXER("SLIMBUS_5_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13507 slimbus_5_rx_mixer_controls, ARRAY_SIZE(slimbus_5_rx_mixer_controls)),
13508 SND_SOC_DAPM_MIXER("SLIMBUS_7_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13509 slimbus_7_rx_mixer_controls, ARRAY_SIZE(slimbus_7_rx_mixer_controls)),
13510 SND_SOC_DAPM_MIXER("HDMI Mixer", SND_SOC_NOPM, 0, 0,
13511 hdmi_mixer_controls, ARRAY_SIZE(hdmi_mixer_controls)),
13512 SND_SOC_DAPM_MIXER("DISPLAY_PORT Mixer", SND_SOC_NOPM, 0, 0,
13513 display_port_mixer_controls, ARRAY_SIZE(display_port_mixer_controls)),
13514 SND_SOC_DAPM_MIXER("SPDIF_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13515 spdif_rx_mixer_controls, ARRAY_SIZE(spdif_rx_mixer_controls)),
13516 SND_SOC_DAPM_MIXER("MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13517 mi2s_rx_mixer_controls, ARRAY_SIZE(mi2s_rx_mixer_controls)),
13518 SND_SOC_DAPM_MIXER("QUAT_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13519 quaternary_mi2s_rx_mixer_controls,
13520 ARRAY_SIZE(quaternary_mi2s_rx_mixer_controls)),
13521 SND_SOC_DAPM_MIXER("TERT_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13522 tertiary_mi2s_rx_mixer_controls,
13523 ARRAY_SIZE(tertiary_mi2s_rx_mixer_controls)),
13524 SND_SOC_DAPM_MIXER("SEC_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13525 secondary_mi2s_rx_mixer_controls,
13526 ARRAY_SIZE(secondary_mi2s_rx_mixer_controls)),
13527 SND_SOC_DAPM_MIXER("SEC_MI2S_RX_SD1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13528 secondary_mi2s_rx2_mixer_controls,
13529 ARRAY_SIZE(secondary_mi2s_rx2_mixer_controls)),
13530 SND_SOC_DAPM_MIXER("PRI_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13531 primary_mi2s_rx_mixer_controls,
13532 ARRAY_SIZE(primary_mi2s_rx_mixer_controls)),
13533 SND_SOC_DAPM_MIXER("INT0_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13534 int0_mi2s_rx_mixer_controls,
13535 ARRAY_SIZE(int0_mi2s_rx_mixer_controls)),
13536 SND_SOC_DAPM_MIXER("INT4_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13537 int4_mi2s_rx_mixer_controls,
13538 ARRAY_SIZE(int4_mi2s_rx_mixer_controls)),
13539 SND_SOC_DAPM_MIXER("QUIN_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13540 quinary_mi2s_rx_mixer_controls,
13541 ARRAY_SIZE(quinary_mi2s_rx_mixer_controls)),
13542 SND_SOC_DAPM_MIXER("PRI_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13543 pri_tdm_rx_0_mixer_controls,
13544 ARRAY_SIZE(pri_tdm_rx_0_mixer_controls)),
13545 SND_SOC_DAPM_MIXER("PRI_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13546 pri_tdm_rx_1_mixer_controls,
13547 ARRAY_SIZE(pri_tdm_rx_1_mixer_controls)),
13548 SND_SOC_DAPM_MIXER("PRI_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13549 pri_tdm_rx_2_mixer_controls,
13550 ARRAY_SIZE(pri_tdm_rx_2_mixer_controls)),
13551 SND_SOC_DAPM_MIXER("PRI_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
13552 pri_tdm_rx_3_mixer_controls,
13553 ARRAY_SIZE(pri_tdm_rx_3_mixer_controls)),
13554 SND_SOC_DAPM_MIXER("PRI_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13555 pri_tdm_tx_0_mixer_controls,
13556 ARRAY_SIZE(pri_tdm_tx_0_mixer_controls)),
13557 SND_SOC_DAPM_MIXER("SEC_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13558 sec_tdm_rx_0_mixer_controls,
13559 ARRAY_SIZE(sec_tdm_rx_0_mixer_controls)),
13560 SND_SOC_DAPM_MIXER("SEC_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13561 sec_tdm_rx_1_mixer_controls,
13562 ARRAY_SIZE(sec_tdm_rx_1_mixer_controls)),
13563 SND_SOC_DAPM_MIXER("SEC_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13564 sec_tdm_rx_2_mixer_controls,
13565 ARRAY_SIZE(sec_tdm_rx_2_mixer_controls)),
13566 SND_SOC_DAPM_MIXER("SEC_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
13567 sec_tdm_rx_3_mixer_controls,
13568 ARRAY_SIZE(sec_tdm_rx_3_mixer_controls)),
13569 SND_SOC_DAPM_MIXER("SEC_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13570 sec_tdm_tx_0_mixer_controls,
13571 ARRAY_SIZE(sec_tdm_tx_0_mixer_controls)),
13572 SND_SOC_DAPM_MIXER("TERT_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13573 tert_tdm_rx_0_mixer_controls,
13574 ARRAY_SIZE(tert_tdm_rx_0_mixer_controls)),
13575 SND_SOC_DAPM_MIXER("TERT_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13576 tert_tdm_tx_0_mixer_controls,
13577 ARRAY_SIZE(tert_tdm_tx_0_mixer_controls)),
13578 SND_SOC_DAPM_MIXER("TERT_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13579 tert_tdm_rx_1_mixer_controls,
13580 ARRAY_SIZE(tert_tdm_rx_1_mixer_controls)),
13581 SND_SOC_DAPM_MIXER("TERT_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13582 tert_tdm_rx_2_mixer_controls,
13583 ARRAY_SIZE(tert_tdm_rx_2_mixer_controls)),
13584 SND_SOC_DAPM_MIXER("TERT_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
13585 tert_tdm_rx_3_mixer_controls,
13586 ARRAY_SIZE(tert_tdm_rx_3_mixer_controls)),
13587 SND_SOC_DAPM_MIXER("TERT_TDM_RX_4 Audio Mixer", SND_SOC_NOPM, 0, 0,
13588 tert_tdm_rx_4_mixer_controls,
13589 ARRAY_SIZE(tert_tdm_rx_4_mixer_controls)),
13590 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13591 quat_tdm_rx_0_mixer_controls,
13592 ARRAY_SIZE(quat_tdm_rx_0_mixer_controls)),
13593 SND_SOC_DAPM_MIXER("QUAT_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13594 quat_tdm_tx_0_mixer_controls,
13595 ARRAY_SIZE(quat_tdm_tx_0_mixer_controls)),
13596 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13597 quat_tdm_rx_1_mixer_controls,
13598 ARRAY_SIZE(quat_tdm_rx_1_mixer_controls)),
13599 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13600 quat_tdm_rx_2_mixer_controls,
13601 ARRAY_SIZE(quat_tdm_rx_2_mixer_controls)),
13602 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
13603 quat_tdm_rx_3_mixer_controls,
13604 ARRAY_SIZE(quat_tdm_rx_3_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013605 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13606 quin_tdm_rx_0_mixer_controls,
13607 ARRAY_SIZE(quin_tdm_rx_0_mixer_controls)),
13608 SND_SOC_DAPM_MIXER("QUIN_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13609 quin_tdm_tx_0_mixer_controls,
13610 ARRAY_SIZE(quin_tdm_tx_0_mixer_controls)),
13611 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13612 quin_tdm_rx_1_mixer_controls,
13613 ARRAY_SIZE(quin_tdm_rx_1_mixer_controls)),
13614 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13615 quin_tdm_rx_2_mixer_controls,
13616 ARRAY_SIZE(quin_tdm_rx_2_mixer_controls)),
13617 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
13618 quin_tdm_rx_3_mixer_controls,
13619 ARRAY_SIZE(quin_tdm_rx_3_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013620 SND_SOC_DAPM_MIXER("MultiMedia1 Mixer", SND_SOC_NOPM, 0, 0,
13621 mmul1_mixer_controls, ARRAY_SIZE(mmul1_mixer_controls)),
13622 SND_SOC_DAPM_MIXER("MultiMedia2 Mixer", SND_SOC_NOPM, 0, 0,
13623 mmul2_mixer_controls, ARRAY_SIZE(mmul2_mixer_controls)),
13624 SND_SOC_DAPM_MIXER("MultiMedia3 Mixer", SND_SOC_NOPM, 0, 0,
13625 mmul3_mixer_controls, ARRAY_SIZE(mmul3_mixer_controls)),
13626 SND_SOC_DAPM_MIXER("MultiMedia4 Mixer", SND_SOC_NOPM, 0, 0,
13627 mmul4_mixer_controls, ARRAY_SIZE(mmul4_mixer_controls)),
13628 SND_SOC_DAPM_MIXER("MultiMedia5 Mixer", SND_SOC_NOPM, 0, 0,
13629 mmul5_mixer_controls, ARRAY_SIZE(mmul5_mixer_controls)),
13630 SND_SOC_DAPM_MIXER("MultiMedia6 Mixer", SND_SOC_NOPM, 0, 0,
13631 mmul6_mixer_controls, ARRAY_SIZE(mmul6_mixer_controls)),
13632 SND_SOC_DAPM_MIXER("MultiMedia8 Mixer", SND_SOC_NOPM, 0, 0,
13633 mmul8_mixer_controls, ARRAY_SIZE(mmul8_mixer_controls)),
13634 SND_SOC_DAPM_MIXER("MultiMedia9 Mixer", SND_SOC_NOPM, 0, 0,
13635 mmul9_mixer_controls, ARRAY_SIZE(mmul9_mixer_controls)),
Laxminath Kasam38070be2017-08-17 18:21:59 +053013636 SND_SOC_DAPM_MIXER("MultiMedia10 Mixer", SND_SOC_NOPM, 0, 0,
13637 mmul10_mixer_controls, ARRAY_SIZE(mmul10_mixer_controls)),
Asish Bhattacharya34504582017-08-08 12:55:01 +053013638 SND_SOC_DAPM_MIXER("MultiMedia16 Mixer", SND_SOC_NOPM, 0, 0,
13639 mmul16_mixer_controls, ARRAY_SIZE(mmul16_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013640 SND_SOC_DAPM_MIXER("MultiMedia17 Mixer", SND_SOC_NOPM, 0, 0,
13641 mmul17_mixer_controls, ARRAY_SIZE(mmul17_mixer_controls)),
13642 SND_SOC_DAPM_MIXER("MultiMedia18 Mixer", SND_SOC_NOPM, 0, 0,
13643 mmul18_mixer_controls, ARRAY_SIZE(mmul18_mixer_controls)),
13644 SND_SOC_DAPM_MIXER("MultiMedia19 Mixer", SND_SOC_NOPM, 0, 0,
13645 mmul19_mixer_controls, ARRAY_SIZE(mmul19_mixer_controls)),
13646 SND_SOC_DAPM_MIXER("MultiMedia20 Mixer", SND_SOC_NOPM, 0, 0,
13647 mmul20_mixer_controls, ARRAY_SIZE(mmul20_mixer_controls)),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053013648 SND_SOC_DAPM_MIXER("MultiMedia28 Mixer", SND_SOC_NOPM, 0, 0,
13649 mmul28_mixer_controls, ARRAY_SIZE(mmul28_mixer_controls)),
13650 SND_SOC_DAPM_MIXER("MultiMedia29 Mixer", SND_SOC_NOPM, 0, 0,
13651 mmul29_mixer_controls, ARRAY_SIZE(mmul29_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013652 SND_SOC_DAPM_MIXER("AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13653 auxpcm_rx_mixer_controls, ARRAY_SIZE(auxpcm_rx_mixer_controls)),
13654 SND_SOC_DAPM_MIXER("SEC_AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13655 sec_auxpcm_rx_mixer_controls, ARRAY_SIZE(sec_auxpcm_rx_mixer_controls)),
13656 SND_SOC_DAPM_MIXER("TERT_AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13657 tert_auxpcm_rx_mixer_controls,
13658 ARRAY_SIZE(tert_auxpcm_rx_mixer_controls)),
13659 SND_SOC_DAPM_MIXER("QUAT_AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13660 quat_auxpcm_rx_mixer_controls,
13661 ARRAY_SIZE(quat_auxpcm_rx_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013662 SND_SOC_DAPM_MIXER("QUIN_AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13663 quin_auxpcm_rx_mixer_controls,
13664 ARRAY_SIZE(quin_auxpcm_rx_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013665 /* incall */
13666 SND_SOC_DAPM_MIXER("Incall_Music Audio Mixer", SND_SOC_NOPM, 0, 0,
13667 incall_music_delivery_mixer_controls,
13668 ARRAY_SIZE(incall_music_delivery_mixer_controls)),
13669 SND_SOC_DAPM_MIXER("Incall_Music_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13670 incall_music2_delivery_mixer_controls,
13671 ARRAY_SIZE(incall_music2_delivery_mixer_controls)),
13672 SND_SOC_DAPM_MIXER("SLIMBUS_4_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13673 slimbus_4_rx_mixer_controls,
13674 ARRAY_SIZE(slimbus_4_rx_mixer_controls)),
13675 SND_SOC_DAPM_MIXER("SLIMBUS_6_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13676 slimbus_6_rx_mixer_controls,
13677 ARRAY_SIZE(slimbus_6_rx_mixer_controls)),
13678 SND_SOC_DAPM_MIXER("USB_AUDIO_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13679 usb_audio_rx_mixer_controls,
13680 ARRAY_SIZE(usb_audio_rx_mixer_controls)),
13681 /* Voice Mixer */
13682 SND_SOC_DAPM_MIXER("PRI_RX_Voice Mixer",
13683 SND_SOC_NOPM, 0, 0, pri_rx_voice_mixer_controls,
13684 ARRAY_SIZE(pri_rx_voice_mixer_controls)),
13685 SND_SOC_DAPM_MIXER("SEC_RX_Voice Mixer",
13686 SND_SOC_NOPM, 0, 0,
13687 sec_i2s_rx_voice_mixer_controls,
13688 ARRAY_SIZE(sec_i2s_rx_voice_mixer_controls)),
13689 SND_SOC_DAPM_MIXER("SEC_MI2S_RX_Voice Mixer",
13690 SND_SOC_NOPM, 0, 0,
13691 sec_mi2s_rx_voice_mixer_controls,
13692 ARRAY_SIZE(sec_mi2s_rx_voice_mixer_controls)),
13693 SND_SOC_DAPM_MIXER("SLIM_0_RX_Voice Mixer",
13694 SND_SOC_NOPM, 0, 0,
13695 slimbus_rx_voice_mixer_controls,
13696 ARRAY_SIZE(slimbus_rx_voice_mixer_controls)),
13697 SND_SOC_DAPM_MIXER("INTERNAL_BT_SCO_RX_Voice Mixer",
13698 SND_SOC_NOPM, 0, 0,
13699 bt_sco_rx_voice_mixer_controls,
13700 ARRAY_SIZE(bt_sco_rx_voice_mixer_controls)),
13701 SND_SOC_DAPM_MIXER("AFE_PCM_RX_Voice Mixer",
13702 SND_SOC_NOPM, 0, 0,
13703 afe_pcm_rx_voice_mixer_controls,
13704 ARRAY_SIZE(afe_pcm_rx_voice_mixer_controls)),
13705 SND_SOC_DAPM_MIXER("AUX_PCM_RX_Voice Mixer",
13706 SND_SOC_NOPM, 0, 0,
13707 aux_pcm_rx_voice_mixer_controls,
13708 ARRAY_SIZE(aux_pcm_rx_voice_mixer_controls)),
13709 SND_SOC_DAPM_MIXER("SEC_AUX_PCM_RX_Voice Mixer",
13710 SND_SOC_NOPM, 0, 0,
13711 sec_aux_pcm_rx_voice_mixer_controls,
13712 ARRAY_SIZE(sec_aux_pcm_rx_voice_mixer_controls)),
13713 SND_SOC_DAPM_MIXER("TERT_AUX_PCM_RX_Voice Mixer",
13714 SND_SOC_NOPM, 0, 0,
13715 tert_aux_pcm_rx_voice_mixer_controls,
13716 ARRAY_SIZE(tert_aux_pcm_rx_voice_mixer_controls)),
13717 SND_SOC_DAPM_MIXER("QUAT_AUX_PCM_RX_Voice Mixer",
13718 SND_SOC_NOPM, 0, 0,
13719 quat_aux_pcm_rx_voice_mixer_controls,
13720 ARRAY_SIZE(quat_aux_pcm_rx_voice_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013721 SND_SOC_DAPM_MIXER("QUIN_AUX_PCM_RX_Voice Mixer",
13722 SND_SOC_NOPM, 0, 0,
13723 quin_aux_pcm_rx_voice_mixer_controls,
13724 ARRAY_SIZE(quin_aux_pcm_rx_voice_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013725 SND_SOC_DAPM_MIXER("HDMI_RX_Voice Mixer",
13726 SND_SOC_NOPM, 0, 0,
13727 hdmi_rx_voice_mixer_controls,
13728 ARRAY_SIZE(hdmi_rx_voice_mixer_controls)),
13729 SND_SOC_DAPM_MIXER("MI2S_RX_Voice Mixer",
13730 SND_SOC_NOPM, 0, 0,
13731 mi2s_rx_voice_mixer_controls,
13732 ARRAY_SIZE(mi2s_rx_voice_mixer_controls)),
13733 SND_SOC_DAPM_MIXER("PRI_MI2S_RX_Voice Mixer",
13734 SND_SOC_NOPM, 0, 0,
13735 pri_mi2s_rx_voice_mixer_controls,
13736 ARRAY_SIZE(pri_mi2s_rx_voice_mixer_controls)),
13737 SND_SOC_DAPM_MIXER("INT0_MI2S_RX_Voice Mixer",
13738 SND_SOC_NOPM, 0, 0,
13739 int0_mi2s_rx_voice_mixer_controls,
13740 ARRAY_SIZE(int0_mi2s_rx_voice_mixer_controls)),
13741 SND_SOC_DAPM_MIXER("INT4_MI2S_RX_Voice Mixer",
13742 SND_SOC_NOPM, 0, 0,
13743 int4_mi2s_rx_voice_mixer_controls,
13744 ARRAY_SIZE(int4_mi2s_rx_voice_mixer_controls)),
13745 SND_SOC_DAPM_MIXER("TERT_MI2S_RX_Voice Mixer",
13746 SND_SOC_NOPM, 0, 0,
13747 tert_mi2s_rx_voice_mixer_controls,
13748 ARRAY_SIZE(tert_mi2s_rx_voice_mixer_controls)),
13749 SND_SOC_DAPM_MIXER("QUAT_MI2S_RX_Voice Mixer",
13750 SND_SOC_NOPM, 0, 0,
13751 quat_mi2s_rx_voice_mixer_controls,
13752 ARRAY_SIZE(quat_mi2s_rx_voice_mixer_controls)),
13753 SND_SOC_DAPM_MIXER("QUIN_MI2S_RX_Voice Mixer",
13754 SND_SOC_NOPM, 0, 0,
13755 quin_mi2s_rx_voice_mixer_controls,
13756 ARRAY_SIZE(quin_mi2s_rx_voice_mixer_controls)),
Raja Mallik321d5712018-05-04 17:22:11 +053013757 SND_SOC_DAPM_MIXER("PRI_TDM_RX_0_Voice Mixer",
13758 SND_SOC_NOPM, 0, 0,
13759 pri_tdm_rx_0_voice_mixer_controls,
13760 ARRAY_SIZE(pri_tdm_rx_0_voice_mixer_controls)),
13761 SND_SOC_DAPM_MIXER("PRI_TDM_RX_1_Voice Mixer",
13762 SND_SOC_NOPM, 0, 0,
13763 pri_tdm_rx_1_voice_mixer_controls,
13764 ARRAY_SIZE(pri_tdm_rx_1_voice_mixer_controls)),
13765 SND_SOC_DAPM_MIXER("PRI_TDM_RX_2_Voice Mixer",
13766 SND_SOC_NOPM, 0, 0,
13767 pri_tdm_rx_2_voice_mixer_controls,
13768 ARRAY_SIZE(pri_tdm_rx_2_voice_mixer_controls)),
13769 SND_SOC_DAPM_MIXER("PRI_TDM_RX_3_Voice Mixer",
13770 SND_SOC_NOPM, 0, 0,
13771 pri_tdm_rx_3_voice_mixer_controls,
13772 ARRAY_SIZE(pri_tdm_rx_3_voice_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013773 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_2_Voice Mixer",
13774 SND_SOC_NOPM, 0, 0,
13775 quat_tdm_rx_2_voice_mixer_controls,
13776 ARRAY_SIZE(quat_tdm_rx_2_voice_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013777 SND_SOC_DAPM_MIXER("Voip_Tx Mixer",
13778 SND_SOC_NOPM, 0, 0, tx_voip_mixer_controls,
13779 ARRAY_SIZE(tx_voip_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013780 SND_SOC_DAPM_MIXER("VoiceMMode1_Tx Mixer",
13781 SND_SOC_NOPM, 0, 0, tx_voicemmode1_mixer_controls,
13782 ARRAY_SIZE(tx_voicemmode1_mixer_controls)),
13783 SND_SOC_DAPM_MIXER("VoiceMMode2_Tx Mixer",
13784 SND_SOC_NOPM, 0, 0, tx_voicemmode2_mixer_controls,
13785 ARRAY_SIZE(tx_voicemmode2_mixer_controls)),
13786 SND_SOC_DAPM_MIXER("INTERNAL_BT_SCO_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13787 int_bt_sco_rx_mixer_controls, ARRAY_SIZE(int_bt_sco_rx_mixer_controls)),
13788 SND_SOC_DAPM_MIXER("INTERNAL_A2DP_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13789 int_bt_a2dp_rx_mixer_controls,
13790 ARRAY_SIZE(int_bt_a2dp_rx_mixer_controls)),
13791 SND_SOC_DAPM_MIXER("INTERNAL_FM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13792 int_fm_rx_mixer_controls, ARRAY_SIZE(int_fm_rx_mixer_controls)),
13793 SND_SOC_DAPM_MIXER("AFE_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13794 afe_pcm_rx_mixer_controls, ARRAY_SIZE(afe_pcm_rx_mixer_controls)),
13795 SND_SOC_DAPM_MIXER("Voice Stub Tx Mixer", SND_SOC_NOPM, 0, 0,
13796 tx_voice_stub_mixer_controls, ARRAY_SIZE(tx_voice_stub_mixer_controls)),
13797 SND_SOC_DAPM_MIXER("Voice2 Stub Tx Mixer", SND_SOC_NOPM, 0, 0,
13798 tx_voice2_stub_mixer_controls,
13799 ARRAY_SIZE(tx_voice2_stub_mixer_controls)),
13800 SND_SOC_DAPM_MIXER("VoLTE Stub Tx Mixer", SND_SOC_NOPM, 0, 0,
13801 tx_volte_stub_mixer_controls, ARRAY_SIZE(tx_volte_stub_mixer_controls)),
13802 SND_SOC_DAPM_MIXER("STUB_RX Mixer", SND_SOC_NOPM, 0, 0,
13803 stub_rx_mixer_controls, ARRAY_SIZE(stub_rx_mixer_controls)),
13804 SND_SOC_DAPM_MIXER("SLIMBUS_1_RX Mixer", SND_SOC_NOPM, 0, 0,
13805 slimbus_1_rx_mixer_controls, ARRAY_SIZE(slimbus_1_rx_mixer_controls)),
13806 SND_SOC_DAPM_MIXER("SLIMBUS_3_RX_Voice Mixer", SND_SOC_NOPM, 0, 0,
13807 slimbus_3_rx_mixer_controls, ARRAY_SIZE(slimbus_3_rx_mixer_controls)),
13808 SND_SOC_DAPM_MIXER("SLIM_6_RX_Voice Mixer",
13809 SND_SOC_NOPM, 0, 0,
13810 slimbus_6_rx_voice_mixer_controls,
13811 ARRAY_SIZE(slimbus_6_rx_voice_mixer_controls)),
13812 SND_SOC_DAPM_MIXER("SLIM_7_RX_Voice Mixer", SND_SOC_NOPM, 0, 0,
13813 slimbus_7_rx_voice_mixer_controls,
13814 ARRAY_SIZE(slimbus_7_rx_voice_mixer_controls)),
13815 SND_SOC_DAPM_MIXER("SLIM_8_RX_Voice Mixer", SND_SOC_NOPM, 0, 0,
13816 slimbus_8_rx_voice_mixer_controls,
13817 ARRAY_SIZE(slimbus_8_rx_voice_mixer_controls)),
13818 /* port mixer */
13819 SND_SOC_DAPM_MIXER("SLIMBUS_0_RX Port Mixer",
13820 SND_SOC_NOPM, 0, 0, sbus_0_rx_port_mixer_controls,
13821 ARRAY_SIZE(sbus_0_rx_port_mixer_controls)),
13822 SND_SOC_DAPM_MIXER("AUX_PCM_RX Port Mixer",
13823 SND_SOC_NOPM, 0, 0, aux_pcm_rx_port_mixer_controls,
13824 ARRAY_SIZE(aux_pcm_rx_port_mixer_controls)),
13825 SND_SOC_DAPM_MIXER("SEC_AUXPCM_RX Port Mixer",
13826 SND_SOC_NOPM, 0, 0, sec_auxpcm_rx_port_mixer_controls,
13827 ARRAY_SIZE(sec_auxpcm_rx_port_mixer_controls)),
13828 SND_SOC_DAPM_MIXER("TERT_AUXPCM_RX Port Mixer",
13829 SND_SOC_NOPM, 0, 0, tert_auxpcm_rx_port_mixer_controls,
13830 ARRAY_SIZE(tert_auxpcm_rx_port_mixer_controls)),
13831 SND_SOC_DAPM_MIXER("QUAT_AUXPCM_RX Port Mixer",
13832 SND_SOC_NOPM, 0, 0, quat_auxpcm_rx_port_mixer_controls,
13833 ARRAY_SIZE(quat_auxpcm_rx_port_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013834 SND_SOC_DAPM_MIXER("QUIN_AUXPCM_RX Port Mixer",
13835 SND_SOC_NOPM, 0, 0, quin_auxpcm_rx_port_mixer_controls,
13836 ARRAY_SIZE(quin_auxpcm_rx_port_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013837 SND_SOC_DAPM_MIXER("SLIMBUS_1_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13838 sbus_1_rx_port_mixer_controls,
13839 ARRAY_SIZE(sbus_1_rx_port_mixer_controls)),
13840 SND_SOC_DAPM_MIXER("INTERNAL_BT_SCO_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13841 bt_sco_rx_port_mixer_controls,
13842 ARRAY_SIZE(bt_sco_rx_port_mixer_controls)),
13843 SND_SOC_DAPM_MIXER("AFE_PCM_RX Port Mixer",
13844 SND_SOC_NOPM, 0, 0, afe_pcm_rx_port_mixer_controls,
13845 ARRAY_SIZE(afe_pcm_rx_port_mixer_controls)),
13846 SND_SOC_DAPM_MIXER("HDMI_RX Port Mixer",
13847 SND_SOC_NOPM, 0, 0, hdmi_rx_port_mixer_controls,
13848 ARRAY_SIZE(hdmi_rx_port_mixer_controls)),
13849 SND_SOC_DAPM_MIXER("DISPLAY_PORT_RX Port Mixer",
13850 SND_SOC_NOPM, 0, 0, display_port_rx_port_mixer_controls,
13851 ARRAY_SIZE(display_port_rx_port_mixer_controls)),
13852 SND_SOC_DAPM_MIXER("SEC_I2S_RX Port Mixer",
13853 SND_SOC_NOPM, 0, 0, sec_i2s_rx_port_mixer_controls,
13854 ARRAY_SIZE(sec_i2s_rx_port_mixer_controls)),
13855 SND_SOC_DAPM_MIXER("SLIMBUS_3_RX Port Mixer",
13856 SND_SOC_NOPM, 0, 0, sbus_3_rx_port_mixer_controls,
13857 ARRAY_SIZE(sbus_3_rx_port_mixer_controls)),
13858 SND_SOC_DAPM_MIXER("SLIMBUS_6_RX Port Mixer",
13859 SND_SOC_NOPM, 0, 0, sbus_6_rx_port_mixer_controls,
13860 ARRAY_SIZE(sbus_6_rx_port_mixer_controls)),
13861 SND_SOC_DAPM_MIXER("MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13862 mi2s_rx_port_mixer_controls, ARRAY_SIZE(mi2s_rx_port_mixer_controls)),
13863 SND_SOC_DAPM_MIXER("PRI_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13864 primary_mi2s_rx_port_mixer_controls,
13865 ARRAY_SIZE(primary_mi2s_rx_port_mixer_controls)),
13866 SND_SOC_DAPM_MIXER("SEC_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13867 sec_mi2s_rx_port_mixer_controls,
13868 ARRAY_SIZE(sec_mi2s_rx_port_mixer_controls)),
13869 SND_SOC_DAPM_MIXER("TERT_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13870 tert_mi2s_rx_port_mixer_controls,
13871 ARRAY_SIZE(tert_mi2s_rx_port_mixer_controls)),
13872 SND_SOC_DAPM_MIXER("QUAT_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13873 quat_mi2s_rx_port_mixer_controls,
13874 ARRAY_SIZE(quat_mi2s_rx_port_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013875 SND_SOC_DAPM_MIXER("QUIN_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13876 quin_mi2s_rx_port_mixer_controls,
13877 ARRAY_SIZE(quin_mi2s_rx_port_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013878 SND_SOC_DAPM_MIXER("PRI_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
13879 pri_tdm_rx_0_port_mixer_controls,
13880 ARRAY_SIZE(pri_tdm_rx_0_port_mixer_controls)),
13881 SND_SOC_DAPM_MIXER("PRI_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
13882 pri_tdm_rx_1_port_mixer_controls,
13883 ARRAY_SIZE(pri_tdm_rx_1_port_mixer_controls)),
13884 SND_SOC_DAPM_MIXER("PRI_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
13885 pri_tdm_rx_2_port_mixer_controls,
13886 ARRAY_SIZE(pri_tdm_rx_2_port_mixer_controls)),
13887 SND_SOC_DAPM_MIXER("PRI_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
13888 pri_tdm_rx_3_port_mixer_controls,
13889 ARRAY_SIZE(pri_tdm_rx_3_port_mixer_controls)),
13890 SND_SOC_DAPM_MIXER("SEC_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
13891 sec_tdm_rx_0_port_mixer_controls,
13892 ARRAY_SIZE(sec_tdm_rx_0_port_mixer_controls)),
13893 SND_SOC_DAPM_MIXER("SEC_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
13894 sec_tdm_rx_1_port_mixer_controls,
13895 ARRAY_SIZE(sec_tdm_rx_1_port_mixer_controls)),
13896 SND_SOC_DAPM_MIXER("SEC_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
13897 sec_tdm_rx_2_port_mixer_controls,
13898 ARRAY_SIZE(sec_tdm_rx_2_port_mixer_controls)),
13899 SND_SOC_DAPM_MIXER("SEC_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
13900 sec_tdm_rx_3_port_mixer_controls,
13901 ARRAY_SIZE(sec_tdm_rx_3_port_mixer_controls)),
13902 SND_SOC_DAPM_MIXER("TERT_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
13903 tert_tdm_rx_0_port_mixer_controls,
13904 ARRAY_SIZE(tert_tdm_rx_0_port_mixer_controls)),
13905 SND_SOC_DAPM_MIXER("TERT_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
13906 tert_tdm_rx_1_port_mixer_controls,
13907 ARRAY_SIZE(tert_tdm_rx_1_port_mixer_controls)),
13908 SND_SOC_DAPM_MIXER("TERT_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
13909 tert_tdm_rx_2_port_mixer_controls,
13910 ARRAY_SIZE(tert_tdm_rx_2_port_mixer_controls)),
13911 SND_SOC_DAPM_MIXER("TERT_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
13912 tert_tdm_rx_3_port_mixer_controls,
13913 ARRAY_SIZE(tert_tdm_rx_3_port_mixer_controls)),
13914 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
13915 quat_tdm_rx_0_port_mixer_controls,
13916 ARRAY_SIZE(quat_tdm_rx_0_port_mixer_controls)),
13917 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
13918 quat_tdm_rx_1_port_mixer_controls,
13919 ARRAY_SIZE(quat_tdm_rx_1_port_mixer_controls)),
13920 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
13921 quat_tdm_rx_2_port_mixer_controls,
13922 ARRAY_SIZE(quat_tdm_rx_2_port_mixer_controls)),
13923 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
13924 quat_tdm_rx_3_port_mixer_controls,
13925 ARRAY_SIZE(quat_tdm_rx_3_port_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013926 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
13927 quin_tdm_rx_0_port_mixer_controls,
13928 ARRAY_SIZE(quin_tdm_rx_0_port_mixer_controls)),
13929 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
13930 quin_tdm_rx_1_port_mixer_controls,
13931 ARRAY_SIZE(quin_tdm_rx_1_port_mixer_controls)),
13932 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
13933 quin_tdm_rx_2_port_mixer_controls,
13934 ARRAY_SIZE(quin_tdm_rx_2_port_mixer_controls)),
13935 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
13936 quin_tdm_rx_3_port_mixer_controls,
13937 ARRAY_SIZE(quin_tdm_rx_3_port_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013938 SND_SOC_DAPM_MIXER("INT0_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13939 int0_mi2s_rx_port_mixer_controls,
13940 ARRAY_SIZE(int0_mi2s_rx_port_mixer_controls)),
13941 SND_SOC_DAPM_MIXER("INT4_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13942 int4_mi2s_rx_port_mixer_controls,
13943 ARRAY_SIZE(int4_mi2s_rx_port_mixer_controls)),
13944 SND_SOC_DAPM_MIXER("QCHAT_Tx Mixer",
13945 SND_SOC_NOPM, 0, 0, tx_qchat_mixer_controls,
13946 ARRAY_SIZE(tx_qchat_mixer_controls)),
13947 SND_SOC_DAPM_MIXER("USB_AUDIO_RX_Voice Mixer",
13948 SND_SOC_NOPM, 0, 0, usb_audio_rx_voice_mixer_controls,
13949 ARRAY_SIZE(usb_audio_rx_voice_mixer_controls)),
13950 SND_SOC_DAPM_MIXER("USB_AUDIO_RX Port Mixer",
13951 SND_SOC_NOPM, 0, 0, usb_rx_port_mixer_controls,
13952 ARRAY_SIZE(usb_rx_port_mixer_controls)),
Aalique Grahamee4fd7d52017-11-28 13:24:13 -080013953 SND_SOC_DAPM_MIXER("DISPLAY_PORT_RX_Voice Mixer",
13954 SND_SOC_NOPM, 0, 0, display_port_rx_voice_mixer_controls,
13955 ARRAY_SIZE(display_port_rx_voice_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013956 /* lsm mixer definitions */
13957 SND_SOC_DAPM_MIXER("LSM1 Mixer", SND_SOC_NOPM, 0, 0,
13958 lsm1_mixer_controls, ARRAY_SIZE(lsm1_mixer_controls)),
13959 SND_SOC_DAPM_MIXER("LSM2 Mixer", SND_SOC_NOPM, 0, 0,
13960 lsm2_mixer_controls, ARRAY_SIZE(lsm2_mixer_controls)),
13961 SND_SOC_DAPM_MIXER("LSM3 Mixer", SND_SOC_NOPM, 0, 0,
13962 lsm3_mixer_controls, ARRAY_SIZE(lsm3_mixer_controls)),
13963 SND_SOC_DAPM_MIXER("LSM4 Mixer", SND_SOC_NOPM, 0, 0,
13964 lsm4_mixer_controls, ARRAY_SIZE(lsm4_mixer_controls)),
13965 SND_SOC_DAPM_MIXER("LSM5 Mixer", SND_SOC_NOPM, 0, 0,
13966 lsm5_mixer_controls, ARRAY_SIZE(lsm5_mixer_controls)),
13967 SND_SOC_DAPM_MIXER("LSM6 Mixer", SND_SOC_NOPM, 0, 0,
13968 lsm6_mixer_controls, ARRAY_SIZE(lsm6_mixer_controls)),
13969 SND_SOC_DAPM_MIXER("LSM7 Mixer", SND_SOC_NOPM, 0, 0,
13970 lsm7_mixer_controls, ARRAY_SIZE(lsm7_mixer_controls)),
13971 SND_SOC_DAPM_MIXER("LSM8 Mixer", SND_SOC_NOPM, 0, 0,
13972 lsm8_mixer_controls, ARRAY_SIZE(lsm8_mixer_controls)),
13973 /* Virtual Pins to force backends ON atm */
13974 SND_SOC_DAPM_OUTPUT("BE_OUT"),
13975 SND_SOC_DAPM_INPUT("BE_IN"),
13976
13977 SND_SOC_DAPM_MUX("SLIM0_RX_VI_FB_LCH_MUX", SND_SOC_NOPM, 0, 0,
13978 &slim0_rx_vi_fb_lch_mux),
13979 SND_SOC_DAPM_MUX("SLIM0_RX_VI_FB_RCH_MUX", SND_SOC_NOPM, 0, 0,
13980 &slim0_rx_vi_fb_rch_mux),
13981 SND_SOC_DAPM_MUX("PRI_MI2S_RX_VI_FB_MUX", SND_SOC_NOPM, 0, 0,
13982 &mi2s_rx_vi_fb_mux),
13983 SND_SOC_DAPM_MUX("INT4_MI2S_RX_VI_FB_MONO_CH_MUX", SND_SOC_NOPM, 0, 0,
13984 &int4_mi2s_rx_vi_fb_mono_ch_mux),
13985 SND_SOC_DAPM_MUX("INT4_MI2S_RX_VI_FB_STEREO_CH_MUX", SND_SOC_NOPM, 0, 0,
13986 &int4_mi2s_rx_vi_fb_stereo_ch_mux),
13987
13988 SND_SOC_DAPM_MUX("VOC_EXT_EC MUX", SND_SOC_NOPM, 0, 0,
13989 &voc_ext_ec_mux),
13990 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL1 MUX", SND_SOC_NOPM, 0, 0,
13991 &ext_ec_ref_mux_ul1),
13992 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL2 MUX", SND_SOC_NOPM, 0, 0,
13993 &ext_ec_ref_mux_ul2),
13994 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL3 MUX", SND_SOC_NOPM, 0, 0,
13995 &ext_ec_ref_mux_ul3),
13996 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL4 MUX", SND_SOC_NOPM, 0, 0,
13997 &ext_ec_ref_mux_ul4),
13998 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL5 MUX", SND_SOC_NOPM, 0, 0,
13999 &ext_ec_ref_mux_ul5),
14000 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL6 MUX", SND_SOC_NOPM, 0, 0,
14001 &ext_ec_ref_mux_ul6),
14002 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL8 MUX", SND_SOC_NOPM, 0, 0,
14003 &ext_ec_ref_mux_ul8),
14004 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL9 MUX", SND_SOC_NOPM, 0, 0,
14005 &ext_ec_ref_mux_ul9),
Laxminath Kasam38070be2017-08-17 18:21:59 +053014006 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL10 MUX", SND_SOC_NOPM, 0, 0,
14007 &ext_ec_ref_mux_ul10),
Asish Bhattacharya34504582017-08-08 12:55:01 +053014008 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL16 MUX", SND_SOC_NOPM, 0, 0,
14009 &ext_ec_ref_mux_ul16),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014010 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL17 MUX", SND_SOC_NOPM, 0, 0,
14011 &ext_ec_ref_mux_ul17),
14012 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL18 MUX", SND_SOC_NOPM, 0, 0,
14013 &ext_ec_ref_mux_ul18),
14014 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL19 MUX", SND_SOC_NOPM, 0, 0,
14015 &ext_ec_ref_mux_ul19),
Meng Wangbe8194e2018-04-25 10:40:01 +080014016 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL28 MUX", SND_SOC_NOPM, 0, 0,
14017 &ext_ec_ref_mux_ul28),
14018 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL29 MUX", SND_SOC_NOPM, 0, 0,
14019 &ext_ec_ref_mux_ul29),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014020};
14021
14022static const struct snd_soc_dapm_route intercon[] = {
14023 {"PRI_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14024 {"PRI_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14025 {"PRI_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14026 {"PRI_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14027 {"PRI_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14028 {"PRI_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14029 {"PRI_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14030 {"PRI_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14031 {"PRI_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14032 {"PRI_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14033 {"PRI_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14034 {"PRI_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14035 {"PRI_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14036 {"PRI_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14037 {"PRI_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14038 {"PRI_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14039 {"PRI_I2S_RX", NULL, "PRI_RX Audio Mixer"},
14040
14041 {"SEC_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14042 {"SEC_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14043 {"SEC_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14044 {"SEC_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14045 {"SEC_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14046 {"SEC_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14047 {"SEC_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14048 {"SEC_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14049 {"SEC_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14050 {"SEC_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14051 {"SEC_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14052 {"SEC_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14053 {"SEC_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14054 {"SEC_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14055 {"SEC_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14056 {"SEC_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14057 {"SEC_I2S_RX", NULL, "SEC_RX Audio Mixer"},
14058
14059 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14060 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14061 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14062 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14063 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14064 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14065 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14066 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14067 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14068 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14069 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14070 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14071 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14072 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14073 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14074 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14075 {"SLIMBUS_0_RX", NULL, "SLIMBUS_0_RX Audio Mixer"},
14076
14077 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14078 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14079 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14080 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14081 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14082 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14083 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14084 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14085 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14086 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14087 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14088 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14089 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14090 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14091 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14092 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14093 {"SLIMBUS_2_RX", NULL, "SLIMBUS_2_RX Audio Mixer"},
14094
14095 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14096 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14097 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14098 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14099 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14100 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14101 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14102 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14103 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14104 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14105 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14106 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14107 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14108 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14109 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14110 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14111 {"SLIMBUS_5_RX", NULL, "SLIMBUS_5_RX Audio Mixer"},
14112
14113 {"HDMI Mixer", "MultiMedia1", "MM_DL1"},
14114 {"HDMI Mixer", "MultiMedia2", "MM_DL2"},
14115 {"HDMI Mixer", "MultiMedia3", "MM_DL3"},
14116 {"HDMI Mixer", "MultiMedia4", "MM_DL4"},
14117 {"HDMI Mixer", "MultiMedia5", "MM_DL5"},
14118 {"HDMI Mixer", "MultiMedia6", "MM_DL6"},
14119 {"HDMI Mixer", "MultiMedia7", "MM_DL7"},
14120 {"HDMI Mixer", "MultiMedia8", "MM_DL8"},
14121 {"HDMI Mixer", "MultiMedia9", "MM_DL9"},
14122 {"HDMI Mixer", "MultiMedia10", "MM_DL10"},
14123 {"HDMI Mixer", "MultiMedia11", "MM_DL11"},
14124 {"HDMI Mixer", "MultiMedia12", "MM_DL12"},
14125 {"HDMI Mixer", "MultiMedia13", "MM_DL13"},
14126 {"HDMI Mixer", "MultiMedia14", "MM_DL14"},
14127 {"HDMI Mixer", "MultiMedia15", "MM_DL15"},
14128 {"HDMI Mixer", "MultiMedia16", "MM_DL16"},
14129 {"HDMI", NULL, "HDMI Mixer"},
14130
14131 {"DISPLAY_PORT Mixer", "MultiMedia1", "MM_DL1"},
14132 {"DISPLAY_PORT Mixer", "MultiMedia2", "MM_DL2"},
14133 {"DISPLAY_PORT Mixer", "MultiMedia3", "MM_DL3"},
14134 {"DISPLAY_PORT Mixer", "MultiMedia4", "MM_DL4"},
14135 {"DISPLAY_PORT Mixer", "MultiMedia5", "MM_DL5"},
14136 {"DISPLAY_PORT Mixer", "MultiMedia6", "MM_DL6"},
14137 {"DISPLAY_PORT Mixer", "MultiMedia7", "MM_DL7"},
14138 {"DISPLAY_PORT Mixer", "MultiMedia8", "MM_DL8"},
14139 {"DISPLAY_PORT Mixer", "MultiMedia9", "MM_DL9"},
14140 {"DISPLAY_PORT Mixer", "MultiMedia10", "MM_DL10"},
14141 {"DISPLAY_PORT Mixer", "MultiMedia11", "MM_DL11"},
14142 {"DISPLAY_PORT Mixer", "MultiMedia12", "MM_DL12"},
14143 {"DISPLAY_PORT Mixer", "MultiMedia13", "MM_DL13"},
14144 {"DISPLAY_PORT Mixer", "MultiMedia14", "MM_DL14"},
14145 {"DISPLAY_PORT Mixer", "MultiMedia15", "MM_DL15"},
14146 {"DISPLAY_PORT Mixer", "MultiMedia16", "MM_DL16"},
14147 {"DISPLAY_PORT", NULL, "DISPLAY_PORT Mixer"},
14148
14149 {"SPDIF_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14150 {"SPDIF_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14151 {"SPDIF_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14152 {"SPDIF_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14153 {"SPDIF_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14154 {"SPDIF_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14155 {"SPDIF_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14156 {"SPDIF_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14157 {"SPDIF_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14158 {"SPDIF_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14159 {"SPDIF_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14160 {"SPDIF_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14161 {"SPDIF_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14162 {"SPDIF_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14163 {"SPDIF_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14164 {"SPDIF_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14165 {"SPDIF_RX", NULL, "SPDIF_RX Audio Mixer"},
14166
14167 /* incall */
14168 {"Incall_Music Audio Mixer", "MultiMedia1", "MM_DL1"},
14169 {"Incall_Music Audio Mixer", "MultiMedia2", "MM_DL2"},
14170 {"Incall_Music Audio Mixer", "MultiMedia5", "MM_DL5"},
14171 {"Incall_Music Audio Mixer", "MultiMedia9", "MM_DL9"},
14172 {"VOICE_PLAYBACK_TX", NULL, "Incall_Music Audio Mixer"},
14173 {"Incall_Music_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
14174 {"Incall_Music_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
14175 {"Incall_Music_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
14176 {"Incall_Music_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
14177 {"VOICE2_PLAYBACK_TX", NULL, "Incall_Music_2 Audio Mixer"},
14178 {"SLIMBUS_4_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14179 {"SLIMBUS_4_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14180 {"SLIMBUS_4_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14181 {"SLIMBUS_4_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14182 {"SLIMBUS_4_RX", NULL, "SLIMBUS_4_RX Audio Mixer"},
14183
14184 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14185 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14186 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14187 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14188 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14189 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14190 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14191 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14192 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14193 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14194 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14195 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14196 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14197 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14198 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14199 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14200 {"SLIMBUS_6_RX", NULL, "SLIMBUS_6_RX Audio Mixer"},
14201
14202 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14203 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14204 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14205 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14206 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14207 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14208 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14209 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14210 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14211 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14212 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14213 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14214 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14215 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14216 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14217 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14218 {"SLIMBUS_7_RX", NULL, "SLIMBUS_7_RX Audio Mixer"},
14219
14220 {"USB_AUDIO_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14221 {"USB_AUDIO_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14222 {"USB_AUDIO_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14223 {"USB_AUDIO_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14224 {"USB_AUDIO_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14225 {"USB_AUDIO_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14226 {"USB_AUDIO_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14227 {"USB_AUDIO_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14228 {"USB_AUDIO_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14229 {"USB_AUDIO_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14230 {"USB_AUDIO_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14231 {"USB_AUDIO_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14232 {"USB_AUDIO_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14233 {"USB_AUDIO_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14234 {"USB_AUDIO_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14235 {"USB_AUDIO_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14236 {"USB_AUDIO_RX", NULL, "USB_AUDIO_RX Audio Mixer"},
14237
14238 {"MultiMedia1 Mixer", "VOC_REC_UL", "INCALL_RECORD_TX"},
14239 {"MultiMedia4 Mixer", "VOC_REC_UL", "INCALL_RECORD_TX"},
14240 {"MultiMedia8 Mixer", "VOC_REC_UL", "INCALL_RECORD_TX"},
14241 {"MultiMedia1 Mixer", "VOC_REC_DL", "INCALL_RECORD_RX"},
14242 {"MultiMedia4 Mixer", "VOC_REC_DL", "INCALL_RECORD_RX"},
14243 {"MultiMedia8 Mixer", "VOC_REC_DL", "INCALL_RECORD_RX"},
14244 {"MultiMedia1 Mixer", "SLIM_4_TX", "SLIMBUS_4_TX"},
14245 {"MultiMedia1 Mixer", "SLIM_6_TX", "SLIMBUS_6_TX"},
14246 {"MultiMedia1 Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
14247 {"MultiMedia1 Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
14248 {"MultiMedia8 Mixer", "SLIM_6_TX", "SLIMBUS_6_TX"},
14249 {"MultiMedia8 Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
14250 {"MultiMedia4 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14251 {"MultiMedia17 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14252 {"MultiMedia18 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14253 {"MultiMedia19 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053014254 {"MultiMedia28 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14255 {"MultiMedia29 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014256 {"MultiMedia8 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14257 {"MultiMedia2 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14258 {"MultiMedia4 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14259 {"MultiMedia17 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14260 {"MultiMedia18 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14261 {"MultiMedia19 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053014262 {"MultiMedia28 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14263 {"MultiMedia29 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014264 {"MultiMedia8 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053014265 {"MultiMedia17 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14266 {"MultiMedia18 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14267 {"MultiMedia19 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14268 {"MultiMedia28 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14269 {"MultiMedia29 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14270 {"MultiMedia17 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014271 {"MultiMedia18 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053014272 {"MultiMedia19 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14273 {"MultiMedia28 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14274 {"MultiMedia29 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014275 {"MultiMedia8 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14276 {"MultiMedia3 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14277 {"MultiMedia5 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014278 {"MultiMedia10 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014279 {"MultiMedia16 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014280 {"MultiMedia5 Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
14281 {"MultiMedia5 Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014282 {"MultiMedia10 Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014283 {"MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14284 {"MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14285 {"MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14286 {"MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14287 {"MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14288 {"MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14289 {"MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14290 {"MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14291 {"MI2S_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14292 {"MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14293 {"MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14294 {"MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14295 {"MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14296 {"MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14297 {"MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14298 {"MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14299 {"MI2S_RX", NULL, "MI2S_RX Audio Mixer"},
14300
14301 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14302 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14303 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14304 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14305 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14306 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14307 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14308 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14309 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14310 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14311 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14312 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14313 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14314 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14315 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14316 {"QUAT_MI2S_RX", NULL, "QUAT_MI2S_RX Audio Mixer"},
14317
14318 {"TERT_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14319 {"TERT_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14320 {"TERT_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14321 {"TERT_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14322 {"TERT_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14323 {"TERT_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14324 {"TERT_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14325 {"TERT_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14326 {"TERT_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14327 {"TERT_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14328 {"TERT_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14329 {"TERT_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14330 {"TERT_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14331 {"TERT_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14332 {"TERT_MI2S_RX", NULL, "TERT_MI2S_RX Audio Mixer"},
14333
14334 {"SEC_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14335 {"SEC_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14336 {"SEC_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14337 {"SEC_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14338 {"SEC_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14339 {"SEC_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14340 {"SEC_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14341 {"SEC_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14342 {"SEC_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14343 {"SEC_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14344 {"SEC_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14345 {"SEC_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14346 {"SEC_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14347 {"SEC_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14348 {"SEC_MI2S_RX", NULL, "SEC_MI2S_RX Audio Mixer"},
14349
14350 {"SEC_MI2S_RX_SD1 Audio Mixer", "MultiMedia6", "MM_DL6"},
14351 {"SEC_MI2S_RX_SD1", NULL, "SEC_MI2S_RX_SD1 Audio Mixer"},
14352
14353 {"SEC_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14354 {"SEC_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
14355
14356 {"PRI_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14357 {"PRI_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14358 {"PRI_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14359 {"PRI_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14360 {"PRI_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14361 {"PRI_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14362 {"PRI_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14363 {"PRI_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14364 {"PRI_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14365 {"PRI_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14366 {"PRI_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14367 {"PRI_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14368 {"PRI_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14369 {"PRI_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14370 {"PRI_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14371 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX Audio Mixer"},
14372
14373 {"INT0_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14374 {"INT0_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14375 {"INT0_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14376 {"INT0_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14377 {"INT0_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14378 {"INT0_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14379 {"INT0_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14380 {"INT0_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14381 {"INT0_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14382 {"INT0_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14383 {"INT0_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14384 {"INT0_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14385 {"INT0_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14386 {"INT0_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14387 {"INT0_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14388 {"INT0_MI2S_RX", NULL, "INT0_MI2S_RX Audio Mixer"},
14389
14390 {"INT4_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14391 {"INT4_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14392 {"INT4_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14393 {"INT4_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14394 {"INT4_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14395 {"INT4_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14396 {"INT4_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14397 {"INT4_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14398 {"INT4_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14399 {"INT4_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14400 {"INT4_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14401 {"INT4_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14402 {"INT4_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14403 {"INT4_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14404 {"INT4_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14405 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX Audio Mixer"},
14406
14407 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14408 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14409 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14410 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14411 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14412 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14413 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14414 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14415 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14416 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14417 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14418 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14419 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14420 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14421 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14422 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14423 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14424 {"QUIN_MI2S_RX", NULL, "QUIN_MI2S_RX Audio Mixer"},
14425
14426 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14427 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14428 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14429 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14430 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14431 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14432 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14433 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14434 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14435 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14436 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14437 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14438 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14439 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14440 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14441 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14442 {"PRI_TDM_RX_0", NULL, "PRI_TDM_RX_0 Audio Mixer"},
14443
14444 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
14445 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
14446 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
14447 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
14448 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
14449 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
14450 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
14451 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
14452 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
14453 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
14454 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
14455 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
14456 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
14457 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
14458 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
14459 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
14460 {"PRI_TDM_RX_1", NULL, "PRI_TDM_RX_1 Audio Mixer"},
14461
14462 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
14463 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
14464 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
14465 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
14466 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
14467 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
14468 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
14469 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
14470 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
14471 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
14472 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
14473 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
14474 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
14475 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
14476 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
14477 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
14478 {"PRI_TDM_RX_2", NULL, "PRI_TDM_RX_2 Audio Mixer"},
14479
14480 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
14481 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
14482 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
14483 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
14484 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
14485 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
14486 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
14487 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
14488 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
14489 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
14490 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
14491 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
14492 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
14493 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
14494 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
14495 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
14496 {"PRI_TDM_RX_3", NULL, "PRI_TDM_RX_3 Audio Mixer"},
14497
14498 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14499 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14500 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14501 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14502 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14503 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14504 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14505 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14506 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14507 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14508 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14509 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14510 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14511 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14512 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14513 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14514 {"PRI_TDM_TX_0", NULL, "PRI_TDM_TX_0 Audio Mixer"},
14515
14516 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14517 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14518 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14519 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14520 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14521 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14522 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14523 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14524 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14525 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14526 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14527 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14528 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14529 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14530 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14531 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14532 {"SEC_TDM_RX_0", NULL, "SEC_TDM_RX_0 Audio Mixer"},
14533
14534 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
14535 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
14536 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
14537 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
14538 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
14539 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
14540 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
14541 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
14542 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
14543 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
14544 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
14545 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
14546 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
14547 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
14548 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
14549 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
14550 {"SEC_TDM_RX_1", NULL, "SEC_TDM_RX_1 Audio Mixer"},
14551
14552 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
14553 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
14554 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
14555 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
14556 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
14557 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
14558 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
14559 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
14560 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
14561 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
14562 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
14563 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
14564 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
14565 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
14566 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
14567 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
14568 {"SEC_TDM_RX_2", NULL, "SEC_TDM_RX_2 Audio Mixer"},
14569
14570 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
14571 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
14572 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
14573 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
14574 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
14575 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
14576 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
14577 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
14578 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
14579 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
14580 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
14581 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
14582 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
14583 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
14584 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
14585 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
14586 {"SEC_TDM_RX_3", NULL, "SEC_TDM_RX_3 Audio Mixer"},
14587
14588 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14589 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14590 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14591 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14592 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14593 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14594 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14595 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14596 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14597 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14598 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14599 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14600 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14601 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14602 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14603 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14604 {"SEC_TDM_TX_0", NULL, "SEC_TDM_TX_0 Audio Mixer"},
14605
14606 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14607 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14608 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14609 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14610 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14611 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14612 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14613 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14614 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14615 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14616 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14617 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14618 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14619 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14620 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14621 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14622 {"TERT_TDM_RX_0", NULL, "TERT_TDM_RX_0 Audio Mixer"},
14623
14624 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14625 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14626 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14627 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14628 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14629 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14630 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14631 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14632 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14633 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14634 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14635 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14636 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14637 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14638 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14639 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14640 {"TERT_TDM_TX_0", NULL, "TERT_TDM_TX_0 Audio Mixer"},
14641
14642 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
14643 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
14644 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
14645 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
14646 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
14647 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
14648 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
14649 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
14650 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
14651 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
14652 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
14653 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
14654 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
14655 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
14656 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
14657 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
14658 {"TERT_TDM_RX_1", NULL, "TERT_TDM_RX_1 Audio Mixer"},
14659
14660 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
14661 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
14662 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
14663 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
14664 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
14665 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
14666 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
14667 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
14668 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
14669 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
14670 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
14671 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
14672 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
14673 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
14674 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
14675 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
14676 {"TERT_TDM_RX_2", NULL, "TERT_TDM_RX_2 Audio Mixer"},
14677
14678 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
14679 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
14680 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
14681 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
14682 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
14683 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
14684 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
14685 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
14686 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
14687 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
14688 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
14689 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
14690 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
14691 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
14692 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
14693 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
14694 {"TERT_TDM_RX_3", NULL, "TERT_TDM_RX_3 Audio Mixer"},
14695
14696 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia1", "MM_DL1"},
14697 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia2", "MM_DL2"},
14698 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia3", "MM_DL3"},
14699 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia4", "MM_DL4"},
14700 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia5", "MM_DL5"},
14701 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia6", "MM_DL6"},
14702 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia7", "MM_DL7"},
14703 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia8", "MM_DL8"},
14704 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia9", "MM_DL9"},
14705 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia10", "MM_DL10"},
14706 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia11", "MM_DL11"},
14707 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia12", "MM_DL12"},
14708 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia13", "MM_DL13"},
14709 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia14", "MM_DL14"},
14710 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia15", "MM_DL15"},
14711 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia16", "MM_DL16"},
14712 {"TERT_TDM_RX_4", NULL, "TERT_TDM_RX_4 Audio Mixer"},
14713
14714 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14715 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14716 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14717 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14718 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14719 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14720 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14721 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14722 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14723 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14724 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14725 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14726 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14727 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14728 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14729 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14730 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia20", "MM_DL20"},
14731 {"QUAT_TDM_RX_0", NULL, "QUAT_TDM_RX_0 Audio Mixer"},
14732
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014733 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14734 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14735 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14736 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14737 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14738 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14739 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14740 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14741 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14742 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14743 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14744 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14745 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14746 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14747 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14748 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14749 {"QUAT_TDM_TX_0", NULL, "QUAT_TDM_TX_0 Audio Mixer"},
14750
14751 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
14752 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
14753 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
14754 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
14755 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
14756 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
14757 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
14758 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
14759 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
14760 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
14761 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
14762 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
14763 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
14764 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
14765 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
14766 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
14767 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia20", "MM_DL20"},
14768 {"QUAT_TDM_RX_1", NULL, "QUAT_TDM_RX_1 Audio Mixer"},
14769
14770 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
14771 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
14772 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
14773 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
14774 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
14775 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
14776 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
14777 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
14778 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
14779 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
14780 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
14781 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
14782 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
14783 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
14784 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
14785 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
14786 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia20", "MM_DL20"},
14787 {"QUAT_TDM_RX_2", NULL, "QUAT_TDM_RX_2 Audio Mixer"},
14788
14789 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
14790 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
14791 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
14792 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
14793 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
14794 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
14795 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
14796 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
14797 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
14798 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
14799 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
14800 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
14801 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
14802 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
14803 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
14804 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
14805 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia20", "MM_DL20"},
14806 {"QUAT_TDM_RX_3", NULL, "QUAT_TDM_RX_3 Audio Mixer"},
14807
Rohit Kumara5077932017-09-10 22:05:05 +053014808 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14809 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14810 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14811 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14812 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14813 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14814 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14815 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14816 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14817 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14818 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14819 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14820 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14821 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14822 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14823 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14824 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia20", "MM_DL20"},
14825 {"QUIN_TDM_RX_0", NULL, "QUIN_TDM_RX_0 Audio Mixer"},
14826
14827 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14828 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14829 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14830 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14831 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14832 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14833 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14834 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14835 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14836 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14837 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14838 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14839 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14840 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14841 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14842 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14843 {"QUIN_TDM_TX_0", NULL, "QUIN_TDM_TX_0 Audio Mixer"},
14844
14845 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
14846 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
14847 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
14848 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
14849 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
14850 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
14851 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
14852 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
14853 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
14854 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
14855 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
14856 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
14857 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
14858 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
14859 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
14860 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
14861 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia20", "MM_DL20"},
14862 {"QUIN_TDM_RX_1", NULL, "QUIN_TDM_RX_1 Audio Mixer"},
14863
14864 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
14865 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
14866 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
14867 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
14868 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
14869 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
14870 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
14871 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
14872 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
14873 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
14874 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
14875 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
14876 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
14877 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
14878 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
14879 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
14880 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia20", "MM_DL20"},
14881 {"QUIN_TDM_RX_2", NULL, "QUIN_TDM_RX_2 Audio Mixer"},
14882
14883 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
14884 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
14885 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
14886 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
14887 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
14888 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
14889 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
14890 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
14891 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
14892 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
14893 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
14894 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
14895 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
14896 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
14897 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
14898 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
14899 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia20", "MM_DL20"},
14900 {"QUIN_TDM_RX_3", NULL, "QUIN_TDM_RX_3 Audio Mixer"},
14901
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014902 {"MultiMedia1 Mixer", "PRI_TX", "PRI_I2S_TX"},
14903 {"MultiMedia1 Mixer", "MI2S_TX", "MI2S_TX"},
14904 {"MultiMedia2 Mixer", "MI2S_TX", "MI2S_TX"},
14905 {"MultiMedia3 Mixer", "MI2S_TX", "MI2S_TX"},
14906 {"MultiMedia5 Mixer", "MI2S_TX", "MI2S_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014907 {"MultiMedia10 Mixer", "MI2S_TX", "MI2S_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014908 {"MultiMedia16 Mixer", "MI2S_TX", "MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014909 {"MultiMedia1 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14910 {"MultiMedia2 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14911 {"MultiMedia6 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14912 {"MultiMedia1 Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
14913 {"MultiMedia2 Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
14914 {"MultiMedia1 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14915 {"MultiMedia2 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14916 {"MultiMedia1 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
14917 {"MultiMedia2 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
14918 {"MultiMedia1 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14919 {"MultiMedia2 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14920 {"MultiMedia1 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14921 {"MultiMedia1 Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
14922 {"MultiMedia3 Mixer", "AUX_PCM_TX", "AUX_PCM_TX"},
14923 {"MultiMedia5 Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014924 {"MultiMedia10 Mixer", "AUX_PCM_TX", "AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014925 {"MultiMedia1 Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
14926 {"MultiMedia3 Mixer", "SEC_AUX_PCM_TX", "SEC_AUX_PCM_TX"},
14927 {"MultiMedia5 Mixer", "SEC_AUX_PCM_TX", "SEC_AUX_PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014928 {"MultiMedia10 Mixer", "SEC_AUX_PCM_TX", "SEC_AUX_PCM_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014929 {"MultiMedia16 Mixer", "AUX_PCM_TX", "AUX_PCM_TX"},
14930 {"MultiMedia16 Mixer", "SEC_AUX_PCM_TX", "SEC_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014931 {"MultiMedia1 Mixer", "TERT_AUXPCM_UL_TX", "TERT_AUX_PCM_TX"},
14932 {"MultiMedia3 Mixer", "TERT_AUX_PCM_TX", "TERT_AUX_PCM_TX"},
14933 {"MultiMedia5 Mixer", "TERT_AUX_PCM_TX", "TERT_AUX_PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014934 {"MultiMedia10 Mixer", "TERT_AUX_PCM_TX", "TERT_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014935 {"MultiMedia1 Mixer", "QUAT_AUXPCM_UL_TX", "QUAT_AUX_PCM_TX"},
14936 {"MultiMedia3 Mixer", "QUAT_AUX_PCM_TX", "QUAT_AUX_PCM_TX"},
14937 {"MultiMedia5 Mixer", "QUAT_AUX_PCM_TX", "QUAT_AUX_PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014938 {"MultiMedia10 Mixer", "QUAT_AUX_PCM_TX", "QUAT_AUX_PCM_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014939 {"MultiMedia16 Mixer", "QUAT_AUX_PCM_TX", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053014940 {"MultiMedia1 Mixer", "QUIN_AUXPCM_UL_TX", "QUIN_AUX_PCM_TX"},
14941 {"MultiMedia3 Mixer", "QUIN_AUX_PCM_TX", "QUIN_AUX_PCM_TX"},
14942 {"MultiMedia5 Mixer", "QUIN_AUX_PCM_TX", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014943 {"MultiMedia2 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14944 {"MultiMedia2 Mixer", "SLIM_6_TX", "SLIMBUS_6_TX"},
14945 {"MultiMedia2 Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
14946 {"MultiMedia2 Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
14947 {"MultiMedia1 Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
14948 {"MultiMedia1 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14949 {"MultiMedia2 Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
14950 {"MultiMedia6 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14951 {"MultiMedia6 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14952 {"MultiMedia3 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14953 {"MultiMedia5 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014954 {"MultiMedia10 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014955 {"MultiMedia6 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
14956 {"MultiMedia3 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
14957 {"MultiMedia5 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014958 {"MultiMedia10 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014959 {"MultiMedia16 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014960 {"MultiMedia6 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14961 {"MultiMedia3 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14962 {"MultiMedia5 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014963 {"MultiMedia10 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014964 {"MultiMedia16 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053014965 {"MultiMedia17 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14966 {"MultiMedia18 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14967 {"MultiMedia19 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14968 {"MultiMedia28 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14969 {"MultiMedia29 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014970 {"MultiMedia6 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14971 {"MultiMedia6 Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
14972 {"MultiMedia6 Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
14973 {"MultiMedia6 Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053014974 {"MultiMedia6 Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014975
14976 {"MultiMedia1 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
14977 {"MultiMedia1 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
14978 {"MultiMedia1 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
14979 {"MultiMedia1 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
14980 {"MultiMedia1 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
14981 {"MultiMedia1 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
14982 {"MultiMedia1 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
14983 {"MultiMedia1 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
14984 {"MultiMedia1 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14985 {"MultiMedia1 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14986 {"MultiMedia1 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14987 {"MultiMedia1 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14988 {"MultiMedia1 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14989 {"MultiMedia1 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14990 {"MultiMedia1 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14991 {"MultiMedia1 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Raja Mallik425e1d32018-05-20 19:21:10 +053014992 {"MultiMedia1 Mixer", "AFE_LOOPBACK_TX", "AFE_LOOPBACK_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053014993 {"MultiMedia1 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
14994 {"MultiMedia1 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
14995 {"MultiMedia1 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
14996 {"MultiMedia1 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014997
14998 {"MultiMedia2 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
14999 {"MultiMedia2 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15000 {"MultiMedia2 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15001 {"MultiMedia2 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15002 {"MultiMedia2 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15003 {"MultiMedia2 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15004 {"MultiMedia2 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15005 {"MultiMedia2 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15006 {"MultiMedia2 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15007 {"MultiMedia2 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15008 {"MultiMedia2 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15009 {"MultiMedia2 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15010 {"MultiMedia2 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15011 {"MultiMedia2 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15012 {"MultiMedia2 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15013 {"MultiMedia2 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Raja Mallik425e1d32018-05-20 19:21:10 +053015014 {"MultiMedia2 Mixer", "AFE_LOOPBACK_TX", "AFE_LOOPBACK_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015015 {"MultiMedia2 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15016 {"MultiMedia2 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15017 {"MultiMedia2 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15018 {"MultiMedia2 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015019
15020 {"MultiMedia3 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15021 {"MultiMedia3 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15022 {"MultiMedia3 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15023 {"MultiMedia3 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15024 {"MultiMedia3 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15025 {"MultiMedia3 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15026 {"MultiMedia3 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15027 {"MultiMedia3 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15028 {"MultiMedia3 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15029 {"MultiMedia3 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15030 {"MultiMedia3 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15031 {"MultiMedia3 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15032 {"MultiMedia3 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15033 {"MultiMedia3 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15034 {"MultiMedia3 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15035 {"MultiMedia3 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Raja Mallik425e1d32018-05-20 19:21:10 +053015036 {"MultiMedia3 Mixer", "AFE_LOOPBACK_TX", "AFE_LOOPBACK_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015037 {"MultiMedia3 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15038 {"MultiMedia3 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15039 {"MultiMedia3 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15040 {"MultiMedia3 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015041
15042 {"MultiMedia4 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15043 {"MultiMedia4 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15044 {"MultiMedia4 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15045 {"MultiMedia4 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15046 {"MultiMedia4 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15047 {"MultiMedia4 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15048 {"MultiMedia4 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15049 {"MultiMedia4 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15050 {"MultiMedia4 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15051 {"MultiMedia4 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15052 {"MultiMedia4 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15053 {"MultiMedia4 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15054 {"MultiMedia4 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15055 {"MultiMedia4 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15056 {"MultiMedia4 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15057 {"MultiMedia4 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Raja Mallik425e1d32018-05-20 19:21:10 +053015058 {"MultiMedia4 Mixer", "AFE_LOOPBACK_TX", "AFE_LOOPBACK_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015059 {"MultiMedia4 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15060 {"MultiMedia4 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15061 {"MultiMedia4 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15062 {"MultiMedia4 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015063
15064 {"MultiMedia5 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15065 {"MultiMedia5 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15066 {"MultiMedia5 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15067 {"MultiMedia5 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15068 {"MultiMedia5 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15069 {"MultiMedia5 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15070 {"MultiMedia5 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15071 {"MultiMedia5 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15072 {"MultiMedia5 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15073 {"MultiMedia5 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15074 {"MultiMedia5 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15075 {"MultiMedia5 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15076 {"MultiMedia5 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15077 {"MultiMedia5 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15078 {"MultiMedia5 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15079 {"MultiMedia5 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Raja Mallik425e1d32018-05-20 19:21:10 +053015080 {"MultiMedia5 Mixer", "AFE_LOOPBACK_TX", "AFE_LOOPBACK_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015081 {"MultiMedia5 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15082 {"MultiMedia5 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15083 {"MultiMedia5 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15084 {"MultiMedia5 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015085
15086 {"MultiMedia6 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15087 {"MultiMedia6 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15088 {"MultiMedia6 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15089 {"MultiMedia6 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15090 {"MultiMedia6 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15091 {"MultiMedia6 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15092 {"MultiMedia6 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15093 {"MultiMedia6 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15094 {"MultiMedia6 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15095 {"MultiMedia6 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15096 {"MultiMedia6 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15097 {"MultiMedia6 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15098 {"MultiMedia6 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15099 {"MultiMedia6 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15100 {"MultiMedia6 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15101 {"MultiMedia6 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Raja Mallik425e1d32018-05-20 19:21:10 +053015102 {"MultiMedia6 Mixer", "AFE_LOOPBACK_TX", "AFE_LOOPBACK_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015103 {"MultiMedia6 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15104 {"MultiMedia6 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15105 {"MultiMedia6 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15106 {"MultiMedia6 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015107
15108 {"MultiMedia8 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15109 {"MultiMedia8 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15110 {"MultiMedia8 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15111 {"MultiMedia8 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15112 {"MultiMedia8 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15113 {"MultiMedia8 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15114 {"MultiMedia8 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15115 {"MultiMedia8 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15116 {"MultiMedia8 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15117 {"MultiMedia8 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15118 {"MultiMedia8 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15119 {"MultiMedia8 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15120 {"MultiMedia8 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15121 {"MultiMedia8 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15122 {"MultiMedia8 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15123 {"MultiMedia8 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Raja Mallik425e1d32018-05-20 19:21:10 +053015124 {"MultiMedia8 Mixer", "AFE_LOOPBACK_TX", "AFE_LOOPBACK_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015125 {"MultiMedia8 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15126 {"MultiMedia8 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15127 {"MultiMedia8 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15128 {"MultiMedia8 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015129
15130 {"MultiMedia9 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15131 {"MultiMedia9 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15132 {"MultiMedia9 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15133 {"MultiMedia9 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15134 {"MultiMedia9 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15135 {"MultiMedia9 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15136 {"MultiMedia9 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15137 {"MultiMedia9 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015138 {"MultiMedia9 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15139 {"MultiMedia9 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15140 {"MultiMedia9 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15141 {"MultiMedia9 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Raja Mallik425e1d32018-05-20 19:21:10 +053015142 {"MultiMedia9 Mixer", "AFE_LOOPBACK_TX", "AFE_LOOPBACK_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015143
Laxminath Kasam38070be2017-08-17 18:21:59 +053015144 {"MultiMedia10 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15145 {"MultiMedia10 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15146 {"MultiMedia10 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15147 {"MultiMedia10 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15148 {"MultiMedia10 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15149 {"MultiMedia10 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15150 {"MultiMedia10 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15151 {"MultiMedia10 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015152 {"MultiMedia20 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15153 {"MultiMedia20 Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15154 {"MultiMedia20 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15155 {"MultiMedia20 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015156 {"MultiMedia20 Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015157 {"MultiMedia20 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15158 {"MultiMedia20 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15159 {"MultiMedia20 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15160 {"MultiMedia20 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15161 {"MultiMedia20 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15162 {"MultiMedia20 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15163 {"MultiMedia20 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15164 {"MultiMedia20 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15165 {"MultiMedia20 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15166 {"MultiMedia20 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15167 {"MultiMedia20 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15168 {"MultiMedia20 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15169 {"MultiMedia20 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15170 {"MultiMedia20 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15171 {"MultiMedia20 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15172 {"MultiMedia20 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015173 {"MultiMedia20 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15174 {"MultiMedia20 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15175 {"MultiMedia20 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15176 {"MultiMedia20 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015177
15178 {"MultiMedia1 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
15179 {"MultiMedia2 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
15180 {"MultiMedia4 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
15181 {"MultiMedia5 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
15182 {"MultiMedia6 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
15183 {"MultiMedia8 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053015184 {"MultiMedia10 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015185
Asish Bhattacharya34504582017-08-08 12:55:01 +053015186 {"MultiMedia16 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15187 {"MultiMedia16 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15188 {"MultiMedia16 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15189 {"MultiMedia16 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15190 {"MultiMedia16 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15191 {"MultiMedia16 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15192 {"MultiMedia16 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15193 {"MultiMedia16 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15194 {"MultiMedia16 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15195 {"MultiMedia16 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15196 {"MultiMedia16 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15197 {"MultiMedia16 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15198 {"MultiMedia16 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15199 {"MultiMedia16 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15200 {"MultiMedia16 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15201 {"MultiMedia16 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
15202 {"MultiMedia16 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
15203
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015204 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15205 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15206 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15207 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15208 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15209 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15210 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15211 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15212 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15213 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15214 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15215 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15216 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15217 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15218 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15219 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15220 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia6", "MM_UL6"},
15221 {"INT_BT_SCO_RX", NULL, "INTERNAL_BT_SCO_RX Audio Mixer"},
15222
15223 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15224 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15225 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15226 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15227 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15228 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15229 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15230 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15231 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15232 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15233 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15234 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15235 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15236 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15237 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15238 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15239 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia6", "MM_UL6"},
15240 {"INT_BT_A2DP_RX", NULL, "INTERNAL_A2DP_RX Audio Mixer"},
15241
15242 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15243 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15244 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15245 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15246 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15247 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15248 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15249 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15250 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15251 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15252 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15253 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15254 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15255 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15256 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15257 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15258 {"INT_FM_RX", NULL, "INTERNAL_FM_RX Audio Mixer"},
15259
15260 {"AFE_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15261 {"AFE_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15262 {"AFE_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15263 {"AFE_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15264 {"AFE_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15265 {"AFE_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15266 {"AFE_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15267 {"AFE_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15268 {"AFE_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15269 {"AFE_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15270 {"AFE_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15271 {"AFE_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15272 {"AFE_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15273 {"AFE_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15274 {"AFE_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15275 {"AFE_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15276 {"PCM_RX", NULL, "AFE_PCM_RX Audio Mixer"},
15277
15278 {"MultiMedia1 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15279 {"MultiMedia3 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15280 {"MultiMedia4 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053015281 {"MultiMedia10 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015282 {"MultiMedia17 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15283 {"MultiMedia18 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15284 {"MultiMedia19 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053015285 {"MultiMedia28 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15286 {"MultiMedia29 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015287 {"MultiMedia5 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15288 {"MultiMedia8 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053015289 {"MultiMedia16 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015290 {"MultiMedia1 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15291 {"MultiMedia4 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053015292 {"MultiMedia16 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015293 {"MultiMedia17 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15294 {"MultiMedia18 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15295 {"MultiMedia19 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053015296 {"MultiMedia28 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15297 {"MultiMedia29 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015298 {"MultiMedia5 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15299 {"MultiMedia6 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15300 {"MultiMedia8 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15301
15302 {"MultiMedia1 Mixer", "AFE_PCM_TX", "PCM_TX"},
15303 {"MultiMedia3 Mixer", "AFE_PCM_TX", "PCM_TX"},
15304 {"MultiMedia4 Mixer", "AFE_PCM_TX", "PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053015305 {"MultiMedia10 Mixer", "AFE_PCM_TX", "PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015306 {"MultiMedia17 Mixer", "AFE_PCM_TX", "PCM_TX"},
15307 {"MultiMedia18 Mixer", "AFE_PCM_TX", "PCM_TX"},
15308 {"MultiMedia19 Mixer", "AFE_PCM_TX", "PCM_TX"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053015309 {"MultiMedia28 Mixer", "AFE_PCM_TX", "PCM_TX"},
15310 {"MultiMedia29 Mixer", "AFE_PCM_TX", "PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015311 {"MultiMedia5 Mixer", "AFE_PCM_TX", "PCM_TX"},
15312 {"MultiMedia8 Mixer", "AFE_PCM_TX", "PCM_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053015313 {"MultiMedia16 Mixer", "AFE_PCM_TX", "PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015314 {"MM_UL1", NULL, "MultiMedia1 Mixer"},
15315 {"MultiMedia2 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15316 {"MM_UL2", NULL, "MultiMedia2 Mixer"},
15317 {"MM_UL3", NULL, "MultiMedia3 Mixer"},
15318 {"MM_UL4", NULL, "MultiMedia4 Mixer"},
15319 {"MM_UL5", NULL, "MultiMedia5 Mixer"},
15320 {"MM_UL6", NULL, "MultiMedia6 Mixer"},
15321 {"MM_UL8", NULL, "MultiMedia8 Mixer"},
15322 {"MM_UL9", NULL, "MultiMedia9 Mixer"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053015323 {"MM_UL10", NULL, "MultiMedia10 Mixer"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053015324 {"MM_UL16", NULL, "MultiMedia16 Mixer"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015325 {"MM_UL17", NULL, "MultiMedia17 Mixer"},
15326 {"MM_UL18", NULL, "MultiMedia18 Mixer"},
15327 {"MM_UL19", NULL, "MultiMedia19 Mixer"},
15328 {"MM_UL20", NULL, "MultiMedia20 Mixer"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053015329 {"MM_UL28", NULL, "MultiMedia28 Mixer"},
15330 {"MM_UL29", NULL, "MultiMedia29 Mixer"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015331
15332 {"AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15333 {"AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15334 {"AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15335 {"AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15336 {"AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15337 {"AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15338 {"AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15339 {"AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15340 {"AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15341 {"AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15342 {"AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15343 {"AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15344 {"AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15345 {"AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15346 {"AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15347 {"AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15348 {"AUX_PCM_RX", NULL, "AUX_PCM_RX Audio Mixer"},
15349
15350 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15351 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15352 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15353 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15354 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15355 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15356 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15357 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15358 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15359 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15360 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15361 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15362 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15363 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15364 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15365 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15366 {"SEC_AUX_PCM_RX", NULL, "SEC_AUX_PCM_RX Audio Mixer"},
15367
15368 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15369 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15370 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15371 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15372 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15373 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15374 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15375 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15376 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15377 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15378 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15379 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15380 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15381 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15382 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15383 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15384 {"TERT_AUX_PCM_RX", NULL, "TERT_AUX_PCM_RX Audio Mixer"},
15385
15386 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15387 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15388 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15389 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15390 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15391 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15392 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15393 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15394 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15395 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15396 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15397 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15398 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15399 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15400 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15401 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15402 {"QUAT_AUX_PCM_RX", NULL, "QUAT_AUX_PCM_RX Audio Mixer"},
15403
Rohit Kumara5077932017-09-10 22:05:05 +053015404 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15405 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15406 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15407 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15408 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15409 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15410 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15411 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15412 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15413 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15414 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15415 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15416 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15417 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15418 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15419 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15420 {"QUIN_AUX_PCM_RX", NULL, "QUIN_AUX_PCM_RX Audio Mixer"},
15421
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015422 {"PRI_RX_Voice Mixer", "Voip", "VOIP_DL"},
15423 {"PRI_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15424 {"PRI_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15425 {"PRI_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15426 {"PRI_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15427 {"PRI_I2S_RX", NULL, "PRI_RX_Voice Mixer"},
15428
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015429 {"SEC_RX_Voice Mixer", "Voip", "VOIP_DL"},
15430 {"SEC_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15431 {"SEC_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15432 {"SEC_I2S_RX", NULL, "SEC_RX_Voice Mixer"},
15433
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015434 {"SEC_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
15435 {"SEC_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15436 {"SEC_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15437 {"SEC_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15438 {"SEC_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15439 {"SEC_MI2S_RX", NULL, "SEC_MI2S_RX_Voice Mixer"},
15440
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015441 {"SLIM_0_RX_Voice Mixer", "Voip", "VOIP_DL"},
15442 {"SLIM_0_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015443 {"SLIM_0_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15444 {"SLIM_0_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15445 {"SLIM_0_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15446 {"SLIMBUS_0_RX", NULL, "SLIM_0_RX_Voice Mixer"},
15447
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015448 {"SLIM_6_RX_Voice Mixer", "Voip", "VOIP_DL"},
15449 {"SLIM_6_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015450 {"SLIM_6_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15451 {"SLIM_6_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15452 {"SLIM_6_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15453 {"SLIMBUS_6_RX", NULL, "SLIM_6_RX_Voice Mixer"},
15454
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015455 {"USB_AUDIO_RX_Voice Mixer", "Voip", "VOIP_DL"},
15456 {"USB_AUDIO_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015457 {"USB_AUDIO_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15458 {"USB_AUDIO_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15459 {"USB_AUDIO_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15460 {"USB_AUDIO_RX", NULL, "USB_AUDIO_RX_Voice Mixer"},
15461
Aalique Grahamee4fd7d52017-11-28 13:24:13 -080015462 {"DISPLAY_PORT_RX_Voice Mixer", "Voip", "VOIP_DL"},
15463 {"DISPLAY_PORT_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Aalique Grahamee4fd7d52017-11-28 13:24:13 -080015464 {"DISPLAY_PORT_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15465 {"DISPLAY_PORT_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15466 {"DISPLAY_PORT_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15467 {"DISPLAY_PORT", NULL, "DISPLAY_PORT_RX_Voice Mixer"},
15468
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015469 {"INTERNAL_BT_SCO_RX_Voice Mixer", "Voip", "VOIP_DL"},
15470 {"INTERNAL_BT_SCO_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15471 {"INTERNAL_BT_SCO_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15472 {"INTERNAL_BT_SCO_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15473 {"INTERNAL_BT_SCO_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015474 {"INT_BT_SCO_RX", NULL, "INTERNAL_BT_SCO_RX_Voice Mixer"},
15475
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015476 {"AFE_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
15477 {"AFE_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15478 {"AFE_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15479 {"AFE_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15480 {"AFE_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15481 {"PCM_RX", NULL, "AFE_PCM_RX_Voice Mixer"},
15482
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015483 {"AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
15484 {"AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015485 {"AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15486 {"AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15487 {"AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15488 {"AUX_PCM_RX", NULL, "AUX_PCM_RX_Voice Mixer"},
15489
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015490 {"SEC_AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
15491 {"SEC_AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015492 {"SEC_AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15493 {"SEC_AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15494 {"SEC_AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15495 {"SEC_AUX_PCM_RX", NULL, "SEC_AUX_PCM_RX_Voice Mixer"},
15496
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015497 {"TERT_AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
15498 {"TERT_AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015499 {"TERT_AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15500 {"TERT_AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15501 {"TERT_AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15502 {"TERT_AUX_PCM_RX", NULL, "TERT_AUX_PCM_RX_Voice Mixer"},
15503
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015504 {"QUAT_AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
15505 {"QUAT_AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015506 {"QUAT_AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15507 {"QUAT_AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15508 {"QUAT_AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15509 {"QUAT_AUX_PCM_RX", NULL, "QUAT_AUX_PCM_RX_Voice Mixer"},
15510
Rohit Kumara5077932017-09-10 22:05:05 +053015511 {"QUIN_AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
15512 {"QUIN_AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Rohit Kumara5077932017-09-10 22:05:05 +053015513 {"QUIN_AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15514 {"QUIN_AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15515 {"QUIN_AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15516 {"QUIN_AUX_PCM_RX", NULL, "QUIN_AUX_PCM_RX_Voice Mixer"},
15517
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015518 {"HDMI_RX_Voice Mixer", "Voip", "VOIP_DL"},
15519 {"HDMI_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15520 {"HDMI_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15521 {"HDMI_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15522 {"HDMI_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15523 {"HDMI", NULL, "HDMI_RX_Voice Mixer"},
15524 {"HDMI", NULL, "HDMI_DL_HL"},
15525
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015526 {"MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015527 {"MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15528 {"MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15529 {"MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
kunleiz8a60b822017-10-11 15:04:02 +080015530 {"MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015531 {"MI2S_RX", NULL, "MI2S_RX_Voice Mixer"},
15532
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015533 {"PRI_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015534 {"PRI_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15535 {"PRI_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15536 {"PRI_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15537 {"PRI_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15538 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX_Voice Mixer"},
15539
15540 {"INT0_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
15541 {"INT0_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15542 {"INT0_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15543 {"INT0_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15544 {"INT0_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15545 {"INT0_MI2S_RX", NULL, "INT0_MI2S_RX_Voice Mixer"},
15546
15547 {"INT4_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
15548 {"INT4_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15549 {"INT4_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15550 {"INT4_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15551 {"INT4_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15552 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX_Voice Mixer"},
15553
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015554 {"TERT_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015555 {"TERT_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15556 {"TERT_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15557 {"TERT_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15558 {"TERT_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15559 {"TERT_MI2S_RX", NULL, "TERT_MI2S_RX_Voice Mixer"},
15560
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015561 {"QUAT_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015562 {"QUAT_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15563 {"QUAT_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15564 {"QUAT_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15565 {"QUAT_MI2S_RX", NULL, "QUAT_MI2S_RX_Voice Mixer"},
15566
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015567 {"QUIN_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015568 {"QUIN_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15569 {"QUIN_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15570 {"QUIN_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15571 {"QUIN_MI2S_RX", NULL, "QUIN_MI2S_RX_Voice Mixer"},
15572
Raja Mallik321d5712018-05-04 17:22:11 +053015573 {"PRI_TDM_RX_0_Voice Mixer", "Voip", "VOIP_DL"},
Raja Mallik321d5712018-05-04 17:22:11 +053015574 {"PRI_TDM_RX_0_Voice Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
15575 {"PRI_TDM_RX_0_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
15576 {"PRI_TDM_RX_0_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
15577 {"PRI_TDM_RX_0_Voice Mixer", "QCHAT", "QCHAT_DL"},
15578 {"PRI_TDM_RX_0_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15579 {"PRI_TDM_RX_0_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15580 {"PRI_TDM_RX_0_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15581 {"PRI_TDM_RX_0", NULL, "PRI_TDM_RX_0_Voice Mixer"},
15582
Raja Mallik321d5712018-05-04 17:22:11 +053015583 {"PRI_TDM_RX_1_Voice Mixer", "Voip", "VOIP_DL"},
Raja Mallik321d5712018-05-04 17:22:11 +053015584 {"PRI_TDM_RX_1_Voice Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
15585 {"PRI_TDM_RX_1_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
15586 {"PRI_TDM_RX_1_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
15587 {"PRI_TDM_RX_1_Voice Mixer", "QCHAT", "QCHAT_DL"},
15588 {"PRI_TDM_RX_1_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15589 {"PRI_TDM_RX_1_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15590 {"PRI_TDM_RX_1_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15591 {"PRI_TDM_RX_1", NULL, "PRI_TDM_RX_1_Voice Mixer"},
15592
Raja Mallik321d5712018-05-04 17:22:11 +053015593 {"PRI_TDM_RX_2_Voice Mixer", "Voip", "VOIP_DL"},
Raja Mallik321d5712018-05-04 17:22:11 +053015594 {"PRI_TDM_RX_2_Voice Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
15595 {"PRI_TDM_RX_2_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
15596 {"PRI_TDM_RX_2_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
15597 {"PRI_TDM_RX_2_Voice Mixer", "QCHAT", "QCHAT_DL"},
15598 {"PRI_TDM_RX_2_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15599 {"PRI_TDM_RX_2_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15600 {"PRI_TDM_RX_2_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15601 {"PRI_TDM_RX_2", NULL, "PRI_TDM_RX_2_Voice Mixer"},
15602
Raja Mallik321d5712018-05-04 17:22:11 +053015603 {"PRI_TDM_RX_3_Voice Mixer", "Voip", "VOIP_DL"},
Raja Mallik321d5712018-05-04 17:22:11 +053015604 {"PRI_TDM_RX_3_Voice Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
15605 {"PRI_TDM_RX_3_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
15606 {"PRI_TDM_RX_3_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
15607 {"PRI_TDM_RX_3_Voice Mixer", "QCHAT", "QCHAT_DL"},
15608 {"PRI_TDM_RX_3_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15609 {"PRI_TDM_RX_3_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15610 {"PRI_TDM_RX_3_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15611 {"PRI_TDM_RX_3", NULL, "PRI_TDM_RX_3_Voice Mixer"},
15612
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015613 {"QUAT_TDM_RX_2_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15614 {"QUAT_TDM_RX_2", NULL, "QUAT_TDM_RX_2_Voice Mixer"},
15615
15616 {"VOC_EXT_EC MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15617 {"VOC_EXT_EC MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15618 {"VOC_EXT_EC MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15619 {"VOC_EXT_EC MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015620 {"VOC_EXT_EC MUX", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015621 {"VOC_EXT_EC MUX", "SLIM_1_TX", "SLIMBUS_1_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015622 {"VOIP_UL", NULL, "VOC_EXT_EC MUX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015623 {"VOICEMMODE1_UL", NULL, "VOC_EXT_EC MUX"},
15624 {"VOICEMMODE2_UL", NULL, "VOC_EXT_EC MUX"},
15625
15626 {"AUDIO_REF_EC_UL1 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15627 {"AUDIO_REF_EC_UL1 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15628 {"AUDIO_REF_EC_UL1 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15629 {"AUDIO_REF_EC_UL1 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15630 {"AUDIO_REF_EC_UL1 MUX", "SLIM_1_TX", "SLIMBUS_1_TX"},
15631 {"AUDIO_REF_EC_UL1 MUX", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15632 {"AUDIO_REF_EC_UL1 MUX", "QUAT_TDM_RX_0", "QUAT_TDM_RX_0"},
15633 {"AUDIO_REF_EC_UL1 MUX", "QUAT_TDM_RX_1", "QUAT_TDM_RX_1"},
15634 {"AUDIO_REF_EC_UL1 MUX", "QUAT_TDM_RX_2", "QUAT_TDM_RX_2"},
15635 {"AUDIO_REF_EC_UL1 MUX", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15636
15637 {"AUDIO_REF_EC_UL2 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15638 {"AUDIO_REF_EC_UL2 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15639 {"AUDIO_REF_EC_UL2 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15640 {"AUDIO_REF_EC_UL2 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15641
15642 {"AUDIO_REF_EC_UL3 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15643 {"AUDIO_REF_EC_UL3 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15644 {"AUDIO_REF_EC_UL3 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15645 {"AUDIO_REF_EC_UL3 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15646
15647 {"AUDIO_REF_EC_UL4 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15648 {"AUDIO_REF_EC_UL4 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15649 {"AUDIO_REF_EC_UL4 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15650 {"AUDIO_REF_EC_UL4 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15651
15652 {"AUDIO_REF_EC_UL5 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15653 {"AUDIO_REF_EC_UL5 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15654 {"AUDIO_REF_EC_UL5 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15655 {"AUDIO_REF_EC_UL5 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15656
15657 {"AUDIO_REF_EC_UL6 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15658 {"AUDIO_REF_EC_UL6 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15659 {"AUDIO_REF_EC_UL6 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15660 {"AUDIO_REF_EC_UL6 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15661
15662 {"AUDIO_REF_EC_UL8 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15663 {"AUDIO_REF_EC_UL8 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15664 {"AUDIO_REF_EC_UL8 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15665 {"AUDIO_REF_EC_UL8 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15666
15667 {"AUDIO_REF_EC_UL9 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15668 {"AUDIO_REF_EC_UL9 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15669 {"AUDIO_REF_EC_UL9 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15670 {"AUDIO_REF_EC_UL9 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15671
Laxminath Kasam38070be2017-08-17 18:21:59 +053015672 {"AUDIO_REF_EC_UL10 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15673 {"AUDIO_REF_EC_UL10 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15674 {"AUDIO_REF_EC_UL10 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15675 {"AUDIO_REF_EC_UL10 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15676 {"AUDIO_REF_EC_UL10 MUX", "SLIM_1_TX", "SLIMBUS_1_TX"},
15677 {"AUDIO_REF_EC_UL10 MUX", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15678 {"AUDIO_REF_EC_UL10 MUX", "QUAT_TDM_RX_0", "QUAT_TDM_RX_0"},
15679 {"AUDIO_REF_EC_UL10 MUX", "QUAT_TDM_RX_1", "QUAT_TDM_RX_1"},
15680 {"AUDIO_REF_EC_UL10 MUX", "QUAT_TDM_RX_2", "QUAT_TDM_RX_2"},
15681 {"AUDIO_REF_EC_UL10 MUX", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
Vikram Panduranga016c49f2017-09-11 15:15:56 -070015682
15683 {"AUDIO_REF_EC_UL16 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15684 {"AUDIO_REF_EC_UL16 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15685 {"AUDIO_REF_EC_UL16 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15686 {"AUDIO_REF_EC_UL16 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15687
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015688 {"AUDIO_REF_EC_UL17 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15689 {"AUDIO_REF_EC_UL17 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15690 {"AUDIO_REF_EC_UL17 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15691 {"AUDIO_REF_EC_UL17 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15692
15693 {"AUDIO_REF_EC_UL18 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15694 {"AUDIO_REF_EC_UL18 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15695 {"AUDIO_REF_EC_UL18 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15696 {"AUDIO_REF_EC_UL18 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15697
15698 {"AUDIO_REF_EC_UL19 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15699 {"AUDIO_REF_EC_UL19 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15700 {"AUDIO_REF_EC_UL19 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15701 {"AUDIO_REF_EC_UL19 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15702
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053015703 {"AUDIO_REF_EC_UL28 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15704 {"AUDIO_REF_EC_UL28 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15705 {"AUDIO_REF_EC_UL28 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15706 {"AUDIO_REF_EC_UL28 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15707
15708 {"AUDIO_REF_EC_UL29 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15709 {"AUDIO_REF_EC_UL29 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15710 {"AUDIO_REF_EC_UL29 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15711 {"AUDIO_REF_EC_UL29 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Yunfei Zhang3efc4a22017-11-07 16:30:13 +080015712
15713 {"LSM1_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15714 {"LSM2_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15715 {"LSM3_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15716 {"LSM4_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15717 {"LSM5_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15718 {"LSM6_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15719 {"LSM7_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15720 {"LSM8_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15721
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015722 {"MM_UL1", NULL, "AUDIO_REF_EC_UL1 MUX"},
15723 {"MM_UL2", NULL, "AUDIO_REF_EC_UL2 MUX"},
15724 {"MM_UL3", NULL, "AUDIO_REF_EC_UL3 MUX"},
15725 {"MM_UL4", NULL, "AUDIO_REF_EC_UL4 MUX"},
15726 {"MM_UL5", NULL, "AUDIO_REF_EC_UL5 MUX"},
15727 {"MM_UL6", NULL, "AUDIO_REF_EC_UL6 MUX"},
15728 {"MM_UL8", NULL, "AUDIO_REF_EC_UL8 MUX"},
15729 {"MM_UL9", NULL, "AUDIO_REF_EC_UL9 MUX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053015730 {"MM_UL10", NULL, "AUDIO_REF_EC_UL10 MUX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053015731 {"MM_UL16", NULL, "AUDIO_REF_EC_UL16 MUX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015732 {"MM_UL17", NULL, "AUDIO_REF_EC_UL17 MUX"},
15733 {"MM_UL18", NULL, "AUDIO_REF_EC_UL18 MUX"},
15734 {"MM_UL19", NULL, "AUDIO_REF_EC_UL19 MUX"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053015735 {"MM_UL28", NULL, "AUDIO_REF_EC_UL28 MUX"},
15736 {"MM_UL29", NULL, "AUDIO_REF_EC_UL29 MUX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015737
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015738 {"VoiceMMode1_Tx Mixer", "PRI_TX_MMode1", "PRI_I2S_TX"},
15739 {"VoiceMMode1_Tx Mixer", "PRI_MI2S_TX_MMode1", "PRI_MI2S_TX"},
15740 {"VoiceMMode1_Tx Mixer", "MI2S_TX_MMode1", "MI2S_TX"},
15741 {"VoiceMMode1_Tx Mixer", "TERT_MI2S_TX_MMode1", "TERT_MI2S_TX"},
15742 {"VoiceMMode1_Tx Mixer", "INT3_MI2S_TX_MMode1", "INT3_MI2S_TX"},
15743 {"VoiceMMode1_Tx Mixer", "SLIM_0_TX_MMode1", "SLIMBUS_0_TX"},
15744 {"VoiceMMode1_Tx Mixer", "SLIM_7_TX_MMode1", "SLIMBUS_7_TX"},
15745 {"VoiceMMode1_Tx Mixer", "SLIM_8_TX_MMode1", "SLIMBUS_8_TX"},
15746 {"VoiceMMode1_Tx Mixer", "USB_AUDIO_TX_MMode1", "USB_AUDIO_TX"},
15747 {"VoiceMMode1_Tx Mixer", "INT_BT_SCO_TX_MMode1", "INT_BT_SCO_TX"},
15748 {"VoiceMMode1_Tx Mixer", "AFE_PCM_TX_MMode1", "PCM_TX"},
15749 {"VoiceMMode1_Tx Mixer", "AUX_PCM_TX_MMode1", "AUX_PCM_TX"},
15750 {"VoiceMMode1_Tx Mixer", "SEC_AUX_PCM_TX_MMode1", "SEC_AUX_PCM_TX"},
15751 {"VoiceMMode1_Tx Mixer", "TERT_AUX_PCM_TX_MMode1", "TERT_AUX_PCM_TX"},
15752 {"VoiceMMode1_Tx Mixer", "QUAT_AUX_PCM_TX_MMode1", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015753 {"VoiceMMode1_Tx Mixer", "QUIN_AUX_PCM_TX_MMode1", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015754 {"VoiceMMode1_Tx Mixer", "QUAT_TDM_TX_0_MMode1", "QUAT_TDM_TX_0"},
Raja Mallik321d5712018-05-04 17:22:11 +053015755 {"VoiceMMode1_Tx Mixer", "PRI_TDM_TX_3_MMode1", "PRI_TDM_TX_3"},
Aditya Bavanari769c3102018-02-23 16:34:40 +053015756 {"VoiceMMode1_Tx Mixer", "QUAT_MI2S_TX_MMode1", "QUAT_MI2S_TX"},
15757 {"VoiceMMode1_Tx Mixer", "QUIN_MI2S_TX_MMode1", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015758 {"VOICEMMODE1_UL", NULL, "VoiceMMode1_Tx Mixer"},
15759
15760 {"VoiceMMode2_Tx Mixer", "PRI_TX_MMode2", "PRI_I2S_TX"},
15761 {"VoiceMMode2_Tx Mixer", "PRI_MI2S_TX_MMode2", "PRI_MI2S_TX"},
15762 {"VoiceMMode2_Tx Mixer", "MI2S_TX_MMode2", "MI2S_TX"},
15763 {"VoiceMMode2_Tx Mixer", "TERT_MI2S_TX_MMode2", "TERT_MI2S_TX"},
15764 {"VoiceMMode2_Tx Mixer", "INT3_MI2S_TX_MMode2", "INT3_MI2S_TX"},
15765 {"VoiceMMode2_Tx Mixer", "SLIM_0_TX_MMode2", "SLIMBUS_0_TX"},
15766 {"VoiceMMode2_Tx Mixer", "SLIM_7_TX_MMode2", "SLIMBUS_7_TX"},
15767 {"VoiceMMode2_Tx Mixer", "SLIM_8_TX_MMode2", "SLIMBUS_8_TX"},
15768 {"VoiceMMode2_Tx Mixer", "USB_AUDIO_TX_MMode2", "USB_AUDIO_TX"},
15769 {"VoiceMMode2_Tx Mixer", "INT_BT_SCO_TX_MMode2", "INT_BT_SCO_TX"},
15770 {"VoiceMMode2_Tx Mixer", "AFE_PCM_TX_MMode2", "PCM_TX"},
15771 {"VoiceMMode2_Tx Mixer", "AUX_PCM_TX_MMode2", "AUX_PCM_TX"},
15772 {"VoiceMMode2_Tx Mixer", "SEC_AUX_PCM_TX_MMode2", "SEC_AUX_PCM_TX"},
15773 {"VoiceMMode2_Tx Mixer", "TERT_AUX_PCM_TX_MMode2", "TERT_AUX_PCM_TX"},
15774 {"VoiceMMode2_Tx Mixer", "QUAT_AUX_PCM_TX_MMode2", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015775 {"VoiceMMode2_Tx Mixer", "QUIN_AUX_PCM_TX_MMode2", "QUIN_AUX_PCM_TX"},
Aditya Bavanari769c3102018-02-23 16:34:40 +053015776 {"VoiceMMode2_Tx Mixer", "QUAT_MI2S_TX_MMode2", "QUAT_MI2S_TX"},
15777 {"VoiceMMode2_Tx Mixer", "QUIN_MI2S_TX_MMode2", "QUIN_MI2S_TX"},
Raja Mallik321d5712018-05-04 17:22:11 +053015778 {"VoiceMMode2_Tx Mixer", "PRI_TDM_TX_3_MMode2", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015779 {"VOICEMMODE2_UL", NULL, "VoiceMMode2_Tx Mixer"},
15780
15781 {"Voip_Tx Mixer", "PRI_TX_Voip", "PRI_I2S_TX"},
15782 {"Voip_Tx Mixer", "MI2S_TX_Voip", "MI2S_TX"},
15783 {"Voip_Tx Mixer", "TERT_MI2S_TX_Voip", "TERT_MI2S_TX"},
15784 {"Voip_Tx Mixer", "INT3_MI2S_TX_Voip", "INT3_MI2S_TX"},
15785 {"Voip_Tx Mixer", "SLIM_0_TX_Voip", "SLIMBUS_0_TX"},
15786 {"Voip_Tx Mixer", "SLIM_7_TX_Voip", "SLIMBUS_7_TX"},
15787 {"Voip_Tx Mixer", "SLIM_8_TX_Voip", "SLIMBUS_8_TX"},
15788 {"Voip_Tx Mixer", "USB_AUDIO_TX_Voip", "USB_AUDIO_TX"},
15789 {"Voip_Tx Mixer", "INTERNAL_BT_SCO_TX_Voip", "INT_BT_SCO_TX"},
15790 {"Voip_Tx Mixer", "AFE_PCM_TX_Voip", "PCM_TX"},
15791 {"Voip_Tx Mixer", "AUX_PCM_TX_Voip", "AUX_PCM_TX"},
15792 {"Voip_Tx Mixer", "SEC_AUX_PCM_TX_Voip", "SEC_AUX_PCM_TX"},
15793 {"Voip_Tx Mixer", "TERT_AUX_PCM_TX_Voip", "TERT_AUX_PCM_TX"},
15794 {"Voip_Tx Mixer", "QUAT_AUX_PCM_TX_Voip", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015795 {"Voip_Tx Mixer", "QUIN_AUX_PCM_TX_Voip", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015796 {"Voip_Tx Mixer", "PRI_MI2S_TX_Voip", "PRI_MI2S_TX"},
Raja Mallik321d5712018-05-04 17:22:11 +053015797 {"Voip_Tx Mixer", "PRI_TDM_TX_3_Voip", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015798 {"VOIP_UL", NULL, "Voip_Tx Mixer"},
15799
15800 {"SLIMBUS_DL_HL", "Switch", "SLIM0_DL_HL"},
15801 {"SLIMBUS_0_RX", NULL, "SLIMBUS_DL_HL"},
15802 {"SLIMBUS1_DL_HL", "Switch", "SLIM1_DL_HL"},
15803 {"SLIMBUS_1_RX", NULL, "SLIMBUS1_DL_HL"},
15804 {"SLIMBUS3_DL_HL", "Switch", "SLIM3_DL_HL"},
15805 {"SLIMBUS_3_RX", NULL, "SLIMBUS3_DL_HL"},
15806 {"SLIMBUS4_DL_HL", "Switch", "SLIM4_DL_HL"},
15807 {"SLIMBUS_4_RX", NULL, "SLIMBUS4_DL_HL"},
15808 {"SLIMBUS6_DL_HL", "Switch", "SLIM0_DL_HL"},
15809 {"SLIMBUS_6_RX", NULL, "SLIMBUS6_DL_HL"},
15810 {"SLIM0_UL_HL", NULL, "SLIMBUS_0_TX"},
15811 {"SLIM1_UL_HL", NULL, "SLIMBUS_1_TX"},
15812 {"SLIM3_UL_HL", NULL, "SLIMBUS_3_TX"},
15813 {"SLIM4_UL_HL", NULL, "SLIMBUS_4_TX"},
15814 {"SLIM8_UL_HL", NULL, "SLIMBUS_8_TX"},
15815
15816 {"LSM1 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15817 {"LSM1 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15818 {"LSM1 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15819 {"LSM1 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15820 {"LSM1 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15821 {"LSM1 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15822 {"LSM1 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15823 {"LSM1 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Ashish Jain01b10322018-05-12 15:37:44 +053015824 {"LSM1 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15825 {"LSM1 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015826 {"LSM1_UL_HL", NULL, "LSM1 Mixer"},
15827
15828 {"LSM2 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15829 {"LSM2 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15830 {"LSM2 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15831 {"LSM2 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15832 {"LSM2 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15833 {"LSM2 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15834 {"LSM2 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15835 {"LSM2 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Ashish Jain01b10322018-05-12 15:37:44 +053015836 {"LSM2 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15837 {"LSM2 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015838 {"LSM2_UL_HL", NULL, "LSM2 Mixer"},
15839
15840
15841 {"LSM3 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15842 {"LSM3 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15843 {"LSM3 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15844 {"LSM3 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15845 {"LSM3 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15846 {"LSM3 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15847 {"LSM3 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15848 {"LSM3 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Ashish Jain01b10322018-05-12 15:37:44 +053015849 {"LSM3 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15850 {"LSM3 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015851 {"LSM3_UL_HL", NULL, "LSM3 Mixer"},
15852
15853
15854 {"LSM4 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15855 {"LSM4 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15856 {"LSM4 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15857 {"LSM4 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15858 {"LSM4 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15859 {"LSM4 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15860 {"LSM4 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15861 {"LSM4 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Ashish Jain01b10322018-05-12 15:37:44 +053015862 {"LSM4 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15863 {"LSM4 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015864 {"LSM4_UL_HL", NULL, "LSM4 Mixer"},
15865
15866 {"LSM5 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15867 {"LSM5 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15868 {"LSM5 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15869 {"LSM5 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15870 {"LSM5 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15871 {"LSM5 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15872 {"LSM5 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15873 {"LSM5 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Ashish Jain01b10322018-05-12 15:37:44 +053015874 {"LSM5 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15875 {"LSM5 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015876 {"LSM5_UL_HL", NULL, "LSM5 Mixer"},
15877
15878 {"LSM6 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15879 {"LSM6 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15880 {"LSM6 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15881 {"LSM6 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15882 {"LSM6 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15883 {"LSM6 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Ashish Jain01b10322018-05-12 15:37:44 +053015884 {"LSM6 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15885 {"LSM6 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015886 {"LSM6_UL_HL", NULL, "LSM6 Mixer"},
15887
15888 {"LSM7 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15889 {"LSM7 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15890 {"LSM7 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15891 {"LSM7 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15892 {"LSM7 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15893 {"LSM7 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Ashish Jain01b10322018-05-12 15:37:44 +053015894 {"LSM7 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15895 {"LSM7 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015896 {"LSM7_UL_HL", NULL, "LSM7 Mixer"},
15897
15898 {"LSM8 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15899 {"LSM8 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15900 {"LSM8 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15901 {"LSM8 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15902 {"LSM8 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15903 {"LSM8 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Ashish Jain01b10322018-05-12 15:37:44 +053015904 {"LSM8 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15905 {"LSM8 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015906 {"LSM8_UL_HL", NULL, "LSM8 Mixer"},
15907
15908
15909 {"CPE_LSM_UL_HL", NULL, "BE_IN"},
15910 {"QCHAT_Tx Mixer", "PRI_TX_QCHAT", "PRI_I2S_TX"},
15911 {"QCHAT_Tx Mixer", "SLIM_0_TX_QCHAT", "SLIMBUS_0_TX"},
15912 {"QCHAT_Tx Mixer", "SLIM_7_TX_QCHAT", "SLIMBUS_7_TX"},
15913 {"QCHAT_Tx Mixer", "SLIM_8_TX_QCHAT", "SLIMBUS_8_TX"},
15914 {"QCHAT_Tx Mixer", "INTERNAL_BT_SCO_TX_QCHAT", "INT_BT_SCO_TX"},
15915 {"QCHAT_Tx Mixer", "AFE_PCM_TX_QCHAT", "PCM_TX"},
15916 {"QCHAT_Tx Mixer", "AUX_PCM_TX_QCHAT", "AUX_PCM_TX"},
15917 {"QCHAT_Tx Mixer", "SEC_AUX_PCM_TX_QCHAT", "SEC_AUX_PCM_TX"},
15918 {"QCHAT_Tx Mixer", "TERT_AUX_PCM_TX_QCHAT", "TERT_AUX_PCM_TX"},
15919 {"QCHAT_Tx Mixer", "QUAT_AUX_PCM_TX_QCHAT", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015920 {"QCHAT_Tx Mixer", "QUIN_AUX_PCM_TX_QCHAT", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015921 {"QCHAT_Tx Mixer", "MI2S_TX_QCHAT", "MI2S_TX"},
15922 {"QCHAT_Tx Mixer", "PRI_MI2S_TX_QCHAT", "PRI_MI2S_TX"},
15923 {"QCHAT_Tx Mixer", "TERT_MI2S_TX_QCHAT", "TERT_MI2S_TX"},
15924 {"QCHAT_Tx Mixer", "INT3_MI2S_TX_QCHAT", "INT3_MI2S_TX"},
15925 {"QCHAT_Tx Mixer", "USB_AUDIO_TX_QCHAT", "USB_AUDIO_TX"},
15926 {"QCHAT_UL", NULL, "QCHAT_Tx Mixer"},
15927
15928 {"INT_FM_RX", NULL, "INTFM_DL_HL"},
15929 {"INTFM_UL_HL", NULL, "INT_FM_TX"},
15930 {"INTHFP_UL_HL", NULL, "HFP_PRI_AUX_UL_HL"},
15931 {"HFP_PRI_AUX_UL_HL", "Switch", "AUX_PCM_TX"},
15932 {"INTHFP_UL_HL", NULL, "HFP_AUX_UL_HL"},
15933 {"HFP_AUX_UL_HL", "Switch", "SEC_AUX_PCM_TX"},
15934 {"INTHFP_UL_HL", NULL, "HFP_INT_UL_HL"},
15935 {"HFP_INT_UL_HL", "Switch", "INT_BT_SCO_TX"},
15936 {"SLIM7_UL_HL", NULL, "HFP_SLIM7_UL_HL"},
15937 {"HFP_SLIM7_UL_HL", "Switch", "SLIMBUS_7_TX"},
15938 {"AUX_PCM_RX", NULL, "AUXPCM_DL_HL"},
15939 {"AUX_PCM_RX", NULL, "INTHFP_DL_HL"},
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -080015940 {"SEC_AUX_PCM_RX", NULL, "SEC_AUXPCM_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015941 {"AUXPCM_UL_HL", NULL, "AUX_PCM_TX"},
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -080015942 {"SEC_AUXPCM_UL_HL", NULL, "SEC_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015943 {"MI2S_RX", NULL, "MI2S_DL_HL"},
15944 {"MI2S_UL_HL", NULL, "MI2S_TX"},
15945 {"PCM_RX_DL_HL", "Switch", "SLIM0_DL_HL"},
15946 {"PCM_RX", NULL, "PCM_RX_DL_HL"},
15947
15948 /* connect to INT4_MI2S_DL_HL since same pcm_id */
15949 {"INT0_MI2S_RX_DL_HL", "Switch", "INT4_MI2S_DL_HL"},
15950 {"INT0_MI2S_RX", NULL, "INT0_MI2S_RX_DL_HL"},
15951 {"INT4_MI2S_RX_DL_HL", "Switch", "INT4_MI2S_DL_HL"},
15952 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX_DL_HL"},
15953 {"PRI_MI2S_RX_DL_HL", "Switch", "PRI_MI2S_DL_HL"},
15954 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX_DL_HL"},
15955 {"SEC_MI2S_RX_DL_HL", "Switch", "SEC_MI2S_DL_HL"},
15956 {"SEC_MI2S_RX", NULL, "SEC_MI2S_RX_DL_HL"},
15957 {"TERT_MI2S_RX_DL_HL", "Switch", "TERT_MI2S_DL_HL"},
15958 {"TERT_MI2S_RX", NULL, "TERT_MI2S_RX_DL_HL"},
15959
15960 {"QUAT_MI2S_RX_DL_HL", "Switch", "QUAT_MI2S_DL_HL"},
15961 {"QUAT_MI2S_RX", NULL, "QUAT_MI2S_RX_DL_HL"},
Rohit Kumara5077932017-09-10 22:05:05 +053015962 {"QUIN_MI2S_RX_DL_HL", "Switch", "QUIN_MI2S_DL_HL"},
15963 {"QUIN_MI2S_RX", NULL, "QUIN_MI2S_RX_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015964 {"MI2S_UL_HL", NULL, "TERT_MI2S_TX"},
15965 {"INT3_MI2S_UL_HL", NULL, "INT3_MI2S_TX"},
15966 {"TERT_MI2S_UL_HL", NULL, "TERT_MI2S_TX"},
15967 {"SEC_I2S_RX", NULL, "SEC_I2S_DL_HL"},
15968 {"PRI_MI2S_UL_HL", NULL, "PRI_MI2S_TX"},
15969 {"SEC_MI2S_UL_HL", NULL, "SEC_MI2S_TX"},
15970 {"SEC_MI2S_RX", NULL, "SEC_MI2S_DL_HL"},
15971 {"PRI_MI2S_RX", NULL, "PRI_MI2S_DL_HL"},
15972 {"TERT_MI2S_RX", NULL, "TERT_MI2S_DL_HL"},
15973 {"QUAT_MI2S_UL_HL", NULL, "QUAT_MI2S_TX"},
15974
15975 {"PRI_TDM_TX_0_UL_HL", NULL, "PRI_TDM_TX_0"},
15976 {"PRI_TDM_TX_1_UL_HL", NULL, "PRI_TDM_TX_1"},
15977 {"PRI_TDM_TX_2_UL_HL", NULL, "PRI_TDM_TX_2"},
15978 {"PRI_TDM_TX_3_UL_HL", NULL, "PRI_TDM_TX_3"},
15979 {"PRI_TDM_RX_0", NULL, "PRI_TDM_RX_0_DL_HL"},
15980 {"PRI_TDM_RX_1", NULL, "PRI_TDM_RX_1_DL_HL"},
15981 {"PRI_TDM_RX_2", NULL, "PRI_TDM_RX_2_DL_HL"},
15982 {"PRI_TDM_RX_3", NULL, "PRI_TDM_RX_3_DL_HL"},
15983 {"SEC_TDM_TX_0_UL_HL", NULL, "SEC_TDM_TX_0"},
15984 {"SEC_TDM_TX_1_UL_HL", NULL, "SEC_TDM_TX_1"},
15985 {"SEC_TDM_TX_2_UL_HL", NULL, "SEC_TDM_TX_2"},
15986 {"SEC_TDM_TX_3_UL_HL", NULL, "SEC_TDM_TX_3"},
15987 {"SEC_TDM_RX_0", NULL, "SEC_TDM_RX_0_DL_HL"},
15988 {"SEC_TDM_RX_1", NULL, "SEC_TDM_RX_1_DL_HL"},
15989 {"SEC_TDM_RX_2", NULL, "SEC_TDM_RX_2_DL_HL"},
15990 {"SEC_TDM_RX_3", NULL, "SEC_TDM_RX_3_DL_HL"},
15991 {"TERT_TDM_TX_0_UL_HL", NULL, "TERT_TDM_TX_0"},
15992 {"TERT_TDM_TX_1_UL_HL", NULL, "TERT_TDM_TX_1"},
15993 {"TERT_TDM_TX_2_UL_HL", NULL, "TERT_TDM_TX_2"},
15994 {"TERT_TDM_TX_3_UL_HL", NULL, "TERT_TDM_TX_3"},
15995 {"TERT_TDM_RX_0", NULL, "TERT_TDM_RX_0_DL_HL"},
15996 {"TERT_TDM_RX_1", NULL, "TERT_TDM_RX_1_DL_HL"},
15997 {"TERT_TDM_RX_2", NULL, "TERT_TDM_RX_2_DL_HL"},
15998 {"TERT_TDM_RX_3", NULL, "TERT_TDM_RX_3_DL_HL"},
15999 {"QUAT_TDM_TX_0_UL_HL", NULL, "QUAT_TDM_TX_0"},
16000 {"QUAT_TDM_TX_1_UL_HL", NULL, "QUAT_TDM_TX_1"},
16001 {"QUAT_TDM_TX_2_UL_HL", NULL, "QUAT_TDM_TX_2"},
16002 {"QUAT_TDM_TX_3_UL_HL", NULL, "QUAT_TDM_TX_3"},
16003 {"QUAT_TDM_RX_0", NULL, "QUAT_TDM_RX_0_DL_HL"},
16004 {"QUAT_TDM_RX_1", NULL, "QUAT_TDM_RX_1_DL_HL"},
16005 {"QUAT_TDM_RX_2", NULL, "QUAT_TDM_RX_2_DL_HL"},
16006 {"QUAT_TDM_RX_3", NULL, "QUAT_TDM_RX_3_DL_HL"},
Rohit Kumara5077932017-09-10 22:05:05 +053016007 {"QUIN_TDM_TX_0_UL_HL", NULL, "QUIN_TDM_TX_0"},
16008 {"QUIN_TDM_TX_1_UL_HL", NULL, "QUIN_TDM_TX_1"},
16009 {"QUIN_TDM_TX_2_UL_HL", NULL, "QUIN_TDM_TX_2"},
16010 {"QUIN_TDM_TX_3_UL_HL", NULL, "QUIN_TDM_TX_3"},
16011 {"QUIN_TDM_RX_0", NULL, "QUIN_TDM_RX_0_DL_HL"},
16012 {"QUIN_TDM_RX_1", NULL, "QUIN_TDM_RX_1_DL_HL"},
16013 {"QUIN_TDM_RX_2", NULL, "QUIN_TDM_RX_2_DL_HL"},
16014 {"QUIN_TDM_RX_3", NULL, "QUIN_TDM_RX_3_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016015
16016 {"PRI_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16017 {"PRI_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16018 {"PRI_TDM_RX_0 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16019 {"PRI_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16020 {"PRI_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16021 {"PRI_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16022 {"PRI_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16023 {"PRI_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16024 {"PRI_TDM_RX_0 Port Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
16025 {"PRI_TDM_RX_0 Port Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
16026 {"PRI_TDM_RX_0 Port Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
16027 {"PRI_TDM_RX_0 Port Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
16028 {"PRI_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16029 {"PRI_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16030 {"PRI_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16031 {"PRI_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016032 {"PRI_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16033 {"PRI_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16034 {"PRI_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16035 {"PRI_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016036 {"PRI_TDM_RX_0", NULL, "PRI_TDM_RX_0 Port Mixer"},
16037
16038 {"PRI_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16039 {"PRI_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16040 {"PRI_TDM_RX_1 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16041 {"PRI_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16042 {"PRI_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16043 {"PRI_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16044 {"PRI_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16045 {"PRI_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16046 {"PRI_TDM_RX_1 Port Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
16047 {"PRI_TDM_RX_1 Port Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
16048 {"PRI_TDM_RX_1 Port Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
16049 {"PRI_TDM_RX_1 Port Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
16050 {"PRI_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16051 {"PRI_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16052 {"PRI_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16053 {"PRI_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016054 {"PRI_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16055 {"PRI_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16056 {"PRI_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16057 {"PRI_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016058 {"PRI_TDM_RX_1", NULL, "PRI_TDM_RX_1 Port Mixer"},
16059
16060 {"PRI_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16061 {"PRI_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16062 {"PRI_TDM_RX_2 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16063 {"PRI_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16064 {"PRI_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16065 {"PRI_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16066 {"PRI_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16067 {"PRI_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16068 {"PRI_TDM_RX_2 Port Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
16069 {"PRI_TDM_RX_2 Port Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
16070 {"PRI_TDM_RX_2 Port Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
16071 {"PRI_TDM_RX_2 Port Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
16072 {"PRI_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16073 {"PRI_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16074 {"PRI_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16075 {"PRI_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016076 {"PRI_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16077 {"PRI_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16078 {"PRI_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16079 {"PRI_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016080 {"PRI_TDM_RX_2", NULL, "PRI_TDM_RX_2 Port Mixer"},
16081
16082 {"PRI_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16083 {"PRI_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16084 {"PRI_TDM_RX_3 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16085 {"PRI_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16086 {"PRI_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16087 {"PRI_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16088 {"PRI_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16089 {"PRI_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16090 {"PRI_TDM_RX_3 Port Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
16091 {"PRI_TDM_RX_3 Port Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
16092 {"PRI_TDM_RX_3 Port Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
16093 {"PRI_TDM_RX_3 Port Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
16094 {"PRI_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16095 {"PRI_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16096 {"PRI_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16097 {"PRI_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016098 {"PRI_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16099 {"PRI_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16100 {"PRI_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16101 {"PRI_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016102 {"PRI_TDM_RX_3", NULL, "PRI_TDM_RX_3 Port Mixer"},
16103
16104 {"SEC_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16105 {"SEC_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16106 {"SEC_TDM_RX_0 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16107 {"SEC_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16108 {"SEC_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16109 {"SEC_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16110 {"SEC_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16111 {"SEC_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16112 {"SEC_TDM_RX_0 Port Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
16113 {"SEC_TDM_RX_0 Port Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
16114 {"SEC_TDM_RX_0 Port Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
16115 {"SEC_TDM_RX_0 Port Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
16116 {"SEC_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16117 {"SEC_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16118 {"SEC_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16119 {"SEC_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016120 {"SEC_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16121 {"SEC_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16122 {"SEC_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16123 {"SEC_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016124 {"SEC_TDM_RX_0", NULL, "SEC_TDM_RX_0 Port Mixer"},
16125
16126 {"SEC_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16127 {"SEC_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16128 {"SEC_TDM_RX_1 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16129 {"SEC_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16130 {"SEC_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16131 {"SEC_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16132 {"SEC_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16133 {"SEC_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16134 {"SEC_TDM_RX_1 Port Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
16135 {"SEC_TDM_RX_1 Port Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
16136 {"SEC_TDM_RX_1 Port Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
16137 {"SEC_TDM_RX_1 Port Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
16138 {"SEC_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16139 {"SEC_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16140 {"SEC_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16141 {"SEC_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016142 {"SEC_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16143 {"SEC_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16144 {"SEC_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16145 {"SEC_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016146 {"SEC_TDM_RX_1", NULL, "SEC_TDM_RX_1 Port Mixer"},
16147
16148 {"SEC_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16149 {"SEC_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16150 {"SEC_TDM_RX_2 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16151 {"SEC_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16152 {"SEC_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16153 {"SEC_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16154 {"SEC_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16155 {"SEC_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16156 {"SEC_TDM_RX_2 Port Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
16157 {"SEC_TDM_RX_2 Port Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
16158 {"SEC_TDM_RX_2 Port Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
16159 {"SEC_TDM_RX_2 Port Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
16160 {"SEC_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16161 {"SEC_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16162 {"SEC_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16163 {"SEC_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016164 {"SEC_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16165 {"SEC_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16166 {"SEC_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16167 {"SEC_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016168 {"SEC_TDM_RX_2", NULL, "SEC_TDM_RX_2 Port Mixer"},
16169
16170 {"SEC_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16171 {"SEC_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16172 {"SEC_TDM_RX_3 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16173 {"SEC_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16174 {"SEC_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16175 {"SEC_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16176 {"SEC_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16177 {"SEC_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16178 {"SEC_TDM_RX_3 Port Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
16179 {"SEC_TDM_RX_3 Port Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
16180 {"SEC_TDM_RX_3 Port Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
16181 {"SEC_TDM_RX_3 Port Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
16182 {"SEC_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16183 {"SEC_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16184 {"SEC_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16185 {"SEC_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016186 {"SEC_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16187 {"SEC_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16188 {"SEC_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16189 {"SEC_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016190 {"SEC_TDM_RX_3", NULL, "SEC_TDM_RX_3 Port Mixer"},
16191
16192 {"TERT_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16193 {"TERT_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16194 {"TERT_TDM_RX_0 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16195 {"TERT_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16196 {"TERT_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16197 {"TERT_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16198 {"TERT_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16199 {"TERT_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16200 {"TERT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16201 {"TERT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16202 {"TERT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16203 {"TERT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16204 {"TERT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16205 {"TERT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16206 {"TERT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16207 {"TERT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016208 {"TERT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16209 {"TERT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16210 {"TERT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16211 {"TERT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016212 {"TERT_TDM_RX_0", NULL, "TERT_TDM_RX_0 Port Mixer"},
16213
16214 {"TERT_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16215 {"TERT_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16216 {"TERT_TDM_RX_1 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16217 {"TERT_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16218 {"TERT_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16219 {"TERT_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16220 {"TERT_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16221 {"TERT_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16222 {"TERT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16223 {"TERT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16224 {"TERT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16225 {"TERT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16226 {"TERT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16227 {"TERT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16228 {"TERT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16229 {"TERT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016230 {"TERT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16231 {"TERT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16232 {"TERT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16233 {"TERT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016234 {"TERT_TDM_RX_1", NULL, "TERT_TDM_RX_1 Port Mixer"},
16235
16236 {"TERT_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16237 {"TERT_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16238 {"TERT_TDM_RX_2 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16239 {"TERT_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16240 {"TERT_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16241 {"TERT_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16242 {"TERT_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16243 {"TERT_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16244 {"TERT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16245 {"TERT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16246 {"TERT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16247 {"TERT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16248 {"TERT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16249 {"TERT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16250 {"TERT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16251 {"TERT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016252 {"TERT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16253 {"TERT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16254 {"TERT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16255 {"TERT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016256 {"TERT_TDM_RX_2", NULL, "TERT_TDM_RX_2 Port Mixer"},
16257
16258 {"TERT_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16259 {"TERT_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16260 {"TERT_TDM_RX_3 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16261 {"TERT_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16262 {"TERT_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16263 {"TERT_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16264 {"TERT_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16265 {"TERT_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16266 {"TERT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16267 {"TERT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16268 {"TERT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16269 {"TERT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16270 {"TERT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16271 {"TERT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16272 {"TERT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16273 {"TERT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016274 {"TERT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16275 {"TERT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16276 {"TERT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16277 {"TERT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016278 {"TERT_TDM_RX_3", NULL, "TERT_TDM_RX_3 Port Mixer"},
16279
16280 {"QUAT_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16281 {"QUAT_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16282 {"QUAT_TDM_RX_0 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16283 {"QUAT_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16284 {"QUAT_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16285 {"QUAT_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16286 {"QUAT_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16287 {"QUAT_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16288 {"QUAT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16289 {"QUAT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16290 {"QUAT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16291 {"QUAT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16292 {"QUAT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16293 {"QUAT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16294 {"QUAT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16295 {"QUAT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016296 {"QUAT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16297 {"QUAT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16298 {"QUAT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16299 {"QUAT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016300 {"QUAT_TDM_RX_0", NULL, "QUAT_TDM_RX_0 Port Mixer"},
16301
16302 {"QUAT_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16303 {"QUAT_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16304 {"QUAT_TDM_RX_1 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16305 {"QUAT_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16306 {"QUAT_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16307 {"QUAT_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16308 {"QUAT_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16309 {"QUAT_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16310 {"QUAT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16311 {"QUAT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16312 {"QUAT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16313 {"QUAT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16314 {"QUAT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16315 {"QUAT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16316 {"QUAT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16317 {"QUAT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016318 {"QUAT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16319 {"QUAT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16320 {"QUAT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16321 {"QUAT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016322 {"QUAT_TDM_RX_1", NULL, "QUAT_TDM_RX_1 Port Mixer"},
16323
16324 {"QUAT_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16325 {"QUAT_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16326 {"QUAT_TDM_RX_2 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16327 {"QUAT_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16328 {"QUAT_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16329 {"QUAT_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16330 {"QUAT_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16331 {"QUAT_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16332 {"QUAT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16333 {"QUAT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16334 {"QUAT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16335 {"QUAT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16336 {"QUAT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16337 {"QUAT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16338 {"QUAT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16339 {"QUAT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016340 {"QUAT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16341 {"QUAT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16342 {"QUAT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16343 {"QUAT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016344 {"QUAT_TDM_RX_2", NULL, "QUAT_TDM_RX_2 Port Mixer"},
16345
16346 {"QUAT_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16347 {"QUAT_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16348 {"QUAT_TDM_RX_3 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16349 {"QUAT_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16350 {"QUAT_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16351 {"QUAT_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16352 {"QUAT_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16353 {"QUAT_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16354 {"QUAT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16355 {"QUAT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16356 {"QUAT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16357 {"QUAT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16358 {"QUAT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16359 {"QUAT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16360 {"QUAT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16361 {"QUAT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016362 {"QUAT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16363 {"QUAT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16364 {"QUAT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16365 {"QUAT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016366 {"QUAT_TDM_RX_3", NULL, "QUAT_TDM_RX_3 Port Mixer"},
16367
Rohit Kumara5077932017-09-10 22:05:05 +053016368 {"QUIN_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16369 {"QUIN_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16370 {"QUIN_TDM_RX_0 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16371 {"QUIN_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16372 {"QUIN_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16373 {"QUIN_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16374 {"QUIN_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16375 {"QUIN_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16376 {"QUIN_TDM_RX_0 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16377 {"QUIN_TDM_RX_0 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16378 {"QUIN_TDM_RX_0 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16379 {"QUIN_TDM_RX_0 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16380 {"QUIN_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16381 {"QUIN_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16382 {"QUIN_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16383 {"QUIN_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
16384 {"QUIN_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16385 {"QUIN_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16386 {"QUIN_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16387 {"QUIN_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Rohit Kumarc08b14f2017-10-06 10:52:17 +053016388 {"QUIN_TDM_RX_0", NULL, "QUIN_TDM_RX_0 Port Mixer"},
Rohit Kumara5077932017-09-10 22:05:05 +053016389
16390 {"QUIN_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16391 {"QUIN_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16392 {"QUIN_TDM_RX_1 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16393 {"QUIN_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16394 {"QUIN_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16395 {"QUIN_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16396 {"QUIN_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16397 {"QUIN_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16398 {"QUIN_TDM_RX_1 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16399 {"QUIN_TDM_RX_1 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16400 {"QUIN_TDM_RX_1 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16401 {"QUIN_TDM_RX_1 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16402 {"QUIN_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16403 {"QUIN_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16404 {"QUIN_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16405 {"QUIN_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
16406 {"QUIN_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16407 {"QUIN_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16408 {"QUIN_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16409 {"QUIN_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Rohit Kumarc08b14f2017-10-06 10:52:17 +053016410 {"QUIN_TDM_RX_1", NULL, "QUIN_TDM_RX_1 Port Mixer"},
Rohit Kumara5077932017-09-10 22:05:05 +053016411
16412 {"QUIN_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16413 {"QUIN_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16414 {"QUIN_TDM_RX_2 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16415 {"QUIN_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16416 {"QUIN_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16417 {"QUIN_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16418 {"QUIN_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16419 {"QUIN_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16420 {"QUIN_TDM_RX_2 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16421 {"QUIN_TDM_RX_2 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16422 {"QUIN_TDM_RX_2 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16423 {"QUIN_TDM_RX_2 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16424 {"QUIN_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16425 {"QUIN_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16426 {"QUIN_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16427 {"QUIN_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
16428 {"QUIN_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16429 {"QUIN_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16430 {"QUIN_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16431 {"QUIN_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Rohit Kumarc08b14f2017-10-06 10:52:17 +053016432 {"QUIN_TDM_RX_2", NULL, "QUIN_TDM_RX_2 Port Mixer"},
Rohit Kumara5077932017-09-10 22:05:05 +053016433
16434 {"QUIN_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16435 {"QUIN_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16436 {"QUIN_TDM_RX_3 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16437 {"QUIN_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16438 {"QUIN_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16439 {"QUIN_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16440 {"QUIN_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16441 {"QUIN_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16442 {"QUIN_TDM_RX_3 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16443 {"QUIN_TDM_RX_3 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16444 {"QUIN_TDM_RX_3 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16445 {"QUIN_TDM_RX_3 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16446 {"QUIN_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16447 {"QUIN_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16448 {"QUIN_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16449 {"QUIN_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
16450 {"QUIN_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16451 {"QUIN_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16452 {"QUIN_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16453 {"QUIN_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Rohit Kumarc08b14f2017-10-06 10:52:17 +053016454 {"QUIN_TDM_RX_3", NULL, "QUIN_TDM_RX_3 Port Mixer"},
Rohit Kumara5077932017-09-10 22:05:05 +053016455
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016456 {"INT0_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16457 {"INT0_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16458 {"INT0_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16459 {"INT0_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016460 {"INT0_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016461 {"INT0_MI2S_RX Port Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
16462 {"INT0_MI2S_RX Port Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16463 {"INT0_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16464 {"INT0_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16465 {"INT0_MI2S_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16466 {"INT0_MI2S_RX", NULL, "INT0_MI2S_RX Port Mixer"},
16467
16468 {"INT4_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16469 {"INT4_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16470 {"INT4_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16471 {"INT4_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016472 {"INT4_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016473 {"INT4_MI2S_RX Port Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
16474 {"INT4_MI2S_RX Port Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16475 {"INT4_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16476 {"INT4_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16477 {"INT4_MI2S_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16478 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX Port Mixer"},
16479
16480 {"SLIMBUS_0_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16481 {"SLIMBUS_0_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16482 {"SLIMBUS_0_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16483 {"SLIMBUS_0_RX Port Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16484 {"SLIMBUS_0_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16485 {"SLIMBUS_0_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16486 {"SLIMBUS_0_RX Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16487 {"SLIMBUS_0_RX Port Mixer", "TERT_AUXPCM_UL_TX", "TERT_AUX_PCM_TX"},
16488 {"SLIMBUS_0_RX Port Mixer", "QUAT_AUXPCM_UL_TX", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016489 {"SLIMBUS_0_RX Port Mixer", "QUIN_AUXPCM_UL_TX", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016490 {"SLIMBUS_0_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16491 {"SLIMBUS_0_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16492 {"SLIMBUS_0_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16493 {"SLIMBUS_0_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16494 {"SLIMBUS_0_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016495 {"SLIMBUS_0_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016496 {"SLIMBUS_0_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16497 {"SLIMBUS_0_RX", NULL, "SLIMBUS_0_RX Port Mixer"},
16498 {"AFE_PCM_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16499 {"AFE_PCM_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16500 {"PCM_RX", NULL, "AFE_PCM_RX Port Mixer"},
16501 {"USB_AUDIO_RX Port Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
16502 {"USB_AUDIO_RX", NULL, "USB_AUDIO_RX Port Mixer"},
16503 {"USB_DL_HL", "Switch", "USBAUDIO_DL_HL"},
16504 {"USB_AUDIO_RX", NULL, "USB_DL_HL"},
16505 {"USBAUDIO_UL_HL", NULL, "USB_AUDIO_TX"},
16506
16507
16508 {"AUX_PCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16509 {"AUX_PCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16510 {"AUX_PCM_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16511 {"AUX_PCM_RX Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16512 {"AUX_PCM_RX Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -080016513 {"AUX_PCM_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016514 {"AUX_PCM_RX", NULL, "AUX_PCM_RX Port Mixer"},
16515
16516 {"SEC_AUXPCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16517 {"SEC_AUXPCM_RX Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16518 {"SEC_AUXPCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -080016519 {"SEC_AUXPCM_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016520 {"SEC_AUX_PCM_RX", NULL, "SEC_AUXPCM_RX Port Mixer"},
16521
16522 {"TERT_AUXPCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16523 {"TERT_AUXPCM_RX Port Mixer", "TERT_AUXPCM_UL_TX", "TERT_AUX_PCM_TX"},
16524 {"TERT_AUXPCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16525 {"TERT_AUX_PCM_RX", NULL, "TERT_AUXPCM_RX Port Mixer"},
16526
16527 {"QUAT_AUXPCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16528 {"QUAT_AUXPCM_RX Port Mixer", "QUAT_AUXPCM_UL_TX", "QUAT_AUX_PCM_TX"},
16529 {"QUAT_AUXPCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16530 {"QUAT_AUX_PCM_RX", NULL, "QUAT_AUXPCM_RX Port Mixer"},
16531
Rohit Kumara5077932017-09-10 22:05:05 +053016532 {"QUIN_AUXPCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16533 {"QUIN_AUXPCM_RX Port Mixer", "QUIN_AUXPCM_UL_TX", "QUIN_AUX_PCM_TX"},
16534 {"QUIN_AUXPCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16535 {"QUIN_AUX_PCM_RX", NULL, "QUIN_AUXPCM_RX Port Mixer"},
16536
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016537 {"Voice Stub Tx Mixer", "STUB_TX_HL", "STUB_TX"},
16538 {"Voice Stub Tx Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16539 {"Voice Stub Tx Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16540 {"Voice Stub Tx Mixer", "STUB_1_TX_HL", "STUB_1_TX"},
16541 {"Voice Stub Tx Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16542 {"Voice Stub Tx Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16543 {"Voice Stub Tx Mixer", "TERT_AUXPCM_UL_TX", "TERT_AUX_PCM_TX"},
16544 {"Voice Stub Tx Mixer", "QUAT_AUXPCM_UL_TX", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016545 {"Voice Stub Tx Mixer", "QUIN_AUXPCM_UL_TX", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016546 {"Voice Stub Tx Mixer", "MI2S_TX", "MI2S_TX"},
16547 {"Voice Stub Tx Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16548 {"Voice Stub Tx Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16549 {"Voice Stub Tx Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
16550 {"Voice Stub Tx Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16551 {"Voice Stub Tx Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16552 {"Voice Stub Tx Mixer", "SLIM_3_TX", "SLIMBUS_3_TX"},
16553 {"Voice Stub Tx Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16554 {"Voice Stub Tx Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16555 {"Voice Stub Tx Mixer", "AFE_PCM_TX", "PCM_TX"},
16556 {"VOICE_STUB_UL", NULL, "Voice Stub Tx Mixer"},
16557
16558 {"VoLTE Stub Tx Mixer", "STUB_TX_HL", "STUB_TX"},
16559 {"VoLTE Stub Tx Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16560 {"VoLTE Stub Tx Mixer", "STUB_1_TX_HL", "STUB_1_TX"},
16561 {"VoLTE Stub Tx Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16562 {"VoLTE Stub Tx Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16563 {"VoLTE Stub Tx Mixer", "SLIM_3_TX", "SLIMBUS_3_TX"},
16564 {"VoLTE Stub Tx Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16565 {"VoLTE Stub Tx Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16566 {"VoLTE Stub Tx Mixer", "AFE_PCM_TX", "PCM_TX"},
16567 {"VoLTE Stub Tx Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16568 {"VoLTE Stub Tx Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16569 {"VOLTE_STUB_UL", NULL, "VoLTE Stub Tx Mixer"},
16570
16571 {"Voice2 Stub Tx Mixer", "STUB_TX_HL", "STUB_TX"},
16572 {"Voice2 Stub Tx Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16573 {"Voice2 Stub Tx Mixer", "STUB_1_TX_HL", "STUB_1_TX"},
16574 {"Voice2 Stub Tx Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16575 {"Voice2 Stub Tx Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16576 {"Voice2 Stub Tx Mixer", "SLIM_3_TX", "SLIMBUS_3_TX"},
16577 {"Voice2 Stub Tx Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16578 {"Voice2 Stub Tx Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16579 {"Voice2 Stub Tx Mixer", "AFE_PCM_TX", "PCM_TX"},
16580 {"Voice2 Stub Tx Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16581 {"Voice2 Stub Tx Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16582 {"VOICE2_STUB_UL", NULL, "Voice2 Stub Tx Mixer"},
16583
kunleizdf5a00a2017-11-27 15:27:36 +080016584 {"STUB_RX Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
16585 {"STUB_RX Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016586 {"STUB_RX", NULL, "STUB_RX Mixer"},
kunleizdf5a00a2017-11-27 15:27:36 +080016587
16588 {"SLIMBUS_1_RX Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
16589 {"SLIMBUS_1_RX Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016590 {"SLIMBUS_1_RX", NULL, "SLIMBUS_1_RX Mixer"},
kunleizdf5a00a2017-11-27 15:27:36 +080016591
16592 {"SLIMBUS_3_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
16593 {"SLIMBUS_3_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016594 {"SLIMBUS_3_RX", NULL, "SLIMBUS_3_RX_Voice Mixer"},
16595
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016596 {"SLIM_7_RX_Voice Mixer", "Voip", "VOIP_DL"},
16597 {"SLIM_7_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016598 {"SLIM_7_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
16599 {"SLIM_7_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
16600 {"SLIM_7_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
16601 {"SLIMBUS_7_RX", NULL, "SLIM_7_RX_Voice Mixer"},
16602
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016603 {"SLIM_8_RX_Voice Mixer", "Voip", "VOIP_DL"},
16604 {"SLIM_8_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016605 {"SLIM_8_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
16606 {"SLIM_8_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
16607 {"SLIM_8_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
16608 {"SLIMBUS_8_RX", NULL, "SLIM_8_RX_Voice Mixer"},
16609
16610 {"SLIMBUS_1_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16611 {"SLIMBUS_1_RX Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16612 {"SLIMBUS_1_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16613 {"SLIMBUS_1_RX", NULL, "SLIMBUS_1_RX Port Mixer"},
16614 {"INTERNAL_BT_SCO_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16615 {"INTERNAL_BT_SCO_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16616 {"INT_BT_SCO_RX", NULL, "INTERNAL_BT_SCO_RX Port Mixer"},
16617 {"SLIMBUS_3_RX Port Mixer", "INTERNAL_BT_SCO_RX", "INT_BT_SCO_RX"},
16618 {"SLIMBUS_3_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16619 {"SLIMBUS_3_RX Port Mixer", "AFE_PCM_RX", "PCM_RX"},
16620 {"SLIMBUS_3_RX Port Mixer", "AUX_PCM_RX", "AUX_PCM_RX"},
16621 {"SLIMBUS_3_RX Port Mixer", "SLIM_0_RX", "SLIMBUS_0_RX"},
16622 {"SLIMBUS_3_RX", NULL, "SLIMBUS_3_RX Port Mixer"},
16623
16624 {"SLIMBUS_6_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16625 {"SLIMBUS_6_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16626 {"SLIMBUS_6_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16627 {"SLIMBUS_6_RX Port Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16628 {"SLIMBUS_6_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16629 {"SLIMBUS_6_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16630 {"SLIMBUS_6_RX Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16631 {"SLIMBUS_6_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16632 {"SLIMBUS_6_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16633 {"SLIMBUS_6_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16634 {"SLIMBUS_6_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16635 {"SLIMBUS_6_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16636 {"SLIMBUS_6_RX", NULL, "SLIMBUS_6_RX Port Mixer"},
16637
16638 {"HDMI_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16639 {"HDMI", NULL, "HDMI_RX Port Mixer"},
16640
16641 {"DISPLAY_PORT_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16642 {"DISPLAY_PORT", NULL, "DISPLAY_PORT_RX Port Mixer"},
16643
16644 {"SEC_I2S_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16645 {"SEC_I2S_RX", NULL, "SEC_I2S_RX Port Mixer"},
16646
16647 {"MI2S_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16648 {"MI2S_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16649 {"MI2S_RX", NULL, "MI2S_RX Port Mixer"},
16650
16651 {"PRI_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16652 {"PRI_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16653 {"PRI_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16654 {"PRI_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016655 {"PRI_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016656 {"PRI_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16657 {"PRI_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16658 {"PRI_MI2S_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16659 {"PRI_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -080016660 {"PRI_MI2S_RX Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016661 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX Port Mixer"},
16662
16663 {"SEC_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16664 {"SEC_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16665 {"SEC_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16666 {"SEC_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016667 {"SEC_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016668 {"SEC_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16669 {"SEC_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16670 {"SEC_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -080016671 {"SEC_MI2S_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016672 {"SEC_MI2S_RX", NULL, "SEC_MI2S_RX Port Mixer"},
16673
16674 {"TERT_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16675 {"TERT_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16676 {"TERT_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16677 {"TERT_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016678 {"TERT_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016679 {"TERT_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16680 {"TERT_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16681 {"TERT_MI2S_RX", NULL, "TERT_MI2S_RX Port Mixer"},
16682
16683 {"QUAT_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16684 {"QUAT_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16685 {"QUAT_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16686 {"QUAT_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016687 {"QUAT_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016688 {"QUAT_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16689 {"QUAT_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16690 {"QUAT_MI2S_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16691 {"QUAT_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16692 {"QUAT_MI2S_RX", NULL, "QUAT_MI2S_RX Port Mixer"},
16693
Rohit Kumara5077932017-09-10 22:05:05 +053016694 {"QUIN_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16695 {"QUIN_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16696 {"QUIN_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16697 {"QUIN_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16698 {"QUIN_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
16699 {"QUIN_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16700 {"QUIN_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16701 {"QUIN_MI2S_RX", NULL, "QUIN_MI2S_RX Port Mixer"},
16702
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016703 /* Backend Enablement */
16704
16705 {"BE_OUT", NULL, "PRI_I2S_RX"},
16706 {"BE_OUT", NULL, "SEC_I2S_RX"},
16707 {"BE_OUT", NULL, "SLIMBUS_0_RX"},
16708 {"BE_OUT", NULL, "SLIMBUS_1_RX"},
16709 {"BE_OUT", NULL, "SLIMBUS_2_RX"},
16710 {"BE_OUT", NULL, "SLIMBUS_3_RX"},
16711 {"BE_OUT", NULL, "SLIMBUS_4_RX"},
16712 {"BE_OUT", NULL, "SLIMBUS_5_RX"},
16713 {"BE_OUT", NULL, "SLIMBUS_6_RX"},
16714 {"BE_OUT", NULL, "SLIMBUS_7_RX"},
16715 {"BE_OUT", NULL, "SLIMBUS_8_RX"},
16716 {"BE_OUT", NULL, "USB_AUDIO_RX"},
16717 {"BE_OUT", NULL, "HDMI"},
16718 {"BE_OUT", NULL, "DISPLAY_PORT"},
16719 {"BE_OUT", NULL, "SPDIF_RX"},
16720 {"BE_OUT", NULL, "MI2S_RX"},
16721 {"BE_OUT", NULL, "QUAT_MI2S_RX"},
16722 {"BE_OUT", NULL, "QUIN_MI2S_RX"},
16723 {"BE_OUT", NULL, "TERT_MI2S_RX"},
16724 {"BE_OUT", NULL, "SEC_MI2S_RX"},
16725 {"BE_OUT", NULL, "SEC_MI2S_RX_SD1"},
16726 {"BE_OUT", NULL, "PRI_MI2S_RX"},
16727 {"BE_OUT", NULL, "INT0_MI2S_RX"},
16728 {"BE_OUT", NULL, "INT4_MI2S_RX"},
Laxminath Kasam52697fe2017-11-29 15:44:14 +053016729 {"BE_OUT", NULL, "INT2_MI2S_RX"},
16730 {"BE_OUT", NULL, "INT3_MI2S_RX"},
16731 {"BE_OUT", NULL, "INT5_MI2S_RX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016732 {"BE_OUT", NULL, "INT_BT_SCO_RX"},
16733 {"BE_OUT", NULL, "INT_BT_A2DP_RX"},
16734 {"BE_OUT", NULL, "INT_FM_RX"},
16735 {"BE_OUT", NULL, "PCM_RX"},
16736 {"BE_OUT", NULL, "SLIMBUS_3_RX"},
16737 {"BE_OUT", NULL, "AUX_PCM_RX"},
16738 {"BE_OUT", NULL, "SEC_AUX_PCM_RX"},
16739 {"BE_OUT", NULL, "TERT_AUX_PCM_RX"},
16740 {"BE_OUT", NULL, "QUAT_AUX_PCM_RX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016741 {"BE_OUT", NULL, "QUIN_AUX_PCM_RX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016742 {"BE_OUT", NULL, "INT_BT_SCO_RX"},
16743 {"BE_OUT", NULL, "INT_FM_RX"},
16744 {"BE_OUT", NULL, "PCM_RX"},
16745 {"BE_OUT", NULL, "SLIMBUS_3_RX"},
16746 {"BE_OUT", NULL, "VOICE_PLAYBACK_TX"},
16747 {"BE_OUT", NULL, "VOICE2_PLAYBACK_TX"},
16748 {"BE_OUT", NULL, "PRI_TDM_RX_0"},
16749 {"BE_OUT", NULL, "PRI_TDM_RX_1"},
16750 {"BE_OUT", NULL, "PRI_TDM_RX_2"},
16751 {"BE_OUT", NULL, "PRI_TDM_RX_3"},
16752 {"BE_OUT", NULL, "SEC_TDM_RX_0"},
16753 {"BE_OUT", NULL, "SEC_TDM_RX_1"},
16754 {"BE_OUT", NULL, "SEC_TDM_RX_2"},
16755 {"BE_OUT", NULL, "SEC_TDM_RX_3"},
16756 {"BE_OUT", NULL, "TERT_TDM_RX_0"},
16757 {"BE_OUT", NULL, "TERT_TDM_RX_1"},
16758 {"BE_OUT", NULL, "TERT_TDM_RX_2"},
16759 {"BE_OUT", NULL, "TERT_TDM_RX_3"},
16760 {"BE_OUT", NULL, "TERT_TDM_RX_4"},
16761 {"BE_OUT", NULL, "QUAT_TDM_RX_0"},
16762 {"BE_OUT", NULL, "QUAT_TDM_RX_1"},
16763 {"BE_OUT", NULL, "QUAT_TDM_RX_2"},
16764 {"BE_OUT", NULL, "QUAT_TDM_RX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016765 {"BE_OUT", NULL, "QUIN_TDM_RX_0"},
16766 {"BE_OUT", NULL, "QUIN_TDM_RX_1"},
16767 {"BE_OUT", NULL, "QUIN_TDM_RX_2"},
16768 {"BE_OUT", NULL, "QUIN_TDM_RX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016769
16770 {"PRI_I2S_TX", NULL, "BE_IN"},
16771 {"MI2S_TX", NULL, "BE_IN"},
16772 {"QUAT_MI2S_TX", NULL, "BE_IN"},
16773 {"QUIN_MI2S_TX", NULL, "BE_IN"},
16774 {"PRI_MI2S_TX", NULL, "BE_IN"},
16775 {"TERT_MI2S_TX", NULL, "BE_IN"},
Laxminath Kasam52697fe2017-11-29 15:44:14 +053016776 {"INT0_MI2S_TX", NULL, "BE_IN"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016777 {"INT2_MI2S_TX", NULL, "BE_IN"},
16778 {"INT3_MI2S_TX", NULL, "BE_IN"},
Laxminath Kasam52697fe2017-11-29 15:44:14 +053016779 {"INT4_MI2S_TX", NULL, "BE_IN"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016780 {"INT5_MI2S_TX", NULL, "BE_IN"},
16781 {"SEC_MI2S_TX", NULL, "BE_IN"},
16782 {"SENARY_MI2S_TX", NULL, "BE_IN" },
16783 {"SLIMBUS_0_TX", NULL, "BE_IN" },
16784 {"SLIMBUS_1_TX", NULL, "BE_IN" },
16785 {"SLIMBUS_3_TX", NULL, "BE_IN" },
16786 {"SLIMBUS_4_TX", NULL, "BE_IN" },
16787 {"SLIMBUS_5_TX", NULL, "BE_IN" },
16788 {"SLIMBUS_6_TX", NULL, "BE_IN" },
16789 {"SLIMBUS_7_TX", NULL, "BE_IN" },
16790 {"SLIMBUS_8_TX", NULL, "BE_IN" },
16791 {"USB_AUDIO_TX", NULL, "BE_IN" },
16792 {"INT_BT_SCO_TX", NULL, "BE_IN"},
16793 {"INT_FM_TX", NULL, "BE_IN"},
16794 {"PCM_TX", NULL, "BE_IN"},
16795 {"BE_OUT", NULL, "SLIMBUS_3_RX"},
16796 {"BE_OUT", NULL, "STUB_RX"},
16797 {"STUB_TX", NULL, "BE_IN"},
16798 {"STUB_1_TX", NULL, "BE_IN"},
16799 {"BE_OUT", NULL, "AUX_PCM_RX"},
16800 {"AUX_PCM_TX", NULL, "BE_IN"},
16801 {"SEC_AUX_PCM_TX", NULL, "BE_IN"},
16802 {"TERT_AUX_PCM_TX", NULL, "BE_IN"},
16803 {"QUAT_AUX_PCM_TX", NULL, "BE_IN"},
Rohit Kumara5077932017-09-10 22:05:05 +053016804 {"QUIN_AUX_PCM_TX", NULL, "BE_IN"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016805 {"INCALL_RECORD_TX", NULL, "BE_IN"},
16806 {"INCALL_RECORD_RX", NULL, "BE_IN"},
16807 {"SLIM0_RX_VI_FB_LCH_MUX", "SLIM4_TX", "SLIMBUS_4_TX"},
16808 {"SLIM0_RX_VI_FB_RCH_MUX", "SLIM4_TX", "SLIMBUS_4_TX"},
16809 {"PRI_MI2S_RX_VI_FB_MUX", "SENARY_TX", "SENARY_TX"},
16810 {"INT4_MI2S_RX_VI_FB_MONO_CH_MUX", "INT5_MI2S_TX", "INT5_MI2S_TX"},
16811 {"INT4_MI2S_RX_VI_FB_STEREO_CH_MUX", "INT5_MI2S_TX", "INT5_MI2S_TX"},
16812 {"SLIMBUS_0_RX", NULL, "SLIM0_RX_VI_FB_LCH_MUX"},
16813 {"SLIMBUS_0_RX", NULL, "SLIM0_RX_VI_FB_RCH_MUX"},
16814 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX_VI_FB_MUX"},
16815 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX_VI_FB_MONO_CH_MUX"},
16816 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX_VI_FB_STEREO_CH_MUX"},
16817 {"PRI_TDM_TX_0", NULL, "BE_IN"},
16818 {"PRI_TDM_TX_1", NULL, "BE_IN"},
16819 {"PRI_TDM_TX_2", NULL, "BE_IN"},
16820 {"PRI_TDM_TX_3", NULL, "BE_IN"},
16821 {"SEC_TDM_TX_0", NULL, "BE_IN"},
16822 {"SEC_TDM_TX_1", NULL, "BE_IN"},
16823 {"SEC_TDM_TX_2", NULL, "BE_IN"},
16824 {"SEC_TDM_TX_3", NULL, "BE_IN"},
16825 {"TERT_TDM_TX_0", NULL, "BE_IN"},
16826 {"TERT_TDM_TX_1", NULL, "BE_IN"},
16827 {"TERT_TDM_TX_2", NULL, "BE_IN"},
16828 {"TERT_TDM_TX_3", NULL, "BE_IN"},
16829 {"QUAT_TDM_TX_0", NULL, "BE_IN"},
16830 {"QUAT_TDM_TX_1", NULL, "BE_IN"},
16831 {"QUAT_TDM_TX_2", NULL, "BE_IN"},
16832 {"QUAT_TDM_TX_3", NULL, "BE_IN"},
Raja Mallik425e1d32018-05-20 19:21:10 +053016833 {"AFE_LOOPBACK_TX", NULL, "BE_IN"},
Rohit Kumara5077932017-09-10 22:05:05 +053016834 {"QUIN_TDM_TX_0", NULL, "BE_IN"},
16835 {"QUIN_TDM_TX_1", NULL, "BE_IN"},
16836 {"QUIN_TDM_TX_2", NULL, "BE_IN"},
16837 {"QUIN_TDM_TX_3", NULL, "BE_IN"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016838};
16839
16840static int msm_pcm_routing_hw_params(struct snd_pcm_substream *substream,
16841 struct snd_pcm_hw_params *params)
16842{
16843 struct snd_soc_pcm_runtime *rtd = substream->private_data;
16844 unsigned int be_id = rtd->dai_link->id;
16845
16846 if (be_id >= MSM_BACKEND_DAI_MAX) {
16847 pr_err("%s: unexpected BE id %d\n", __func__, be_id);
16848 return -EINVAL;
16849 }
16850
16851 mutex_lock(&routing_lock);
16852 msm_bedais[be_id].sample_rate = params_rate(params);
16853 msm_bedais[be_id].channel = params_channels(params);
16854 msm_bedais[be_id].format = params_format(params);
16855 pr_debug("%s: BE Sample Rate (%d) format (%d) BE id %d\n",
16856 __func__, msm_bedais[be_id].sample_rate,
16857 msm_bedais[be_id].format, be_id);
16858 mutex_unlock(&routing_lock);
16859 return 0;
16860}
16861
16862static int msm_pcm_routing_close(struct snd_pcm_substream *substream)
16863{
16864 struct snd_soc_pcm_runtime *rtd = substream->private_data;
16865 unsigned int be_id = rtd->dai_link->id;
16866 int i, session_type, path_type, topology;
16867 struct msm_pcm_routing_bdai_data *bedai;
16868 struct msm_pcm_routing_fdai_data *fdai;
16869
16870 pr_debug("%s: substream->pcm->id:%s\n",
16871 __func__, substream->pcm->id);
16872
16873 if (be_id >= MSM_BACKEND_DAI_MAX) {
16874 pr_err("%s: unexpected BE id %d\n", __func__, be_id);
16875 return -EINVAL;
16876 }
16877
16878 bedai = &msm_bedais[be_id];
16879 session_type = (substream->stream == SNDRV_PCM_STREAM_PLAYBACK ?
16880 0 : 1);
16881 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
16882 path_type = ADM_PATH_PLAYBACK;
16883 else
16884 path_type = ADM_PATH_LIVE_REC;
16885
16886 mutex_lock(&routing_lock);
16887 for_each_set_bit(i, &bedai->fe_sessions[0], MSM_FRONTEND_DAI_MAX) {
16888 if (!is_mm_lsm_fe_id(i))
16889 continue;
16890 fdai = &fe_dai_map[i][session_type];
16891 if (fdai->strm_id != INVALID_SESSION) {
16892 int idx;
16893 int port_id;
16894 unsigned long copp =
16895 session_copp_map[i][session_type][be_id];
16896 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++)
16897 if (test_bit(idx, &copp))
16898 break;
16899 fdai->be_srate = bedai->sample_rate;
16900 port_id = bedai->port_id;
16901 topology = adm_get_topology_for_port_copp_idx(port_id,
16902 idx);
16903 adm_close(bedai->port_id, fdai->perf_mode, idx);
16904 pr_debug("%s: copp:%ld,idx bit fe:%d, type:%d,be:%d topology=0x%x\n",
16905 __func__, copp, i, session_type, be_id,
16906 topology);
16907 clear_bit(idx,
16908 &session_copp_map[i][session_type][be_id]);
16909 if ((fdai->perf_mode == LEGACY_PCM_MODE) &&
16910 (bedai->passthr_mode[i] == LEGACY_PCM))
16911 msm_pcm_routing_deinit_pp(bedai->port_id,
16912 topology);
16913 }
16914 }
16915
16916 bedai->active = 0;
16917 bedai->sample_rate = 0;
16918 bedai->channel = 0;
16919 for (i = 0; i < MSM_FRONTEND_DAI_MAX; i++) {
16920 if (bedai->passthr_mode[i] != LISTEN)
16921 bedai->passthr_mode[i] = LEGACY_PCM;
16922 }
16923 mutex_unlock(&routing_lock);
16924
16925 return 0;
16926}
16927
16928static int msm_pcm_routing_prepare(struct snd_pcm_substream *substream)
16929{
16930 struct snd_soc_pcm_runtime *rtd = substream->private_data;
16931 unsigned int be_id = rtd->dai_link->id;
16932 int i, path_type, topology;
16933 int session_type = INVALID_SESSION;
16934 struct msm_pcm_routing_bdai_data *bedai;
16935 u32 channels, sample_rate;
16936 uint16_t bits_per_sample = 16, voc_path_type;
16937 struct msm_pcm_routing_fdai_data *fdai;
16938 u32 session_id;
16939 struct media_format_info voc_be_media_format;
16940 bool is_lsm;
16941
16942 pr_debug("%s: substream->pcm->id:%s\n",
16943 __func__, substream->pcm->id);
16944
16945 if (be_id >= MSM_BACKEND_DAI_MAX) {
16946 pr_err("%s: unexpected BE id %d\n", __func__, be_id);
16947 return -EINVAL;
16948 }
16949
16950 bedai = &msm_bedais[be_id];
16951
16952 mutex_lock(&routing_lock);
16953 if (bedai->active == 1)
16954 goto done; /* Ignore prepare if back-end already active */
16955
16956 /* AFE port is not active at this point. However, still
16957 * go ahead setting active flag under the notion that
16958 * QDSP6 is able to handle ADM starting before AFE port
16959 * is started.
16960 */
16961 bedai->active = 1;
16962
16963 for_each_set_bit(i, &bedai->fe_sessions[0], MSM_FRONTEND_DAI_MAX) {
16964 if (!(is_mm_lsm_fe_id(i) &&
16965 route_check_fe_id_adm_support(i)))
16966 continue;
16967
16968 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
16969 if (bedai->passthr_mode[i] != LEGACY_PCM)
16970 path_type = ADM_PATH_COMPRESSED_RX;
16971 else
16972 path_type = ADM_PATH_PLAYBACK;
16973 session_type = SESSION_TYPE_RX;
16974 } else {
16975 path_type = ADM_PATH_LIVE_REC;
16976 session_type = SESSION_TYPE_TX;
16977 }
16978
16979 is_lsm = (i >= MSM_FRONTEND_DAI_LSM1) &&
16980 (i <= MSM_FRONTEND_DAI_LSM8);
16981 fdai = &fe_dai_map[i][session_type];
16982 if (fdai->strm_id != INVALID_SESSION) {
16983 int app_type, app_type_idx, copp_idx, acdb_dev_id;
16984
16985 if (session_type == SESSION_TYPE_TX &&
16986 fdai->be_srate &&
16987 (fdai->be_srate != bedai->sample_rate)) {
16988 pr_debug("%s: flush strm %d diff BE rates\n",
16989 __func__,
16990 fdai->strm_id);
16991
16992 if (fdai->event_info.event_func)
16993 fdai->event_info.event_func(
16994 MSM_PCM_RT_EVT_BUF_RECFG,
16995 fdai->event_info.priv_data);
16996 fdai->be_srate = 0; /* might not need it */
16997 }
16998 bits_per_sample = msm_routing_get_bit_width(
16999 bedai->format);
17000
17001 app_type =
17002 fe_dai_app_type_cfg[i][session_type][be_id].app_type;
17003 if (app_type && is_lsm) {
17004 app_type_idx =
17005 msm_pcm_routing_get_lsm_app_type_idx(app_type);
17006 sample_rate =
17007 fe_dai_app_type_cfg[i][session_type][be_id]
17008 .sample_rate;
17009 bits_per_sample =
17010 lsm_app_type_cfg[app_type_idx].bit_width;
17011 } else if (app_type) {
17012 app_type_idx =
17013 msm_pcm_routing_get_app_type_idx(app_type);
17014 sample_rate =
17015 fe_dai_app_type_cfg[i][session_type]
17016 [be_id].sample_rate;
17017 bits_per_sample =
17018 app_type_cfg[app_type_idx].bit_width;
17019 } else
17020 sample_rate = bedai->sample_rate;
17021 /*
17022 * check if ADM needs to be configured with different
17023 * channel mapping than backend
17024 */
17025 if (!bedai->adm_override_ch)
17026 channels = bedai->channel;
17027 else
17028 channels = bedai->adm_override_ch;
17029 acdb_dev_id =
17030 fe_dai_app_type_cfg[i][session_type][be_id].acdb_dev_id;
17031 topology = msm_routing_get_adm_topology(i, session_type,
17032 be_id);
17033 copp_idx = adm_open(bedai->port_id, path_type,
17034 sample_rate, channels, topology,
17035 fdai->perf_mode, bits_per_sample,
17036 app_type, acdb_dev_id);
17037 if ((copp_idx < 0) ||
17038 (copp_idx >= MAX_COPPS_PER_PORT)) {
17039 pr_err("%s: adm open failed\n", __func__);
17040 mutex_unlock(&routing_lock);
17041 return -EINVAL;
17042 }
17043 pr_debug("%s: setting idx bit of fe:%d, type: %d, be:%d\n",
17044 __func__, i, session_type, be_id);
17045 set_bit(copp_idx,
17046 &session_copp_map[i][session_type][be_id]);
17047
17048 if (msm_is_resample_needed(
17049 sample_rate,
17050 bedai->sample_rate))
17051 adm_copp_mfc_cfg(
17052 bedai->port_id, copp_idx,
17053 bedai->sample_rate);
17054
17055 msm_pcm_routing_build_matrix(i, session_type, path_type,
17056 fdai->perf_mode,
17057 bedai->passthr_mode[i]);
17058 if ((fdai->perf_mode == LEGACY_PCM_MODE) &&
17059 (bedai->passthr_mode[i] == LEGACY_PCM))
17060 msm_pcm_routing_cfg_pp(bedai->port_id, copp_idx,
17061 topology, channels);
17062 }
17063 }
17064
17065 for_each_set_bit(i, &bedai->fe_sessions[0], MSM_FRONTEND_DAI_MAX) {
17066 session_id = msm_pcm_routing_get_voc_sessionid(i);
17067 if (session_id) {
17068 pr_debug("%s voice session_id: 0x%x\n", __func__,
17069 session_id);
17070
17071 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
17072 voc_path_type = RX_PATH;
17073 else
17074 voc_path_type = TX_PATH;
17075
17076 voc_set_route_flag(session_id, voc_path_type, 1);
17077
17078 memset(&voc_be_media_format, 0,
17079 sizeof(struct media_format_info));
17080
17081 voc_be_media_format.port_id = bedai->port_id;
17082 voc_be_media_format.num_channels = bedai->channel;
17083 voc_be_media_format.sample_rate = bedai->sample_rate;
17084 voc_be_media_format.bits_per_sample = bedai->format;
17085 /* Defaulting this to 1 for voice call usecases */
17086 voc_be_media_format.channel_mapping[0] = 1;
17087
17088 voc_set_device_config(session_id, voc_path_type,
17089 &voc_be_media_format);
17090
17091 if (voc_get_route_flag(session_id, RX_PATH) &&
17092 voc_get_route_flag(session_id, TX_PATH))
17093 voc_enable_device(session_id);
17094 }
17095 }
17096
17097 /* Check if backend is an external ec ref port and set as needed */
17098 if (unlikely(bedai->port_id == voc_get_ext_ec_ref_port_id())) {
17099
17100 memset(&voc_be_media_format, 0,
17101 sizeof(struct media_format_info));
17102
17103 /* Get format info for ec ref port from msm_bedais[] */
17104 voc_be_media_format.port_id = bedai->port_id;
17105 voc_be_media_format.num_channels = bedai->channel;
17106 voc_be_media_format.bits_per_sample = bedai->format;
17107 voc_be_media_format.sample_rate = bedai->sample_rate;
17108 /* Defaulting this to 1 for voice call usecases */
17109 voc_be_media_format.channel_mapping[0] = 1;
17110 voc_set_ext_ec_ref_media_fmt_info(&voc_be_media_format);
17111 pr_debug("%s: EC Ref media format info set to port_id=%d, num_channels=%d, bits_per_sample=%d, sample_rate=%d\n",
17112 __func__, voc_be_media_format.port_id,
17113 voc_be_media_format.num_channels,
17114 voc_be_media_format.bits_per_sample,
17115 voc_be_media_format.sample_rate);
17116 }
17117
17118done:
17119 mutex_unlock(&routing_lock);
17120
17121 return 0;
17122}
17123
17124static int msm_routing_send_device_pp_params(int port_id, int copp_idx,
17125 int fe_id)
17126{
17127 int index, topo_id, be_idx;
17128 unsigned long pp_config = 0;
17129 bool mute_on;
17130 int latency;
17131 bool compr_passthr_mode = true;
17132
17133 pr_debug("%s: port_id %d, copp_idx %d\n", __func__, port_id, copp_idx);
17134
17135 if (port_id != HDMI_RX && port_id != DISPLAY_PORT_RX) {
17136 pr_err("%s: Device pp params on invalid port %d\n",
17137 __func__, port_id);
17138 return -EINVAL;
17139 }
17140
17141 for (be_idx = 0; be_idx < MSM_BACKEND_DAI_MAX; be_idx++) {
17142 if (port_id == msm_bedais[be_idx].port_id)
17143 break;
17144 }
17145
17146 if (be_idx >= MSM_BACKEND_DAI_MAX) {
17147 pr_debug("%s: Invalid be id %d\n", __func__, be_idx);
17148 return -EINVAL;
17149 }
17150
17151 for (index = 0; index < MSM_BACKEND_DAI_PP_PARAMS_REQ_MAX; index++) {
17152 if (msm_bedais_pp_params[index].port_id == port_id)
17153 break;
17154 }
17155 if (index >= MSM_BACKEND_DAI_PP_PARAMS_REQ_MAX) {
17156 pr_err("%s: Invalid backend pp params index %d\n",
17157 __func__, index);
17158 return -EINVAL;
17159 }
17160
17161 topo_id = adm_get_topology_for_port_copp_idx(port_id, copp_idx);
17162 if (topo_id != COMPRESSED_PASSTHROUGH_DEFAULT_TOPOLOGY) {
17163 pr_err("%s: Invalid passthrough topology 0x%x\n",
17164 __func__, topo_id);
17165 return -EINVAL;
17166 }
17167
17168 if ((msm_bedais[be_idx].passthr_mode[fe_id] == LEGACY_PCM) ||
17169 (msm_bedais[be_idx].passthr_mode[fe_id] == LISTEN))
17170 compr_passthr_mode = false;
17171
17172 pp_config = msm_bedais_pp_params[index].pp_params_config;
17173 if (test_bit(ADM_PP_PARAM_MUTE_BIT, &pp_config)) {
17174 pr_debug("%s: ADM_PP_PARAM_MUTE\n", __func__);
17175 clear_bit(ADM_PP_PARAM_MUTE_BIT, &pp_config);
17176 mute_on = msm_bedais_pp_params[index].mute_on;
17177 if ((msm_bedais[be_idx].active) && compr_passthr_mode)
17178 adm_send_compressed_device_mute(port_id,
17179 copp_idx,
17180 mute_on);
17181 }
17182 if (test_bit(ADM_PP_PARAM_LATENCY_BIT, &pp_config)) {
17183 pr_debug("%s: ADM_PP_PARAM_LATENCY\n", __func__);
17184 clear_bit(ADM_PP_PARAM_LATENCY_BIT,
17185 &pp_config);
17186 latency = msm_bedais_pp_params[index].latency;
17187 if ((msm_bedais[be_idx].active) && compr_passthr_mode)
17188 adm_send_compressed_device_latency(port_id,
17189 copp_idx,
17190 latency);
17191 }
17192 return 0;
17193}
17194
17195static int msm_routing_put_device_pp_params_mixer(struct snd_kcontrol *kcontrol,
17196 struct snd_ctl_elem_value *ucontrol)
17197{
17198 int pp_id = ucontrol->value.integer.value[0];
17199 int port_id = 0;
17200 int index, be_idx, i, topo_id, idx;
17201 bool mute;
17202 int latency;
17203 bool compr_passthr_mode = true;
17204
17205 pr_debug("%s: pp_id: 0x%x\n", __func__, pp_id);
17206
17207 for (be_idx = 0; be_idx < MSM_BACKEND_DAI_MAX; be_idx++) {
17208 port_id = msm_bedais[be_idx].port_id;
17209 if (port_id == HDMI_RX || port_id == DISPLAY_PORT_RX)
17210 break;
17211 }
17212
17213 if (be_idx >= MSM_BACKEND_DAI_MAX) {
17214 pr_debug("%s: Invalid be id %d\n", __func__, be_idx);
17215 return -EINVAL;
17216 }
17217
17218 for (index = 0; index < MSM_BACKEND_DAI_PP_PARAMS_REQ_MAX; index++) {
17219 if (msm_bedais_pp_params[index].port_id == port_id)
17220 break;
17221 }
17222 if (index >= MSM_BACKEND_DAI_PP_PARAMS_REQ_MAX) {
17223 pr_err("%s: Invalid pp params backend index %d\n",
17224 __func__, index);
17225 return -EINVAL;
17226 }
17227
17228 for_each_set_bit(i, &msm_bedais[be_idx].fe_sessions[0],
17229 MSM_FRONTEND_DAI_MM_SIZE) {
17230 if ((msm_bedais[be_idx].passthr_mode[i] == LEGACY_PCM) ||
17231 (msm_bedais[be_idx].passthr_mode[i] == LISTEN))
17232 compr_passthr_mode = false;
17233
17234 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++) {
17235 unsigned long copp =
17236 session_copp_map[i]
17237 [SESSION_TYPE_RX][be_idx];
17238 if (!test_bit(idx, &copp))
17239 continue;
17240 topo_id = adm_get_topology_for_port_copp_idx(port_id,
17241 idx);
17242 if (topo_id != COMPRESSED_PASSTHROUGH_DEFAULT_TOPOLOGY)
17243 continue;
17244 pr_debug("%s: port: 0x%x, copp %ld, be active: %d, passt: %d\n",
17245 __func__, port_id, copp, msm_bedais[be_idx].active,
17246 msm_bedais[be_idx].passthr_mode[i]);
17247 switch (pp_id) {
17248 case ADM_PP_PARAM_MUTE_ID:
17249 pr_debug("%s: ADM_PP_PARAM_MUTE\n", __func__);
17250 mute = ucontrol->value.integer.value[1] ? true : false;
17251 msm_bedais_pp_params[index].mute_on = mute;
17252 set_bit(ADM_PP_PARAM_MUTE_BIT,
17253 &msm_bedais_pp_params[index].pp_params_config);
17254 if ((msm_bedais[be_idx].active) && compr_passthr_mode)
17255 adm_send_compressed_device_mute(port_id,
17256 idx, mute);
17257 break;
17258 case ADM_PP_PARAM_LATENCY_ID:
17259 pr_debug("%s: ADM_PP_PARAM_LATENCY\n", __func__);
17260 msm_bedais_pp_params[index].latency =
17261 ucontrol->value.integer.value[1];
17262 set_bit(ADM_PP_PARAM_LATENCY_BIT,
17263 &msm_bedais_pp_params[index].pp_params_config);
17264 latency = msm_bedais_pp_params[index].latency =
17265 ucontrol->value.integer.value[1];
17266 if ((msm_bedais[be_idx].active) && compr_passthr_mode)
17267 adm_send_compressed_device_latency(port_id,
17268 idx, latency);
17269 break;
17270 default:
17271 pr_info("%s, device pp param %d not supported\n",
17272 __func__, pp_id);
17273 break;
17274 }
17275 }
17276 }
17277 return 0;
17278}
17279
17280static int msm_routing_get_device_pp_params_mixer(struct snd_kcontrol *kcontrol,
17281 struct snd_ctl_elem_value *ucontrol)
17282{
17283 pr_debug("%s:msm_routing_get_device_pp_params_mixer", __func__);
17284 return 0;
17285}
17286
17287static const struct snd_kcontrol_new device_pp_params_mixer_controls[] = {
17288 SOC_SINGLE_MULTI_EXT("Device PP Params", SND_SOC_NOPM, 0, 0xFFFFFFFF,
17289 0, 3, msm_routing_get_device_pp_params_mixer,
17290 msm_routing_put_device_pp_params_mixer),
17291};
17292
17293static int msm_aptx_dec_license_control_get(struct snd_kcontrol *kcontrol,
17294 struct snd_ctl_elem_value *ucontrol)
17295{
17296 ucontrol->value.integer.value[0] =
17297 core_get_license_status(ASM_MEDIA_FMT_APTX);
17298 pr_debug("%s: status %ld\n", __func__,
17299 ucontrol->value.integer.value[0]);
17300 return 0;
17301}
17302
17303static int msm_aptx_dec_license_control_put(struct snd_kcontrol *kcontrol,
17304 struct snd_ctl_elem_value *ucontrol)
17305{
17306 int32_t status = 0;
17307
17308 status = core_set_license(ucontrol->value.integer.value[0],
17309 APTX_CLASSIC_DEC_LICENSE_ID);
17310 pr_debug("%s: status %d\n", __func__, status);
17311 return status;
17312}
17313
17314static const struct snd_kcontrol_new aptx_dec_license_controls[] = {
17315 SOC_SINGLE_EXT("APTX Dec License", SND_SOC_NOPM, 0,
17316 0xFFFF, 0, msm_aptx_dec_license_control_get,
17317 msm_aptx_dec_license_control_put),
17318};
17319
17320static int msm_routing_be_dai_name_table_info(struct snd_kcontrol *kcontrol,
17321 struct snd_ctl_elem_info *uinfo)
17322{
17323 uinfo->type = SNDRV_CTL_ELEM_TYPE_BYTES;
17324 uinfo->count = sizeof(be_dai_name_table);
17325 return 0;
17326}
17327
17328static int msm_routing_be_dai_name_table_tlv_get(struct snd_kcontrol *kcontrol,
17329 unsigned int __user *bytes,
17330 unsigned int size)
17331{
17332 int i;
17333 int ret;
17334
17335 if (size < sizeof(be_dai_name_table)) {
17336 pr_err("%s: invalid size %d requested, returning\n",
17337 __func__, size);
17338 ret = -EINVAL;
17339 goto done;
17340 }
17341
17342 /*
17343 * Fill be_dai_name_table from msm_bedais table to reduce code changes
17344 * needed when adding new backends
17345 */
17346 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
17347 be_dai_name_table[i].be_id = i;
17348 strlcpy(be_dai_name_table[i].be_name,
17349 msm_bedais[i].name,
17350 LPASS_BE_NAME_MAX_LENGTH);
17351 }
17352
17353 ret = copy_to_user(bytes, &be_dai_name_table,
17354 sizeof(be_dai_name_table));
17355 if (ret) {
17356 pr_err("%s: failed to copy be_dai_name_table\n", __func__);
17357 ret = -EFAULT;
17358 }
17359
17360done:
17361 return ret;
17362}
17363
17364static const struct snd_kcontrol_new
17365 msm_routing_be_dai_name_table_mixer_controls[] = {
17366 {
17367 .access = SNDRV_CTL_ELEM_ACCESS_TLV_READ |
17368 SNDRV_CTL_ELEM_ACCESS_TLV_CALLBACK,
17369 .info = msm_routing_be_dai_name_table_info,
17370 .name = "Backend DAI Name Table",
17371 .tlv.c = snd_soc_bytes_tlv_callback,
17372 .private_value = (unsigned long) &(struct soc_bytes_ext) {
17373 .max = sizeof(be_dai_name_table),
17374 .get = msm_routing_be_dai_name_table_tlv_get,
17375 }
17376 },
17377};
17378
17379static int msm_routing_stereo_channel_reverse_control_get(
17380 struct snd_kcontrol *kcontrol,
17381 struct snd_ctl_elem_value *ucontrol)
17382{
17383 ucontrol->value.integer.value[0] = swap_ch;
17384 pr_debug("%s: Swap channel value: %ld\n", __func__,
17385 ucontrol->value.integer.value[0]);
17386 return 0;
17387}
17388
17389static int msm_routing_stereo_channel_reverse_control_put(
17390 struct snd_kcontrol *kcontrol,
17391 struct snd_ctl_elem_value *ucontrol)
17392{
17393 int i, idx, be_index, port_id;
17394 int ret = 0;
17395 unsigned long copp;
17396
17397 pr_debug("%s Swap channel value:%ld\n", __func__,
17398 ucontrol->value.integer.value[0]);
17399
17400 swap_ch = ucontrol->value.integer.value[0];
17401
17402 mutex_lock(&routing_lock);
17403 for (be_index = 0; be_index < MSM_BACKEND_DAI_MAX; be_index++) {
17404 port_id = msm_bedais[be_index].port_id;
17405 if (!msm_bedais[be_index].active)
17406 continue;
17407
17408 for_each_set_bit(i, &msm_bedais[be_index].fe_sessions[0],
17409 MSM_FRONTEND_DAI_MM_SIZE) {
17410 copp = session_copp_map[i][SESSION_TYPE_RX][be_index];
17411 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++) {
17412 if (!test_bit(idx, &copp))
17413 continue;
17414
17415 pr_debug("%s: swap channel control of portid:%d, coppid:%d\n",
17416 __func__, port_id, idx);
17417 ret = adm_swap_speaker_channels(
17418 port_id, idx,
17419 msm_bedais[be_index].sample_rate,
17420 swap_ch);
17421 if (ret) {
17422 pr_err("%s:Swap_channel failed, err=%d\n",
17423 __func__, ret);
17424 goto done;
17425 }
17426 }
17427 }
17428 }
17429done:
17430 mutex_unlock(&routing_lock);
17431 return ret;
17432}
17433
17434static const struct snd_kcontrol_new stereo_channel_reverse_control[] = {
17435 SOC_SINGLE_EXT("Swap channel", SND_SOC_NOPM, 0,
17436 1, 0, msm_routing_stereo_channel_reverse_control_get,
17437 msm_routing_stereo_channel_reverse_control_put),
17438};
17439
17440static const struct snd_pcm_ops msm_routing_pcm_ops = {
17441 .hw_params = msm_pcm_routing_hw_params,
17442 .close = msm_pcm_routing_close,
17443 .prepare = msm_pcm_routing_prepare,
17444};
17445
17446/* Not used but frame seems to require it */
17447static int msm_routing_probe(struct snd_soc_platform *platform)
17448{
17449 snd_soc_dapm_new_controls(&platform->component.dapm, msm_qdsp6_widgets,
17450 ARRAY_SIZE(msm_qdsp6_widgets));
17451 snd_soc_dapm_add_routes(&platform->component.dapm, intercon,
17452 ARRAY_SIZE(intercon));
17453
17454 snd_soc_dapm_new_widgets(platform->component.dapm.card);
17455
17456 snd_soc_add_platform_controls(platform, lsm_controls,
17457 ARRAY_SIZE(lsm_controls));
17458
17459 snd_soc_add_platform_controls(platform, aanc_slim_0_rx_mux,
17460 ARRAY_SIZE(aanc_slim_0_rx_mux));
17461
17462 snd_soc_add_platform_controls(platform, msm_voc_session_controls,
17463 ARRAY_SIZE(msm_voc_session_controls));
17464
17465 snd_soc_add_platform_controls(platform, app_type_cfg_controls,
17466 ARRAY_SIZE(app_type_cfg_controls));
17467
17468 snd_soc_add_platform_controls(platform, lsm_app_type_cfg_controls,
17469 ARRAY_SIZE(lsm_app_type_cfg_controls));
17470
Vikram Pandurangaee9c03a2017-09-07 15:06:17 -070017471 snd_soc_add_platform_controls(platform, module_cfg_controls,
17472 ARRAY_SIZE(module_cfg_controls));
17473
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017474 snd_soc_add_platform_controls(platform,
17475 stereo_to_custom_stereo_controls,
17476 ARRAY_SIZE(stereo_to_custom_stereo_controls));
17477
17478 snd_soc_add_platform_controls(platform, ec_ref_param_controls,
17479 ARRAY_SIZE(ec_ref_param_controls));
17480
17481 snd_soc_add_platform_controls(platform, channel_mixer_controls,
17482 ARRAY_SIZE(channel_mixer_controls));
17483
17484 msm_qti_pp_add_controls(platform);
17485
17486 msm_dts_srs_tm_add_controls(platform);
17487
17488 msm_dolby_dap_add_controls(platform);
17489
17490 snd_soc_add_platform_controls(platform,
17491 use_ds1_or_ds2_controls,
17492 ARRAY_SIZE(use_ds1_or_ds2_controls));
17493
17494 snd_soc_add_platform_controls(platform,
17495 device_pp_params_mixer_controls,
17496 ARRAY_SIZE(device_pp_params_mixer_controls));
17497
17498 snd_soc_add_platform_controls(platform,
17499 msm_routing_be_dai_name_table_mixer_controls,
17500 ARRAY_SIZE(msm_routing_be_dai_name_table_mixer_controls));
17501
17502 snd_soc_add_platform_controls(platform, msm_source_tracking_controls,
17503 ARRAY_SIZE(msm_source_tracking_controls));
17504 snd_soc_add_platform_controls(platform, adm_channel_config_controls,
17505 ARRAY_SIZE(adm_channel_config_controls));
17506
17507 snd_soc_add_platform_controls(platform, aptx_dec_license_controls,
17508 ARRAY_SIZE(aptx_dec_license_controls));
17509 snd_soc_add_platform_controls(platform, stereo_channel_reverse_control,
17510 ARRAY_SIZE(stereo_channel_reverse_control));
17511 return 0;
17512}
17513
17514int msm_routing_pcm_new(struct snd_soc_pcm_runtime *runtime)
17515{
17516 return msm_pcm_routing_hwdep_new(runtime, msm_bedais);
17517}
17518
17519void msm_routing_pcm_free(struct snd_pcm *pcm)
17520{
17521 msm_pcm_routing_hwdep_free(pcm);
17522}
17523
17524static struct snd_soc_platform_driver msm_soc_routing_platform = {
17525 .ops = &msm_routing_pcm_ops,
17526 .probe = msm_routing_probe,
17527 .pcm_new = msm_routing_pcm_new,
17528 .pcm_free = msm_routing_pcm_free,
17529};
17530
17531static int msm_routing_pcm_probe(struct platform_device *pdev)
17532{
17533
17534 dev_dbg(&pdev->dev, "dev name %s\n", dev_name(&pdev->dev));
17535 return snd_soc_register_platform(&pdev->dev,
17536 &msm_soc_routing_platform);
17537}
17538
17539static int msm_routing_pcm_remove(struct platform_device *pdev)
17540{
17541 snd_soc_unregister_platform(&pdev->dev);
17542 return 0;
17543}
17544
17545static const struct of_device_id msm_pcm_routing_dt_match[] = {
17546 {.compatible = "qcom,msm-pcm-routing"},
17547 {}
17548};
17549MODULE_DEVICE_TABLE(of, msm_pcm_routing_dt_match);
17550
17551static struct platform_driver msm_routing_pcm_driver = {
17552 .driver = {
17553 .name = "msm-pcm-routing",
17554 .owner = THIS_MODULE,
17555 .of_match_table = msm_pcm_routing_dt_match,
17556 },
17557 .probe = msm_routing_pcm_probe,
17558 .remove = msm_routing_pcm_remove,
17559};
17560
17561int msm_routing_check_backend_enabled(int fedai_id)
17562{
17563 int i;
17564
17565 if (fedai_id > MSM_FRONTEND_DAI_MM_MAX_ID) {
17566 /* bad ID assigned in machine driver */
17567 pr_err("%s: bad MM ID\n", __func__);
17568 return 0;
17569 }
17570 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
17571 if (test_bit(fedai_id, &msm_bedais[i].fe_sessions[0]))
17572 return msm_bedais[i].active;
17573 }
17574 return 0;
17575}
17576
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053017577static int get_cal_type_index(int32_t cal_type)
17578{
17579 int ret = -EINVAL;
17580
17581 switch (cal_type) {
17582 case ADM_TOPOLOGY_CAL_TYPE:
17583 ret = ADM_TOPOLOGY_CAL_TYPE_IDX;
17584 break;
17585 case ADM_LSM_TOPOLOGY_CAL_TYPE:
17586 ret = ADM_LSM_TOPOLOGY_CAL_TYPE_IDX;
17587 break;
17588 default:
17589 pr_err("%s: Invalid cal type %d\n", __func__, cal_type);
17590 }
17591 return ret;
17592}
17593
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017594static int msm_routing_set_cal(int32_t cal_type,
17595 size_t data_size, void *data)
17596{
17597 int ret = 0;
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053017598 int cal_index;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017599 pr_debug("%s\n", __func__);
17600
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053017601 cal_index = get_cal_type_index(cal_type);
17602 if (cal_index < 0) {
17603 pr_err("%s: Could not get cal index %d\n",
17604 __func__, cal_index);
17605 ret = -EINVAL;
17606 goto done;
17607 }
17608
17609 ret = cal_utils_set_cal(data_size, data, cal_data[cal_index], 0, NULL);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017610 if (ret < 0) {
17611 pr_err("%s: cal_utils_set_cal failed, ret = %d, cal type = %d!\n",
17612 __func__, ret, cal_type);
17613 ret = -EINVAL;
17614 goto done;
17615 }
17616done:
17617 return ret;
17618}
17619
17620static void msm_routing_delete_cal_data(void)
17621{
17622 pr_debug("%s\n", __func__);
17623
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053017624 cal_utils_destroy_cal_types(MAX_ROUTING_CAL_TYPES, &cal_data[0]);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017625}
17626
17627static int msm_routing_init_cal_data(void)
17628{
17629 int ret = 0;
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053017630 struct cal_type_info cal_type_info[] = {
17631 {{ADM_TOPOLOGY_CAL_TYPE,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017632 {NULL, NULL, NULL,
17633 msm_routing_set_cal, NULL, NULL} },
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053017634 {NULL, NULL, cal_utils_match_buf_num} },
17635
17636 {{ADM_LSM_TOPOLOGY_CAL_TYPE,
17637 {NULL, NULL, NULL,
17638 msm_routing_set_cal, NULL, NULL} },
17639 {NULL, NULL, cal_utils_match_buf_num} },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017640 };
17641 pr_debug("%s\n", __func__);
17642
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053017643 ret = cal_utils_create_cal_types(MAX_ROUTING_CAL_TYPES, &cal_data[0],
17644 &cal_type_info[0]);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017645 if (ret < 0) {
17646 pr_err("%s: could not create cal type!\n",
17647 __func__);
17648 ret = -EINVAL;
17649 goto err;
17650 }
17651
17652 return ret;
17653err:
17654 msm_routing_delete_cal_data();
17655 return ret;
17656}
17657
Laxminath Kasam8b1366a2017-10-05 01:44:16 +053017658int __init msm_soc_routing_platform_init(void)
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017659{
17660 mutex_init(&routing_lock);
17661 if (msm_routing_init_cal_data())
17662 pr_err("%s: could not init cal data!\n", __func__);
17663
17664 afe_set_routing_callback(
17665 (routing_cb)msm_pcm_get_dev_acdb_id_by_port_id);
17666
17667 memset(&be_dai_name_table, 0, sizeof(be_dai_name_table));
17668 memset(&last_be_id_configured, 0, sizeof(last_be_id_configured));
17669
17670 return platform_driver_register(&msm_routing_pcm_driver);
17671}
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017672
Asish Bhattacharya5faacb32017-12-04 17:23:15 +053017673void msm_soc_routing_platform_exit(void)
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017674{
17675 msm_routing_delete_cal_data();
17676 memset(&be_dai_name_table, 0, sizeof(be_dai_name_table));
17677 mutex_destroy(&routing_lock);
17678 platform_driver_unregister(&msm_routing_pcm_driver);
17679}
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017680
17681MODULE_DESCRIPTION("MSM routing platform driver");
17682MODULE_LICENSE("GPL v2");