blob: 70c822157c304d46af5254f71dfcbd4821c0dc26 [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,
920 int cal_index)
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530921{
922 struct list_head *ptr, *next;
923 struct cal_block_data *cal_block = NULL;
924 struct audio_cal_info_adm_top *cal_info;
925
926 pr_debug("%s\n", __func__);
927
928 list_for_each_safe(ptr, next,
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530929 &cal_data[cal_index]->cal_blocks) {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530930
931 cal_block = list_entry(ptr,
932 struct cal_block_data, list);
933
934 cal_info = (struct audio_cal_info_adm_top *)
935 cal_block->cal_info;
936 if ((cal_info->path == path) &&
937 (cal_info->app_type == app_type) &&
938 (cal_info->acdb_id == acdb_id)) {
939 return cal_block;
940 }
941 }
942 pr_debug("%s: Can't find topology for path %d, app %d, acdb_id %d defaulting to search by path\n",
943 __func__, path, app_type, acdb_id);
Aditya Bavanarie9d8e932018-03-12 12:25:20 +0530944 return msm_routing_find_topology_by_path(path, cal_index);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530945}
946
947static int msm_routing_get_adm_topology(int fedai_id, int session_type,
948 int be_id)
949{
950 int topology = NULL_COPP_TOPOLOGY;
951 struct cal_block_data *cal_block = NULL;
952 int app_type = 0, acdb_dev_id = 0;
953
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530954 pr_debug("%s: fedai_id %d, session_type %d, be_id %d\n",
955 __func__, fedai_id, session_type, be_id);
956
957 if (cal_data == NULL)
958 goto done;
959
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530960 app_type = fe_dai_app_type_cfg[fedai_id][session_type][be_id].app_type;
961 acdb_dev_id =
962 fe_dai_app_type_cfg[fedai_id][session_type][be_id].acdb_dev_id;
963
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530964 mutex_lock(&cal_data[ADM_TOPOLOGY_CAL_TYPE_IDX]->lock);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530965 cal_block = msm_routing_find_topology(session_type, app_type,
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530966 acdb_dev_id,
967 ADM_TOPOLOGY_CAL_TYPE_IDX);
968 if (cal_block != NULL)
969 topology = ((struct audio_cal_info_adm_top *)
970 cal_block->cal_info)->topology;
971 mutex_unlock(&cal_data[ADM_TOPOLOGY_CAL_TYPE_IDX]->lock);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530972
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530973 if (cal_block == NULL) {
974 pr_debug("%s: Check for LSM topology\n", __func__);
975 mutex_lock(&cal_data[ADM_LSM_TOPOLOGY_CAL_TYPE_IDX]->lock);
976 cal_block = msm_routing_find_topology(session_type, app_type,
977 acdb_dev_id,
978 ADM_LSM_TOPOLOGY_CAL_TYPE_IDX);
979 if (cal_block != NULL)
980 topology = ((struct audio_cal_info_adm_top *)
981 cal_block->cal_info)->topology;
982 mutex_unlock(&cal_data[ADM_LSM_TOPOLOGY_CAL_TYPE_IDX]->lock);
983 }
984
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530985done:
986 pr_debug("%s: Using topology %d\n", __func__, topology);
987 return topology;
988}
989
990static uint8_t is_be_dai_extproc(int be_dai)
991{
992 if (be_dai == MSM_BACKEND_DAI_EXTPROC_RX ||
993 be_dai == MSM_BACKEND_DAI_EXTPROC_TX ||
994 be_dai == MSM_BACKEND_DAI_EXTPROC_EC_TX)
995 return 1;
996 else
997 return 0;
998}
999
1000static void msm_pcm_routing_build_matrix(int fedai_id, int sess_type,
1001 int path_type, int perf_mode,
1002 uint32_t passthr_mode)
1003{
1004 int i, port_type, j, num_copps = 0;
1005 struct route_payload payload;
1006
1007 port_type = ((path_type == ADM_PATH_PLAYBACK ||
1008 path_type == ADM_PATH_COMPRESSED_RX) ?
1009 MSM_AFE_PORT_TYPE_RX : MSM_AFE_PORT_TYPE_TX);
1010
1011 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
1012 if (!is_be_dai_extproc(i) &&
1013 (afe_get_port_type(msm_bedais[i].port_id) == port_type) &&
1014 (msm_bedais[i].active) &&
1015 (test_bit(fedai_id, &msm_bedais[i].fe_sessions[0]))) {
1016 for (j = 0; j < MAX_COPPS_PER_PORT; j++) {
1017 unsigned long copp =
1018 session_copp_map[fedai_id][sess_type][i];
1019 if (test_bit(j, &copp)) {
1020 payload.port_id[num_copps] =
1021 msm_bedais[i].port_id;
1022 payload.copp_idx[num_copps] = j;
1023 payload.app_type[num_copps] =
1024 fe_dai_app_type_cfg
1025 [fedai_id][sess_type][i]
1026 .app_type;
1027 payload.acdb_dev_id[num_copps] =
1028 fe_dai_app_type_cfg
1029 [fedai_id][sess_type][i]
1030 .acdb_dev_id;
1031 payload.sample_rate[num_copps] =
1032 fe_dai_app_type_cfg
1033 [fedai_id][sess_type][i]
1034 .sample_rate;
1035 num_copps++;
1036 }
1037 }
1038 }
1039 }
1040
1041 if (num_copps) {
1042 payload.num_copps = num_copps;
1043 payload.session_id = fe_dai_map[fedai_id][sess_type].strm_id;
1044 adm_matrix_map(path_type, payload, perf_mode, passthr_mode);
1045 msm_pcm_routng_cfg_matrix_map_pp(payload, path_type, perf_mode);
1046 }
1047}
1048
1049void msm_pcm_routing_reg_psthr_stream(int fedai_id, int dspst_id,
1050 int stream_type)
1051{
1052 int i, session_type, path_type, port_type;
1053 u32 mode = 0;
1054
1055 if (fedai_id > MSM_FRONTEND_DAI_MM_MAX_ID) {
1056 /* bad ID assigned in machine driver */
1057 pr_err("%s: bad MM ID\n", __func__);
1058 return;
1059 }
1060
1061 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK) {
1062 session_type = SESSION_TYPE_RX;
1063 path_type = ADM_PATH_PLAYBACK;
1064 port_type = MSM_AFE_PORT_TYPE_RX;
1065 } else {
1066 session_type = SESSION_TYPE_TX;
1067 path_type = ADM_PATH_LIVE_REC;
1068 port_type = MSM_AFE_PORT_TYPE_TX;
1069 }
1070
1071 mutex_lock(&routing_lock);
1072
1073 fe_dai_map[fedai_id][session_type].strm_id = dspst_id;
1074 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
1075 if (!is_be_dai_extproc(i) &&
1076 (afe_get_port_type(msm_bedais[i].port_id) == port_type) &&
1077 (msm_bedais[i].active) &&
1078 (test_bit(fedai_id, &msm_bedais[i].fe_sessions[0]))) {
1079 mode = afe_get_port_type(msm_bedais[i].port_id);
1080 adm_connect_afe_port(mode, dspst_id,
1081 msm_bedais[i].port_id);
1082 break;
1083 }
1084 }
1085 mutex_unlock(&routing_lock);
1086}
1087
1088static bool route_check_fe_id_adm_support(int fe_id)
1089{
1090 bool rc = true;
1091
1092 if ((fe_id >= MSM_FRONTEND_DAI_LSM1) &&
1093 (fe_id <= MSM_FRONTEND_DAI_LSM8)) {
1094 /* fe id is listen while port is set to afe */
1095 if (lsm_port_index != ADM_LSM_PORT_INDEX) {
1096 pr_debug("%s: fe_id %d, lsm mux slim port %d\n",
1097 __func__, fe_id, lsm_port_index);
1098 rc = false;
1099 }
1100 }
1101
1102 return rc;
1103}
1104
1105int msm_pcm_routing_reg_phy_compr_stream(int fe_id, int perf_mode,
1106 int dspst_id, int stream_type,
1107 uint32_t passthr_mode)
1108{
1109 int i, j, session_type, path_type, port_type, topology;
1110 int num_copps = 0;
1111 struct route_payload payload;
1112 u32 channels, sample_rate;
1113 u16 bit_width = 16;
1114 bool is_lsm;
1115
1116 pr_debug("%s:fe_id[%d] perf_mode[%d] id[%d] stream_type[%d] passt[%d]",
1117 __func__, fe_id, perf_mode, dspst_id,
1118 stream_type, passthr_mode);
1119 if (!is_mm_lsm_fe_id(fe_id)) {
1120 /* bad ID assigned in machine driver */
1121 pr_err("%s: bad MM ID %d\n", __func__, fe_id);
1122 return -EINVAL;
1123 }
1124
1125 if (!route_check_fe_id_adm_support(fe_id)) {
1126 /* ignore adm open if not supported for fe_id */
1127 pr_debug("%s: No ADM support for fe id %d\n", __func__, fe_id);
1128 return 0;
1129 }
1130
1131 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK) {
1132 session_type = SESSION_TYPE_RX;
1133 if (passthr_mode != LEGACY_PCM)
1134 path_type = ADM_PATH_COMPRESSED_RX;
1135 else
1136 path_type = ADM_PATH_PLAYBACK;
1137 port_type = MSM_AFE_PORT_TYPE_RX;
1138 } else if (stream_type == SNDRV_PCM_STREAM_CAPTURE) {
1139 session_type = SESSION_TYPE_TX;
Laxminath Kasam38070be2017-08-17 18:21:59 +05301140 if ((passthr_mode != LEGACY_PCM) && (passthr_mode != LISTEN))
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301141 path_type = ADM_PATH_COMPRESSED_TX;
1142 else
1143 path_type = ADM_PATH_LIVE_REC;
1144 port_type = MSM_AFE_PORT_TYPE_TX;
1145 } else {
1146 pr_err("%s: invalid stream type %d\n", __func__, stream_type);
1147 return -EINVAL;
1148 }
1149
1150 is_lsm = (fe_id >= MSM_FRONTEND_DAI_LSM1) &&
1151 (fe_id <= MSM_FRONTEND_DAI_LSM8);
1152 mutex_lock(&routing_lock);
1153
1154 payload.num_copps = 0; /* only RX needs to use payload */
1155 fe_dai_map[fe_id][session_type].strm_id = dspst_id;
1156 /* re-enable EQ if active */
1157 msm_qti_pp_send_eq_values(fe_id);
1158 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
1159 if (test_bit(fe_id, &msm_bedais[i].fe_sessions[0]))
1160 msm_bedais[i].passthr_mode[fe_id] = passthr_mode;
1161
1162 if (!is_be_dai_extproc(i) &&
1163 (afe_get_port_type(msm_bedais[i].port_id) ==
1164 port_type) &&
1165 (msm_bedais[i].active) &&
1166 (test_bit(fe_id, &msm_bedais[i].fe_sessions[0]))) {
1167 int app_type, app_type_idx, copp_idx, acdb_dev_id;
1168
1169 /*
1170 * check if ADM needs to be configured with different
1171 * channel mapping than backend
1172 */
1173 if (!msm_bedais[i].adm_override_ch)
1174 channels = msm_bedais[i].channel;
1175 else
1176 channels = msm_bedais[i].adm_override_ch;
1177
1178 bit_width = msm_routing_get_bit_width(
1179 msm_bedais[i].format);
1180 app_type =
1181 fe_dai_app_type_cfg[fe_id][session_type][i].app_type;
1182 if (app_type && is_lsm) {
1183 app_type_idx =
1184 msm_pcm_routing_get_lsm_app_type_idx(app_type);
1185 sample_rate =
1186 fe_dai_app_type_cfg[fe_id][session_type][i]
1187 .sample_rate;
1188 bit_width =
1189 lsm_app_type_cfg[app_type_idx].bit_width;
1190 } else if (app_type) {
1191 app_type_idx =
1192 msm_pcm_routing_get_app_type_idx(
1193 app_type);
1194 sample_rate =
1195 fe_dai_app_type_cfg[fe_id][session_type][i].sample_rate;
1196 bit_width =
1197 app_type_cfg[app_type_idx].bit_width;
1198 } else {
1199 sample_rate = msm_bedais[i].sample_rate;
1200 }
1201 acdb_dev_id =
1202 fe_dai_app_type_cfg[fe_id][session_type][i].acdb_dev_id;
1203 topology = msm_routing_get_adm_topology(fe_id,
1204 session_type,
1205 i);
1206 if ((passthr_mode == COMPRESSED_PASSTHROUGH_DSD)
1207 || (passthr_mode ==
1208 COMPRESSED_PASSTHROUGH_GEN))
1209 topology = COMPRESSED_PASSTHROUGH_NONE_TOPOLOGY;
1210 pr_debug("%s: Before adm open topology %d\n", __func__,
1211 topology);
1212
1213 copp_idx =
1214 adm_open(msm_bedais[i].port_id,
1215 path_type, sample_rate, channels,
1216 topology, perf_mode, bit_width,
1217 app_type, acdb_dev_id);
1218 if ((copp_idx < 0) ||
1219 (copp_idx >= MAX_COPPS_PER_PORT)) {
1220 pr_err("%s:adm open failed coppid:%d\n",
1221 __func__, copp_idx);
1222 mutex_unlock(&routing_lock);
1223 return -EINVAL;
1224 }
1225 pr_debug("%s: set idx bit of fe:%d, type: %d, be:%d\n",
1226 __func__, fe_id, session_type, i);
1227 set_bit(copp_idx,
1228 &session_copp_map[fe_id][session_type][i]);
1229
1230 if (msm_is_resample_needed(
1231 sample_rate,
1232 msm_bedais[i].sample_rate))
1233 adm_copp_mfc_cfg(
1234 msm_bedais[i].port_id, copp_idx,
1235 msm_bedais[i].sample_rate);
1236
1237 for (j = 0; j < MAX_COPPS_PER_PORT; j++) {
1238 unsigned long copp =
1239 session_copp_map[fe_id][session_type][i];
1240 if (test_bit(j, &copp)) {
1241 payload.port_id[num_copps] =
1242 msm_bedais[i].port_id;
1243 payload.copp_idx[num_copps] = j;
1244 payload.app_type[num_copps] =
1245 fe_dai_app_type_cfg
1246 [fe_id][session_type][i]
1247 .app_type;
1248 payload.acdb_dev_id[num_copps] =
1249 fe_dai_app_type_cfg
1250 [fe_id][session_type][i]
1251 .acdb_dev_id;
1252 payload.sample_rate[num_copps] =
1253 fe_dai_app_type_cfg
1254 [fe_id][session_type][i]
1255 .sample_rate;
1256 num_copps++;
1257 }
1258 }
1259 if (passthr_mode != COMPRESSED_PASSTHROUGH_DSD
1260 && passthr_mode !=
1261 COMPRESSED_PASSTHROUGH_GEN) {
1262 msm_routing_send_device_pp_params(
1263 msm_bedais[i].port_id,
1264 copp_idx, fe_id);
1265 }
1266 }
1267 }
1268 if (num_copps) {
1269 payload.num_copps = num_copps;
1270 payload.session_id = fe_dai_map[fe_id][session_type].strm_id;
1271 adm_matrix_map(path_type, payload, perf_mode, passthr_mode);
1272 msm_pcm_routng_cfg_matrix_map_pp(payload, path_type, perf_mode);
1273 }
1274 mutex_unlock(&routing_lock);
1275 return 0;
1276}
1277
1278static u32 msm_pcm_routing_get_voc_sessionid(u16 val)
1279{
1280 u32 session_id;
1281
1282 switch (val) {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301283 case MSM_FRONTEND_DAI_QCHAT:
1284 session_id = voc_get_session_id(QCHAT_SESSION_NAME);
1285 break;
1286 case MSM_FRONTEND_DAI_VOIP:
1287 session_id = voc_get_session_id(VOIP_SESSION_NAME);
1288 break;
1289 case MSM_FRONTEND_DAI_VOICEMMODE1:
1290 session_id = voc_get_session_id(VOICEMMODE1_NAME);
1291 break;
1292 case MSM_FRONTEND_DAI_VOICEMMODE2:
1293 session_id = voc_get_session_id(VOICEMMODE2_NAME);
1294 break;
1295 default:
1296 session_id = 0;
1297 }
1298
1299 pr_debug("%s session_id 0x%x", __func__, session_id);
1300 return session_id;
1301}
1302
1303static int msm_pcm_routing_channel_mixer(int fe_id, bool perf_mode,
1304 int dspst_id, int stream_type)
1305{
1306 int copp_idx = 0;
1307 int sess_type = 0;
1308 int i = 0, j = 0, be_id;
1309 int ret = 0;
1310
1311 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
1312 pr_err("%s: invalid FE %d\n", __func__, fe_id);
1313 return 0;
1314 }
1315
1316 if (!(channel_mixer[fe_id].enable)) {
1317 pr_debug("%s: channel mixer not enabled for FE %d\n",
1318 __func__, fe_id);
1319 return 0;
1320 }
1321
1322 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK)
1323 sess_type = SESSION_TYPE_RX;
1324 else
1325 sess_type = SESSION_TYPE_TX;
1326
1327 for (i = 0; i < ADM_MAX_CHANNELS && channel_input[fe_id][i] > 0;
1328 ++i) {
1329 be_id = channel_input[fe_id][i] - 1;
1330 channel_mixer[fe_id].input_channels[i] =
1331 msm_bedais[be_id].channel;
1332
1333 if ((msm_bedais[be_id].active) &&
1334 test_bit(fe_id,
1335 &msm_bedais[be_id].fe_sessions[0])) {
1336 unsigned long copp =
1337 session_copp_map[fe_id][sess_type][be_id];
1338 for (j = 0; j < MAX_COPPS_PER_PORT; j++) {
1339 if (test_bit(j, &copp)) {
1340 copp_idx = j;
1341 break;
1342 }
1343 }
1344
1345 pr_debug("%s: fe %d, be %d, channel %d, copp %d\n",
1346 __func__,
1347 fe_id, be_id, msm_bedais[be_id].channel,
1348 copp_idx);
1349 ret = adm_programable_channel_mixer(
1350 msm_bedais[be_id].port_id,
1351 copp_idx, dspst_id, sess_type,
1352 channel_mixer + fe_id, i);
1353 }
1354 }
1355
1356 return ret;
1357}
1358
1359int msm_pcm_routing_reg_phy_stream(int fedai_id, int perf_mode,
1360 int dspst_id, int stream_type)
1361{
1362 int i, j, session_type, path_type, port_type, topology, num_copps = 0;
1363 struct route_payload payload;
1364 u32 channels, sample_rate;
1365 uint16_t bits_per_sample = 16;
1366 uint32_t passthr_mode = LEGACY_PCM;
1367 int ret = 0;
1368
1369 if (fedai_id > MSM_FRONTEND_DAI_MM_MAX_ID) {
1370 /* bad ID assigned in machine driver */
1371 pr_err("%s: bad MM ID %d\n", __func__, fedai_id);
1372 return -EINVAL;
1373 }
1374
1375 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK) {
1376 session_type = SESSION_TYPE_RX;
1377 path_type = ADM_PATH_PLAYBACK;
1378 port_type = MSM_AFE_PORT_TYPE_RX;
1379 } else {
1380 session_type = SESSION_TYPE_TX;
1381 path_type = ADM_PATH_LIVE_REC;
1382 port_type = MSM_AFE_PORT_TYPE_TX;
1383 }
1384
1385 mutex_lock(&routing_lock);
1386
1387 payload.num_copps = 0; /* only RX needs to use payload */
1388 fe_dai_map[fedai_id][session_type].strm_id = dspst_id;
1389 fe_dai_map[fedai_id][session_type].perf_mode = perf_mode;
1390
1391 /* re-enable EQ if active */
1392 msm_qti_pp_send_eq_values(fedai_id);
1393 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
1394 if (!is_be_dai_extproc(i) &&
1395 (afe_get_port_type(msm_bedais[i].port_id) == port_type) &&
1396 (msm_bedais[i].active) &&
1397 (test_bit(fedai_id, &msm_bedais[i].fe_sessions[0]))) {
1398 int app_type, app_type_idx, copp_idx, acdb_dev_id;
1399 /*
1400 * check if ADM needs to be configured with different
1401 * channel mapping than backend
1402 */
1403 if (!msm_bedais[i].adm_override_ch)
1404 channels = msm_bedais[i].channel;
1405 else
1406 channels = msm_bedais[i].adm_override_ch;
1407 msm_bedais[i].passthr_mode[fedai_id] =
1408 LEGACY_PCM;
1409
1410 bits_per_sample = msm_routing_get_bit_width(
1411 msm_bedais[i].format);
1412
1413 app_type =
1414 fe_dai_app_type_cfg[fedai_id][session_type][i].app_type;
1415 if (app_type) {
1416 app_type_idx =
1417 msm_pcm_routing_get_app_type_idx(app_type);
1418 sample_rate =
1419 fe_dai_app_type_cfg[fedai_id][session_type][i]
1420 .sample_rate;
1421 bits_per_sample =
1422 app_type_cfg[app_type_idx].bit_width;
1423 } else
1424 sample_rate = msm_bedais[i].sample_rate;
1425
1426 acdb_dev_id =
1427 fe_dai_app_type_cfg[fedai_id][session_type][i]
1428 .acdb_dev_id;
1429 topology = msm_routing_get_adm_topology(fedai_id,
1430 session_type,
1431 i);
1432 copp_idx = adm_open(msm_bedais[i].port_id, path_type,
1433 sample_rate, channels, topology,
1434 perf_mode, bits_per_sample,
1435 app_type, acdb_dev_id);
1436 if ((copp_idx < 0) ||
1437 (copp_idx >= MAX_COPPS_PER_PORT)) {
1438 pr_err("%s: adm open failed copp_idx:%d\n",
1439 __func__, copp_idx);
1440 mutex_unlock(&routing_lock);
1441 return -EINVAL;
1442 }
1443 pr_debug("%s: setting idx bit of fe:%d, type: %d, be:%d\n",
1444 __func__, fedai_id, session_type, i);
1445 set_bit(copp_idx,
1446 &session_copp_map[fedai_id][session_type][i]);
1447
1448 if (msm_is_resample_needed(
1449 sample_rate,
1450 msm_bedais[i].sample_rate))
1451 adm_copp_mfc_cfg(
1452 msm_bedais[i].port_id, copp_idx,
1453 msm_bedais[i].sample_rate);
1454
1455 for (j = 0; j < MAX_COPPS_PER_PORT; j++) {
1456 unsigned long copp =
1457 session_copp_map[fedai_id][session_type][i];
1458 if (test_bit(j, &copp)) {
1459 payload.port_id[num_copps] =
1460 msm_bedais[i].port_id;
1461 payload.copp_idx[num_copps] = j;
1462 payload.app_type[num_copps] =
1463 fe_dai_app_type_cfg
1464 [fedai_id][session_type]
1465 [i].app_type;
1466 payload.acdb_dev_id[num_copps] =
1467 fe_dai_app_type_cfg
1468 [fedai_id][session_type]
1469 [i].acdb_dev_id;
1470 payload.sample_rate[num_copps] =
1471 fe_dai_app_type_cfg
1472 [fedai_id][session_type]
1473 [i].sample_rate;
1474 num_copps++;
1475 }
1476 }
1477 if ((perf_mode == LEGACY_PCM_MODE) &&
1478 (msm_bedais[i].passthr_mode[fedai_id] ==
1479 LEGACY_PCM))
1480 msm_pcm_routing_cfg_pp(msm_bedais[i].port_id,
1481 copp_idx, topology,
1482 channels);
1483 }
1484 }
1485 if (num_copps) {
1486 payload.num_copps = num_copps;
1487 payload.session_id = fe_dai_map[fedai_id][session_type].strm_id;
1488 adm_matrix_map(path_type, payload, perf_mode, passthr_mode);
1489 msm_pcm_routng_cfg_matrix_map_pp(payload, path_type, perf_mode);
1490 }
1491
1492 ret = msm_pcm_routing_channel_mixer(fedai_id, perf_mode,
1493 dspst_id, stream_type);
1494 mutex_unlock(&routing_lock);
1495 return ret;
1496}
1497
1498int msm_pcm_routing_reg_phy_stream_v2(int fedai_id, int perf_mode,
1499 int dspst_id, int stream_type,
1500 struct msm_pcm_routing_evt event_info)
1501{
1502 if (msm_pcm_routing_reg_phy_stream(fedai_id, perf_mode, dspst_id,
1503 stream_type)) {
1504 pr_err("%s: failed to reg phy stream\n", __func__);
1505 return -EINVAL;
1506 }
1507
1508 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK)
1509 fe_dai_map[fedai_id][SESSION_TYPE_RX].event_info = event_info;
1510 else
1511 fe_dai_map[fedai_id][SESSION_TYPE_TX].event_info = event_info;
1512 return 0;
1513}
1514
1515void msm_pcm_routing_dereg_phy_stream(int fedai_id, int stream_type)
1516{
1517 int i, port_type, session_type, path_type, topology;
1518 struct msm_pcm_routing_fdai_data *fdai;
1519
1520 if (!is_mm_lsm_fe_id(fedai_id)) {
1521 /* bad ID assigned in machine driver */
1522 pr_err("%s: bad MM ID\n", __func__);
1523 return;
1524 }
1525
1526 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK) {
1527 port_type = MSM_AFE_PORT_TYPE_RX;
1528 session_type = SESSION_TYPE_RX;
1529 path_type = ADM_PATH_PLAYBACK;
1530 } else {
1531 port_type = MSM_AFE_PORT_TYPE_TX;
1532 session_type = SESSION_TYPE_TX;
1533 path_type = ADM_PATH_LIVE_REC;
1534 }
1535
1536 mutex_lock(&routing_lock);
1537 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
1538 if (!is_be_dai_extproc(i) &&
1539 (afe_get_port_type(msm_bedais[i].port_id) == port_type) &&
1540 (msm_bedais[i].active) &&
1541 (test_bit(fedai_id, &msm_bedais[i].fe_sessions[0]))) {
1542 int idx;
1543 unsigned long copp =
1544 session_copp_map[fedai_id][session_type][i];
1545 fdai = &fe_dai_map[fedai_id][session_type];
1546
1547 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++)
1548 if (test_bit(idx, &copp))
1549 break;
1550
1551 if (idx >= MAX_COPPS_PER_PORT || idx < 0) {
1552 pr_debug("%s: copp idx is invalid, exiting\n",
1553 __func__);
1554 continue;
1555 }
1556 topology = adm_get_topology_for_port_copp_idx(
1557 msm_bedais[i].port_id, idx);
1558 adm_close(msm_bedais[i].port_id, fdai->perf_mode, idx);
1559 pr_debug("%s:copp:%ld,idx bit fe:%d,type:%d,be:%d\n",
1560 __func__, copp, fedai_id, session_type, i);
1561 clear_bit(idx,
1562 &session_copp_map[fedai_id][session_type][i]);
1563 if ((topology == DOLBY_ADM_COPP_TOPOLOGY_ID ||
1564 topology == DS2_ADM_COPP_TOPOLOGY_ID) &&
1565 (fdai->perf_mode == LEGACY_PCM_MODE) &&
1566 (msm_bedais[i].passthr_mode[fedai_id] ==
1567 LEGACY_PCM))
1568 msm_pcm_routing_deinit_pp(msm_bedais[i].port_id,
1569 topology);
1570 }
1571 }
1572
1573 fe_dai_map[fedai_id][session_type].strm_id = INVALID_SESSION;
1574 fe_dai_map[fedai_id][session_type].be_srate = 0;
1575 mutex_unlock(&routing_lock);
1576}
1577
1578/* Check if FE/BE route is set */
1579static bool msm_pcm_routing_route_is_set(u16 be_id, u16 fe_id)
1580{
1581 bool rc = false;
1582
1583 if (!is_mm_lsm_fe_id(fe_id)) {
1584 /* recheck FE ID in the mixer control defined in this file */
1585 pr_err("%s: bad MM ID\n", __func__);
1586 return rc;
1587 }
1588
1589 if (test_bit(fe_id, &msm_bedais[be_id].fe_sessions[0]))
1590 rc = true;
1591
1592 return rc;
1593}
1594
1595static void msm_pcm_routing_process_audio(u16 reg, u16 val, int set)
1596{
1597 int session_type, path_type, topology;
1598 u32 channels, sample_rate;
1599 uint16_t bits_per_sample = 16;
1600 struct msm_pcm_routing_fdai_data *fdai;
1601 uint32_t passthr_mode;
1602 bool is_lsm;
1603
1604 pr_debug("%s: reg %x val %x set %x\n", __func__, reg, val, set);
1605
1606 if (!is_mm_lsm_fe_id(val)) {
1607 /* recheck FE ID in the mixer control defined in this file */
1608 pr_err("%s: bad MM ID\n", __func__);
1609 return;
1610 }
1611
1612 if (!route_check_fe_id_adm_support(val)) {
1613 /* ignore adm open if not supported for fe_id */
1614 pr_debug("%s: No ADM support for fe id %d\n", __func__, val);
1615 return;
1616 }
1617
1618 passthr_mode = msm_bedais[reg].passthr_mode[val];
1619 if (afe_get_port_type(msm_bedais[reg].port_id) ==
1620 MSM_AFE_PORT_TYPE_RX) {
1621 session_type = SESSION_TYPE_RX;
1622 if (passthr_mode != LEGACY_PCM)
1623 path_type = ADM_PATH_COMPRESSED_RX;
1624 else
1625 path_type = ADM_PATH_PLAYBACK;
1626 } else {
1627 session_type = SESSION_TYPE_TX;
Haynes Mathew George9a277722018-01-29 17:34:49 -08001628 if ((passthr_mode != LEGACY_PCM) && (passthr_mode != LISTEN))
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301629 path_type = ADM_PATH_COMPRESSED_TX;
1630 else
1631 path_type = ADM_PATH_LIVE_REC;
1632 }
1633 is_lsm = (val >= MSM_FRONTEND_DAI_LSM1) &&
1634 (val <= MSM_FRONTEND_DAI_LSM8);
1635
1636 mutex_lock(&routing_lock);
1637 if (set) {
1638 if (!test_bit(val, &msm_bedais[reg].fe_sessions[0]) &&
1639 ((msm_bedais[reg].port_id == VOICE_PLAYBACK_TX) ||
1640 (msm_bedais[reg].port_id == VOICE2_PLAYBACK_TX)))
1641 voc_start_playback(set, msm_bedais[reg].port_id);
1642
1643 set_bit(val, &msm_bedais[reg].fe_sessions[0]);
1644 fdai = &fe_dai_map[val][session_type];
1645 if (msm_bedais[reg].active && fdai->strm_id !=
1646 INVALID_SESSION) {
1647 int app_type, app_type_idx, copp_idx, acdb_dev_id;
1648 /*
1649 * check if ADM needs to be configured with different
1650 * channel mapping than backend
1651 */
1652 if (!msm_bedais[reg].adm_override_ch)
1653 channels = msm_bedais[reg].channel;
1654 else
1655 channels = msm_bedais[reg].adm_override_ch;
1656 if (session_type == SESSION_TYPE_TX &&
1657 fdai->be_srate &&
1658 (fdai->be_srate != msm_bedais[reg].sample_rate)) {
1659 pr_debug("%s: flush strm %d diff BE rates\n",
1660 __func__, fdai->strm_id);
1661
1662 if (fdai->event_info.event_func)
1663 fdai->event_info.event_func(
1664 MSM_PCM_RT_EVT_BUF_RECFG,
1665 fdai->event_info.priv_data);
1666 fdai->be_srate = 0; /* might not need it */
1667 }
1668
1669 bits_per_sample = msm_routing_get_bit_width(
1670 msm_bedais[reg].format);
1671
1672 app_type =
1673 fe_dai_app_type_cfg[val][session_type][reg].app_type;
1674 if (app_type && is_lsm) {
1675 app_type_idx =
1676 msm_pcm_routing_get_lsm_app_type_idx(app_type);
1677 sample_rate =
1678 fe_dai_app_type_cfg[val][session_type][reg]
1679 .sample_rate;
1680 bits_per_sample =
1681 lsm_app_type_cfg[app_type_idx].bit_width;
1682 } else if (app_type) {
1683 app_type_idx =
1684 msm_pcm_routing_get_app_type_idx(app_type);
1685 sample_rate =
1686 fe_dai_app_type_cfg[val][session_type][reg]
1687 .sample_rate;
1688 bits_per_sample =
1689 app_type_cfg[app_type_idx].bit_width;
1690 } else
1691 sample_rate = msm_bedais[reg].sample_rate;
1692
1693 topology = msm_routing_get_adm_topology(val,
1694 session_type,
1695 reg);
1696 acdb_dev_id =
1697 fe_dai_app_type_cfg[val][session_type][reg].acdb_dev_id;
1698 copp_idx = adm_open(msm_bedais[reg].port_id, path_type,
1699 sample_rate, channels, topology,
1700 fdai->perf_mode, bits_per_sample,
1701 app_type, acdb_dev_id);
1702 if ((copp_idx < 0) ||
1703 (copp_idx >= MAX_COPPS_PER_PORT)) {
1704 pr_err("%s: adm open failed\n", __func__);
1705 mutex_unlock(&routing_lock);
1706 return;
1707 }
1708 pr_debug("%s: setting idx bit of fe:%d, type: %d, be:%d\n",
1709 __func__, val, session_type, reg);
1710 set_bit(copp_idx,
1711 &session_copp_map[val][session_type][reg]);
1712
1713 if (msm_is_resample_needed(
1714 sample_rate,
1715 msm_bedais[reg].sample_rate))
1716 adm_copp_mfc_cfg(
1717 msm_bedais[reg].port_id, copp_idx,
1718 msm_bedais[reg].sample_rate);
1719
1720 if (session_type == SESSION_TYPE_RX &&
1721 fdai->event_info.event_func)
1722 fdai->event_info.event_func(
1723 MSM_PCM_RT_EVT_DEVSWITCH,
1724 fdai->event_info.priv_data);
1725
1726 msm_pcm_routing_build_matrix(val, session_type,
1727 path_type,
1728 fdai->perf_mode,
1729 passthr_mode);
1730 if ((fdai->perf_mode == LEGACY_PCM_MODE) &&
1731 (passthr_mode == LEGACY_PCM))
1732 msm_pcm_routing_cfg_pp(msm_bedais[reg].port_id,
1733 copp_idx, topology,
1734 channels);
1735 }
1736 } else {
1737 if (test_bit(val, &msm_bedais[reg].fe_sessions[0]) &&
1738 ((msm_bedais[reg].port_id == VOICE_PLAYBACK_TX) ||
1739 (msm_bedais[reg].port_id == VOICE2_PLAYBACK_TX)))
1740 voc_start_playback(set, msm_bedais[reg].port_id);
1741 clear_bit(val, &msm_bedais[reg].fe_sessions[0]);
1742 fdai = &fe_dai_map[val][session_type];
1743 if (msm_bedais[reg].active && fdai->strm_id !=
1744 INVALID_SESSION) {
1745 int idx;
1746 int port_id;
1747 unsigned long copp =
1748 session_copp_map[val][session_type][reg];
1749 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++)
1750 if (test_bit(idx, &copp))
1751 break;
1752
1753 port_id = msm_bedais[reg].port_id;
1754 topology = adm_get_topology_for_port_copp_idx(port_id,
1755 idx);
1756 adm_close(msm_bedais[reg].port_id, fdai->perf_mode,
1757 idx);
1758 pr_debug("%s: copp: %ld, reset idx bit fe:%d, type: %d, be:%d topology=0x%x\n",
1759 __func__, copp, val, session_type, reg,
1760 topology);
1761 clear_bit(idx,
1762 &session_copp_map[val][session_type][reg]);
1763 if ((topology == DOLBY_ADM_COPP_TOPOLOGY_ID ||
1764 topology == DS2_ADM_COPP_TOPOLOGY_ID) &&
1765 (fdai->perf_mode == LEGACY_PCM_MODE) &&
1766 (passthr_mode == LEGACY_PCM))
1767 msm_pcm_routing_deinit_pp(
1768 msm_bedais[reg].port_id,
1769 topology);
1770 msm_pcm_routing_build_matrix(val, session_type,
1771 path_type,
1772 fdai->perf_mode,
1773 passthr_mode);
1774 }
1775 }
1776 if ((msm_bedais[reg].port_id == VOICE_RECORD_RX)
1777 || (msm_bedais[reg].port_id == VOICE_RECORD_TX))
1778 voc_start_record(msm_bedais[reg].port_id, set, voc_session_id);
1779
1780 mutex_unlock(&routing_lock);
1781}
1782
1783static int msm_routing_get_audio_mixer(struct snd_kcontrol *kcontrol,
1784 struct snd_ctl_elem_value *ucontrol)
1785{
1786 struct soc_mixer_control *mc =
1787 (struct soc_mixer_control *)kcontrol->private_value;
1788
1789 if (test_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]))
1790 ucontrol->value.integer.value[0] = 1;
1791 else
1792 ucontrol->value.integer.value[0] = 0;
1793
1794 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
1795 ucontrol->value.integer.value[0]);
1796
1797 return 0;
1798}
1799
1800static int msm_routing_put_audio_mixer(struct snd_kcontrol *kcontrol,
1801 struct snd_ctl_elem_value *ucontrol)
1802{
Asish Bhattacharya34504582017-08-08 12:55:01 +05301803 struct snd_soc_dapm_widget *widget =
1804 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301805 struct soc_mixer_control *mc =
1806 (struct soc_mixer_control *)kcontrol->private_value;
1807 struct snd_soc_dapm_update *update = NULL;
1808
1809 if (ucontrol->value.integer.value[0] &&
1810 msm_pcm_routing_route_is_set(mc->reg, mc->shift) == false) {
1811 msm_pcm_routing_process_audio(mc->reg, mc->shift, 1);
1812 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
1813 update);
1814 } else if (!ucontrol->value.integer.value[0] &&
1815 msm_pcm_routing_route_is_set(mc->reg, mc->shift) == true) {
1816 msm_pcm_routing_process_audio(mc->reg, mc->shift, 0);
1817 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
1818 update);
1819 }
1820
1821 return 1;
1822}
1823
1824static int msm_routing_get_listen_mixer(struct snd_kcontrol *kcontrol,
1825 struct snd_ctl_elem_value *ucontrol)
1826{
1827 struct soc_mixer_control *mc =
1828 (struct soc_mixer_control *)kcontrol->private_value;
1829
1830 if (test_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]))
1831 ucontrol->value.integer.value[0] = 1;
1832 else
1833 ucontrol->value.integer.value[0] = 0;
1834
1835 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
1836 ucontrol->value.integer.value[0]);
1837
1838 return 0;
1839}
1840
1841static int msm_routing_put_listen_mixer(struct snd_kcontrol *kcontrol,
1842 struct snd_ctl_elem_value *ucontrol)
1843{
Asish Bhattacharya34504582017-08-08 12:55:01 +05301844 struct snd_soc_dapm_widget *widget =
1845 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301846 struct soc_mixer_control *mc =
1847 (struct soc_mixer_control *)kcontrol->private_value;
1848 struct snd_soc_dapm_update *update = NULL;
1849
1850 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
1851 ucontrol->value.integer.value[0]);
1852
1853 if (ucontrol->value.integer.value[0]) {
1854 if (msm_pcm_routing_route_is_set(mc->reg, mc->shift) == false)
1855 msm_pcm_routing_process_audio(mc->reg, mc->shift, 1);
1856 snd_soc_dapm_mixer_update_power(widget->dapm,
1857 kcontrol, 1, update);
1858 } else if (!ucontrol->value.integer.value[0]) {
1859 if (msm_pcm_routing_route_is_set(mc->reg, mc->shift) == true)
1860 msm_pcm_routing_process_audio(mc->reg, mc->shift, 0);
1861 snd_soc_dapm_mixer_update_power(widget->dapm,
1862 kcontrol, 0, update);
1863 }
1864
1865 return 1;
1866}
1867
1868static void msm_pcm_routing_process_voice(u16 reg, u16 val, int set)
1869{
1870 u32 session_id = 0;
1871 u16 path_type;
1872 struct media_format_info voc_be_media_format;
1873
1874 pr_debug("%s: reg %x val %x set %x\n", __func__, reg, val, set);
1875
1876 session_id = msm_pcm_routing_get_voc_sessionid(val);
1877
1878 pr_debug("%s: FE DAI 0x%x session_id 0x%x\n",
1879 __func__, val, session_id);
1880
1881 mutex_lock(&routing_lock);
1882
1883 if (set)
1884 set_bit(val, &msm_bedais[reg].fe_sessions[0]);
1885 else
1886 clear_bit(val, &msm_bedais[reg].fe_sessions[0]);
1887
1888 if (val == MSM_FRONTEND_DAI_DTMF_RX &&
1889 afe_get_port_type(msm_bedais[reg].port_id) ==
1890 MSM_AFE_PORT_TYPE_RX) {
1891 pr_debug("%s(): set=%d port id=0x%x for dtmf generation\n",
1892 __func__, set, msm_bedais[reg].port_id);
1893 afe_set_dtmf_gen_rx_portid(msm_bedais[reg].port_id, set);
1894 }
1895
1896 if (afe_get_port_type(msm_bedais[reg].port_id) ==
1897 MSM_AFE_PORT_TYPE_RX)
1898 path_type = RX_PATH;
1899 else
1900 path_type = TX_PATH;
1901
1902 if (set) {
1903 if (msm_bedais[reg].active) {
1904 voc_set_route_flag(session_id, path_type, 1);
1905
1906 memset(&voc_be_media_format, 0,
1907 sizeof(struct media_format_info));
1908
1909 voc_be_media_format.port_id = msm_bedais[reg].port_id;
1910 voc_be_media_format.num_channels =
1911 msm_bedais[reg].channel;
1912 voc_be_media_format.sample_rate =
1913 msm_bedais[reg].sample_rate;
1914 voc_be_media_format.bits_per_sample =
1915 msm_bedais[reg].format;
1916 /* Defaulting this to 1 for voice call usecases */
1917 voc_be_media_format.channel_mapping[0] = 1;
1918
1919 voc_set_device_config(session_id, path_type,
1920 &voc_be_media_format);
1921
1922 if (voc_get_route_flag(session_id, TX_PATH) &&
1923 voc_get_route_flag(session_id, RX_PATH))
1924 voc_enable_device(session_id);
1925 } else {
1926 pr_debug("%s BE is not active\n", __func__);
1927 }
1928 } else {
1929 voc_set_route_flag(session_id, path_type, 0);
1930 voc_disable_device(session_id);
1931 }
1932
1933 mutex_unlock(&routing_lock);
1934
1935}
1936
1937static int msm_routing_get_voice_mixer(struct snd_kcontrol *kcontrol,
1938 struct snd_ctl_elem_value *ucontrol)
1939{
1940 struct soc_mixer_control *mc =
1941 (struct soc_mixer_control *)kcontrol->private_value;
1942
1943 mutex_lock(&routing_lock);
1944
1945 if (test_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]))
1946 ucontrol->value.integer.value[0] = 1;
1947 else
1948 ucontrol->value.integer.value[0] = 0;
1949
1950 mutex_unlock(&routing_lock);
1951
1952 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
1953 ucontrol->value.integer.value[0]);
1954
1955 return 0;
1956}
1957
1958static int msm_routing_put_voice_mixer(struct snd_kcontrol *kcontrol,
1959 struct snd_ctl_elem_value *ucontrol)
1960{
Asish Bhattacharya34504582017-08-08 12:55:01 +05301961 struct snd_soc_dapm_widget *widget =
1962 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301963 struct soc_mixer_control *mc =
1964 (struct soc_mixer_control *)kcontrol->private_value;
1965 struct snd_soc_dapm_update *update = NULL;
1966
1967 if (ucontrol->value.integer.value[0]) {
1968 msm_pcm_routing_process_voice(mc->reg, mc->shift, 1);
1969 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
1970 update);
1971 } else {
1972 msm_pcm_routing_process_voice(mc->reg, mc->shift, 0);
1973 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
1974 update);
1975 }
1976
1977 return 1;
1978}
1979
1980static int msm_routing_get_voice_stub_mixer(struct snd_kcontrol *kcontrol,
1981 struct snd_ctl_elem_value *ucontrol)
1982{
1983 struct soc_mixer_control *mc =
1984 (struct soc_mixer_control *)kcontrol->private_value;
1985
1986 mutex_lock(&routing_lock);
1987
1988 if (test_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]))
1989 ucontrol->value.integer.value[0] = 1;
1990 else
1991 ucontrol->value.integer.value[0] = 0;
1992
1993 mutex_unlock(&routing_lock);
1994
1995 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
1996 ucontrol->value.integer.value[0]);
1997
1998 return 0;
1999}
2000
2001static int msm_routing_put_voice_stub_mixer(struct snd_kcontrol *kcontrol,
2002 struct snd_ctl_elem_value *ucontrol)
2003{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302004 struct snd_soc_dapm_widget *widget =
2005 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302006 struct soc_mixer_control *mc =
2007 (struct soc_mixer_control *)kcontrol->private_value;
2008 struct snd_soc_dapm_update *update = NULL;
2009
2010 if (ucontrol->value.integer.value[0]) {
2011 mutex_lock(&routing_lock);
2012 set_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]);
2013 mutex_unlock(&routing_lock);
2014
2015 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2016 update);
2017 } else {
2018 mutex_lock(&routing_lock);
2019 clear_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]);
2020 mutex_unlock(&routing_lock);
2021
2022 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2023 update);
2024 }
2025
2026 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
2027 ucontrol->value.integer.value[0]);
2028
2029 return 1;
2030}
2031
2032/*
2033 * Return the mapping between port ID and backend ID to enable the AFE callback
2034 * to determine the acdb_dev_id from the port id
2035 */
2036int msm_pcm_get_be_id_from_port_id(int port_id)
2037{
2038 int i;
2039 int be_id = -EINVAL;
2040
2041 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
2042 if (msm_bedais[i].port_id == port_id) {
2043 be_id = i;
2044 break;
2045 }
2046 }
2047
2048 return be_id;
2049}
2050
2051/*
2052 * Return the registered dev_acdb_id given a port ID to enable identifying the
2053 * correct AFE calibration information by comparing the header information.
2054 */
2055static int msm_pcm_get_dev_acdb_id_by_port_id(int port_id)
2056{
2057 int acdb_id = -EINVAL;
2058 int i = 0;
2059 int session;
2060 int port_type = afe_get_port_type(port_id);
2061 int be_id = msm_pcm_get_be_id_from_port_id(port_id);
2062
2063 pr_debug("%s:port_id %d be_id %d, port_type 0x%x\n",
2064 __func__, port_id, be_id, port_type);
2065
2066 if (port_type == MSM_AFE_PORT_TYPE_TX) {
2067 session = SESSION_TYPE_TX;
2068 } else if (port_type == MSM_AFE_PORT_TYPE_RX) {
2069 session = SESSION_TYPE_RX;
2070 } else {
2071 pr_err("%s: Invalid port type %d\n", __func__, port_type);
2072 acdb_id = -EINVAL;
2073 goto exit;
2074 }
2075
2076 if (be_id < 0) {
2077 pr_err("%s: Error getting backend id %d\n", __func__, be_id);
2078 goto exit;
2079 }
2080
2081 mutex_lock(&routing_lock);
2082 i = find_first_bit(&msm_bedais[be_id].fe_sessions[0],
2083 MSM_FRONTEND_DAI_MAX);
2084 if (i < MSM_FRONTEND_DAI_MAX)
2085 acdb_id = fe_dai_app_type_cfg[i][session][be_id].acdb_dev_id;
2086
2087 pr_debug("%s: FE[%d] session[%d] BE[%d] acdb_id(%d)\n",
2088 __func__, i, session, be_id, acdb_id);
2089 mutex_unlock(&routing_lock);
2090exit:
2091 return acdb_id;
2092}
2093
2094static int msm_routing_get_switch_mixer(struct snd_kcontrol *kcontrol,
2095 struct snd_ctl_elem_value *ucontrol)
2096{
2097 ucontrol->value.integer.value[0] = fm_switch_enable;
2098 pr_debug("%s: FM Switch enable %ld\n", __func__,
2099 ucontrol->value.integer.value[0]);
2100 return 0;
2101}
2102
2103static int msm_routing_put_switch_mixer(struct snd_kcontrol *kcontrol,
2104 struct snd_ctl_elem_value *ucontrol)
2105{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302106 struct snd_soc_dapm_widget *widget =
2107 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302108 struct snd_soc_dapm_update *update = NULL;
2109
2110 pr_debug("%s: FM Switch enable %ld\n", __func__,
2111 ucontrol->value.integer.value[0]);
2112 if (ucontrol->value.integer.value[0])
2113 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2114 update);
2115 else
2116 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2117 update);
2118 fm_switch_enable = ucontrol->value.integer.value[0];
2119 return 1;
2120}
2121
2122static int msm_routing_get_hfp_switch_mixer(struct snd_kcontrol *kcontrol,
2123 struct snd_ctl_elem_value *ucontrol)
2124{
2125 ucontrol->value.integer.value[0] = hfp_switch_enable;
2126 pr_debug("%s: HFP Switch enable %ld\n", __func__,
2127 ucontrol->value.integer.value[0]);
2128 return 0;
2129}
2130
2131static int msm_routing_put_hfp_switch_mixer(struct snd_kcontrol *kcontrol,
2132 struct snd_ctl_elem_value *ucontrol)
2133{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302134 struct snd_soc_dapm_widget *widget =
2135 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302136 struct snd_soc_dapm_update *update = NULL;
2137
2138 pr_debug("%s: HFP Switch enable %ld\n", __func__,
2139 ucontrol->value.integer.value[0]);
2140 if (ucontrol->value.integer.value[0])
2141 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol,
2142 1, update);
2143 else
2144 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol,
2145 0, update);
2146 hfp_switch_enable = ucontrol->value.integer.value[0];
2147 return 1;
2148}
2149
2150static int msm_routing_get_int0_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2151 struct snd_ctl_elem_value *ucontrol)
2152{
2153 ucontrol->value.integer.value[0] = int0_mi2s_switch_enable;
2154 pr_debug("%s: INT0 MI2S Switch enable %ld\n", __func__,
2155 ucontrol->value.integer.value[0]);
2156 return 0;
2157}
2158
2159static int msm_routing_put_int0_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2160 struct snd_ctl_elem_value *ucontrol)
2161{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302162 struct snd_soc_dapm_widget *widget =
2163 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302164 struct snd_soc_dapm_update *update = NULL;
2165
2166 pr_debug("%s: INT0 MI2S Switch enable %ld\n", __func__,
2167 ucontrol->value.integer.value[0]);
2168 if (ucontrol->value.integer.value[0])
2169 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2170 update);
2171 else
2172 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2173 update);
2174 int0_mi2s_switch_enable = ucontrol->value.integer.value[0];
2175 return 1;
2176}
2177
2178static int msm_routing_get_int4_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2179 struct snd_ctl_elem_value *ucontrol)
2180{
2181 ucontrol->value.integer.value[0] = int4_mi2s_switch_enable;
2182 pr_debug("%s: INT4 MI2S Switch enable %ld\n", __func__,
2183 ucontrol->value.integer.value[0]);
2184 return 0;
2185}
2186
2187static int msm_routing_put_int4_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2188 struct snd_ctl_elem_value *ucontrol)
2189{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302190 struct snd_soc_dapm_widget *widget =
2191 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302192 struct snd_soc_dapm_update *update = NULL;
2193
2194 pr_debug("%s: INT4 MI2S Switch enable %ld\n", __func__,
2195 ucontrol->value.integer.value[0]);
2196 if (ucontrol->value.integer.value[0])
2197 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2198 update);
2199 else
2200 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2201 update);
2202 int4_mi2s_switch_enable = ucontrol->value.integer.value[0];
2203 return 1;
2204}
2205
2206static int msm_routing_get_usb_switch_mixer(struct snd_kcontrol *kcontrol,
2207 struct snd_ctl_elem_value *ucontrol)
2208{
2209 ucontrol->value.integer.value[0] = usb_switch_enable;
2210 pr_debug("%s: HFP Switch enable %ld\n", __func__,
2211 ucontrol->value.integer.value[0]);
2212 return 0;
2213}
2214
2215static int msm_routing_put_usb_switch_mixer(struct snd_kcontrol *kcontrol,
2216 struct snd_ctl_elem_value *ucontrol)
2217{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302218 struct snd_soc_dapm_widget *widget =
2219 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302220 struct snd_soc_dapm_update *update = NULL;
2221
2222 pr_debug("%s: USB Switch enable %ld\n", __func__,
2223 ucontrol->value.integer.value[0]);
2224 if (ucontrol->value.integer.value[0])
2225 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol,
2226 1, update);
2227 else
2228 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol,
2229 0, update);
2230 usb_switch_enable = ucontrol->value.integer.value[0];
2231 return 1;
2232}
2233
2234static int msm_routing_get_pri_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2235 struct snd_ctl_elem_value *ucontrol)
2236{
2237 ucontrol->value.integer.value[0] = pri_mi2s_switch_enable;
2238 pr_debug("%s: PRI MI2S Switch enable %ld\n", __func__,
2239 ucontrol->value.integer.value[0]);
2240 return 0;
2241}
2242
2243static int msm_routing_put_pri_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2244 struct snd_ctl_elem_value *ucontrol)
2245{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302246 struct snd_soc_dapm_widget *widget =
2247 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302248 struct snd_soc_dapm_update *update = NULL;
2249
2250 pr_debug("%s: PRI MI2S Switch enable %ld\n", __func__,
2251 ucontrol->value.integer.value[0]);
2252 if (ucontrol->value.integer.value[0])
2253 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2254 update);
2255 else
2256 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2257 update);
2258 pri_mi2s_switch_enable = ucontrol->value.integer.value[0];
2259 return 1;
2260}
2261
2262static int msm_routing_get_sec_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2263 struct snd_ctl_elem_value *ucontrol)
2264{
2265 ucontrol->value.integer.value[0] = sec_mi2s_switch_enable;
2266 pr_debug("%s: SEC MI2S Switch enable %ld\n", __func__,
2267 ucontrol->value.integer.value[0]);
2268 return 0;
2269}
2270
2271static int msm_routing_put_sec_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2272 struct snd_ctl_elem_value *ucontrol)
2273{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302274 struct snd_soc_dapm_widget *widget =
2275 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302276 struct snd_soc_dapm_update *update = NULL;
2277
2278 pr_debug("%s: SEC MI2S Switch enable %ld\n", __func__,
2279 ucontrol->value.integer.value[0]);
2280 if (ucontrol->value.integer.value[0])
2281 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2282 update);
2283 else
2284 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2285 update);
2286 sec_mi2s_switch_enable = ucontrol->value.integer.value[0];
2287 return 1;
2288}
2289
2290static int msm_routing_get_tert_mi2s_switch_mixer(
2291 struct snd_kcontrol *kcontrol,
2292 struct snd_ctl_elem_value *ucontrol)
2293{
2294 ucontrol->value.integer.value[0] = tert_mi2s_switch_enable;
2295 pr_debug("%s: TERT MI2S Switch enable %ld\n", __func__,
2296 ucontrol->value.integer.value[0]);
2297 return 0;
2298}
2299
2300static int msm_routing_put_tert_mi2s_switch_mixer(
2301 struct snd_kcontrol *kcontrol,
2302 struct snd_ctl_elem_value *ucontrol)
2303{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302304 struct snd_soc_dapm_widget *widget =
2305 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302306 struct snd_soc_dapm_update *update = NULL;
2307
2308 pr_debug("%s: TERT MI2S Switch enable %ld\n", __func__,
2309 ucontrol->value.integer.value[0]);
2310 if (ucontrol->value.integer.value[0])
2311 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2312 update);
2313 else
2314 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2315 update);
2316 tert_mi2s_switch_enable = ucontrol->value.integer.value[0];
2317 return 1;
2318}
2319
2320static int msm_routing_get_quat_mi2s_switch_mixer(
2321 struct snd_kcontrol *kcontrol,
2322 struct snd_ctl_elem_value *ucontrol)
2323{
2324 ucontrol->value.integer.value[0] = quat_mi2s_switch_enable;
2325 pr_debug("%s: QUAT MI2S Switch enable %ld\n", __func__,
2326 ucontrol->value.integer.value[0]);
2327 return 0;
2328}
2329
2330static int msm_routing_put_quat_mi2s_switch_mixer(
2331 struct snd_kcontrol *kcontrol,
2332 struct snd_ctl_elem_value *ucontrol)
2333{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302334 struct snd_soc_dapm_widget *widget =
2335 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302336 struct snd_soc_dapm_update *update = NULL;
2337
2338 pr_debug("%s: QUAT MI2S Switch enable %ld\n", __func__,
2339 ucontrol->value.integer.value[0]);
2340 if (ucontrol->value.integer.value[0])
2341 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2342 update);
2343 else
2344 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2345 update);
2346 quat_mi2s_switch_enable = ucontrol->value.integer.value[0];
2347 return 1;
2348}
2349
Rohit Kumara5077932017-09-10 22:05:05 +05302350static int msm_routing_get_quin_mi2s_switch_mixer(
2351 struct snd_kcontrol *kcontrol,
2352 struct snd_ctl_elem_value *ucontrol)
2353{
2354 ucontrol->value.integer.value[0] = quin_mi2s_switch_enable;
2355 pr_debug("%s: QUIN MI2S Switch enable %ld\n", __func__,
2356 ucontrol->value.integer.value[0]);
2357 return 0;
2358}
2359
2360static int msm_routing_put_quin_mi2s_switch_mixer(
2361 struct snd_kcontrol *kcontrol,
2362 struct snd_ctl_elem_value *ucontrol)
2363{
2364 struct snd_soc_dapm_widget *widget =
2365 snd_soc_dapm_kcontrol_widget(kcontrol);
2366 struct snd_soc_dapm_update *update = NULL;
2367
2368 pr_debug("%s: QUIN MI2S Switch enable %ld\n", __func__,
2369 ucontrol->value.integer.value[0]);
2370 if (ucontrol->value.integer.value[0])
2371 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2372 update);
2373 else
2374 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2375 update);
2376 quin_mi2s_switch_enable = ucontrol->value.integer.value[0];
2377 return 1;
2378}
2379
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302380static int msm_routing_get_fm_pcmrx_switch_mixer(struct snd_kcontrol *kcontrol,
2381 struct snd_ctl_elem_value *ucontrol)
2382{
2383 ucontrol->value.integer.value[0] = fm_pcmrx_switch_enable;
2384 pr_debug("%s: FM Switch enable %ld\n", __func__,
2385 ucontrol->value.integer.value[0]);
2386 return 0;
2387}
2388
2389static int msm_routing_put_fm_pcmrx_switch_mixer(struct snd_kcontrol *kcontrol,
2390 struct snd_ctl_elem_value *ucontrol)
2391{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302392 struct snd_soc_dapm_widget *widget =
2393 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302394 struct snd_soc_dapm_update *update = NULL;
2395
2396 pr_debug("%s: FM Switch enable %ld\n", __func__,
2397 ucontrol->value.integer.value[0]);
2398 if (ucontrol->value.integer.value[0])
2399 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2400 update);
2401 else
2402 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2403 update);
2404 fm_pcmrx_switch_enable = ucontrol->value.integer.value[0];
2405 return 1;
2406}
2407
2408static int msm_routing_lsm_port_get(struct snd_kcontrol *kcontrol,
2409 struct snd_ctl_elem_value *ucontrol)
2410{
2411 ucontrol->value.integer.value[0] = lsm_port_index;
2412 return 0;
2413}
2414
2415static int msm_routing_lsm_port_put(struct snd_kcontrol *kcontrol,
2416 struct snd_ctl_elem_value *ucontrol)
2417{
2418 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
2419 int mux = ucontrol->value.enumerated.item[0];
2420 int lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_5_TX;
2421
2422 if (mux >= e->items) {
2423 pr_err("%s: Invalid mux value %d\n", __func__, mux);
2424 return -EINVAL;
2425 }
2426
2427 pr_debug("%s: LSM enable %ld\n", __func__,
2428 ucontrol->value.integer.value[0]);
2429 switch (ucontrol->value.integer.value[0]) {
2430 case 1:
2431 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_0_TX;
2432 break;
2433 case 2:
2434 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_1_TX;
2435 break;
2436 case 3:
2437 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_2_TX;
2438 break;
2439 case 4:
2440 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_3_TX;
2441 break;
2442 case 5:
2443 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_4_TX;
2444 break;
2445 case 6:
2446 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_5_TX;
2447 break;
2448 case 7:
2449 lsm_port = AFE_PORT_ID_TERTIARY_MI2S_TX;
2450 break;
2451 case 8:
2452 lsm_port = AFE_PORT_ID_QUATERNARY_MI2S_TX;
2453 break;
2454 case 9:
2455 lsm_port = ADM_LSM_PORT_ID;
2456 break;
2457 case 10:
Ashish Jain01b10322018-05-12 15:37:44 +05302458 lsm_port = AFE_PORT_ID_PRIMARY_TDM_TX_2;
2459 break;
2460 case 11:
2461 lsm_port = AFE_PORT_ID_PRIMARY_TDM_TX_3;
2462 break;
2463 case 12:
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302464 lsm_port = AFE_PORT_ID_INT3_MI2S_TX;
2465 break;
2466 default:
2467 pr_err("Default lsm port");
2468 break;
2469 }
2470 set_lsm_port(lsm_port);
2471 lsm_port_index = ucontrol->value.integer.value[0];
2472
2473 return 0;
2474}
2475
2476static int msm_routing_lsm_func_get(struct snd_kcontrol *kcontrol,
2477 struct snd_ctl_elem_value *ucontrol)
2478{
2479 int i;
2480 u16 port_id;
2481 enum afe_mad_type mad_type;
2482
2483 pr_debug("%s: enter\n", __func__);
2484 for (i = 0; i < ARRAY_SIZE(lsm_port_text); i++)
2485 if (!strnstr(kcontrol->id.name, lsm_port_text[i],
2486 strlen(lsm_port_text[i])))
2487 break;
2488
2489 if (i-- == ARRAY_SIZE(lsm_port_text)) {
2490 WARN(1, "Invalid id name %s\n", kcontrol->id.name);
2491 return -EINVAL;
2492 }
2493
2494 port_id = i * 2 + 1 + SLIMBUS_0_RX;
2495
2496 /*Check for Tertiary/Quaternary/INT3 TX port*/
2497 if (strnstr(kcontrol->id.name, lsm_port_text[7],
2498 strlen(lsm_port_text[7])))
2499 port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
2500
2501 if (strnstr(kcontrol->id.name, lsm_port_text[8],
2502 strlen(lsm_port_text[8])))
2503 port_id = AFE_PORT_ID_QUATERNARY_MI2S_TX;
2504
2505 if (strnstr(kcontrol->id.name, lsm_port_text[10],
2506 strlen(lsm_port_text[10])))
2507 port_id = AFE_PORT_ID_INT3_MI2S_TX;
2508
2509 mad_type = afe_port_get_mad_type(port_id);
2510 pr_debug("%s: port_id 0x%x, mad_type %d\n", __func__, port_id,
2511 mad_type);
2512 switch (mad_type) {
2513 case MAD_HW_NONE:
2514 ucontrol->value.integer.value[0] = MADNONE;
2515 break;
2516 case MAD_HW_AUDIO:
2517 ucontrol->value.integer.value[0] = MADAUDIO;
2518 break;
2519 case MAD_HW_BEACON:
2520 ucontrol->value.integer.value[0] = MADBEACON;
2521 break;
2522 case MAD_HW_ULTRASOUND:
2523 ucontrol->value.integer.value[0] = MADULTRASOUND;
2524 break;
2525 case MAD_SW_AUDIO:
2526 ucontrol->value.integer.value[0] = MADSWAUDIO;
2527 break;
2528 default:
2529 WARN(1, "Unknown\n");
2530 return -EINVAL;
2531 }
2532 return 0;
2533}
2534
2535static int msm_routing_lsm_func_put(struct snd_kcontrol *kcontrol,
2536 struct snd_ctl_elem_value *ucontrol)
2537{
2538 int i;
2539 u16 port_id;
2540 enum afe_mad_type mad_type;
2541
2542 pr_debug("%s: enter\n", __func__);
2543 for (i = 0; i < ARRAY_SIZE(lsm_port_text); i++)
2544 if (strnstr(kcontrol->id.name, lsm_port_text[i],
2545 strlen(lsm_port_text[i])))
2546 break;
2547
2548 if (i-- == ARRAY_SIZE(lsm_port_text)) {
2549 WARN(1, "Invalid id name %s\n", kcontrol->id.name);
2550 return -EINVAL;
2551 }
2552
2553 port_id = i * 2 + 1 + SLIMBUS_0_RX;
2554 switch (ucontrol->value.integer.value[0]) {
2555 case MADNONE:
2556 mad_type = MAD_HW_NONE;
2557 break;
2558 case MADAUDIO:
2559 mad_type = MAD_HW_AUDIO;
2560 break;
2561 case MADBEACON:
2562 mad_type = MAD_HW_BEACON;
2563 break;
2564 case MADULTRASOUND:
2565 mad_type = MAD_HW_ULTRASOUND;
2566 break;
2567 case MADSWAUDIO:
2568 mad_type = MAD_SW_AUDIO;
2569 break;
2570 default:
2571 WARN(1, "Unknown\n");
2572 return -EINVAL;
2573 }
2574
2575 /*Check for Tertiary/Quaternary/INT3 TX port*/
2576 if (strnstr(kcontrol->id.name, lsm_port_text[7],
2577 strlen(lsm_port_text[7])))
2578 port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
2579
2580 if (strnstr(kcontrol->id.name, lsm_port_text[8],
2581 strlen(lsm_port_text[8])))
2582 port_id = AFE_PORT_ID_QUATERNARY_MI2S_TX;
2583
2584 if (strnstr(kcontrol->id.name, lsm_port_text[10],
2585 strlen(lsm_port_text[10])))
2586 port_id = AFE_PORT_ID_INT3_MI2S_TX;
2587
2588 pr_debug("%s: port_id 0x%x, mad_type %d\n", __func__, port_id,
2589 mad_type);
2590 return afe_port_set_mad_type(port_id, mad_type);
2591}
2592
2593static const char *const adm_override_chs_text[] = {"Zero", "One", "Two"};
2594
2595static SOC_ENUM_SINGLE_EXT_DECL(slim_7_rx_adm_override_chs,
2596 adm_override_chs_text);
2597
2598static int msm_routing_adm_get_backend_idx(struct snd_kcontrol *kcontrol)
2599{
2600 int backend_id;
2601
2602 if (strnstr(kcontrol->id.name, "SLIM7_RX", sizeof("SLIM7_RX"))) {
2603 backend_id = MSM_BACKEND_DAI_SLIMBUS_7_RX;
2604 } else {
2605 pr_err("%s: unsupported backend id: %s",
2606 __func__, kcontrol->id.name);
2607 return -EINVAL;
2608 }
2609
2610 return backend_id;
2611}
2612static int msm_routing_adm_channel_config_get(
2613 struct snd_kcontrol *kcontrol,
2614 struct snd_ctl_elem_value *ucontrol)
2615{
2616 int backend_id = msm_routing_adm_get_backend_idx(kcontrol);
2617
2618 if (backend_id >= 0) {
2619 mutex_lock(&routing_lock);
2620 ucontrol->value.integer.value[0] =
2621 msm_bedais[backend_id].adm_override_ch;
2622 pr_debug("%s: adm channel count %ld for BE:%d\n", __func__,
2623 ucontrol->value.integer.value[0], backend_id);
2624 mutex_unlock(&routing_lock);
2625 }
2626
2627 return 0;
2628}
2629
2630static int msm_routing_adm_channel_config_put(
2631 struct snd_kcontrol *kcontrol,
2632 struct snd_ctl_elem_value *ucontrol)
2633{
2634 int backend_id = msm_routing_adm_get_backend_idx(kcontrol);
2635
2636 if (backend_id >= 0) {
2637 mutex_lock(&routing_lock);
2638 msm_bedais[backend_id].adm_override_ch =
2639 ucontrol->value.integer.value[0];
2640 pr_debug("%s:updating BE :%d adm channels: %d\n",
2641 __func__, backend_id,
2642 msm_bedais[backend_id].adm_override_ch);
2643 mutex_unlock(&routing_lock);
2644 }
2645
2646 return 0;
2647}
2648
2649static const struct snd_kcontrol_new adm_channel_config_controls[] = {
2650 SOC_ENUM_EXT("SLIM7_RX ADM Channels", slim_7_rx_adm_override_chs,
2651 msm_routing_adm_channel_config_get,
2652 msm_routing_adm_channel_config_put),
2653};
2654
2655static int msm_routing_slim_0_rx_aanc_mux_get(struct snd_kcontrol *kcontrol,
2656 struct snd_ctl_elem_value *ucontrol)
2657{
2658
2659 mutex_lock(&routing_lock);
2660 ucontrol->value.integer.value[0] = slim0_rx_aanc_fb_port;
2661 mutex_unlock(&routing_lock);
2662 pr_debug("%s: AANC Mux Port %ld\n", __func__,
2663 ucontrol->value.integer.value[0]);
2664 return 0;
2665};
2666
2667static int msm_routing_slim_0_rx_aanc_mux_put(struct snd_kcontrol *kcontrol,
2668 struct snd_ctl_elem_value *ucontrol)
2669{
2670 struct aanc_data aanc_info;
2671
2672 mutex_lock(&routing_lock);
2673 memset(&aanc_info, 0x00, sizeof(aanc_info));
2674 pr_debug("%s: AANC Mux Port %ld\n", __func__,
2675 ucontrol->value.integer.value[0]);
2676 slim0_rx_aanc_fb_port = ucontrol->value.integer.value[0];
2677 if (ucontrol->value.integer.value[0] == 0) {
2678 aanc_info.aanc_active = false;
2679 aanc_info.aanc_tx_port = 0;
2680 aanc_info.aanc_rx_port = 0;
2681 } else {
2682 aanc_info.aanc_active = true;
2683 aanc_info.aanc_rx_port = SLIMBUS_0_RX;
2684 aanc_info.aanc_tx_port =
2685 (SLIMBUS_0_RX - 1 + (slim0_rx_aanc_fb_port * 2));
2686 }
2687 afe_set_aanc_info(&aanc_info);
2688 mutex_unlock(&routing_lock);
2689 return 0;
2690};
2691static int msm_routing_get_port_mixer(struct snd_kcontrol *kcontrol,
2692 struct snd_ctl_elem_value *ucontrol)
2693{
2694 int idx = 0, shift = 0;
2695 struct soc_mixer_control *mc =
2696 (struct soc_mixer_control *)kcontrol->private_value;
2697
2698 idx = mc->shift/(sizeof(msm_bedais[mc->reg].port_sessions[0]) * 8);
2699 shift = mc->shift%(sizeof(msm_bedais[mc->reg].port_sessions[0]) * 8);
2700
2701 if (idx >= BE_DAI_PORT_SESSIONS_IDX_MAX) {
2702 pr_err("%s: Invalid idx = %d\n", __func__, idx);
2703 return -EINVAL;
2704 }
2705
2706 if (test_bit(shift,
2707 (unsigned long *)&msm_bedais[mc->reg].port_sessions[idx]))
2708 ucontrol->value.integer.value[0] = 1;
2709 else
2710 ucontrol->value.integer.value[0] = 0;
2711
2712 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
2713 ucontrol->value.integer.value[0]);
2714
2715 return 0;
2716}
2717
2718static int msm_routing_put_port_mixer(struct snd_kcontrol *kcontrol,
2719 struct snd_ctl_elem_value *ucontrol)
2720{
2721 int idx = 0, shift = 0;
2722 struct soc_mixer_control *mc =
2723 (struct soc_mixer_control *)kcontrol->private_value;
2724
2725 idx = mc->shift/(sizeof(msm_bedais[mc->reg].port_sessions[0]) * 8);
2726 shift = mc->shift%(sizeof(msm_bedais[mc->reg].port_sessions[0]) * 8);
2727
2728 if (idx >= BE_DAI_PORT_SESSIONS_IDX_MAX) {
2729 pr_err("%s: Invalid idx = %d\n", __func__, idx);
2730 return -EINVAL;
2731 }
2732
2733 pr_debug("%s: reg 0x%x shift 0x%x val %ld idx %d reminder shift %d\n",
2734 __func__, mc->reg, mc->shift,
2735 ucontrol->value.integer.value[0], idx, shift);
2736
2737 if (ucontrol->value.integer.value[0]) {
2738 afe_loopback(1, msm_bedais[mc->reg].port_id,
2739 msm_bedais[mc->shift].port_id);
2740 set_bit(shift,
2741 (unsigned long *)&msm_bedais[mc->reg].port_sessions[idx]);
2742 } else {
2743 afe_loopback(0, msm_bedais[mc->reg].port_id,
2744 msm_bedais[mc->shift].port_id);
2745 clear_bit(shift,
2746 (unsigned long *)&msm_bedais[mc->reg].port_sessions[idx]);
2747 }
2748
2749 return 1;
2750}
2751
2752static int msm_pcm_get_channel_rule_index(struct snd_kcontrol *kcontrol,
2753 struct snd_ctl_elem_value *ucontrol)
2754{
2755 u16 fe_id = 0;
2756
2757 fe_id = ((struct soc_mixer_control *)
2758 kcontrol->private_value)->shift;
2759 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2760 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2761 return -EINVAL;
2762 }
2763
2764 ucontrol->value.integer.value[0] = channel_mixer[fe_id].rule;
2765
2766 return 0;
2767}
2768
2769static int msm_pcm_put_channel_rule_index(struct snd_kcontrol *kcontrol,
2770 struct snd_ctl_elem_value *ucontrol)
2771{
2772 u16 fe_id = 0;
2773
2774 fe_id = ((struct soc_mixer_control *)
2775 kcontrol->private_value)->shift;
2776 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2777 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2778 return -EINVAL;
2779 }
2780
2781 channel_mixer[fe_id].rule = ucontrol->value.integer.value[0];
2782
2783 return 1;
2784}
2785
2786static int msm_pcm_get_out_chs(struct snd_kcontrol *kcontrol,
2787 struct snd_ctl_elem_value *ucontrol)
2788{
2789 u16 fe_id = 0;
2790
2791 fe_id = ((struct soc_multi_mixer_control *)
2792 kcontrol->private_value)->shift;
2793 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2794 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2795 return -EINVAL;
2796 }
2797
2798 ucontrol->value.integer.value[0] =
2799 channel_mixer[fe_id].output_channel;
2800 return 0;
2801}
2802
2803static int msm_pcm_put_out_chs(struct snd_kcontrol *kcontrol,
2804 struct snd_ctl_elem_value *ucontrol)
2805{
2806 u16 fe_id = 0;
2807
2808 fe_id = ((struct soc_multi_mixer_control *)
2809 kcontrol->private_value)->shift;
2810 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2811 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2812 return -EINVAL;
2813 }
2814
2815 pr_debug("%s: fe_id is %d, output channels = %d\n", __func__,
2816 fe_id,
2817 (unsigned int)(ucontrol->value.integer.value[0]));
2818 channel_mixer[fe_id].output_channel =
2819 (unsigned int)(ucontrol->value.integer.value[0]);
2820
2821 return 1;
2822}
2823
2824static const char *const ch_mixer[] = {"Disable", "Enable"};
2825
2826/* If new backend is added, need update this array */
2827static const char *const be_name[] = {
2828"ZERO", "PRI_I2S_RX", "PRI_I2S_TX", "SLIM_0_RX",
2829"SLIM_0_TX", "HDMI_RX", "INT_BT_SCO_RX", "INT_BT_SCO_TX",
2830"INT_FM_RX", "INT_FM_TX", "AFE_PCM_RX", "AFE_PCM_TX",
2831"AUXPCM_RX", "AUXPCM_TX", "VOICE_PLAYBACK_TX", "VOICE2_PLAYBACK_TX",
2832"INCALL_RECORD_RX", "INCALL_RECORD_TX", "MI2S_RX", "MI2S_TX",
2833"SEC_I2S_RX", "SLIM_1_RX", "SLIM_1_TX", "SLIM_2_RX",
2834"SLIM_2_TX", "SLIM_3_RX", "SLIM_3_TX", "SLIM_4_RX",
2835"SLIM_4_TX", "SLIM_5_RX", "SLIM_5_TX", "SLIM_6_RX",
2836"SLIM_6_TX", "SLIM_7_RX", "SLIM_7_TX", "SLIM_8_RX",
2837"SLIM_8_TX", "EXTPROC_RX", "EXTPROC_TX", "EXPROC_EC_TX",
2838"QUAT_MI2S_RX", "QUAT_MI2S_TX", "SECOND_MI2S_RX", "SECOND_MI2S_TX",
2839"PRI_MI2S_RX", "PRI_MI2S_TX", "TERT_MI2S_RX", "TERT_MI2S_TX",
2840"AUDIO_I2S_RX", "SEC_AUXPCM_RX", "SEC_AUXPCM_TX", "SPDIF_RX",
2841"SECOND_MI2S_RX_SD1", "QUIN_MI2S_RX", "QUIN_MI2S_TX", "SENARY_MI2S_TX",
2842"PRI_TDM_RX_0", "PRI_TDM_TX_0", "PRI_TDM_RX_1", "PRI_TDM_TX_1",
2843"PRI_TDM_RX_2", "PRI_TDM_TX_2", "PRI_TDM_RX_3", "PRI_TDM_TX_3",
2844"PRI_TDM_RX_4", "PRI_TDM_TX_4", "PRI_TDM_RX_5", "PRI_TDM_TX_5",
2845"PRI_TDM_RX_6", "PRI_TDM_TX_6", "PRI_TDM_RX_7", "PRI_TDM_TX_7",
2846"SEC_TDM_RX_0", "SEC_TDM_TX_0", "SEC_TDM_RX_1", "SEC_TDM_TX_1",
2847"SEC_TDM_RX_2", "SEC_TDM_TX_2", "SEC_TDM_RX_3", "SEC_TDM_TX_3",
2848"SEC_TDM_RX_4", "SEC_TDM_TX_4", "SEC_TDM_RX_5", "SEC_TDM_TX_5",
2849"SEC_TDM_RX_6", "SEC_TDM_TX_6", "SEC_TDM_RX_7", "SEC_TDM_TX_7",
2850"TERT_TDM_RX_0", "TERT_TDM_TX_0", "TERT_TDM_RX_1", "TERT_TDM_TX_1",
2851"TERT_TDM_RX_2", "TERT_TDM_TX_2", "TERT_TDM_RX_3", "TERT_TDM_TX_3",
2852"TERT_TDM_RX_4", "TERT_TDM_TX_4", "TERT_TDM_RX_5", "TERT_TDM_TX_5",
2853"TERT_TDM_RX_6", "TERT_TDM_TX_6", "TERT_TDM_RX_7", "TERT_TDM_TX_7",
2854"QUAT_TDM_RX_0", "QUAT_TDM_TX_0", "QUAT_TDM_RX_1", "QUAT_TDM_TX_1",
2855"QUAT_TDM_RX_2", "QUAT_TDM_TX_2", "QUAT_TDM_RX_3", "QUAT_TDM_TX_3",
2856"QUAT_TDM_RX_4", "QUAT_TDM_TX_4", "QUAT_TDM_RX_5", "QUAT_TDM_TX_5",
2857"QUAT_TDM_RX_6", "QUAT_TDM_TX_6", "QUAT_TDM_RX_7", "QUAT_TDM_TX_7",
Rohit Kumara5077932017-09-10 22:05:05 +05302858"QUIN_TDM_RX_0", "QUIN_TDM_TX_0", "QUIN_TDM_RX_1", "QUIN_TDM_TX_1",
2859"QUIN_TDM_RX_2", "QUIN_TDM_TX_2", "QUIN_TDM_RX_3", "QUIN_TDM_TX_3",
2860"QUIN_TDM_RX_4", "QUIN_TDM_TX_4", "QUIN_TDM_RX_5", "QUIN_TDM_TX_5",
2861"QUIN_TDM_RX_6", "QUIN_TDM_TX_6", "QUIN_TDM_RX_7", "QUIN_TDM_TX_7",
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302862"INT_BT_A2DP_RX", "USB_RX", "USB_TX", "DISPLAY_PORT_RX",
2863"TERT_AUXPCM_RX", "TERT_AUXPCM_TX", "QUAT_AUXPCM_RX", "QUAT_AUXPCM_TX",
Rohit Kumara5077932017-09-10 22:05:05 +05302864"QUIN_AUXPCM_RX", "QUIN_AUXPCM_TX",
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302865"INT0_MI2S_RX", "INT0_MI2S_TX", "INT1_MI2S_RX", "INT1_MI2S_TX",
2866"INT2_MI2S_RX", "INT2_MI2S_TX", "INT3_MI2S_RX", "INT3_MI2S_TX",
2867"INT4_MI2S_RX", "INT4_MI2S_TX", "INT5_MI2S_RX", "INT5_MI2S_TX",
2868"INT6_MI2S_RX", "INT6_MI2S_TX"
2869};
2870
2871static SOC_ENUM_SINGLE_DECL(mm1_channel_mux,
2872 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, ch_mixer);
2873static SOC_ENUM_SINGLE_DECL(mm2_channel_mux,
2874 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA2, ch_mixer);
2875static SOC_ENUM_SINGLE_DECL(mm3_channel_mux,
2876 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA3, ch_mixer);
2877static SOC_ENUM_SINGLE_DECL(mm4_channel_mux,
2878 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA4, ch_mixer);
2879
2880static SOC_ENUM_DOUBLE_DECL(mm1_ch1_enum,
2881 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 0, be_name);
2882static SOC_ENUM_DOUBLE_DECL(mm1_ch2_enum,
2883 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 1, be_name);
2884static SOC_ENUM_DOUBLE_DECL(mm1_ch3_enum,
2885 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 2, be_name);
2886static SOC_ENUM_DOUBLE_DECL(mm1_ch4_enum,
2887 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 3, be_name);
2888static SOC_ENUM_DOUBLE_DECL(mm1_ch5_enum,
2889 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 4, be_name);
2890static SOC_ENUM_DOUBLE_DECL(mm1_ch6_enum,
2891 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 5, be_name);
2892static SOC_ENUM_DOUBLE_DECL(mm1_ch7_enum,
2893 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 6, be_name);
2894static SOC_ENUM_DOUBLE_DECL(mm1_ch8_enum,
2895 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 7, be_name);
2896
2897static int msm_pcm_get_ctl_enum_info(struct snd_ctl_elem_info *uinfo,
2898 unsigned int channels,
2899 unsigned int items, const char *const names[])
2900{
2901 if (uinfo->value.enumerated.item >= items)
2902 uinfo->value.enumerated.item = items - 1;
2903
2904 WARN(strlen(names[uinfo->value.enumerated.item]) >=
2905 sizeof(uinfo->value.enumerated.name),
2906 "ALSA: too long item name '%s'\n",
2907 names[uinfo->value.enumerated.item]);
2908 strlcpy(uinfo->value.enumerated.name,
2909 names[uinfo->value.enumerated.item],
2910 sizeof(uinfo->value.enumerated.name));
2911 return 0;
2912}
2913
2914static int msm_pcm_channel_mixer_info(struct snd_kcontrol *kcontrol,
2915 struct snd_ctl_elem_info *uinfo)
2916{
2917 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
2918
2919 uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED;
2920 uinfo->count = 1;
2921
2922 uinfo->value.enumerated.items = ARRAY_SIZE(ch_mixer);
2923 msm_pcm_get_ctl_enum_info(uinfo, 1, e->items, e->texts);
2924
2925 return 0;
2926}
2927static int msm_pcm_channel_mixer_get(struct snd_kcontrol *kcontrol,
2928 struct snd_ctl_elem_value *ucontrol)
2929{
2930 u16 fe_id = 0;
2931
2932 fe_id = ((struct soc_enum *)
2933 kcontrol->private_value)->shift_l;
2934 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2935 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2936 return -EINVAL;
2937 }
2938
2939 pr_debug("%s: FE %d %s\n", __func__,
2940 fe_id,
2941 channel_mixer[fe_id].enable ? "Enabled" : "Disabled");
2942 ucontrol->value.enumerated.item[0] = channel_mixer[fe_id].enable;
2943 return 0;
2944}
2945
2946static int msm_pcm_channel_mixer_put(struct snd_kcontrol *kcontrol,
2947 struct snd_ctl_elem_value *ucontrol)
2948{
2949 u16 fe_id = 0;
2950
2951 fe_id = ((struct soc_enum *)
2952 kcontrol->private_value)->shift_l;
2953 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2954 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2955 return -EINVAL;
2956 }
2957
2958 channel_mixer[fe_id].enable = ucontrol->value.enumerated.item[0];
2959 pr_debug("%s: %s FE %d\n", __func__,
2960 channel_mixer[fe_id].enable ? "Enable" : "Disable",
2961 fe_id);
2962 return 0;
2963}
2964
2965static int msm_pcm_channel_input_be_info(struct snd_kcontrol *kcontrol,
2966 struct snd_ctl_elem_info *uinfo)
2967{
2968 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
2969
2970 uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED;
2971 uinfo->count = 1;
2972
2973 uinfo->value.enumerated.items = ARRAY_SIZE(be_name);
2974 msm_pcm_get_ctl_enum_info(uinfo, 1, e->items, e->texts);
2975
2976 return 0;
2977}
2978
2979static int msm_pcm_channel_input_be_put(struct snd_kcontrol *kcontrol,
2980 struct snd_ctl_elem_value *ucontrol)
2981{
2982 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
2983 u16 fe_id = 0, in_ch = 0;
2984
2985 fe_id = e->shift_l;
2986 in_ch = e->shift_r;
2987 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2988 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2989 return -EINVAL;
2990 }
2991 if (in_ch >= ADM_MAX_CHANNELS) {
2992 pr_err("%s: invalid input channel %d\n", __func__, in_ch);
2993 return -EINVAL;
2994 }
2995
2996 channel_input[fe_id][in_ch] = ucontrol->value.enumerated.item[0];
2997 return 1;
2998}
2999
3000static int msm_pcm_channel_input_be_get(struct snd_kcontrol *kcontrol,
3001 struct snd_ctl_elem_value *ucontrol)
3002{
3003 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
3004 u16 fe_id = 0, in_ch = 0;
3005
3006 fe_id = e->shift_l;
3007 in_ch = e->shift_r;
3008 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
3009 pr_err("%s: invalid FE %d\n", __func__, fe_id);
3010 return -EINVAL;
3011 }
3012 if (in_ch >= ADM_MAX_CHANNELS) {
3013 pr_err("%s: invalid input channel %d\n", __func__, in_ch);
3014 return -EINVAL;
3015 }
3016
3017 ucontrol->value.enumerated.item[0] = channel_input[fe_id][in_ch];
3018 return 1;
3019}
3020
3021
3022static int msm_pcm_channel_weight_info(struct snd_kcontrol *kcontrol,
3023 struct snd_ctl_elem_info *uinfo)
3024{
3025 uinfo->type = SNDRV_CTL_ELEM_TYPE_INTEGER;
3026 uinfo->count = ADM_MAX_CHANNELS;
3027 uinfo->value.integer.min = 0;
3028 uinfo->value.integer.max = WEIGHT_0_DB;
3029
3030 return 0;
3031}
3032
3033static int msm_pcm_channel_weight_put(struct snd_kcontrol *kcontrol,
3034 struct snd_ctl_elem_value *ucontrol)
3035{
3036 u16 fe_id = 0, out_ch = 0;
3037 int i, weight;
3038
3039 fe_id = ((struct soc_multi_mixer_control *)
3040 kcontrol->private_value)->shift;
3041 out_ch = ((struct soc_multi_mixer_control *)
3042 kcontrol->private_value)->rshift;
3043 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
3044 pr_err("%s: invalid FE %d\n", __func__, fe_id);
3045 return -EINVAL;
3046 }
3047 if (out_ch >= ADM_MAX_CHANNELS) {
3048 pr_err("%s: invalid input channel %d\n", __func__, out_ch);
3049 return -EINVAL;
3050 }
3051
3052 pr_debug("%s: FE_ID: %d, channel weight %ld, %ld, %ld, %ld, %ld, %ld, %ld, %ld\n",
3053 __func__, fe_id,
3054 ucontrol->value.integer.value[0],
3055 ucontrol->value.integer.value[1],
3056 ucontrol->value.integer.value[2],
3057 ucontrol->value.integer.value[3],
3058 ucontrol->value.integer.value[4],
3059 ucontrol->value.integer.value[5],
3060 ucontrol->value.integer.value[6],
3061 ucontrol->value.integer.value[7]);
3062
3063 for (i = 0; i < ADM_MAX_CHANNELS; ++i) {
3064 weight = ucontrol->value.integer.value[i];
3065 channel_mixer[fe_id].channel_weight[out_ch][i] = weight;
3066 pr_debug("%s: FE_ID %d, output %d input %d weight %d\n",
3067 __func__, fe_id, out_ch, i,
3068 channel_mixer[fe_id].channel_weight[out_ch][i]);
3069 }
3070
3071 return 0;
3072}
3073
3074static int msm_pcm_channel_weight_get(struct snd_kcontrol *kcontrol,
3075 struct snd_ctl_elem_value *ucontrol)
3076{
3077 u16 fe_id = 0, out_ch = 0;
3078 int i;
3079
3080 fe_id = ((struct soc_multi_mixer_control *)
3081 kcontrol->private_value)->shift;
3082 out_ch = ((struct soc_multi_mixer_control *)
3083 kcontrol->private_value)->rshift;
3084 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
3085 pr_err("%s: invalid FE %d\n", __func__, fe_id);
3086 return -EINVAL;
3087 }
3088 if (out_ch >= ADM_MAX_CHANNELS) {
3089 pr_err("%s: invalid input channel %d\n", __func__, out_ch);
3090 return -EINVAL;
3091 }
3092
3093 for (i = 0; i < ADM_MAX_CHANNELS; ++i)
3094 ucontrol->value.integer.value[i] =
3095 channel_mixer[fe_id].channel_weight[out_ch][i];
3096
3097 pr_debug("%s: FE_ID: %d, weight %ld, %ld, %ld, %ld, %ld, %ld, %ld, %ld",
3098 __func__, fe_id,
3099 ucontrol->value.integer.value[0],
3100 ucontrol->value.integer.value[1],
3101 ucontrol->value.integer.value[2],
3102 ucontrol->value.integer.value[3],
3103 ucontrol->value.integer.value[4],
3104 ucontrol->value.integer.value[5],
3105 ucontrol->value.integer.value[6],
3106 ucontrol->value.integer.value[7]);
3107
3108 return 0;
3109}
3110
3111static const struct snd_kcontrol_new channel_mixer_controls[] = {
3112 SOC_SINGLE_EXT("MultiMedia1 Channel Rule", SND_SOC_NOPM,
3113 MSM_FRONTEND_DAI_MULTIMEDIA1, 8, 0,
3114 msm_pcm_get_channel_rule_index,
3115 msm_pcm_put_channel_rule_index),
3116 SOC_SINGLE_EXT("MultiMedia2 Channel Rule", SND_SOC_NOPM,
3117 MSM_FRONTEND_DAI_MULTIMEDIA2, 8, 0,
3118 msm_pcm_get_channel_rule_index,
3119 msm_pcm_put_channel_rule_index),
3120 SOC_SINGLE_EXT("MultiMedia3 Channel Rule", SND_SOC_NOPM,
3121 MSM_FRONTEND_DAI_MULTIMEDIA3, 8, 0,
3122 msm_pcm_get_channel_rule_index,
3123 msm_pcm_put_channel_rule_index),
3124 SOC_SINGLE_EXT("MultiMedia4 Channel Rule", SND_SOC_NOPM,
3125 MSM_FRONTEND_DAI_MULTIMEDIA4, 8, 0,
3126 msm_pcm_get_channel_rule_index,
3127 msm_pcm_put_channel_rule_index),
3128 SOC_SINGLE_EXT("MultiMedia5 Channel Rule", SND_SOC_NOPM,
3129 MSM_FRONTEND_DAI_MULTIMEDIA5, 8, 0,
3130 msm_pcm_get_channel_rule_index,
3131 msm_pcm_put_channel_rule_index),
3132 SOC_SINGLE_EXT("MultiMedia6 Channel Rule", SND_SOC_NOPM,
3133 MSM_FRONTEND_DAI_MULTIMEDIA6, 8, 0,
3134 msm_pcm_get_channel_rule_index,
3135 msm_pcm_put_channel_rule_index),
3136
3137 SOC_SINGLE_EXT("MultiMedia1 Channels", SND_SOC_NOPM,
3138 MSM_FRONTEND_DAI_MULTIMEDIA1, 8, 0,
3139 msm_pcm_get_out_chs,
3140 msm_pcm_put_out_chs),
3141 SOC_SINGLE_EXT("MultiMedia2 Channels", SND_SOC_NOPM,
3142 MSM_FRONTEND_DAI_MULTIMEDIA2, 8, 0,
3143 msm_pcm_get_out_chs,
3144 msm_pcm_put_out_chs),
3145 SOC_SINGLE_EXT("MultiMedia3 Channels", SND_SOC_NOPM,
3146 MSM_FRONTEND_DAI_MULTIMEDIA3, 8, 0,
3147 msm_pcm_get_out_chs,
3148 msm_pcm_put_out_chs),
3149 SOC_SINGLE_EXT("MultiMedia4 Channels", SND_SOC_NOPM,
3150 MSM_FRONTEND_DAI_MULTIMEDIA4, 8, 0,
3151 msm_pcm_get_out_chs,
3152 msm_pcm_put_out_chs),
3153 SOC_SINGLE_EXT("MultiMedia5 Channels", SND_SOC_NOPM,
3154 MSM_FRONTEND_DAI_MULTIMEDIA5, 8, 0,
3155 msm_pcm_get_out_chs,
3156 msm_pcm_put_out_chs),
3157 SOC_SINGLE_EXT("MultiMedia6 Channels", SND_SOC_NOPM,
3158 MSM_FRONTEND_DAI_MULTIMEDIA6, 8, 0,
3159 msm_pcm_get_out_chs,
3160 msm_pcm_put_out_chs),
3161 {
3162 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3163 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3164 .name = "MultiMedia1 Channel Mixer",
3165 .info = msm_pcm_channel_mixer_info,
3166 .get = msm_pcm_channel_mixer_get,
3167 .put = msm_pcm_channel_mixer_put,
3168 .private_value = (unsigned long)&(mm1_channel_mux)
3169 },
3170 {
3171 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3172 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3173 .name = "MultiMedia2 Channel Mixer",
3174 .info = msm_pcm_channel_mixer_info,
3175 .get = msm_pcm_channel_mixer_get,
3176 .put = msm_pcm_channel_mixer_put,
3177 .private_value = (unsigned long)&(mm2_channel_mux)
3178 },
3179 {
3180 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3181 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3182 .name = "MultiMedia3 Channel Mixer",
3183 .info = msm_pcm_channel_mixer_info,
3184 .get = msm_pcm_channel_mixer_get,
3185 .put = msm_pcm_channel_mixer_put,
3186 .private_value = (unsigned long)&(mm3_channel_mux)
3187 },
3188 {
3189 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3190 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3191 .name = "MultiMedia4 Channel Mixer",
3192 .info = msm_pcm_channel_mixer_info,
3193 .get = msm_pcm_channel_mixer_get,
3194 .put = msm_pcm_channel_mixer_put,
3195 .private_value = (unsigned long)&(mm4_channel_mux)
3196 },
3197 {
3198 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3199 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3200 .name = "MultiMedia1 Output Channel1",
3201 .info = msm_pcm_channel_weight_info,
3202 .get = msm_pcm_channel_weight_get,
3203 .put = msm_pcm_channel_weight_put,
3204 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3205 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 0,}
3206 },
3207 {
3208 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3209 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3210 .name = "MultiMedia1 Output Channel2",
3211 .info = msm_pcm_channel_weight_info,
3212 .get = msm_pcm_channel_weight_get,
3213 .put = msm_pcm_channel_weight_put,
3214 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3215 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 1, }
3216 },
3217 {
3218 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3219 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3220 .name = "MultiMedia1 Output Channel3",
3221 .info = msm_pcm_channel_weight_info,
3222 .get = msm_pcm_channel_weight_get,
3223 .put = msm_pcm_channel_weight_put,
3224 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3225 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 2,}
3226 },
3227 {
3228 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3229 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3230 .name = "MultiMedia1 Output Channel4",
3231 .info = msm_pcm_channel_weight_info,
3232 .get = msm_pcm_channel_weight_get,
3233 .put = msm_pcm_channel_weight_put,
3234 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3235 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 3,}
3236 },
3237 {
3238 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3239 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3240 .name = "MultiMedia1 Output Channel5",
3241 .info = msm_pcm_channel_weight_info,
3242 .get = msm_pcm_channel_weight_get,
3243 .put = msm_pcm_channel_weight_put,
3244 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3245 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 4,}
3246 },
3247 {
3248 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3249 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3250 .name = "MultiMedia1 Output Channel6",
3251 .info = msm_pcm_channel_weight_info,
3252 .get = msm_pcm_channel_weight_get,
3253 .put = msm_pcm_channel_weight_put,
3254 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3255 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 5,}
3256 },
3257 {
3258 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3259 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3260 .name = "MultiMedia1 Output Channel7",
3261 .info = msm_pcm_channel_weight_info,
3262 .get = msm_pcm_channel_weight_get,
3263 .put = msm_pcm_channel_weight_put,
3264 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3265 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 6,}
3266 },
3267 {
3268 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3269 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3270 .name = "MultiMedia1 Output Channel8",
3271 .info = msm_pcm_channel_weight_info,
3272 .get = msm_pcm_channel_weight_get,
3273 .put = msm_pcm_channel_weight_put,
3274 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3275 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 7,}
3276 },
3277 {
3278 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3279 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3280 .name = "MultiMedia2 Output Channel1",
3281 .info = msm_pcm_channel_weight_info,
3282 .get = msm_pcm_channel_weight_get,
3283 .put = msm_pcm_channel_weight_put,
3284 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3285 {.shift = MSM_FRONTEND_DAI_MULTIMEDIA2, .rshift = 0,}
3286 },
3287 {
3288 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3289 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3290 .name = "MultiMedia2 Output Channel2",
3291 .info = msm_pcm_channel_weight_info,
3292 .get = msm_pcm_channel_weight_get,
3293 .put = msm_pcm_channel_weight_put,
3294 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3295 {.shift = MSM_FRONTEND_DAI_MULTIMEDIA2, .rshift = 1,}
3296 },
3297 {
3298 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3299 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3300 .name = "MultiMedia2 Output Channel3",
3301 .info = msm_pcm_channel_weight_info,
3302 .get = msm_pcm_channel_weight_get,
3303 .put = msm_pcm_channel_weight_put,
3304 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3305 {.shift = MSM_FRONTEND_DAI_MULTIMEDIA2, .rshift = 2,}
3306 },
3307 {
3308 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3309 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3310 .name = "MultiMedia3 Output Channel1",
3311 .info = msm_pcm_channel_weight_info,
3312 .get = msm_pcm_channel_weight_get,
3313 .put = msm_pcm_channel_weight_put,
3314 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3315 {.shift = MSM_FRONTEND_DAI_MULTIMEDIA3, .rshift = 0,}
3316 },
3317 {
3318 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3319 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3320 .name = "MultiMedia3 Output Channel2",
3321 .info = msm_pcm_channel_weight_info,
3322 .get = msm_pcm_channel_weight_get,
3323 .put = msm_pcm_channel_weight_put,
3324 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3325 {.shift = MSM_FRONTEND_DAI_MULTIMEDIA3, .rshift = 1,}
3326 },
3327 {
3328 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3329 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3330 .name = "MultiMedia1 Channel1",
3331 .info = msm_pcm_channel_input_be_info,
3332 .get = msm_pcm_channel_input_be_get,
3333 .put = msm_pcm_channel_input_be_put,
3334 .private_value = (unsigned long)&(mm1_ch1_enum)
3335 },
3336 {
3337 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3338 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3339 .name = "MultiMedia1 Channel2",
3340 .info = msm_pcm_channel_input_be_info,
3341 .get = msm_pcm_channel_input_be_get,
3342 .put = msm_pcm_channel_input_be_put,
3343 .private_value = (unsigned long)&(mm1_ch2_enum)
3344 },
3345 {
3346 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3347 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3348 .name = "MultiMedia1 Channel3",
3349 .info = msm_pcm_channel_input_be_info,
3350 .get = msm_pcm_channel_input_be_get,
3351 .put = msm_pcm_channel_input_be_put,
3352 .private_value = (unsigned long)&(mm1_ch3_enum)
3353 },
3354 {
3355 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3356 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3357 .name = "MultiMedia1 Channel4",
3358 .info = msm_pcm_channel_input_be_info,
3359 .get = msm_pcm_channel_input_be_get,
3360 .put = msm_pcm_channel_input_be_put,
3361 .private_value = (unsigned long)&(mm1_ch4_enum)
3362 },
3363 {
3364 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3365 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3366 .name = "MultiMedia1 Channel5",
3367 .info = msm_pcm_channel_input_be_info,
3368 .get = msm_pcm_channel_input_be_get,
3369 .put = msm_pcm_channel_input_be_put,
3370 .private_value = (unsigned long)&(mm1_ch5_enum)
3371 },
3372 {
3373 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3374 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3375 .name = "MultiMedia1 Channel6",
3376 .info = msm_pcm_channel_input_be_info,
3377 .get = msm_pcm_channel_input_be_get,
3378 .put = msm_pcm_channel_input_be_put,
3379 .private_value = (unsigned long)&(mm1_ch6_enum)
3380 },
3381 {
3382 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3383 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3384 .name = "MultiMedia1 Channel7",
3385 .info = msm_pcm_channel_input_be_info,
3386 .get = msm_pcm_channel_input_be_get,
3387 .put = msm_pcm_channel_input_be_put,
3388 .private_value = (unsigned long)&(mm1_ch7_enum)
3389 },
3390 {
3391 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3392 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3393 .name = "MultiMedia1 Channel8",
3394 .info = msm_pcm_channel_input_be_info,
3395 .get = msm_pcm_channel_input_be_get,
3396 .put = msm_pcm_channel_input_be_put,
3397 .private_value = (unsigned long)&(mm1_ch8_enum)
3398 },
3399};
3400static int msm_ec_ref_ch_get(struct snd_kcontrol *kcontrol,
3401 struct snd_ctl_elem_value *ucontrol)
3402{
3403 ucontrol->value.integer.value[0] = msm_ec_ref_ch;
3404 pr_debug("%s: msm_ec_ref_ch = %ld\n", __func__,
3405 ucontrol->value.integer.value[0]);
3406 return 0;
3407}
3408
3409static int msm_ec_ref_ch_put(struct snd_kcontrol *kcontrol,
3410 struct snd_ctl_elem_value *ucontrol)
3411{
3412 msm_ec_ref_ch = ucontrol->value.integer.value[0];
3413 pr_debug("%s: msm_ec_ref_ch = %d\n", __func__, msm_ec_ref_ch);
3414 adm_num_ec_ref_rx_chans(msm_ec_ref_ch);
3415 return 0;
3416}
3417
3418static const char *const ec_ref_ch_text[] = {"Zero", "One", "Two", "Three",
3419 "Four", "Five", "Six", "Seven", "Eight"};
3420
3421static int msm_ec_ref_bit_format_get(struct snd_kcontrol *kcontrol,
3422 struct snd_ctl_elem_value *ucontrol)
3423{
3424 switch (msm_ec_ref_bit_format) {
3425 case SNDRV_PCM_FORMAT_S24_LE:
3426 ucontrol->value.integer.value[0] = 2;
3427 break;
3428 case SNDRV_PCM_FORMAT_S16_LE:
3429 ucontrol->value.integer.value[0] = 1;
3430 break;
3431 default:
3432 ucontrol->value.integer.value[0] = 0;
3433 break;
3434 }
3435 pr_debug("%s: msm_ec_ref_bit_format = %ld\n",
3436 __func__, ucontrol->value.integer.value[0]);
3437 return 0;
3438}
3439
3440static int msm_ec_ref_bit_format_put(struct snd_kcontrol *kcontrol,
3441 struct snd_ctl_elem_value *ucontrol)
3442{
3443 u16 bit_width = 0;
3444
3445 switch (ucontrol->value.integer.value[0]) {
3446 case 2:
3447 msm_ec_ref_bit_format = SNDRV_PCM_FORMAT_S24_LE;
3448 break;
3449 case 1:
3450 msm_ec_ref_bit_format = SNDRV_PCM_FORMAT_S16_LE;
3451 break;
3452 default:
3453 msm_ec_ref_bit_format = 0;
3454 break;
3455 }
3456
3457 if (msm_ec_ref_bit_format == SNDRV_PCM_FORMAT_S16_LE)
3458 bit_width = 16;
3459 else if (msm_ec_ref_bit_format == SNDRV_PCM_FORMAT_S24_LE)
3460 bit_width = 24;
3461
3462 pr_debug("%s: msm_ec_ref_bit_format = %d\n",
3463 __func__, msm_ec_ref_bit_format);
3464 adm_ec_ref_rx_bit_width(bit_width);
3465 return 0;
3466}
3467
3468static char const *ec_ref_bit_format_text[] = {"0", "S16_LE", "S24_LE"};
3469
3470static int msm_ec_ref_rate_get(struct snd_kcontrol *kcontrol,
3471 struct snd_ctl_elem_value *ucontrol)
3472{
3473 ucontrol->value.integer.value[0] = msm_ec_ref_sampling_rate;
3474 pr_debug("%s: msm_ec_ref_sampling_rate = %ld\n",
3475 __func__, ucontrol->value.integer.value[0]);
3476 return 0;
3477}
3478
3479static int msm_ec_ref_rate_put(struct snd_kcontrol *kcontrol,
3480 struct snd_ctl_elem_value *ucontrol)
3481{
3482 switch (ucontrol->value.integer.value[0]) {
3483 case 0:
3484 msm_ec_ref_sampling_rate = 0;
3485 break;
3486 case 1:
3487 msm_ec_ref_sampling_rate = 8000;
3488 break;
3489 case 2:
3490 msm_ec_ref_sampling_rate = 16000;
3491 break;
3492 case 3:
3493 msm_ec_ref_sampling_rate = 32000;
3494 break;
3495 case 4:
3496 msm_ec_ref_sampling_rate = 44100;
3497 break;
3498 case 5:
3499 msm_ec_ref_sampling_rate = 48000;
3500 break;
3501 case 6:
3502 msm_ec_ref_sampling_rate = 96000;
3503 break;
3504 case 7:
3505 msm_ec_ref_sampling_rate = 192000;
3506 break;
3507 case 8:
3508 msm_ec_ref_sampling_rate = 384000;
3509 break;
3510 default:
3511 msm_ec_ref_sampling_rate = 48000;
3512 break;
3513 }
3514 pr_debug("%s: msm_ec_ref_sampling_rate = %d\n",
3515 __func__, msm_ec_ref_sampling_rate);
3516 adm_ec_ref_rx_sampling_rate(msm_ec_ref_sampling_rate);
3517 return 0;
3518}
3519
3520static const char *const ec_ref_rate_text[] = {"0", "8000", "16000",
3521 "32000", "44100", "48000", "96000", "192000", "384000"};
3522
3523static const struct soc_enum msm_route_ec_ref_params_enum[] = {
3524 SOC_ENUM_SINGLE_EXT(9, ec_ref_ch_text),
3525 SOC_ENUM_SINGLE_EXT(3, ec_ref_bit_format_text),
3526 SOC_ENUM_SINGLE_EXT(9, ec_ref_rate_text),
3527};
3528
3529static const struct snd_kcontrol_new ec_ref_param_controls[] = {
3530 SOC_ENUM_EXT("EC Reference Channels", msm_route_ec_ref_params_enum[0],
3531 msm_ec_ref_ch_get, msm_ec_ref_ch_put),
3532 SOC_ENUM_EXT("EC Reference Bit Format", msm_route_ec_ref_params_enum[1],
3533 msm_ec_ref_bit_format_get, msm_ec_ref_bit_format_put),
3534 SOC_ENUM_EXT("EC Reference SampleRate", msm_route_ec_ref_params_enum[2],
3535 msm_ec_ref_rate_get, msm_ec_ref_rate_put),
3536};
3537
3538static int msm_routing_ec_ref_rx_get(struct snd_kcontrol *kcontrol,
3539 struct snd_ctl_elem_value *ucontrol)
3540{
3541 pr_debug("%s: ec_ref_rx = %d", __func__, msm_route_ec_ref_rx);
3542 mutex_lock(&routing_lock);
3543 ucontrol->value.integer.value[0] = msm_route_ec_ref_rx;
3544 mutex_unlock(&routing_lock);
3545 return 0;
3546}
3547
3548static int msm_routing_ec_ref_rx_put(struct snd_kcontrol *kcontrol,
3549 struct snd_ctl_elem_value *ucontrol)
3550{
3551 int ec_ref_port_id;
Asish Bhattacharya34504582017-08-08 12:55:01 +05303552 struct snd_soc_dapm_widget *widget =
3553 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303554 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
3555 struct snd_soc_dapm_update *update = NULL;
3556
3557
3558 mutex_lock(&routing_lock);
3559 switch (ucontrol->value.integer.value[0]) {
3560 case 0:
3561 msm_route_ec_ref_rx = 0;
3562 ec_ref_port_id = AFE_PORT_INVALID;
3563 break;
3564 case 1:
3565 msm_route_ec_ref_rx = 1;
3566 ec_ref_port_id = SLIMBUS_0_RX;
3567 break;
3568 case 2:
3569 msm_route_ec_ref_rx = 2;
3570 ec_ref_port_id = AFE_PORT_ID_PRIMARY_MI2S_RX;
3571 break;
3572 case 3:
3573 msm_route_ec_ref_rx = 3;
3574 ec_ref_port_id = AFE_PORT_ID_PRIMARY_MI2S_TX;
3575 break;
3576 case 4:
3577 msm_route_ec_ref_rx = 4;
3578 ec_ref_port_id = AFE_PORT_ID_SECONDARY_MI2S_TX;
3579 break;
3580 case 5:
3581 msm_route_ec_ref_rx = 5;
3582 ec_ref_port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
3583 break;
3584 case 6:
3585 msm_route_ec_ref_rx = 6;
3586 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_MI2S_TX;
3587 break;
3588 case 7:
3589 msm_route_ec_ref_rx = 7;
3590 ec_ref_port_id = AFE_PORT_ID_SECONDARY_MI2S_RX;
3591 break;
3592 case 9:
3593 msm_route_ec_ref_rx = 9;
3594 ec_ref_port_id = SLIMBUS_5_RX;
3595 break;
3596 case 10:
3597 msm_route_ec_ref_rx = 10;
3598 ec_ref_port_id = SLIMBUS_1_TX;
3599 break;
3600 case 11:
3601 msm_route_ec_ref_rx = 11;
3602 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_TDM_TX_1;
3603 break;
3604 case 12:
3605 msm_route_ec_ref_rx = 12;
3606 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_TDM_RX;
3607 break;
3608 case 13:
3609 msm_route_ec_ref_rx = 13;
3610 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_TDM_RX_1;
3611 break;
3612 case 14:
3613 msm_route_ec_ref_rx = 14;
3614 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_TDM_RX_2;
3615 break;
3616 case 15:
3617 msm_route_ec_ref_rx = 15;
3618 ec_ref_port_id = SLIMBUS_6_RX;
3619 break;
3620 case 16:
3621 msm_route_ec_ref_rx = 16;
3622 ec_ref_port_id = AFE_PORT_ID_TERTIARY_MI2S_RX;
3623 break;
3624 case 17:
3625 msm_route_ec_ref_rx = 17;
3626 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_MI2S_RX;
3627 break;
3628 case 18:
3629 msm_route_ec_ref_rx = 18;
3630 ec_ref_port_id = AFE_PORT_ID_TERTIARY_TDM_TX;
3631 break;
3632 case 19:
3633 msm_route_ec_ref_rx = 19;
3634 ec_ref_port_id = AFE_PORT_ID_USB_RX;
3635 break;
3636 case 20:
3637 msm_route_ec_ref_rx = 20;
3638 ec_ref_port_id = AFE_PORT_ID_INT0_MI2S_RX;
3639 break;
3640 case 21:
3641 msm_route_ec_ref_rx = 21;
3642 ec_ref_port_id = AFE_PORT_ID_INT4_MI2S_RX;
3643 break;
3644 case 22:
3645 msm_route_ec_ref_rx = 22;
3646 ec_ref_port_id = AFE_PORT_ID_INT3_MI2S_TX;
3647 break;
Aalique Grahamee4fd7d52017-11-28 13:24:13 -08003648 case 23:
3649 msm_route_ec_ref_rx = 23;
3650 ec_ref_port_id = AFE_PORT_ID_HDMI_OVER_DP_RX;
3651 break;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303652 default:
3653 msm_route_ec_ref_rx = 0; /* NONE */
3654 pr_err("%s EC ref rx %ld not valid\n",
3655 __func__, ucontrol->value.integer.value[0]);
3656 ec_ref_port_id = AFE_PORT_INVALID;
3657 break;
3658 }
3659 adm_ec_ref_rx_id(ec_ref_port_id);
3660 pr_debug("%s: msm_route_ec_ref_rx = %d\n",
3661 __func__, msm_route_ec_ref_rx);
3662 mutex_unlock(&routing_lock);
3663 snd_soc_dapm_mux_update_power(widget->dapm, kcontrol,
3664 msm_route_ec_ref_rx, e, update);
3665 return 0;
3666}
3667
3668static const char *const ec_ref_rx[] = { "None", "SLIM_RX", "I2S_RX",
3669 "PRI_MI2S_TX", "SEC_MI2S_TX",
3670 "TERT_MI2S_TX", "QUAT_MI2S_TX", "SEC_I2S_RX", "PROXY_RX",
3671 "SLIM_5_RX", "SLIM_1_TX", "QUAT_TDM_TX_1",
3672 "QUAT_TDM_RX_0", "QUAT_TDM_RX_1", "QUAT_TDM_RX_2", "SLIM_6_RX",
3673 "TERT_MI2S_RX", "QUAT_MI2S_RX", "TERT_TDM_TX_0", "USB_AUDIO_RX",
Aalique Grahamee4fd7d52017-11-28 13:24:13 -08003674 "INT0_MI2S_RX", "INT4_MI2S_RX", "INT3_MI2S_TX", "DISPLAY_PORT"};
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303675
3676static const struct soc_enum msm_route_ec_ref_rx_enum[] = {
3677 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(ec_ref_rx), ec_ref_rx),
3678};
3679
3680static const struct snd_kcontrol_new ext_ec_ref_mux_ul1 =
3681 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL1 MUX Mux",
3682 msm_route_ec_ref_rx_enum[0],
3683 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3684
3685static const struct snd_kcontrol_new ext_ec_ref_mux_ul2 =
3686 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL2 MUX Mux",
3687 msm_route_ec_ref_rx_enum[0],
3688 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3689
3690static const struct snd_kcontrol_new ext_ec_ref_mux_ul3 =
3691 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL3 MUX Mux",
3692 msm_route_ec_ref_rx_enum[0],
3693 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3694
3695static const struct snd_kcontrol_new ext_ec_ref_mux_ul4 =
3696 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL4 MUX Mux",
3697 msm_route_ec_ref_rx_enum[0],
3698 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3699
3700static const struct snd_kcontrol_new ext_ec_ref_mux_ul5 =
3701 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL5 MUX Mux",
3702 msm_route_ec_ref_rx_enum[0],
3703 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3704
3705static const struct snd_kcontrol_new ext_ec_ref_mux_ul6 =
3706 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL6 MUX Mux",
3707 msm_route_ec_ref_rx_enum[0],
3708 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3709
3710static const struct snd_kcontrol_new ext_ec_ref_mux_ul8 =
3711 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL8 MUX Mux",
3712 msm_route_ec_ref_rx_enum[0],
3713 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3714
3715static const struct snd_kcontrol_new ext_ec_ref_mux_ul9 =
3716 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL9 MUX Mux",
3717 msm_route_ec_ref_rx_enum[0],
3718 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3719
Asish Bhattacharya34504582017-08-08 12:55:01 +05303720static const struct snd_kcontrol_new ext_ec_ref_mux_ul16 =
3721 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL16 MUX Mux",
3722 msm_route_ec_ref_rx_enum[0],
3723 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3724
Laxminath Kasam38070be2017-08-17 18:21:59 +05303725static const struct snd_kcontrol_new ext_ec_ref_mux_ul10 =
3726 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL10 MUX Mux",
3727 msm_route_ec_ref_rx_enum[0],
3728 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3729
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303730static const struct snd_kcontrol_new ext_ec_ref_mux_ul17 =
3731 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL17 MUX Mux",
3732 msm_route_ec_ref_rx_enum[0],
3733 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3734
3735static const struct snd_kcontrol_new ext_ec_ref_mux_ul18 =
3736 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL18 MUX Mux",
3737 msm_route_ec_ref_rx_enum[0],
3738 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3739
3740static const struct snd_kcontrol_new ext_ec_ref_mux_ul19 =
3741 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL19 MUX Mux",
3742 msm_route_ec_ref_rx_enum[0],
3743 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3744
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05303745static const struct snd_kcontrol_new ext_ec_ref_mux_ul28 =
3746 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL28 MUX Mux",
3747 msm_route_ec_ref_rx_enum[0],
3748 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3749
3750static const struct snd_kcontrol_new ext_ec_ref_mux_ul29 =
3751 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL29 MUX Mux",
3752 msm_route_ec_ref_rx_enum[0],
3753 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3754
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303755static int msm_routing_ext_ec_get(struct snd_kcontrol *kcontrol,
3756 struct snd_ctl_elem_value *ucontrol)
3757{
3758 pr_debug("%s: ext_ec_ref_rx = %x\n", __func__, msm_route_ext_ec_ref);
3759
3760 mutex_lock(&routing_lock);
3761 ucontrol->value.integer.value[0] = msm_route_ext_ec_ref;
3762 mutex_unlock(&routing_lock);
3763 return 0;
3764}
3765
3766static int msm_routing_ext_ec_put(struct snd_kcontrol *kcontrol,
3767 struct snd_ctl_elem_value *ucontrol)
3768{
Asish Bhattacharya34504582017-08-08 12:55:01 +05303769 struct snd_soc_dapm_widget *widget =
3770 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303771 int mux = ucontrol->value.enumerated.item[0];
3772 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
3773 int ret = 1;
3774 bool state = true;
3775 uint16_t ext_ec_ref_port_id;
3776 struct snd_soc_dapm_update *update = NULL;
3777
3778 if (mux >= e->items) {
3779 pr_err("%s: Invalid mux value %d\n", __func__, mux);
3780 return -EINVAL;
3781 }
3782
3783 mutex_lock(&routing_lock);
3784 msm_route_ext_ec_ref = ucontrol->value.integer.value[0];
3785
3786 switch (msm_route_ext_ec_ref) {
3787 case EXT_EC_REF_PRI_MI2S_TX:
3788 ext_ec_ref_port_id = AFE_PORT_ID_PRIMARY_MI2S_TX;
3789 break;
3790 case EXT_EC_REF_SEC_MI2S_TX:
3791 ext_ec_ref_port_id = AFE_PORT_ID_SECONDARY_MI2S_TX;
3792 break;
3793 case EXT_EC_REF_TERT_MI2S_TX:
3794 ext_ec_ref_port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
3795 break;
3796 case EXT_EC_REF_QUAT_MI2S_TX:
3797 ext_ec_ref_port_id = AFE_PORT_ID_QUATERNARY_MI2S_TX;
3798 break;
3799 case EXT_EC_REF_QUIN_MI2S_TX:
3800 ext_ec_ref_port_id = AFE_PORT_ID_QUINARY_MI2S_TX;
3801 break;
3802 case EXT_EC_REF_SLIM_1_TX:
3803 ext_ec_ref_port_id = SLIMBUS_1_TX;
3804 break;
3805 case EXT_EC_REF_NONE:
3806 default:
3807 ext_ec_ref_port_id = AFE_PORT_INVALID;
3808 state = false;
3809 break;
3810 }
3811
3812 pr_debug("%s: val = %d ext_ec_ref_port_id = 0x%0x state = %d\n",
3813 __func__, msm_route_ext_ec_ref, ext_ec_ref_port_id, state);
3814
3815 if (!voc_set_ext_ec_ref_port_id(ext_ec_ref_port_id, state)) {
3816 mutex_unlock(&routing_lock);
3817 snd_soc_dapm_mux_update_power(widget->dapm, kcontrol, mux, e,
3818 update);
3819 } else {
3820 ret = -EINVAL;
3821 mutex_unlock(&routing_lock);
3822 }
3823 return ret;
3824}
3825
3826static const char * const ext_ec_ref_rx[] = {"NONE", "PRI_MI2S_TX",
3827 "SEC_MI2S_TX", "TERT_MI2S_TX",
3828 "QUAT_MI2S_TX", "QUIN_MI2S_TX",
3829 "SLIM_1_TX"};
3830
3831static const struct soc_enum msm_route_ext_ec_ref_rx_enum[] = {
3832 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(ext_ec_ref_rx), ext_ec_ref_rx),
3833};
3834
3835static const struct snd_kcontrol_new voc_ext_ec_mux =
3836 SOC_DAPM_ENUM_EXT("VOC_EXT_EC MUX Mux", msm_route_ext_ec_ref_rx_enum[0],
3837 msm_routing_ext_ec_get, msm_routing_ext_ec_put);
3838
3839
3840static const struct snd_kcontrol_new pri_i2s_rx_mixer_controls[] = {
3841 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_I2S_RX,
3842 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
3843 msm_routing_put_audio_mixer),
3844 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_I2S_RX,
3845 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
3846 msm_routing_put_audio_mixer),
3847 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_I2S_RX,
3848 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
3849 msm_routing_put_audio_mixer),
3850 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_I2S_RX,
3851 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
3852 msm_routing_put_audio_mixer),
3853 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_I2S_RX,
3854 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
3855 msm_routing_put_audio_mixer),
3856 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_I2S_RX,
3857 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
3858 msm_routing_put_audio_mixer),
3859 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_I2S_RX,
3860 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
3861 msm_routing_put_audio_mixer),
3862 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_I2S_RX,
3863 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
3864 msm_routing_put_audio_mixer),
3865 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_I2S_RX,
3866 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
3867 msm_routing_put_audio_mixer),
3868 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_I2S_RX,
3869 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
3870 msm_routing_put_audio_mixer),
3871 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_I2S_RX,
3872 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
3873 msm_routing_put_audio_mixer),
3874 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_I2S_RX,
3875 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
3876 msm_routing_put_audio_mixer),
3877 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_I2S_RX,
3878 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
3879 msm_routing_put_audio_mixer),
3880 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_I2S_RX,
3881 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
3882 msm_routing_put_audio_mixer),
3883 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_I2S_RX,
3884 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
3885 msm_routing_put_audio_mixer),
3886 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_I2S_RX,
3887 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
3888 msm_routing_put_audio_mixer),
3889 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_PRI_I2S_RX,
3890 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
3891 msm_routing_put_audio_mixer),
3892 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_PRI_I2S_RX,
3893 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
3894 msm_routing_put_audio_mixer),
3895 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_PRI_I2S_RX,
3896 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
3897 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05303898 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_PRI_I2S_RX,
3899 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
3900 msm_routing_put_audio_mixer),
3901 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_PRI_I2S_RX,
3902 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
3903 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303904};
3905
3906static const struct snd_kcontrol_new sec_i2s_rx_mixer_controls[] = {
3907 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_I2S_RX,
3908 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
3909 msm_routing_put_audio_mixer),
3910 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_I2S_RX,
3911 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
3912 msm_routing_put_audio_mixer),
3913 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_I2S_RX,
3914 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
3915 msm_routing_put_audio_mixer),
3916 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_I2S_RX,
3917 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
3918 msm_routing_put_audio_mixer),
3919 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_I2S_RX,
3920 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
3921 msm_routing_put_audio_mixer),
3922 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_I2S_RX,
3923 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
3924 msm_routing_put_audio_mixer),
3925 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_I2S_RX,
3926 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
3927 msm_routing_put_audio_mixer),
3928 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_I2S_RX,
3929 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
3930 msm_routing_put_audio_mixer),
3931 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_I2S_RX,
3932 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
3933 msm_routing_put_audio_mixer),
3934 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_I2S_RX,
3935 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
3936 msm_routing_put_audio_mixer),
3937 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_I2S_RX,
3938 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
3939 msm_routing_put_audio_mixer),
3940 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_I2S_RX,
3941 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
3942 msm_routing_put_audio_mixer),
3943 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_I2S_RX,
3944 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
3945 msm_routing_put_audio_mixer),
3946 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_I2S_RX,
3947 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
3948 msm_routing_put_audio_mixer),
3949 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_I2S_RX,
3950 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
3951 msm_routing_put_audio_mixer),
3952 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_I2S_RX,
3953 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
3954 msm_routing_put_audio_mixer),
3955 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SEC_I2S_RX,
3956 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
3957 msm_routing_put_audio_mixer),
3958 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SEC_I2S_RX,
3959 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
3960 msm_routing_put_audio_mixer),
3961 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SEC_I2S_RX,
3962 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
3963 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05303964 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_SEC_I2S_RX,
3965 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
3966 msm_routing_put_audio_mixer),
3967 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_SEC_I2S_RX,
3968 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
3969 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303970};
3971
3972static const struct snd_kcontrol_new spdif_rx_mixer_controls[] = {
3973 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SPDIF_RX,
3974 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
3975 msm_routing_put_audio_mixer),
3976 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SPDIF_RX,
3977 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
3978 msm_routing_put_audio_mixer),
3979 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SPDIF_RX,
3980 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
3981 msm_routing_put_audio_mixer),
3982 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SPDIF_RX,
3983 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
3984 msm_routing_put_audio_mixer),
3985 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SPDIF_RX,
3986 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
3987 msm_routing_put_audio_mixer),
3988 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SPDIF_RX,
3989 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
3990 msm_routing_put_audio_mixer),
3991 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SPDIF_RX,
3992 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
3993 msm_routing_put_audio_mixer),
3994 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SPDIF_RX,
3995 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
3996 msm_routing_put_audio_mixer),
3997 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SPDIF_RX,
3998 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
3999 msm_routing_put_audio_mixer),
4000 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SPDIF_RX,
4001 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4002 msm_routing_put_audio_mixer),
4003 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SPDIF_RX,
4004 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4005 msm_routing_put_audio_mixer),
4006 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SPDIF_RX,
4007 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4008 msm_routing_put_audio_mixer),
4009 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SPDIF_RX,
4010 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4011 msm_routing_put_audio_mixer),
4012 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SPDIF_RX,
4013 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4014 msm_routing_put_audio_mixer),
4015 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SPDIF_RX,
4016 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4017 msm_routing_put_audio_mixer),
4018 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SPDIF_RX,
4019 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4020 msm_routing_put_audio_mixer),
4021 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SPDIF_RX,
4022 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4023 msm_routing_put_audio_mixer),
4024 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SPDIF_RX,
4025 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4026 msm_routing_put_audio_mixer),
4027 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SPDIF_RX,
4028 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4029 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304030 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_SPDIF_RX,
4031 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4032 msm_routing_put_audio_mixer),
4033 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_SPDIF_RX,
4034 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4035 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304036};
4037
4038static const struct snd_kcontrol_new slimbus_2_rx_mixer_controls[] = {
4039 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4040 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4041 msm_routing_put_audio_mixer),
4042 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4043 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4044 msm_routing_put_audio_mixer),
4045 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4046 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4047 msm_routing_put_audio_mixer),
4048 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4049 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4050 msm_routing_put_audio_mixer),
4051 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4052 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4053 msm_routing_put_audio_mixer),
4054 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4055 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4056 msm_routing_put_audio_mixer),
4057 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4058 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4059 msm_routing_put_audio_mixer),
4060 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4061 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4062 msm_routing_put_audio_mixer),
4063 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4064 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4065 msm_routing_put_audio_mixer),
4066 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4067 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4068 msm_routing_put_audio_mixer),
4069 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4070 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4071 msm_routing_put_audio_mixer),
4072 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4073 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4074 msm_routing_put_audio_mixer),
4075 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4076 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4077 msm_routing_put_audio_mixer),
4078 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4079 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4080 msm_routing_put_audio_mixer),
4081 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4082 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4083 msm_routing_put_audio_mixer),
4084 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4085 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4086 msm_routing_put_audio_mixer),
4087};
4088
4089static const struct snd_kcontrol_new slimbus_5_rx_mixer_controls[] = {
4090 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4091 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4092 msm_routing_put_audio_mixer),
4093 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4094 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4095 msm_routing_put_audio_mixer),
4096 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4097 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4098 msm_routing_put_audio_mixer),
4099 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4100 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4101 msm_routing_put_audio_mixer),
4102 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4103 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4104 msm_routing_put_audio_mixer),
4105 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4106 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4107 msm_routing_put_audio_mixer),
4108 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4109 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4110 msm_routing_put_audio_mixer),
4111 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4112 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4113 msm_routing_put_audio_mixer),
4114 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4115 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4116 msm_routing_put_audio_mixer),
4117 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4118 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4119 msm_routing_put_audio_mixer),
4120 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4121 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4122 msm_routing_put_audio_mixer),
4123 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4124 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4125 msm_routing_put_audio_mixer),
4126 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4127 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4128 msm_routing_put_audio_mixer),
4129 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4130 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4131 msm_routing_put_audio_mixer),
4132 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4133 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4134 msm_routing_put_audio_mixer),
4135 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4136 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4137 msm_routing_put_audio_mixer),
4138 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4139 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4140 msm_routing_put_audio_mixer),
4141 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4142 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4143 msm_routing_put_audio_mixer),
4144 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4145 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4146 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304147 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4148 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4149 msm_routing_put_audio_mixer),
4150 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4151 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4152 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304153};
4154
4155static const struct snd_kcontrol_new slimbus_rx_mixer_controls[] = {
4156 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4157 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4158 msm_routing_put_audio_mixer),
4159 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4160 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4161 msm_routing_put_audio_mixer),
4162 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4163 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4164 msm_routing_put_audio_mixer),
4165 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4166 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4167 msm_routing_put_audio_mixer),
4168 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4169 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4170 msm_routing_put_audio_mixer),
4171 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4172 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4173 msm_routing_put_audio_mixer),
4174 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4175 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4176 msm_routing_put_audio_mixer),
4177 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4178 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4179 msm_routing_put_audio_mixer),
4180 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4181 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4182 msm_routing_put_audio_mixer),
4183 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4184 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4185 msm_routing_put_audio_mixer),
4186 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4187 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4188 msm_routing_put_audio_mixer),
4189 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4190 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4191 msm_routing_put_audio_mixer),
4192 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4193 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4194 msm_routing_put_audio_mixer),
4195 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4196 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4197 msm_routing_put_audio_mixer),
4198 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4199 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4200 msm_routing_put_audio_mixer),
4201 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4202 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4203 msm_routing_put_audio_mixer),
4204 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4205 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4206 msm_routing_put_audio_mixer),
4207 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4208 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4209 msm_routing_put_audio_mixer),
4210 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4211 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4212 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304213 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4214 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4215 msm_routing_put_audio_mixer),
4216 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4217 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4218 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304219};
4220
4221static const struct snd_kcontrol_new mi2s_rx_mixer_controls[] = {
4222 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_MI2S_RX,
4223 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4224 msm_routing_put_audio_mixer),
4225 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_MI2S_RX,
4226 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4227 msm_routing_put_audio_mixer),
4228 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_MI2S_RX,
4229 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4230 msm_routing_put_audio_mixer),
4231 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_MI2S_RX,
4232 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4233 msm_routing_put_audio_mixer),
4234 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_MI2S_RX,
4235 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4236 msm_routing_put_audio_mixer),
4237 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_MI2S_RX,
4238 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4239 msm_routing_put_audio_mixer),
4240 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_MI2S_RX,
4241 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4242 msm_routing_put_audio_mixer),
4243 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_MI2S_RX,
4244 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4245 msm_routing_put_audio_mixer),
4246 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_MI2S_RX,
4247 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4248 msm_routing_put_audio_mixer),
4249 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_MI2S_RX,
4250 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4251 msm_routing_put_audio_mixer),
4252 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_MI2S_RX,
4253 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4254 msm_routing_put_audio_mixer),
4255 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_MI2S_RX,
4256 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4257 msm_routing_put_audio_mixer),
4258 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_MI2S_RX,
4259 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4260 msm_routing_put_audio_mixer),
4261 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_MI2S_RX,
4262 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4263 msm_routing_put_audio_mixer),
4264 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_MI2S_RX,
4265 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4266 msm_routing_put_audio_mixer),
4267 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_MI2S_RX,
4268 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4269 msm_routing_put_audio_mixer),
4270 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_MI2S_RX,
4271 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4272 msm_routing_put_audio_mixer),
4273 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_MI2S_RX,
4274 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4275 msm_routing_put_audio_mixer),
4276 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_MI2S_RX,
4277 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4278 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304279 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_MI2S_RX,
4280 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4281 msm_routing_put_audio_mixer),
4282 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_MI2S_RX,
4283 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4284 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304285};
4286
4287static const struct snd_kcontrol_new quaternary_mi2s_rx_mixer_controls[] = {
4288 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4289 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4290 msm_routing_put_audio_mixer),
4291 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4292 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4293 msm_routing_put_audio_mixer),
4294 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4295 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4296 msm_routing_put_audio_mixer),
4297 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4298 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4299 msm_routing_put_audio_mixer),
4300 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4301 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4302 msm_routing_put_audio_mixer),
4303 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4304 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4305 msm_routing_put_audio_mixer),
4306 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4307 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4308 msm_routing_put_audio_mixer),
4309 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4310 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4311 msm_routing_put_audio_mixer),
4312 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4313 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4314 msm_routing_put_audio_mixer),
4315 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4316 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4317 msm_routing_put_audio_mixer),
4318 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4319 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4320 msm_routing_put_audio_mixer),
4321 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4322 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4323 msm_routing_put_audio_mixer),
4324 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4325 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4326 msm_routing_put_audio_mixer),
4327 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4328 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4329 msm_routing_put_audio_mixer),
4330 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4331 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4332 msm_routing_put_audio_mixer),
4333 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4334 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4335 msm_routing_put_audio_mixer),
4336 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4337 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4338 msm_routing_put_audio_mixer),
4339 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4340 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4341 msm_routing_put_audio_mixer),
4342 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4343 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4344 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304345 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4346 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4347 msm_routing_put_audio_mixer),
4348 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4349 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4350 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304351};
4352
4353static const struct snd_kcontrol_new quinary_mi2s_rx_mixer_controls[] = {
4354 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4355 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4356 msm_routing_put_audio_mixer),
4357 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4358 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4359 msm_routing_put_audio_mixer),
4360 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4361 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4362 msm_routing_put_audio_mixer),
4363 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4364 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4365 msm_routing_put_audio_mixer),
4366 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4367 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4368 msm_routing_put_audio_mixer),
4369 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4370 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4371 msm_routing_put_audio_mixer),
4372 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4373 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4374 msm_routing_put_audio_mixer),
4375 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4376 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4377 msm_routing_put_audio_mixer),
4378 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4379 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4380 msm_routing_put_audio_mixer),
4381 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4382 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4383 msm_routing_put_audio_mixer),
4384 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4385 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4386 msm_routing_put_audio_mixer),
4387 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4388 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4389 msm_routing_put_audio_mixer),
4390 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4391 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4392 msm_routing_put_audio_mixer),
4393 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4394 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4395 msm_routing_put_audio_mixer),
4396 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4397 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4398 msm_routing_put_audio_mixer),
4399 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4400 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4401 msm_routing_put_audio_mixer),
4402 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4403 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4404 msm_routing_put_audio_mixer),
4405 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4406 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4407 msm_routing_put_audio_mixer),
4408 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4409 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4410 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304411 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4412 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4413 msm_routing_put_audio_mixer),
4414 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4415 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4416 msm_routing_put_audio_mixer),
4417
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304418};
4419
4420static const struct snd_kcontrol_new tertiary_mi2s_rx_mixer_controls[] = {
4421 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4422 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4423 msm_routing_put_audio_mixer),
4424 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4425 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4426 msm_routing_put_audio_mixer),
4427 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4428 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4429 msm_routing_put_audio_mixer),
4430 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4431 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4432 msm_routing_put_audio_mixer),
4433 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4434 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4435 msm_routing_put_audio_mixer),
4436 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4437 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4438 msm_routing_put_audio_mixer),
4439 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4440 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4441 msm_routing_put_audio_mixer),
4442 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4443 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4444 msm_routing_put_audio_mixer),
4445 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4446 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4447 msm_routing_put_audio_mixer),
4448 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4449 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4450 msm_routing_put_audio_mixer),
4451 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4452 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4453 msm_routing_put_audio_mixer),
4454 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4455 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4456 msm_routing_put_audio_mixer),
4457 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4458 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4459 msm_routing_put_audio_mixer),
4460 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4461 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4462 msm_routing_put_audio_mixer),
4463 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4464 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4465 msm_routing_put_audio_mixer),
4466 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4467 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4468 msm_routing_put_audio_mixer),
4469 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4470 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4471 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304472 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4473 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4474 msm_routing_put_audio_mixer),
4475 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4476 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4477 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304478};
4479
4480static const struct snd_kcontrol_new secondary_mi2s_rx2_mixer_controls[] = {
4481 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SECONDARY_MI2S_RX_SD1,
4482 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4483 msm_routing_put_audio_mixer),
4484};
4485
4486static const struct snd_kcontrol_new secondary_mi2s_rx_mixer_controls[] = {
4487 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4488 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4489 msm_routing_put_audio_mixer),
4490 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4491 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4492 msm_routing_put_audio_mixer),
4493 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4494 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4495 msm_routing_put_audio_mixer),
4496 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4497 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4498 msm_routing_put_audio_mixer),
4499 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4500 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4501 msm_routing_put_audio_mixer),
4502 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4503 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4504 msm_routing_put_audio_mixer),
4505 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4506 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4507 msm_routing_put_audio_mixer),
4508 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4509 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4510 msm_routing_put_audio_mixer),
4511 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4512 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4513 msm_routing_put_audio_mixer),
4514 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4515 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4516 msm_routing_put_audio_mixer),
4517 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4518 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4519 msm_routing_put_audio_mixer),
4520 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4521 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4522 msm_routing_put_audio_mixer),
4523 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4524 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4525 msm_routing_put_audio_mixer),
4526 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4527 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4528 msm_routing_put_audio_mixer),
4529 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4530 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4531 msm_routing_put_audio_mixer),
4532 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4533 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4534 msm_routing_put_audio_mixer),
4535 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4536 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4537 msm_routing_put_audio_mixer),
4538 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4539 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4540 msm_routing_put_audio_mixer),
4541 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4542 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4543 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304544 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4545 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4546 msm_routing_put_audio_mixer),
4547 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4548 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4549 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304550};
4551
4552static const struct snd_kcontrol_new primary_mi2s_rx_mixer_controls[] = {
4553 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_MI2S_RX,
4554 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4555 msm_routing_put_audio_mixer),
4556 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_MI2S_RX,
4557 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4558 msm_routing_put_audio_mixer),
4559 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_MI2S_RX,
4560 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4561 msm_routing_put_audio_mixer),
4562 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_MI2S_RX,
4563 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4564 msm_routing_put_audio_mixer),
4565 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_MI2S_RX,
4566 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4567 msm_routing_put_audio_mixer),
4568 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_MI2S_RX,
4569 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4570 msm_routing_put_audio_mixer),
4571 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_MI2S_RX,
4572 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4573 msm_routing_put_audio_mixer),
4574 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_MI2S_RX,
4575 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4576 msm_routing_put_audio_mixer),
4577 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_MI2S_RX,
4578 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4579 msm_routing_put_audio_mixer),
4580 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_MI2S_RX,
4581 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4582 msm_routing_put_audio_mixer),
4583 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_MI2S_RX,
4584 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4585 msm_routing_put_audio_mixer),
4586 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_MI2S_RX,
4587 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4588 msm_routing_put_audio_mixer),
4589 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_MI2S_RX,
4590 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4591 msm_routing_put_audio_mixer),
4592 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_MI2S_RX,
4593 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4594 msm_routing_put_audio_mixer),
4595 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_MI2S_RX,
4596 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4597 msm_routing_put_audio_mixer),
4598 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_MI2S_RX,
4599 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4600 msm_routing_put_audio_mixer),
4601 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_PRI_MI2S_RX,
4602 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4603 msm_routing_put_audio_mixer),
4604 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_PRI_MI2S_RX,
4605 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4606 msm_routing_put_audio_mixer),
4607 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_PRI_MI2S_RX,
4608 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4609 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304610 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_PRI_MI2S_RX,
4611 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4612 msm_routing_put_audio_mixer),
4613 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_PRI_MI2S_RX,
4614 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4615 msm_routing_put_audio_mixer),
4616
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304617};
4618
4619static const struct snd_kcontrol_new int0_mi2s_rx_mixer_controls[] = {
4620 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_INT0_MI2S_RX,
4621 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4622 msm_routing_put_audio_mixer),
4623 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_INT0_MI2S_RX,
4624 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4625 msm_routing_put_audio_mixer),
4626 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_INT0_MI2S_RX,
4627 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4628 msm_routing_put_audio_mixer),
4629 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_INT0_MI2S_RX,
4630 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4631 msm_routing_put_audio_mixer),
4632 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_INT0_MI2S_RX,
4633 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4634 msm_routing_put_audio_mixer),
4635 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_INT0_MI2S_RX,
4636 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4637 msm_routing_put_audio_mixer),
4638 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_INT0_MI2S_RX,
4639 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4640 msm_routing_put_audio_mixer),
4641 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_INT0_MI2S_RX,
4642 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4643 msm_routing_put_audio_mixer),
4644 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_INT0_MI2S_RX,
4645 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4646 msm_routing_put_audio_mixer),
4647 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_INT0_MI2S_RX,
4648 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4649 msm_routing_put_audio_mixer),
4650 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_INT0_MI2S_RX,
4651 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4652 msm_routing_put_audio_mixer),
4653 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_INT0_MI2S_RX,
4654 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4655 msm_routing_put_audio_mixer),
4656 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_INT0_MI2S_RX,
4657 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4658 msm_routing_put_audio_mixer),
4659 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_INT0_MI2S_RX,
4660 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4661 msm_routing_put_audio_mixer),
4662 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_INT0_MI2S_RX,
4663 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4664 msm_routing_put_audio_mixer),
4665 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_INT0_MI2S_RX,
4666 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4667 msm_routing_put_audio_mixer),
4668};
4669
4670static const struct snd_kcontrol_new int4_mi2s_rx_mixer_controls[] = {
4671 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_INT4_MI2S_RX,
4672 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4673 msm_routing_put_audio_mixer),
4674 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_INT4_MI2S_RX,
4675 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4676 msm_routing_put_audio_mixer),
4677 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_INT4_MI2S_RX,
4678 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4679 msm_routing_put_audio_mixer),
4680 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_INT4_MI2S_RX,
4681 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4682 msm_routing_put_audio_mixer),
4683 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_INT4_MI2S_RX,
4684 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4685 msm_routing_put_audio_mixer),
4686 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_INT4_MI2S_RX,
4687 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4688 msm_routing_put_audio_mixer),
4689 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_INT4_MI2S_RX,
4690 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4691 msm_routing_put_audio_mixer),
4692 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_INT4_MI2S_RX,
4693 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4694 msm_routing_put_audio_mixer),
4695 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_INT4_MI2S_RX,
4696 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4697 msm_routing_put_audio_mixer),
4698 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_INT4_MI2S_RX,
4699 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4700 msm_routing_put_audio_mixer),
4701 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_INT4_MI2S_RX,
4702 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4703 msm_routing_put_audio_mixer),
4704 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_INT4_MI2S_RX,
4705 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4706 msm_routing_put_audio_mixer),
4707 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_INT4_MI2S_RX,
4708 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4709 msm_routing_put_audio_mixer),
4710 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_INT4_MI2S_RX,
4711 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4712 msm_routing_put_audio_mixer),
4713 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_INT4_MI2S_RX,
4714 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4715 msm_routing_put_audio_mixer),
4716 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_INT4_MI2S_RX,
4717 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4718 msm_routing_put_audio_mixer),
4719};
4720
4721static const struct snd_kcontrol_new hdmi_mixer_controls[] = {
4722 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_HDMI_RX,
4723 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4724 msm_routing_put_audio_mixer),
4725 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_HDMI_RX,
4726 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4727 msm_routing_put_audio_mixer),
4728 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_HDMI_RX,
4729 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4730 msm_routing_put_audio_mixer),
4731 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_HDMI_RX,
4732 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4733 msm_routing_put_audio_mixer),
4734 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_HDMI_RX,
4735 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4736 msm_routing_put_audio_mixer),
4737 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_HDMI_RX,
4738 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4739 msm_routing_put_audio_mixer),
4740 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_HDMI_RX,
4741 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4742 msm_routing_put_audio_mixer),
4743 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_HDMI_RX,
4744 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4745 msm_routing_put_audio_mixer),
4746 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_HDMI_RX,
4747 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4748 msm_routing_put_audio_mixer),
4749 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_HDMI_RX,
4750 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4751 msm_routing_put_audio_mixer),
4752 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_HDMI_RX,
4753 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4754 msm_routing_put_audio_mixer),
4755 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_HDMI_RX,
4756 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4757 msm_routing_put_audio_mixer),
4758 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_HDMI_RX,
4759 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4760 msm_routing_put_audio_mixer),
4761 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_HDMI_RX,
4762 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4763 msm_routing_put_audio_mixer),
4764 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_HDMI_RX,
4765 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4766 msm_routing_put_audio_mixer),
4767 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_HDMI_RX,
4768 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4769 msm_routing_put_audio_mixer),
4770 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_HDMI_RX,
4771 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4772 msm_routing_put_audio_mixer),
4773 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_HDMI_RX,
4774 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4775 msm_routing_put_audio_mixer),
4776 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_HDMI_RX,
4777 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4778 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304779 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_HDMI_RX,
4780 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4781 msm_routing_put_audio_mixer),
4782 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_HDMI_RX,
4783 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4784 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304785};
4786
4787static const struct snd_kcontrol_new display_port_mixer_controls[] = {
4788 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4789 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4790 msm_routing_put_audio_mixer),
4791 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4792 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4793 msm_routing_put_audio_mixer),
4794 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4795 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4796 msm_routing_put_audio_mixer),
4797 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4798 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4799 msm_routing_put_audio_mixer),
4800 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4801 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4802 msm_routing_put_audio_mixer),
4803 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4804 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4805 msm_routing_put_audio_mixer),
4806 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4807 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4808 msm_routing_put_audio_mixer),
4809 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4810 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4811 msm_routing_put_audio_mixer),
4812 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4813 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4814 msm_routing_put_audio_mixer),
4815 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4816 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4817 msm_routing_put_audio_mixer),
4818 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4819 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4820 msm_routing_put_audio_mixer),
4821 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4822 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4823 msm_routing_put_audio_mixer),
4824 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4825 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4826 msm_routing_put_audio_mixer),
4827 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4828 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4829 msm_routing_put_audio_mixer),
4830 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4831 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4832 msm_routing_put_audio_mixer),
4833 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4834 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4835 msm_routing_put_audio_mixer),
4836};
4837
4838 /* incall music delivery mixer */
4839static const struct snd_kcontrol_new incall_music_delivery_mixer_controls[] = {
4840 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_VOICE_PLAYBACK_TX,
4841 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4842 msm_routing_put_audio_mixer),
4843 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_VOICE_PLAYBACK_TX,
4844 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4845 msm_routing_put_audio_mixer),
4846 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_VOICE_PLAYBACK_TX,
4847 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4848 msm_routing_put_audio_mixer),
4849 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_VOICE_PLAYBACK_TX,
4850 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4851 msm_routing_put_audio_mixer),
4852};
4853
4854static const struct snd_kcontrol_new incall_music2_delivery_mixer_controls[] = {
4855 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_VOICE2_PLAYBACK_TX,
4856 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4857 msm_routing_put_audio_mixer),
4858 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_VOICE2_PLAYBACK_TX,
4859 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4860 msm_routing_put_audio_mixer),
4861 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_VOICE2_PLAYBACK_TX,
4862 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4863 msm_routing_put_audio_mixer),
4864 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_VOICE2_PLAYBACK_TX,
4865 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4866 msm_routing_put_audio_mixer),
4867};
4868
4869static const struct snd_kcontrol_new slimbus_4_rx_mixer_controls[] = {
4870 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_4_RX,
4871 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4872 msm_routing_put_audio_mixer),
4873 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_4_RX,
4874 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4875 msm_routing_put_audio_mixer),
4876 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_4_RX,
4877 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4878 msm_routing_put_audio_mixer),
4879 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_4_RX,
4880 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4881 msm_routing_put_audio_mixer),
4882};
4883
4884static const struct snd_kcontrol_new slimbus_6_rx_mixer_controls[] = {
4885 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4886 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4887 msm_routing_put_audio_mixer),
4888 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4889 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4890 msm_routing_put_audio_mixer),
4891 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4892 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4893 msm_routing_put_audio_mixer),
4894 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4895 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4896 msm_routing_put_audio_mixer),
4897 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4898 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4899 msm_routing_put_audio_mixer),
4900 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4901 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4902 msm_routing_put_audio_mixer),
4903 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4904 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4905 msm_routing_put_audio_mixer),
4906 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4907 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4908 msm_routing_put_audio_mixer),
4909 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4910 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4911 msm_routing_put_audio_mixer),
4912 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4913 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4914 msm_routing_put_audio_mixer),
4915 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4916 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4917 msm_routing_put_audio_mixer),
4918 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4919 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4920 msm_routing_put_audio_mixer),
4921 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4922 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4923 msm_routing_put_audio_mixer),
4924 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4925 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4926 msm_routing_put_audio_mixer),
4927 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4928 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4929 msm_routing_put_audio_mixer),
4930 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4931 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4932 msm_routing_put_audio_mixer),
4933};
4934
4935static const struct snd_kcontrol_new slimbus_7_rx_mixer_controls[] = {
4936 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4937 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4938 msm_routing_put_audio_mixer),
4939 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4940 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4941 msm_routing_put_audio_mixer),
4942 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4943 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4944 msm_routing_put_audio_mixer),
4945 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4946 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4947 msm_routing_put_audio_mixer),
4948 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4949 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4950 msm_routing_put_audio_mixer),
4951 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4952 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4953 msm_routing_put_audio_mixer),
4954 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4955 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4956 msm_routing_put_audio_mixer),
4957 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4958 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4959 msm_routing_put_audio_mixer),
4960 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4961 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4962 msm_routing_put_audio_mixer),
4963 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4964 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4965 msm_routing_put_audio_mixer),
4966 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4967 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4968 msm_routing_put_audio_mixer),
4969 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4970 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4971 msm_routing_put_audio_mixer),
4972 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4973 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4974 msm_routing_put_audio_mixer),
4975 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4976 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4977 msm_routing_put_audio_mixer),
4978 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4979 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4980 msm_routing_put_audio_mixer),
4981 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4982 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4983 msm_routing_put_audio_mixer),
4984};
4985
4986static const struct snd_kcontrol_new usb_audio_rx_mixer_controls[] = {
4987 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_USB_RX,
4988 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4989 msm_routing_put_audio_mixer),
4990 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_USB_RX,
4991 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4992 msm_routing_put_audio_mixer),
4993 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_USB_RX,
4994 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4995 msm_routing_put_audio_mixer),
4996 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_USB_RX,
4997 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4998 msm_routing_put_audio_mixer),
4999 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_USB_RX,
5000 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5001 msm_routing_put_audio_mixer),
5002 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_USB_RX,
5003 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5004 msm_routing_put_audio_mixer),
5005 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_USB_RX,
5006 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5007 msm_routing_put_audio_mixer),
5008 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_USB_RX,
5009 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5010 msm_routing_put_audio_mixer),
5011 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_USB_RX,
5012 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5013 msm_routing_put_audio_mixer),
5014 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_USB_RX,
5015 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5016 msm_routing_put_audio_mixer),
5017 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_USB_RX,
5018 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5019 msm_routing_put_audio_mixer),
5020 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_USB_RX,
5021 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5022 msm_routing_put_audio_mixer),
5023 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_USB_RX,
5024 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5025 msm_routing_put_audio_mixer),
5026 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_USB_RX,
5027 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5028 msm_routing_put_audio_mixer),
5029 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_USB_RX,
5030 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5031 msm_routing_put_audio_mixer),
5032 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_USB_RX,
5033 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5034 msm_routing_put_audio_mixer),
5035};
5036
5037static const struct snd_kcontrol_new int_bt_sco_rx_mixer_controls[] = {
5038 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5039 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5040 msm_routing_put_audio_mixer),
5041 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5042 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5043 msm_routing_put_audio_mixer),
5044 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5045 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5046 msm_routing_put_audio_mixer),
5047 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5048 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5049 msm_routing_put_audio_mixer),
5050 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5051 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5052 msm_routing_put_audio_mixer),
5053 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5054 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5055 msm_routing_put_audio_mixer),
5056 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5057 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5058 msm_routing_put_audio_mixer),
5059 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5060 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5061 msm_routing_put_audio_mixer),
5062 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5063 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5064 msm_routing_put_audio_mixer),
5065 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5066 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5067 msm_routing_put_audio_mixer),
5068 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5069 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5070 msm_routing_put_audio_mixer),
5071 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5072 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5073 msm_routing_put_audio_mixer),
5074 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5075 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5076 msm_routing_put_audio_mixer),
5077 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5078 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5079 msm_routing_put_audio_mixer),
5080 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5081 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5082 msm_routing_put_audio_mixer),
5083 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5084 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5085 msm_routing_put_audio_mixer),
5086 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5087 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
5088 msm_routing_put_audio_mixer),
5089 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5090 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
5091 msm_routing_put_audio_mixer),
5092 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5093 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
5094 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05305095 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5096 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
5097 msm_routing_put_audio_mixer),
5098 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5099 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
5100 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305101};
5102
5103static const struct snd_kcontrol_new int_bt_a2dp_rx_mixer_controls[] = {
5104 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5105 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5106 msm_routing_put_audio_mixer),
5107 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5108 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5109 msm_routing_put_audio_mixer),
5110 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5111 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5112 msm_routing_put_audio_mixer),
5113 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5114 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5115 msm_routing_put_audio_mixer),
5116 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5117 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5118 msm_routing_put_audio_mixer),
5119 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5120 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5121 msm_routing_put_audio_mixer),
5122 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5123 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5124 msm_routing_put_audio_mixer),
5125 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5126 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5127 msm_routing_put_audio_mixer),
5128 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5129 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5130 msm_routing_put_audio_mixer),
5131 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5132 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5133 msm_routing_put_audio_mixer),
5134 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5135 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5136 msm_routing_put_audio_mixer),
5137 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5138 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5139 msm_routing_put_audio_mixer),
5140 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5141 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5142 msm_routing_put_audio_mixer),
5143 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5144 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5145 msm_routing_put_audio_mixer),
5146 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5147 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5148 msm_routing_put_audio_mixer),
5149 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5150 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5151 msm_routing_put_audio_mixer),
5152};
5153
5154static const struct snd_kcontrol_new int_fm_rx_mixer_controls[] = {
5155 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_INT_FM_RX,
5156 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5157 msm_routing_put_audio_mixer),
5158 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_INT_FM_RX,
5159 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5160 msm_routing_put_audio_mixer),
5161 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_INT_FM_RX,
5162 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5163 msm_routing_put_audio_mixer),
5164 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_INT_FM_RX,
5165 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5166 msm_routing_put_audio_mixer),
5167 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_INT_FM_RX,
5168 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5169 msm_routing_put_audio_mixer),
5170 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_INT_FM_RX,
5171 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5172 msm_routing_put_audio_mixer),
5173 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_INT_FM_RX,
5174 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5175 msm_routing_put_audio_mixer),
5176 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_INT_FM_RX,
5177 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5178 msm_routing_put_audio_mixer),
5179 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_INT_FM_RX,
5180 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5181 msm_routing_put_audio_mixer),
5182 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_INT_FM_RX,
5183 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5184 msm_routing_put_audio_mixer),
5185 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_INT_FM_RX,
5186 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5187 msm_routing_put_audio_mixer),
5188 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_INT_FM_RX,
5189 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5190 msm_routing_put_audio_mixer),
5191 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_INT_FM_RX,
5192 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5193 msm_routing_put_audio_mixer),
5194 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_INT_FM_RX,
5195 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5196 msm_routing_put_audio_mixer),
5197 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_INT_FM_RX,
5198 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5199 msm_routing_put_audio_mixer),
5200 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_INT_FM_RX,
5201 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5202 msm_routing_put_audio_mixer),
5203 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_INT_FM_RX,
5204 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
5205 msm_routing_put_audio_mixer),
5206 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_INT_FM_RX,
5207 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
5208 msm_routing_put_audio_mixer),
5209 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_INT_FM_RX,
5210 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
5211 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05305212 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_INT_FM_RX,
5213 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
5214 msm_routing_put_audio_mixer),
5215 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_INT_FM_RX,
5216 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
5217 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305218};
5219
5220static const struct snd_kcontrol_new afe_pcm_rx_mixer_controls[] = {
5221 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_AFE_PCM_RX,
5222 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5223 msm_routing_put_audio_mixer),
5224 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_AFE_PCM_RX,
5225 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5226 msm_routing_put_audio_mixer),
5227 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_AFE_PCM_RX,
5228 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5229 msm_routing_put_audio_mixer),
5230 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_AFE_PCM_RX,
5231 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5232 msm_routing_put_audio_mixer),
5233 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_AFE_PCM_RX,
5234 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5235 msm_routing_put_audio_mixer),
5236 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_AFE_PCM_RX,
5237 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5238 msm_routing_put_audio_mixer),
5239 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_AFE_PCM_RX,
5240 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5241 msm_routing_put_audio_mixer),
5242 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_AFE_PCM_RX,
5243 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5244 msm_routing_put_audio_mixer),
5245 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_AFE_PCM_RX,
5246 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5247 msm_routing_put_audio_mixer),
5248 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_AFE_PCM_RX,
5249 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5250 msm_routing_put_audio_mixer),
5251 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_AFE_PCM_RX,
5252 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5253 msm_routing_put_audio_mixer),
5254 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_AFE_PCM_RX,
5255 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5256 msm_routing_put_audio_mixer),
5257 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_AFE_PCM_RX,
5258 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5259 msm_routing_put_audio_mixer),
5260 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_AFE_PCM_RX,
5261 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5262 msm_routing_put_audio_mixer),
5263 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_AFE_PCM_RX,
5264 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5265 msm_routing_put_audio_mixer),
5266 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_AFE_PCM_RX,
5267 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5268 msm_routing_put_audio_mixer),
5269 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_AFE_PCM_RX,
5270 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
5271 msm_routing_put_audio_mixer),
5272 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_AFE_PCM_RX,
5273 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
5274 msm_routing_put_audio_mixer),
5275 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_AFE_PCM_RX,
5276 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
5277 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05305278 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_AFE_PCM_RX,
5279 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
5280 msm_routing_put_audio_mixer),
5281 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_AFE_PCM_RX,
5282 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
5283 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305284};
5285
5286static const struct snd_kcontrol_new auxpcm_rx_mixer_controls[] = {
5287 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_AUXPCM_RX,
5288 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5289 msm_routing_put_audio_mixer),
5290 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_AUXPCM_RX,
5291 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5292 msm_routing_put_audio_mixer),
5293 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_AUXPCM_RX,
5294 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5295 msm_routing_put_audio_mixer),
5296 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_AUXPCM_RX,
5297 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5298 msm_routing_put_audio_mixer),
5299 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_AUXPCM_RX,
5300 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5301 msm_routing_put_audio_mixer),
5302 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_AUXPCM_RX,
5303 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5304 msm_routing_put_audio_mixer),
5305 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_AUXPCM_RX,
5306 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5307 msm_routing_put_audio_mixer),
5308 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_AUXPCM_RX,
5309 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5310 msm_routing_put_audio_mixer),
5311 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_AUXPCM_RX,
5312 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5313 msm_routing_put_audio_mixer),
5314 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_AUXPCM_RX,
5315 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5316 msm_routing_put_audio_mixer),
5317 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_AUXPCM_RX,
5318 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5319 msm_routing_put_audio_mixer),
5320 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_AUXPCM_RX,
5321 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5322 msm_routing_put_audio_mixer),
5323 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_AUXPCM_RX,
5324 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5325 msm_routing_put_audio_mixer),
5326 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_AUXPCM_RX,
5327 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5328 msm_routing_put_audio_mixer),
5329 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_AUXPCM_RX,
5330 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5331 msm_routing_put_audio_mixer),
5332 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_AUXPCM_RX,
5333 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5334 msm_routing_put_audio_mixer),
5335 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_AUXPCM_RX,
5336 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
5337 msm_routing_put_audio_mixer),
5338 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_AUXPCM_RX,
5339 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
5340 msm_routing_put_audio_mixer),
5341 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_AUXPCM_RX,
5342 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
5343 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05305344 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_AUXPCM_RX,
5345 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
5346 msm_routing_put_audio_mixer),
5347 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_AUXPCM_RX,
5348 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
5349 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305350};
5351
5352static const struct snd_kcontrol_new sec_auxpcm_rx_mixer_controls[] = {
5353 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5354 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5355 msm_routing_put_audio_mixer),
5356 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5357 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5358 msm_routing_put_audio_mixer),
5359 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5360 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5361 msm_routing_put_audio_mixer),
5362 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5363 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5364 msm_routing_put_audio_mixer),
5365 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5366 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5367 msm_routing_put_audio_mixer),
5368 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5369 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5370 msm_routing_put_audio_mixer),
5371 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5372 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5373 msm_routing_put_audio_mixer),
5374 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5375 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5376 msm_routing_put_audio_mixer),
5377 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5378 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5379 msm_routing_put_audio_mixer),
5380 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5381 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5382 msm_routing_put_audio_mixer),
5383 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5384 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5385 msm_routing_put_audio_mixer),
5386 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5387 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5388 msm_routing_put_audio_mixer),
5389 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5390 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5391 msm_routing_put_audio_mixer),
5392 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5393 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5394 msm_routing_put_audio_mixer),
5395 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5396 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5397 msm_routing_put_audio_mixer),
5398 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5399 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5400 msm_routing_put_audio_mixer),
5401 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5402 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
5403 msm_routing_put_audio_mixer),
5404 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5405 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
5406 msm_routing_put_audio_mixer),
5407 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5408 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
5409 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05305410 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5411 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
5412 msm_routing_put_audio_mixer),
5413 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5414 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
5415 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305416};
5417
5418static const struct snd_kcontrol_new tert_auxpcm_rx_mixer_controls[] = {
5419 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5420 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5421 msm_routing_put_audio_mixer),
5422 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5423 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5424 msm_routing_put_audio_mixer),
5425 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5426 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5427 msm_routing_put_audio_mixer),
5428 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5429 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5430 msm_routing_put_audio_mixer),
5431 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5432 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5433 msm_routing_put_audio_mixer),
5434 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5435 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5436 msm_routing_put_audio_mixer),
5437 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5438 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5439 msm_routing_put_audio_mixer),
5440 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5441 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5442 msm_routing_put_audio_mixer),
5443 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5444 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5445 msm_routing_put_audio_mixer),
5446 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5447 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5448 msm_routing_put_audio_mixer),
5449 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5450 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5451 msm_routing_put_audio_mixer),
5452 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5453 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5454 msm_routing_put_audio_mixer),
5455 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5456 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5457 msm_routing_put_audio_mixer),
5458 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5459 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5460 msm_routing_put_audio_mixer),
5461 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5462 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5463 msm_routing_put_audio_mixer),
5464 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5465 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5466 msm_routing_put_audio_mixer),
5467};
5468
5469static const struct snd_kcontrol_new quat_auxpcm_rx_mixer_controls[] = {
5470 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5471 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5472 msm_routing_put_audio_mixer),
5473 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5474 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5475 msm_routing_put_audio_mixer),
5476 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5477 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5478 msm_routing_put_audio_mixer),
5479 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5480 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5481 msm_routing_put_audio_mixer),
5482 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5483 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5484 msm_routing_put_audio_mixer),
5485 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5486 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5487 msm_routing_put_audio_mixer),
5488 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5489 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5490 msm_routing_put_audio_mixer),
5491 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5492 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5493 msm_routing_put_audio_mixer),
5494 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5495 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5496 msm_routing_put_audio_mixer),
5497 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5498 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5499 msm_routing_put_audio_mixer),
5500 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5501 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5502 msm_routing_put_audio_mixer),
5503 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5504 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5505 msm_routing_put_audio_mixer),
5506 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5507 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5508 msm_routing_put_audio_mixer),
5509 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5510 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5511 msm_routing_put_audio_mixer),
5512 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5513 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5514 msm_routing_put_audio_mixer),
5515 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5516 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5517 msm_routing_put_audio_mixer),
5518};
5519
Rohit Kumara5077932017-09-10 22:05:05 +05305520static const struct snd_kcontrol_new quin_auxpcm_rx_mixer_controls[] = {
5521 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5522 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5523 msm_routing_put_audio_mixer),
5524 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5525 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5526 msm_routing_put_audio_mixer),
5527 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5528 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5529 msm_routing_put_audio_mixer),
5530 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5531 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5532 msm_routing_put_audio_mixer),
5533 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5534 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5535 msm_routing_put_audio_mixer),
5536 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5537 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5538 msm_routing_put_audio_mixer),
5539 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5540 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5541 msm_routing_put_audio_mixer),
5542 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5543 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5544 msm_routing_put_audio_mixer),
5545 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5546 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5547 msm_routing_put_audio_mixer),
5548 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5549 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5550 msm_routing_put_audio_mixer),
5551 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5552 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5553 msm_routing_put_audio_mixer),
5554 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5555 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5556 msm_routing_put_audio_mixer),
5557 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5558 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5559 msm_routing_put_audio_mixer),
5560 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5561 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5562 msm_routing_put_audio_mixer),
5563 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5564 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5565 msm_routing_put_audio_mixer),
5566 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5567 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5568 msm_routing_put_audio_mixer),
5569};
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305570static const struct snd_kcontrol_new pri_tdm_rx_0_mixer_controls[] = {
5571 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5572 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5573 msm_routing_put_audio_mixer),
5574 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5575 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5576 msm_routing_put_audio_mixer),
5577 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5578 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5579 msm_routing_put_audio_mixer),
5580 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5581 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5582 msm_routing_put_audio_mixer),
5583 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5584 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5585 msm_routing_put_audio_mixer),
5586 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5587 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5588 msm_routing_put_audio_mixer),
5589 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5590 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5591 msm_routing_put_audio_mixer),
5592 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5593 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5594 msm_routing_put_audio_mixer),
5595 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5596 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5597 msm_routing_put_audio_mixer),
5598 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5599 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5600 msm_routing_put_audio_mixer),
5601 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5602 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5603 msm_routing_put_audio_mixer),
5604 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5605 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5606 msm_routing_put_audio_mixer),
5607 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5608 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5609 msm_routing_put_audio_mixer),
5610 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5611 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5612 msm_routing_put_audio_mixer),
5613 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5614 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5615 msm_routing_put_audio_mixer),
5616 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5617 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5618 msm_routing_put_audio_mixer),
5619};
5620
5621static const struct snd_kcontrol_new pri_tdm_rx_1_mixer_controls[] = {
5622 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5623 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5624 msm_routing_put_audio_mixer),
5625 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5626 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5627 msm_routing_put_audio_mixer),
5628 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5629 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5630 msm_routing_put_audio_mixer),
5631 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5632 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5633 msm_routing_put_audio_mixer),
5634 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5635 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5636 msm_routing_put_audio_mixer),
5637 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5638 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5639 msm_routing_put_audio_mixer),
5640 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5641 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5642 msm_routing_put_audio_mixer),
5643 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5644 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5645 msm_routing_put_audio_mixer),
5646 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5647 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5648 msm_routing_put_audio_mixer),
5649 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5650 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5651 msm_routing_put_audio_mixer),
5652 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5653 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5654 msm_routing_put_audio_mixer),
5655 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5656 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5657 msm_routing_put_audio_mixer),
5658 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5659 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5660 msm_routing_put_audio_mixer),
5661 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5662 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5663 msm_routing_put_audio_mixer),
5664 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5665 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5666 msm_routing_put_audio_mixer),
5667 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5668 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5669 msm_routing_put_audio_mixer),
5670};
5671
5672static const struct snd_kcontrol_new pri_tdm_rx_2_mixer_controls[] = {
5673 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5674 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5675 msm_routing_put_audio_mixer),
5676 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5677 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5678 msm_routing_put_audio_mixer),
5679 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5680 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5681 msm_routing_put_audio_mixer),
5682 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5683 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5684 msm_routing_put_audio_mixer),
5685 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5686 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5687 msm_routing_put_audio_mixer),
5688 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5689 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5690 msm_routing_put_audio_mixer),
5691 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5692 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5693 msm_routing_put_audio_mixer),
5694 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5695 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5696 msm_routing_put_audio_mixer),
5697 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5698 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5699 msm_routing_put_audio_mixer),
5700 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5701 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5702 msm_routing_put_audio_mixer),
5703 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5704 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5705 msm_routing_put_audio_mixer),
5706 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5707 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5708 msm_routing_put_audio_mixer),
5709 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5710 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5711 msm_routing_put_audio_mixer),
5712 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5713 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5714 msm_routing_put_audio_mixer),
5715 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5716 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5717 msm_routing_put_audio_mixer),
5718 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5719 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5720 msm_routing_put_audio_mixer),
5721};
5722
5723static const struct snd_kcontrol_new pri_tdm_rx_3_mixer_controls[] = {
5724 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5725 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5726 msm_routing_put_audio_mixer),
5727 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5728 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5729 msm_routing_put_audio_mixer),
5730 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5731 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5732 msm_routing_put_audio_mixer),
5733 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5734 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5735 msm_routing_put_audio_mixer),
5736 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5737 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5738 msm_routing_put_audio_mixer),
5739 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5740 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5741 msm_routing_put_audio_mixer),
5742 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5743 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5744 msm_routing_put_audio_mixer),
5745 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5746 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5747 msm_routing_put_audio_mixer),
5748 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5749 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5750 msm_routing_put_audio_mixer),
5751 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5752 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5753 msm_routing_put_audio_mixer),
5754 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5755 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5756 msm_routing_put_audio_mixer),
5757 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5758 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5759 msm_routing_put_audio_mixer),
5760 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5761 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5762 msm_routing_put_audio_mixer),
5763 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5764 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5765 msm_routing_put_audio_mixer),
5766 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5767 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5768 msm_routing_put_audio_mixer),
5769 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5770 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5771 msm_routing_put_audio_mixer),
5772};
5773
5774static const struct snd_kcontrol_new pri_tdm_tx_0_mixer_controls[] = {
5775 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5776 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5777 msm_routing_put_audio_mixer),
5778 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5779 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5780 msm_routing_put_audio_mixer),
5781 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5782 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5783 msm_routing_put_audio_mixer),
5784 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5785 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5786 msm_routing_put_audio_mixer),
5787 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5788 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5789 msm_routing_put_audio_mixer),
5790 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5791 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5792 msm_routing_put_audio_mixer),
5793 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5794 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5795 msm_routing_put_audio_mixer),
5796 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5797 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5798 msm_routing_put_audio_mixer),
5799 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5800 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5801 msm_routing_put_audio_mixer),
5802 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5803 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5804 msm_routing_put_audio_mixer),
5805 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5806 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5807 msm_routing_put_audio_mixer),
5808 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5809 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5810 msm_routing_put_audio_mixer),
5811 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5812 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5813 msm_routing_put_audio_mixer),
5814 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5815 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5816 msm_routing_put_audio_mixer),
5817 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5818 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5819 msm_routing_put_audio_mixer),
5820 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5821 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5822 msm_routing_put_audio_mixer),
5823};
5824
5825static const struct snd_kcontrol_new sec_tdm_rx_0_mixer_controls[] = {
5826 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5827 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5828 msm_routing_put_audio_mixer),
5829 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5830 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5831 msm_routing_put_audio_mixer),
5832 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5833 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5834 msm_routing_put_audio_mixer),
5835 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5836 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5837 msm_routing_put_audio_mixer),
5838 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5839 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5840 msm_routing_put_audio_mixer),
5841 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5842 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5843 msm_routing_put_audio_mixer),
5844 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5845 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5846 msm_routing_put_audio_mixer),
5847 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5848 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5849 msm_routing_put_audio_mixer),
5850 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5851 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5852 msm_routing_put_audio_mixer),
5853 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5854 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5855 msm_routing_put_audio_mixer),
5856 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5857 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5858 msm_routing_put_audio_mixer),
5859 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5860 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5861 msm_routing_put_audio_mixer),
5862 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5863 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5864 msm_routing_put_audio_mixer),
5865 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5866 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5867 msm_routing_put_audio_mixer),
5868 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5869 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5870 msm_routing_put_audio_mixer),
5871 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5872 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5873 msm_routing_put_audio_mixer),
5874};
5875
5876static const struct snd_kcontrol_new sec_tdm_rx_1_mixer_controls[] = {
5877 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5878 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5879 msm_routing_put_audio_mixer),
5880 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5881 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5882 msm_routing_put_audio_mixer),
5883 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5884 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5885 msm_routing_put_audio_mixer),
5886 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5887 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5888 msm_routing_put_audio_mixer),
5889 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5890 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5891 msm_routing_put_audio_mixer),
5892 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5893 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5894 msm_routing_put_audio_mixer),
5895 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5896 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5897 msm_routing_put_audio_mixer),
5898 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5899 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5900 msm_routing_put_audio_mixer),
5901 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5902 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5903 msm_routing_put_audio_mixer),
5904 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5905 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5906 msm_routing_put_audio_mixer),
5907 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5908 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5909 msm_routing_put_audio_mixer),
5910 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5911 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5912 msm_routing_put_audio_mixer),
5913 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5914 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5915 msm_routing_put_audio_mixer),
5916 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5917 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5918 msm_routing_put_audio_mixer),
5919 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5920 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5921 msm_routing_put_audio_mixer),
5922 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5923 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5924 msm_routing_put_audio_mixer),
5925};
5926
5927static const struct snd_kcontrol_new sec_tdm_rx_2_mixer_controls[] = {
5928 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5929 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5930 msm_routing_put_audio_mixer),
5931 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5932 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5933 msm_routing_put_audio_mixer),
5934 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5935 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5936 msm_routing_put_audio_mixer),
5937 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5938 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5939 msm_routing_put_audio_mixer),
5940 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5941 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5942 msm_routing_put_audio_mixer),
5943 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5944 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5945 msm_routing_put_audio_mixer),
5946 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5947 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5948 msm_routing_put_audio_mixer),
5949 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5950 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5951 msm_routing_put_audio_mixer),
5952 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5953 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5954 msm_routing_put_audio_mixer),
5955 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5956 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5957 msm_routing_put_audio_mixer),
5958 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5959 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5960 msm_routing_put_audio_mixer),
5961 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5962 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5963 msm_routing_put_audio_mixer),
5964 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5965 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5966 msm_routing_put_audio_mixer),
5967 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5968 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5969 msm_routing_put_audio_mixer),
5970 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5971 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5972 msm_routing_put_audio_mixer),
5973 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5974 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5975 msm_routing_put_audio_mixer),
5976};
5977
5978static const struct snd_kcontrol_new sec_tdm_rx_3_mixer_controls[] = {
5979 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5980 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5981 msm_routing_put_audio_mixer),
5982 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5983 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5984 msm_routing_put_audio_mixer),
5985 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5986 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5987 msm_routing_put_audio_mixer),
5988 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5989 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5990 msm_routing_put_audio_mixer),
5991 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5992 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5993 msm_routing_put_audio_mixer),
5994 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5995 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5996 msm_routing_put_audio_mixer),
5997 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5998 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5999 msm_routing_put_audio_mixer),
6000 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6001 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6002 msm_routing_put_audio_mixer),
6003 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6004 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6005 msm_routing_put_audio_mixer),
6006 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6007 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6008 msm_routing_put_audio_mixer),
6009 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6010 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6011 msm_routing_put_audio_mixer),
6012 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6013 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6014 msm_routing_put_audio_mixer),
6015 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6016 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6017 msm_routing_put_audio_mixer),
6018 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6019 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6020 msm_routing_put_audio_mixer),
6021 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6022 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6023 msm_routing_put_audio_mixer),
6024 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6025 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6026 msm_routing_put_audio_mixer),
6027};
6028
6029static const struct snd_kcontrol_new sec_tdm_tx_0_mixer_controls[] = {
6030 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6031 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6032 msm_routing_put_audio_mixer),
6033 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6034 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6035 msm_routing_put_audio_mixer),
6036 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6037 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6038 msm_routing_put_audio_mixer),
6039 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6040 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6041 msm_routing_put_audio_mixer),
6042 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6043 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6044 msm_routing_put_audio_mixer),
6045 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6046 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6047 msm_routing_put_audio_mixer),
6048 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6049 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6050 msm_routing_put_audio_mixer),
6051 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6052 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6053 msm_routing_put_audio_mixer),
6054 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6055 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6056 msm_routing_put_audio_mixer),
6057 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6058 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6059 msm_routing_put_audio_mixer),
6060 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6061 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6062 msm_routing_put_audio_mixer),
6063 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6064 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6065 msm_routing_put_audio_mixer),
6066 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6067 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6068 msm_routing_put_audio_mixer),
6069 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6070 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6071 msm_routing_put_audio_mixer),
6072 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6073 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6074 msm_routing_put_audio_mixer),
6075 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6076 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6077 msm_routing_put_audio_mixer),
6078};
6079
6080static const struct snd_kcontrol_new tert_tdm_rx_0_mixer_controls[] = {
6081 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6082 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6083 msm_routing_put_audio_mixer),
6084 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6085 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6086 msm_routing_put_audio_mixer),
6087 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6088 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6089 msm_routing_put_audio_mixer),
6090 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6091 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6092 msm_routing_put_audio_mixer),
6093 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6094 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6095 msm_routing_put_audio_mixer),
6096 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6097 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6098 msm_routing_put_audio_mixer),
6099 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6100 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6101 msm_routing_put_audio_mixer),
6102 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6103 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6104 msm_routing_put_audio_mixer),
6105 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6106 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6107 msm_routing_put_audio_mixer),
6108 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6109 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6110 msm_routing_put_audio_mixer),
6111 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6112 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6113 msm_routing_put_audio_mixer),
6114 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6115 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6116 msm_routing_put_audio_mixer),
6117 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6118 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6119 msm_routing_put_audio_mixer),
6120 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6121 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6122 msm_routing_put_audio_mixer),
6123 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6124 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6125 msm_routing_put_audio_mixer),
6126 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6127 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6128 msm_routing_put_audio_mixer),
6129};
6130
6131static const struct snd_kcontrol_new tert_tdm_tx_0_mixer_controls[] = {
6132 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6133 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6134 msm_routing_put_audio_mixer),
6135 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6136 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6137 msm_routing_put_audio_mixer),
6138 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6139 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6140 msm_routing_put_audio_mixer),
6141 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6142 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6143 msm_routing_put_audio_mixer),
6144 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6145 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6146 msm_routing_put_audio_mixer),
6147 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6148 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6149 msm_routing_put_audio_mixer),
6150 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6151 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6152 msm_routing_put_audio_mixer),
6153 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6154 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6155 msm_routing_put_audio_mixer),
6156 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6157 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6158 msm_routing_put_audio_mixer),
6159 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6160 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6161 msm_routing_put_audio_mixer),
6162 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6163 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6164 msm_routing_put_audio_mixer),
6165 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6166 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6167 msm_routing_put_audio_mixer),
6168 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6169 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6170 msm_routing_put_audio_mixer),
6171 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6172 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6173 msm_routing_put_audio_mixer),
6174 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6175 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6176 msm_routing_put_audio_mixer),
6177 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6178 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6179 msm_routing_put_audio_mixer),
6180};
6181
6182static const struct snd_kcontrol_new tert_tdm_rx_1_mixer_controls[] = {
6183 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6184 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6185 msm_routing_put_audio_mixer),
6186 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6187 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6188 msm_routing_put_audio_mixer),
6189 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6190 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6191 msm_routing_put_audio_mixer),
6192 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6193 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6194 msm_routing_put_audio_mixer),
6195 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6196 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6197 msm_routing_put_audio_mixer),
6198 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6199 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6200 msm_routing_put_audio_mixer),
6201 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6202 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6203 msm_routing_put_audio_mixer),
6204 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6205 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6206 msm_routing_put_audio_mixer),
6207 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6208 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6209 msm_routing_put_audio_mixer),
6210 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6211 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6212 msm_routing_put_audio_mixer),
6213 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6214 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6215 msm_routing_put_audio_mixer),
6216 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6217 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6218 msm_routing_put_audio_mixer),
6219 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6220 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6221 msm_routing_put_audio_mixer),
6222 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6223 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6224 msm_routing_put_audio_mixer),
6225 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6226 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6227 msm_routing_put_audio_mixer),
6228 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6229 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6230 msm_routing_put_audio_mixer),
6231};
6232
6233static const struct snd_kcontrol_new tert_tdm_rx_2_mixer_controls[] = {
6234 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6235 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6236 msm_routing_put_audio_mixer),
6237 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6238 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6239 msm_routing_put_audio_mixer),
6240 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6241 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6242 msm_routing_put_audio_mixer),
6243 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6244 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6245 msm_routing_put_audio_mixer),
6246 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6247 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6248 msm_routing_put_audio_mixer),
6249 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6250 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6251 msm_routing_put_audio_mixer),
6252 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6253 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6254 msm_routing_put_audio_mixer),
6255 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6256 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6257 msm_routing_put_audio_mixer),
6258 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6259 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6260 msm_routing_put_audio_mixer),
6261 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6262 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6263 msm_routing_put_audio_mixer),
6264 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6265 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6266 msm_routing_put_audio_mixer),
6267 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6268 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6269 msm_routing_put_audio_mixer),
6270 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6271 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6272 msm_routing_put_audio_mixer),
6273 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6274 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6275 msm_routing_put_audio_mixer),
6276 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6277 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6278 msm_routing_put_audio_mixer),
6279 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6280 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6281 msm_routing_put_audio_mixer),
6282};
6283
6284static const struct snd_kcontrol_new tert_tdm_rx_3_mixer_controls[] = {
6285 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6286 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6287 msm_routing_put_audio_mixer),
6288 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6289 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6290 msm_routing_put_audio_mixer),
6291 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6292 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6293 msm_routing_put_audio_mixer),
6294 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6295 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6296 msm_routing_put_audio_mixer),
6297 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6298 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6299 msm_routing_put_audio_mixer),
6300 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6301 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6302 msm_routing_put_audio_mixer),
6303 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6304 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6305 msm_routing_put_audio_mixer),
6306 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6307 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6308 msm_routing_put_audio_mixer),
6309 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6310 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6311 msm_routing_put_audio_mixer),
6312 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6313 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6314 msm_routing_put_audio_mixer),
6315 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6316 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6317 msm_routing_put_audio_mixer),
6318 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6319 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6320 msm_routing_put_audio_mixer),
6321 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6322 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6323 msm_routing_put_audio_mixer),
6324 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6325 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6326 msm_routing_put_audio_mixer),
6327 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6328 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6329 msm_routing_put_audio_mixer),
6330 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6331 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6332 msm_routing_put_audio_mixer),
6333};
6334
6335static const struct snd_kcontrol_new tert_tdm_rx_4_mixer_controls[] = {
6336 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6337 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6338 msm_routing_put_audio_mixer),
6339 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6340 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6341 msm_routing_put_audio_mixer),
6342 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6343 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6344 msm_routing_put_audio_mixer),
6345 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6346 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6347 msm_routing_put_audio_mixer),
6348 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6349 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6350 msm_routing_put_audio_mixer),
6351 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6352 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6353 msm_routing_put_audio_mixer),
6354 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6355 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6356 msm_routing_put_audio_mixer),
6357 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6358 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6359 msm_routing_put_audio_mixer),
6360 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6361 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6362 msm_routing_put_audio_mixer),
6363 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6364 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6365 msm_routing_put_audio_mixer),
6366 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6367 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6368 msm_routing_put_audio_mixer),
6369 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6370 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6371 msm_routing_put_audio_mixer),
6372 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6373 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6374 msm_routing_put_audio_mixer),
6375 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6376 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6377 msm_routing_put_audio_mixer),
6378 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6379 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6380 msm_routing_put_audio_mixer),
6381 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6382 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6383 msm_routing_put_audio_mixer),
6384};
6385
6386static const struct snd_kcontrol_new quat_tdm_rx_0_mixer_controls[] = {
6387 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6388 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6389 msm_routing_put_audio_mixer),
6390 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6391 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6392 msm_routing_put_audio_mixer),
6393 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6394 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6395 msm_routing_put_audio_mixer),
6396 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6397 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6398 msm_routing_put_audio_mixer),
6399 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6400 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6401 msm_routing_put_audio_mixer),
6402 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6403 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6404 msm_routing_put_audio_mixer),
6405 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6406 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6407 msm_routing_put_audio_mixer),
6408 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6409 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6410 msm_routing_put_audio_mixer),
6411 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6412 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6413 msm_routing_put_audio_mixer),
6414 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6415 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6416 msm_routing_put_audio_mixer),
6417 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6418 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6419 msm_routing_put_audio_mixer),
6420 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6421 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6422 msm_routing_put_audio_mixer),
6423 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6424 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6425 msm_routing_put_audio_mixer),
6426 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6427 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6428 msm_routing_put_audio_mixer),
6429 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6430 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6431 msm_routing_put_audio_mixer),
6432 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6433 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6434 msm_routing_put_audio_mixer),
6435 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6436 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6437 msm_routing_put_audio_mixer),
6438};
6439
6440static const struct snd_kcontrol_new quat_tdm_tx_0_mixer_controls[] = {
6441 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6442 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6443 msm_routing_put_audio_mixer),
6444 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6445 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6446 msm_routing_put_audio_mixer),
6447 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6448 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6449 msm_routing_put_audio_mixer),
6450 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6451 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6452 msm_routing_put_audio_mixer),
6453 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6454 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6455 msm_routing_put_audio_mixer),
6456 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6457 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6458 msm_routing_put_audio_mixer),
6459 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6460 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6461 msm_routing_put_audio_mixer),
6462 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6463 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6464 msm_routing_put_audio_mixer),
6465 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6466 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6467 msm_routing_put_audio_mixer),
6468 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6469 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6470 msm_routing_put_audio_mixer),
6471 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6472 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6473 msm_routing_put_audio_mixer),
6474 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6475 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6476 msm_routing_put_audio_mixer),
6477 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6478 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6479 msm_routing_put_audio_mixer),
6480 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6481 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6482 msm_routing_put_audio_mixer),
6483 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6484 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6485 msm_routing_put_audio_mixer),
6486 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6487 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6488 msm_routing_put_audio_mixer),
6489};
6490
6491static const struct snd_kcontrol_new quat_tdm_rx_1_mixer_controls[] = {
6492 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6493 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6494 msm_routing_put_audio_mixer),
6495 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6496 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6497 msm_routing_put_audio_mixer),
6498 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6499 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6500 msm_routing_put_audio_mixer),
6501 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6502 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6503 msm_routing_put_audio_mixer),
6504 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6505 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6506 msm_routing_put_audio_mixer),
6507 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6508 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6509 msm_routing_put_audio_mixer),
6510 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6511 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6512 msm_routing_put_audio_mixer),
6513 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6514 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6515 msm_routing_put_audio_mixer),
6516 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6517 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6518 msm_routing_put_audio_mixer),
6519 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6520 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6521 msm_routing_put_audio_mixer),
6522 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6523 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6524 msm_routing_put_audio_mixer),
6525 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6526 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6527 msm_routing_put_audio_mixer),
6528 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6529 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6530 msm_routing_put_audio_mixer),
6531 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6532 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6533 msm_routing_put_audio_mixer),
6534 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6535 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6536 msm_routing_put_audio_mixer),
6537 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6538 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6539 msm_routing_put_audio_mixer),
6540 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6541 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6542 msm_routing_put_audio_mixer),
6543};
6544
6545static const struct snd_kcontrol_new quat_tdm_rx_2_mixer_controls[] = {
6546 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6547 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6548 msm_routing_put_audio_mixer),
6549 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6550 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6551 msm_routing_put_audio_mixer),
6552 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6553 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6554 msm_routing_put_audio_mixer),
6555 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6556 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6557 msm_routing_put_audio_mixer),
6558 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6559 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6560 msm_routing_put_audio_mixer),
6561 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6562 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6563 msm_routing_put_audio_mixer),
6564 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6565 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6566 msm_routing_put_audio_mixer),
6567 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6568 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6569 msm_routing_put_audio_mixer),
6570 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6571 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6572 msm_routing_put_audio_mixer),
6573 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6574 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6575 msm_routing_put_audio_mixer),
6576 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6577 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6578 msm_routing_put_audio_mixer),
6579 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6580 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6581 msm_routing_put_audio_mixer),
6582 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6583 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6584 msm_routing_put_audio_mixer),
6585 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6586 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6587 msm_routing_put_audio_mixer),
6588 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6589 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6590 msm_routing_put_audio_mixer),
6591 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6592 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6593 msm_routing_put_audio_mixer),
6594 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6595 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6596 msm_routing_put_audio_mixer),
6597};
6598
6599static const struct snd_kcontrol_new quat_tdm_rx_3_mixer_controls[] = {
6600 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6601 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6602 msm_routing_put_audio_mixer),
6603 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6604 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6605 msm_routing_put_audio_mixer),
6606 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6607 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6608 msm_routing_put_audio_mixer),
6609 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6610 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6611 msm_routing_put_audio_mixer),
6612 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6613 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6614 msm_routing_put_audio_mixer),
6615 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6616 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6617 msm_routing_put_audio_mixer),
6618 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6619 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6620 msm_routing_put_audio_mixer),
6621 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6622 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6623 msm_routing_put_audio_mixer),
6624 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6625 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6626 msm_routing_put_audio_mixer),
6627 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6628 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6629 msm_routing_put_audio_mixer),
6630 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6631 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6632 msm_routing_put_audio_mixer),
6633 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6634 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6635 msm_routing_put_audio_mixer),
6636 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6637 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6638 msm_routing_put_audio_mixer),
6639 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6640 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6641 msm_routing_put_audio_mixer),
6642 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6643 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6644 msm_routing_put_audio_mixer),
6645 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6646 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6647 msm_routing_put_audio_mixer),
6648 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6649 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6650 msm_routing_put_audio_mixer),
6651};
6652
Rohit Kumara5077932017-09-10 22:05:05 +05306653static const struct snd_kcontrol_new quin_tdm_rx_0_mixer_controls[] = {
6654 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6655 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6656 msm_routing_put_audio_mixer),
6657 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6658 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6659 msm_routing_put_audio_mixer),
6660 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6661 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6662 msm_routing_put_audio_mixer),
6663 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6664 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6665 msm_routing_put_audio_mixer),
6666 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6667 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6668 msm_routing_put_audio_mixer),
6669 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6670 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6671 msm_routing_put_audio_mixer),
6672 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6673 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6674 msm_routing_put_audio_mixer),
6675 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6676 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6677 msm_routing_put_audio_mixer),
6678 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6679 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6680 msm_routing_put_audio_mixer),
6681 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6682 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6683 msm_routing_put_audio_mixer),
6684 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6685 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6686 msm_routing_put_audio_mixer),
6687 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6688 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6689 msm_routing_put_audio_mixer),
6690 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6691 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6692 msm_routing_put_audio_mixer),
6693 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6694 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6695 msm_routing_put_audio_mixer),
6696 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6697 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6698 msm_routing_put_audio_mixer),
6699 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6700 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6701 msm_routing_put_audio_mixer),
6702 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6703 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6704 msm_routing_put_audio_mixer),
6705};
6706
6707static const struct snd_kcontrol_new quin_tdm_tx_0_mixer_controls[] = {
6708 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6709 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6710 msm_routing_put_audio_mixer),
6711 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6712 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6713 msm_routing_put_audio_mixer),
6714 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6715 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6716 msm_routing_put_audio_mixer),
6717 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6718 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6719 msm_routing_put_audio_mixer),
6720 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6721 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6722 msm_routing_put_audio_mixer),
6723 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6724 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6725 msm_routing_put_audio_mixer),
6726 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6727 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6728 msm_routing_put_audio_mixer),
6729 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6730 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6731 msm_routing_put_audio_mixer),
6732 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6733 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6734 msm_routing_put_audio_mixer),
6735 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6736 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6737 msm_routing_put_audio_mixer),
6738 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6739 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6740 msm_routing_put_audio_mixer),
6741 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6742 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6743 msm_routing_put_audio_mixer),
6744 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6745 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6746 msm_routing_put_audio_mixer),
6747 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6748 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6749 msm_routing_put_audio_mixer),
6750 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6751 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6752 msm_routing_put_audio_mixer),
6753 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6754 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6755 msm_routing_put_audio_mixer),
6756};
6757
6758static const struct snd_kcontrol_new quin_tdm_rx_1_mixer_controls[] = {
6759 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6760 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6761 msm_routing_put_audio_mixer),
6762 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6763 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6764 msm_routing_put_audio_mixer),
6765 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6766 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6767 msm_routing_put_audio_mixer),
6768 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6769 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6770 msm_routing_put_audio_mixer),
6771 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6772 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6773 msm_routing_put_audio_mixer),
6774 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6775 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6776 msm_routing_put_audio_mixer),
6777 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6778 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6779 msm_routing_put_audio_mixer),
6780 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6781 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6782 msm_routing_put_audio_mixer),
6783 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6784 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6785 msm_routing_put_audio_mixer),
6786 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6787 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6788 msm_routing_put_audio_mixer),
6789 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6790 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6791 msm_routing_put_audio_mixer),
6792 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6793 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6794 msm_routing_put_audio_mixer),
6795 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6796 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6797 msm_routing_put_audio_mixer),
6798 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6799 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6800 msm_routing_put_audio_mixer),
6801 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6802 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6803 msm_routing_put_audio_mixer),
6804 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6805 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6806 msm_routing_put_audio_mixer),
6807 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6808 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6809 msm_routing_put_audio_mixer),
6810};
6811
6812static const struct snd_kcontrol_new quin_tdm_rx_2_mixer_controls[] = {
6813 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6814 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6815 msm_routing_put_audio_mixer),
6816 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6817 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6818 msm_routing_put_audio_mixer),
6819 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6820 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6821 msm_routing_put_audio_mixer),
6822 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6823 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6824 msm_routing_put_audio_mixer),
6825 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6826 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6827 msm_routing_put_audio_mixer),
6828 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6829 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6830 msm_routing_put_audio_mixer),
6831 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6832 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6833 msm_routing_put_audio_mixer),
6834 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6835 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6836 msm_routing_put_audio_mixer),
6837 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6838 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6839 msm_routing_put_audio_mixer),
6840 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6841 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6842 msm_routing_put_audio_mixer),
6843 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6844 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6845 msm_routing_put_audio_mixer),
6846 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6847 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6848 msm_routing_put_audio_mixer),
6849 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6850 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6851 msm_routing_put_audio_mixer),
6852 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6853 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6854 msm_routing_put_audio_mixer),
6855 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6856 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6857 msm_routing_put_audio_mixer),
6858 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6859 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6860 msm_routing_put_audio_mixer),
6861 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6862 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6863 msm_routing_put_audio_mixer),
6864};
6865
6866static const struct snd_kcontrol_new quin_tdm_rx_3_mixer_controls[] = {
6867 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6868 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6869 msm_routing_put_audio_mixer),
6870 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6871 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6872 msm_routing_put_audio_mixer),
6873 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6874 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6875 msm_routing_put_audio_mixer),
6876 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6877 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6878 msm_routing_put_audio_mixer),
6879 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6880 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6881 msm_routing_put_audio_mixer),
6882 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6883 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6884 msm_routing_put_audio_mixer),
6885 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6886 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6887 msm_routing_put_audio_mixer),
6888 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6889 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6890 msm_routing_put_audio_mixer),
6891 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6892 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6893 msm_routing_put_audio_mixer),
6894 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6895 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6896 msm_routing_put_audio_mixer),
6897 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6898 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6899 msm_routing_put_audio_mixer),
6900 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6901 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6902 msm_routing_put_audio_mixer),
6903 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6904 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6905 msm_routing_put_audio_mixer),
6906 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6907 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6908 msm_routing_put_audio_mixer),
6909 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6910 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6911 msm_routing_put_audio_mixer),
6912 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6913 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6914 msm_routing_put_audio_mixer),
6915 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6916 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6917 msm_routing_put_audio_mixer),
6918};
6919
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306920static const struct snd_kcontrol_new mmul1_mixer_controls[] = {
6921 SOC_SINGLE_EXT("PRI_TX", MSM_BACKEND_DAI_PRI_I2S_TX,
6922 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6923 msm_routing_put_audio_mixer),
6924 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
6925 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6926 msm_routing_put_audio_mixer),
6927 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
6928 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6929 msm_routing_put_audio_mixer),
6930 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
6931 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6932 msm_routing_put_audio_mixer),
6933 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
6934 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6935 msm_routing_put_audio_mixer),
6936 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
6937 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6938 msm_routing_put_audio_mixer),
6939 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
6940 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6941 msm_routing_put_audio_mixer),
6942 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
6943 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6944 msm_routing_put_audio_mixer),
6945 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
6946 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6947 msm_routing_put_audio_mixer),
6948 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
6949 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6950 msm_routing_put_audio_mixer),
6951 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
6952 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6953 msm_routing_put_audio_mixer),
6954 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
6955 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6956 msm_routing_put_audio_mixer),
6957 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
6958 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6959 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05306960 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
6961 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6962 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306963 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
6964 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6965 msm_routing_put_audio_mixer),
6966 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
6967 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6968 msm_routing_put_audio_mixer),
6969 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
6970 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6971 msm_routing_put_audio_mixer),
6972 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
6973 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6974 msm_routing_put_audio_mixer),
6975 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
6976 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6977 msm_routing_put_audio_mixer),
6978 SOC_SINGLE_EXT("SLIM_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
6979 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6980 msm_routing_put_audio_mixer),
6981 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
6982 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6983 msm_routing_put_audio_mixer),
6984 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_TX,
6985 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6986 msm_routing_put_audio_mixer),
6987 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
6988 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6989 msm_routing_put_audio_mixer),
6990 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
6991 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6992 msm_routing_put_audio_mixer),
6993 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
6994 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6995 msm_routing_put_audio_mixer),
6996 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
6997 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6998 msm_routing_put_audio_mixer),
6999 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7000 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7001 msm_routing_put_audio_mixer),
7002 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7003 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7004 msm_routing_put_audio_mixer),
7005 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7006 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7007 msm_routing_put_audio_mixer),
7008 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7009 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7010 msm_routing_put_audio_mixer),
7011 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7012 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7013 msm_routing_put_audio_mixer),
7014 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7015 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7016 msm_routing_put_audio_mixer),
7017 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7018 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7019 msm_routing_put_audio_mixer),
7020 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7021 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7022 msm_routing_put_audio_mixer),
7023 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7024 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7025 msm_routing_put_audio_mixer),
7026 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7027 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7028 msm_routing_put_audio_mixer),
7029 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7030 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7031 msm_routing_put_audio_mixer),
7032 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7033 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7034 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307035 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7036 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7037 msm_routing_put_audio_mixer),
7038 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7039 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7040 msm_routing_put_audio_mixer),
7041 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7042 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7043 msm_routing_put_audio_mixer),
7044 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7045 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7046 msm_routing_put_audio_mixer),
Raja Mallik425e1d32018-05-20 19:21:10 +05307047 SOC_SINGLE_EXT("AFE_LOOPBACK_TX", MSM_BACKEND_DAI_AFE_LOOPBACK_TX,
7048 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7049 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307050 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
7051 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7052 msm_routing_put_audio_mixer),
7053 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
7054 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7055 msm_routing_put_audio_mixer),
7056 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7057 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7058 msm_routing_put_audio_mixer),
7059};
7060
7061static const struct snd_kcontrol_new mmul2_mixer_controls[] = {
7062 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7063 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7064 msm_routing_put_audio_mixer),
7065 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
7066 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7067 msm_routing_put_audio_mixer),
7068 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7069 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7070 msm_routing_put_audio_mixer),
7071 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7072 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7073 msm_routing_put_audio_mixer),
7074 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7075 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7076 msm_routing_put_audio_mixer),
7077 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7078 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7079 msm_routing_put_audio_mixer),
7080 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7081 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7082 msm_routing_put_audio_mixer),
7083 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7084 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7085 msm_routing_put_audio_mixer),
7086 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7087 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7088 msm_routing_put_audio_mixer),
7089 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
7090 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7091 msm_routing_put_audio_mixer),
7092 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
7093 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7094 msm_routing_put_audio_mixer),
7095 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_TX,
7096 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7097 msm_routing_put_audio_mixer),
7098 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7099 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7100 msm_routing_put_audio_mixer),
7101 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7102 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7103 msm_routing_put_audio_mixer),
7104 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7105 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7106 msm_routing_put_audio_mixer),
7107 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7108 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7109 msm_routing_put_audio_mixer),
7110 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7111 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7112 msm_routing_put_audio_mixer),
7113 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7114 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7115 msm_routing_put_audio_mixer),
7116 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7117 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7118 msm_routing_put_audio_mixer),
7119 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7120 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7121 msm_routing_put_audio_mixer),
7122 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7123 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7124 msm_routing_put_audio_mixer),
7125 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7126 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7127 msm_routing_put_audio_mixer),
7128 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7129 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7130 msm_routing_put_audio_mixer),
7131 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7132 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7133 msm_routing_put_audio_mixer),
7134 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7135 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7136 msm_routing_put_audio_mixer),
7137 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7138 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7139 msm_routing_put_audio_mixer),
7140 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7141 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7142 msm_routing_put_audio_mixer),
7143 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7144 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7145 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307146 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7147 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7148 msm_routing_put_audio_mixer),
Raja Mallik425e1d32018-05-20 19:21:10 +05307149 SOC_SINGLE_EXT("AFE_LOOPBACK_TX", MSM_BACKEND_DAI_AFE_LOOPBACK_TX,
7150 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7151 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307152 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7153 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7154 msm_routing_put_audio_mixer),
7155 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7156 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7157 msm_routing_put_audio_mixer),
7158 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7159 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7160 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307161 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
7162 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7163 msm_routing_put_audio_mixer),
7164 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7165 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7166 msm_routing_put_audio_mixer),
7167};
7168
7169static const struct snd_kcontrol_new mmul3_mixer_controls[] = {
7170 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7171 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7172 msm_routing_put_audio_mixer),
7173 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7174 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7175 msm_routing_put_audio_mixer),
7176 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
7177 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7178 msm_routing_put_audio_mixer),
7179 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7180 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7181 msm_routing_put_audio_mixer),
7182 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7183 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7184 msm_routing_put_audio_mixer),
7185 SOC_SINGLE_EXT("AUX_PCM_TX", MSM_BACKEND_DAI_AUXPCM_TX,
7186 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7187 msm_routing_put_audio_mixer),
7188 SOC_SINGLE_EXT("SEC_AUX_PCM_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
7189 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7190 msm_routing_put_audio_mixer),
7191 SOC_SINGLE_EXT("TERT_AUX_PCM_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
7192 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7193 msm_routing_put_audio_mixer),
7194 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
7195 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7196 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307197 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
7198 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7199 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307200 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7201 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7202 msm_routing_put_audio_mixer),
7203 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7204 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7205 msm_routing_put_audio_mixer),
7206 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7207 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7208 msm_routing_put_audio_mixer),
7209 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7210 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7211 msm_routing_put_audio_mixer),
7212 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7213 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7214 msm_routing_put_audio_mixer),
7215 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7216 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7217 msm_routing_put_audio_mixer),
7218 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7219 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7220 msm_routing_put_audio_mixer),
7221 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7222 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7223 msm_routing_put_audio_mixer),
7224 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7225 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7226 msm_routing_put_audio_mixer),
7227 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7228 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7229 msm_routing_put_audio_mixer),
7230 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7231 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7232 msm_routing_put_audio_mixer),
7233 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7234 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7235 msm_routing_put_audio_mixer),
7236 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7237 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7238 msm_routing_put_audio_mixer),
7239 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7240 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7241 msm_routing_put_audio_mixer),
7242 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7243 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7244 msm_routing_put_audio_mixer),
7245 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7246 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7247 msm_routing_put_audio_mixer),
7248 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7249 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7250 msm_routing_put_audio_mixer),
7251 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7252 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7253 msm_routing_put_audio_mixer),
7254 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7255 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7256 msm_routing_put_audio_mixer),
7257 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7258 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7259 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307260 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7261 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7262 msm_routing_put_audio_mixer),
7263 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7264 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7265 msm_routing_put_audio_mixer),
7266 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7267 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7268 msm_routing_put_audio_mixer),
7269 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7270 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7271 msm_routing_put_audio_mixer),
Raja Mallik425e1d32018-05-20 19:21:10 +05307272 SOC_SINGLE_EXT("AFE_LOOPBACK_TX", MSM_BACKEND_DAI_AFE_LOOPBACK_TX,
7273 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7274 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307275};
7276
7277static const struct snd_kcontrol_new mmul4_mixer_controls[] = {
7278 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7279 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7280 msm_routing_put_audio_mixer),
7281 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7282 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7283 msm_routing_put_audio_mixer),
7284 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7285 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7286 msm_routing_put_audio_mixer),
7287 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7288 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7289 msm_routing_put_audio_mixer),
7290 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7291 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7292 msm_routing_put_audio_mixer),
7293 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7294 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7295 msm_routing_put_audio_mixer),
7296 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7297 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7298 msm_routing_put_audio_mixer),
7299 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7300 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7301 msm_routing_put_audio_mixer),
7302 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7303 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7304 msm_routing_put_audio_mixer),
7305 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7306 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7307 msm_routing_put_audio_mixer),
7308 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7309 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7310 msm_routing_put_audio_mixer),
7311 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7312 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7313 msm_routing_put_audio_mixer),
7314 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7315 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7316 msm_routing_put_audio_mixer),
7317 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7318 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7319 msm_routing_put_audio_mixer),
7320 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7321 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7322 msm_routing_put_audio_mixer),
7323 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7324 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7325 msm_routing_put_audio_mixer),
7326 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7327 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7328 msm_routing_put_audio_mixer),
7329 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7330 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7331 msm_routing_put_audio_mixer),
7332 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7333 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7334 msm_routing_put_audio_mixer),
7335 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7336 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7337 msm_routing_put_audio_mixer),
7338 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7339 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7340 msm_routing_put_audio_mixer),
7341 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7342 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7343 msm_routing_put_audio_mixer),
7344 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7345 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7346 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307347 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7348 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7349 msm_routing_put_audio_mixer),
7350 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7351 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7352 msm_routing_put_audio_mixer),
7353 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7354 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7355 msm_routing_put_audio_mixer),
7356 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7357 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7358 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307359 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7360 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7361 msm_routing_put_audio_mixer),
7362 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7363 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7364 msm_routing_put_audio_mixer),
7365 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7366 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7367 msm_routing_put_audio_mixer),
7368 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7369 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7370 msm_routing_put_audio_mixer),
7371 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7372 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7373 msm_routing_put_audio_mixer),
Raja Mallik425e1d32018-05-20 19:21:10 +05307374 SOC_SINGLE_EXT("AFE_LOOPBACK_TX", MSM_BACKEND_DAI_AFE_LOOPBACK_TX,
7375 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7376 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307377 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7378 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7379 msm_routing_put_audio_mixer),
7380};
7381
7382static const struct snd_kcontrol_new mmul5_mixer_controls[] = {
7383 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7384 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7385 msm_routing_put_audio_mixer),
7386 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7387 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7388 msm_routing_put_audio_mixer),
7389 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
7390 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7391 msm_routing_put_audio_mixer),
7392 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7393 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7394 msm_routing_put_audio_mixer),
7395 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7396 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7397 msm_routing_put_audio_mixer),
7398 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
7399 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7400 msm_routing_put_audio_mixer),
7401 SOC_SINGLE_EXT("SEC_AUX_PCM_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
7402 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7403 msm_routing_put_audio_mixer),
7404 SOC_SINGLE_EXT("TERT_AUX_PCM_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
7405 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7406 msm_routing_put_audio_mixer),
7407 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
7408 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7409 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307410 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
7411 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7412 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307413 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7414 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7415 msm_routing_put_audio_mixer),
7416 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7417 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7418 msm_routing_put_audio_mixer),
7419 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7420 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7421 msm_routing_put_audio_mixer),
7422 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7423 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7424 msm_routing_put_audio_mixer),
7425 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7426 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7427 msm_routing_put_audio_mixer),
7428 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7429 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7430 msm_routing_put_audio_mixer),
7431 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7432 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7433 msm_routing_put_audio_mixer),
7434 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7435 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7436 msm_routing_put_audio_mixer),
7437 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7438 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7439 msm_routing_put_audio_mixer),
7440 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7441 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7442 msm_routing_put_audio_mixer),
7443 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7444 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7445 msm_routing_put_audio_mixer),
7446 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7447 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7448 msm_routing_put_audio_mixer),
7449 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7450 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7451 msm_routing_put_audio_mixer),
7452 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7453 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7454 msm_routing_put_audio_mixer),
7455 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7456 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7457 msm_routing_put_audio_mixer),
7458 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7459 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7460 msm_routing_put_audio_mixer),
7461 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7462 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7463 msm_routing_put_audio_mixer),
7464 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7465 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7466 msm_routing_put_audio_mixer),
7467 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7468 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7469 msm_routing_put_audio_mixer),
7470 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7471 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7472 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307473 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7474 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7475 msm_routing_put_audio_mixer),
7476 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7477 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7478 msm_routing_put_audio_mixer),
7479 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7480 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7481 msm_routing_put_audio_mixer),
7482 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7483 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7484 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307485 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7486 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7487 msm_routing_put_audio_mixer),
7488 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7489 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7490 msm_routing_put_audio_mixer),
Raja Mallik425e1d32018-05-20 19:21:10 +05307491 SOC_SINGLE_EXT("AFE_LOOPBACK_TX", MSM_BACKEND_DAI_AFE_LOOPBACK_TX,
7492 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7493 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307494 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
7495 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7496 msm_routing_put_audio_mixer),
7497 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
7498 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7499 msm_routing_put_audio_mixer),
7500 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7501 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7502 msm_routing_put_audio_mixer),
7503};
7504
7505static const struct snd_kcontrol_new mmul6_mixer_controls[] = {
7506 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7507 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7508 msm_routing_put_audio_mixer),
7509 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7510 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7511 msm_routing_put_audio_mixer),
7512 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7513 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7514 msm_routing_put_audio_mixer),
7515 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7516 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7517 msm_routing_put_audio_mixer),
7518 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7519 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7520 msm_routing_put_audio_mixer),
7521 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7522 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7523 msm_routing_put_audio_mixer),
7524 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7525 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7526 msm_routing_put_audio_mixer),
7527 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7528 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7529 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307530 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_TX,
7531 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7532 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307533 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
7534 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7535 msm_routing_put_audio_mixer),
7536 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
7537 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7538 msm_routing_put_audio_mixer),
7539 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
7540 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7541 msm_routing_put_audio_mixer),
7542 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
7543 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7544 msm_routing_put_audio_mixer),
7545 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7546 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7547 msm_routing_put_audio_mixer),
7548 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7549 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7550 msm_routing_put_audio_mixer),
7551 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7552 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7553 msm_routing_put_audio_mixer),
7554 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7555 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7556 msm_routing_put_audio_mixer),
7557 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7558 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7559 msm_routing_put_audio_mixer),
7560 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7561 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7562 msm_routing_put_audio_mixer),
7563 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7564 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7565 msm_routing_put_audio_mixer),
7566 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7567 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7568 msm_routing_put_audio_mixer),
7569 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7570 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7571 msm_routing_put_audio_mixer),
7572 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7573 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7574 msm_routing_put_audio_mixer),
7575 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7576 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7577 msm_routing_put_audio_mixer),
7578 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7579 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7580 msm_routing_put_audio_mixer),
7581 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7582 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7583 msm_routing_put_audio_mixer),
7584 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7585 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7586 msm_routing_put_audio_mixer),
7587 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7588 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7589 msm_routing_put_audio_mixer),
7590 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7591 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7592 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307593 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7594 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7595 msm_routing_put_audio_mixer),
7596 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7597 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7598 msm_routing_put_audio_mixer),
7599 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7600 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7601 msm_routing_put_audio_mixer),
7602 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7603 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7604 msm_routing_put_audio_mixer),
Raja Mallik425e1d32018-05-20 19:21:10 +05307605 SOC_SINGLE_EXT("AFE_LOOPBACK_TX", MSM_BACKEND_DAI_AFE_LOOPBACK_TX,
7606 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7607 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307608 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7609 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7610 msm_routing_put_audio_mixer),
7611};
7612
7613static const struct snd_kcontrol_new mmul8_mixer_controls[] = {
7614 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7615 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7616 msm_routing_put_audio_mixer),
7617 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7618 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7619 msm_routing_put_audio_mixer),
7620 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7621 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7622 msm_routing_put_audio_mixer),
7623 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7624 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7625 msm_routing_put_audio_mixer),
7626 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7627 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7628 msm_routing_put_audio_mixer),
7629 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7630 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7631 msm_routing_put_audio_mixer),
7632 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7633 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7634 msm_routing_put_audio_mixer),
7635 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7636 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7637 msm_routing_put_audio_mixer),
7638 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7639 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7640 msm_routing_put_audio_mixer),
7641 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7642 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7643 msm_routing_put_audio_mixer),
7644 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7645 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7646 msm_routing_put_audio_mixer),
7647 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7648 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7649 msm_routing_put_audio_mixer),
7650 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
7651 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7652 msm_routing_put_audio_mixer),
7653 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7654 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7655 msm_routing_put_audio_mixer),
7656 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7657 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7658 msm_routing_put_audio_mixer),
7659 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7660 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7661 msm_routing_put_audio_mixer),
7662 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7663 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7664 msm_routing_put_audio_mixer),
7665 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7666 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7667 msm_routing_put_audio_mixer),
7668 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7669 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7670 msm_routing_put_audio_mixer),
7671 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7672 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7673 msm_routing_put_audio_mixer),
7674 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7675 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7676 msm_routing_put_audio_mixer),
7677 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7678 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7679 msm_routing_put_audio_mixer),
7680 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7681 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7682 msm_routing_put_audio_mixer),
7683 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7684 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7685 msm_routing_put_audio_mixer),
7686 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7687 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7688 msm_routing_put_audio_mixer),
7689 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7690 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7691 msm_routing_put_audio_mixer),
7692 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7693 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7694 msm_routing_put_audio_mixer),
7695 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7696 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7697 msm_routing_put_audio_mixer),
7698 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7699 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7700 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307701 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7702 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7703 msm_routing_put_audio_mixer),
7704 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7705 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7706 msm_routing_put_audio_mixer),
7707 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7708 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7709 msm_routing_put_audio_mixer),
7710 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7711 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7712 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307713 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
7714 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7715 msm_routing_put_audio_mixer),
7716 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7717 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7718 msm_routing_put_audio_mixer),
7719};
7720
Asish Bhattacharya34504582017-08-08 12:55:01 +05307721static const struct snd_kcontrol_new mmul16_mixer_controls[] = {
7722 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7723 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7724 msm_routing_put_audio_mixer),
7725 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7726 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7727 msm_routing_put_audio_mixer),
7728 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7729 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7730 msm_routing_put_audio_mixer),
7731 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7732 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7733 msm_routing_put_audio_mixer),
7734 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7735 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7736 msm_routing_put_audio_mixer),
7737 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7738 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7739 msm_routing_put_audio_mixer),
7740 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7741 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7742 msm_routing_put_audio_mixer),
7743 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7744 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7745 msm_routing_put_audio_mixer),
7746 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7747 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7748 msm_routing_put_audio_mixer),
7749 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7750 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7751 msm_routing_put_audio_mixer),
7752 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7753 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7754 msm_routing_put_audio_mixer),
7755 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7756 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7757 msm_routing_put_audio_mixer),
7758 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
7759 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7760 msm_routing_put_audio_mixer),
7761 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7762 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7763 msm_routing_put_audio_mixer),
7764 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7765 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7766 msm_routing_put_audio_mixer),
7767 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7768 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7769 msm_routing_put_audio_mixer),
7770 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7771 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7772 msm_routing_put_audio_mixer),
7773 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7774 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7775 msm_routing_put_audio_mixer),
7776 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7777 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7778 msm_routing_put_audio_mixer),
7779 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7780 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7781 msm_routing_put_audio_mixer),
7782 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7783 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7784 msm_routing_put_audio_mixer),
7785 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7786 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7787 msm_routing_put_audio_mixer),
7788 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7789 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7790 msm_routing_put_audio_mixer),
7791 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7792 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7793 msm_routing_put_audio_mixer),
7794 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7795 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7796 msm_routing_put_audio_mixer),
7797 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7798 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7799 msm_routing_put_audio_mixer),
7800 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7801 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7802 msm_routing_put_audio_mixer),
7803 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7804 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7805 msm_routing_put_audio_mixer),
7806 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7807 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7808 msm_routing_put_audio_mixer),
Raja Mallik425e1d32018-05-20 19:21:10 +05307809 SOC_SINGLE_EXT("AFE_LOOPBACK_TX", MSM_BACKEND_DAI_AFE_LOOPBACK_TX,
7810 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7811 msm_routing_put_audio_mixer),
Asish Bhattacharya34504582017-08-08 12:55:01 +05307812 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
7813 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7814 msm_routing_put_audio_mixer),
7815 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7816 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7817 msm_routing_put_audio_mixer),
7818 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
7819 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7820 msm_routing_put_audio_mixer),
7821 SOC_SINGLE_EXT("AUX_PCM_TX", MSM_BACKEND_DAI_AUXPCM_TX,
7822 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7823 msm_routing_put_audio_mixer),
7824 SOC_SINGLE_EXT("SEC_AUX_PCM_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
7825 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7826 msm_routing_put_audio_mixer),
7827 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
7828 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7829 msm_routing_put_audio_mixer),
7830};
7831
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307832static const struct snd_kcontrol_new mmul9_mixer_controls[] = {
7833 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7834 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7835 msm_routing_put_audio_mixer),
7836 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7837 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7838 msm_routing_put_audio_mixer),
7839 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7840 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7841 msm_routing_put_audio_mixer),
7842 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7843 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7844 msm_routing_put_audio_mixer),
7845 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7846 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7847 msm_routing_put_audio_mixer),
7848 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7849 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7850 msm_routing_put_audio_mixer),
7851 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7852 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7853 msm_routing_put_audio_mixer),
7854 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
7855 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7856 msm_routing_put_audio_mixer),
7857 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7858 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7859 msm_routing_put_audio_mixer),
7860 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7861 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7862 msm_routing_put_audio_mixer),
7863 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7864 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7865 msm_routing_put_audio_mixer),
7866 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7867 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7868 msm_routing_put_audio_mixer),
7869 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7870 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7871 msm_routing_put_audio_mixer),
7872 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7873 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7874 msm_routing_put_audio_mixer),
7875 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7876 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7877 msm_routing_put_audio_mixer),
7878 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7879 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7880 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307881 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7882 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7883 msm_routing_put_audio_mixer),
7884 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7885 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7886 msm_routing_put_audio_mixer),
7887 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7888 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7889 msm_routing_put_audio_mixer),
7890 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7891 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7892 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307893};
7894
Laxminath Kasam38070be2017-08-17 18:21:59 +05307895static const struct snd_kcontrol_new mmul10_mixer_controls[] = {
7896 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7897 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7898 msm_routing_put_audio_mixer),
7899 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7900 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7901 msm_routing_put_audio_mixer),
7902 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7903 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7904 msm_routing_put_audio_mixer),
7905 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7906 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7907 msm_routing_put_audio_mixer),
7908 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7909 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7910 msm_routing_put_audio_mixer),
7911 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7912 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7913 msm_routing_put_audio_mixer),
7914 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7915 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7916 msm_routing_put_audio_mixer),
7917 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
7918 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7919 msm_routing_put_audio_mixer),
Vikram Panduranga72863152017-09-06 15:47:35 -07007920 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
7921 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7922 msm_routing_put_audio_mixer),
Laxminath Kasam38070be2017-08-17 18:21:59 +05307923 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7924 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7925 msm_routing_put_audio_mixer),
7926 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7927 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7928 msm_routing_put_audio_mixer),
7929 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7930 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7931 msm_routing_put_audio_mixer),
7932 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7933 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7934 msm_routing_put_audio_mixer),
7935 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7936 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7937 msm_routing_put_audio_mixer),
7938 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7939 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7940 msm_routing_put_audio_mixer),
7941 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7942 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7943 msm_routing_put_audio_mixer),
7944 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7945 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7946 msm_routing_put_audio_mixer),
7947 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7948 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7949 msm_routing_put_audio_mixer),
Vikram Panduranga016c49f2017-09-11 15:15:56 -07007950 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
7951 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7952 msm_routing_put_audio_mixer),
7953 SOC_SINGLE_EXT("AUX_PCM_TX", MSM_BACKEND_DAI_AUXPCM_TX,
Raja Mallik425e1d32018-05-20 19:21:10 +05307954 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7955 msm_routing_put_audio_mixer),
7956 SOC_SINGLE_EXT("AFE_LOOPBACK_TX", MSM_BACKEND_DAI_AFE_LOOPBACK_TX,
Vikram Panduranga016c49f2017-09-11 15:15:56 -07007957 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7958 msm_routing_put_audio_mixer),
7959 SOC_SINGLE_EXT("SEC_AUX_PCM_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
7960 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7961 msm_routing_put_audio_mixer),
7962 SOC_SINGLE_EXT("TERT_AUX_PCM_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
7963 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7964 msm_routing_put_audio_mixer),
7965 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
7966 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7967 msm_routing_put_audio_mixer),
7968 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7969 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7970 msm_routing_put_audio_mixer),
7971 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7972 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7973 msm_routing_put_audio_mixer),
7974 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7975 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7976 msm_routing_put_audio_mixer),
Laxminath Kasam38070be2017-08-17 18:21:59 +05307977};
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307978static const struct snd_kcontrol_new mmul17_mixer_controls[] = {
7979 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7980 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7981 msm_routing_put_audio_mixer),
7982 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7983 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7984 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05307985 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7986 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7987 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307988 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7989 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7990 msm_routing_put_audio_mixer),
7991 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7992 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7993 msm_routing_put_audio_mixer),
7994 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7995 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7996 msm_routing_put_audio_mixer),
7997 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7998 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7999 msm_routing_put_audio_mixer),
8000 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
8001 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
8002 msm_routing_put_audio_mixer),
8003};
8004
8005static const struct snd_kcontrol_new mmul18_mixer_controls[] = {
8006 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8007 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
8008 msm_routing_put_audio_mixer),
8009 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
8010 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
8011 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05308012 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
8013 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
8014 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308015 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
8016 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
8017 msm_routing_put_audio_mixer),
8018 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
8019 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
8020 msm_routing_put_audio_mixer),
8021 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
8022 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
8023 msm_routing_put_audio_mixer),
8024 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
8025 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
8026 msm_routing_put_audio_mixer),
8027 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
8028 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
8029 msm_routing_put_audio_mixer),
8030 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
8031 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
8032 msm_routing_put_audio_mixer),
8033};
8034
8035static const struct snd_kcontrol_new mmul19_mixer_controls[] = {
8036 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8037 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
8038 msm_routing_put_audio_mixer),
8039 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
8040 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
8041 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05308042 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
8043 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
8044 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308045 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
8046 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
8047 msm_routing_put_audio_mixer),
8048 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
8049 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
8050 msm_routing_put_audio_mixer),
8051 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
8052 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
8053 msm_routing_put_audio_mixer),
8054 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
8055 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
8056 msm_routing_put_audio_mixer),
8057 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
8058 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
8059 msm_routing_put_audio_mixer),
8060};
8061
8062static const struct snd_kcontrol_new mmul20_mixer_controls[] = {
8063 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
8064 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8065 msm_routing_put_audio_mixer),
8066 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
8067 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8068 msm_routing_put_audio_mixer),
8069 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
8070 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8071 msm_routing_put_audio_mixer),
8072 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
8073 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8074 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308075 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_TX,
8076 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8077 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308078 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
8079 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8080 msm_routing_put_audio_mixer),
8081 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
8082 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8083 msm_routing_put_audio_mixer),
8084 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
8085 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8086 msm_routing_put_audio_mixer),
8087 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
8088 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8089 msm_routing_put_audio_mixer),
8090 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
8091 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8092 msm_routing_put_audio_mixer),
8093 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
8094 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8095 msm_routing_put_audio_mixer),
8096 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
8097 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8098 msm_routing_put_audio_mixer),
8099 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
8100 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8101 msm_routing_put_audio_mixer),
8102 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
8103 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8104 msm_routing_put_audio_mixer),
8105 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
8106 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8107 msm_routing_put_audio_mixer),
8108 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
8109 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8110 msm_routing_put_audio_mixer),
8111 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
8112 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8113 msm_routing_put_audio_mixer),
8114 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
8115 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8116 msm_routing_put_audio_mixer),
8117 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
8118 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8119 msm_routing_put_audio_mixer),
8120 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
8121 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8122 msm_routing_put_audio_mixer),
8123 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
8124 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8125 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308126 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
8127 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8128 msm_routing_put_audio_mixer),
8129 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
8130 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8131 msm_routing_put_audio_mixer),
8132 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
8133 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8134 msm_routing_put_audio_mixer),
8135 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
8136 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8137 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308138};
8139
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05308140static const struct snd_kcontrol_new mmul28_mixer_controls[] = {
8141 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8142 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
8143 msm_routing_put_audio_mixer),
8144 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
8145 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
8146 msm_routing_put_audio_mixer),
8147 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
8148 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
8149 msm_routing_put_audio_mixer),
8150 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
8151 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
8152 msm_routing_put_audio_mixer),
8153 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
8154 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
8155 msm_routing_put_audio_mixer),
8156 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
8157 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
8158 msm_routing_put_audio_mixer),
8159 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
8160 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
8161 msm_routing_put_audio_mixer),
8162 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
8163 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
8164 msm_routing_put_audio_mixer),
8165};
8166
8167static const struct snd_kcontrol_new mmul29_mixer_controls[] = {
8168 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8169 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
8170 msm_routing_put_audio_mixer),
8171 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
8172 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
8173 msm_routing_put_audio_mixer),
8174 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
8175 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
8176 msm_routing_put_audio_mixer),
8177 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
8178 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
8179 msm_routing_put_audio_mixer),
8180 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
8181 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
8182 msm_routing_put_audio_mixer),
8183 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
8184 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
8185 msm_routing_put_audio_mixer),
8186 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
8187 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
8188 msm_routing_put_audio_mixer),
8189 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
8190 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
8191 msm_routing_put_audio_mixer),
8192};
8193
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308194static const struct snd_kcontrol_new pri_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308195 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_PRI_I2S_RX,
8196 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8197 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308198 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_PRI_I2S_RX,
8199 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8200 msm_routing_put_voice_mixer),
8201 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_PRI_I2S_RX,
8202 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8203 msm_routing_put_voice_mixer),
8204 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_PRI_I2S_RX,
8205 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8206 msm_routing_put_voice_mixer),
8207 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_PRI_I2S_RX,
8208 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8209 msm_routing_put_voice_mixer),
8210};
8211
8212static const struct snd_kcontrol_new sec_i2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308213 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SEC_I2S_RX,
8214 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8215 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308216 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SEC_I2S_RX,
8217 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8218 msm_routing_put_voice_mixer),
8219 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SEC_I2S_RX,
8220 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8221 msm_routing_put_voice_mixer),
8222};
8223
8224static const struct snd_kcontrol_new sec_mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308225 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
8226 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8227 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308228 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
8229 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8230 msm_routing_put_voice_mixer),
8231 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
8232 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8233 msm_routing_put_voice_mixer),
8234 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
8235 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8236 msm_routing_put_voice_mixer),
8237 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
8238 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8239 msm_routing_put_voice_mixer),
8240};
8241
8242static const struct snd_kcontrol_new slimbus_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308243 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8244 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8245 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308246 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8247 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8248 msm_routing_put_voice_mixer),
8249 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8250 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8251 msm_routing_put_voice_mixer),
8252 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8253 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8254 msm_routing_put_voice_mixer),
8255 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8256 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8257 msm_routing_put_voice_mixer),
8258};
8259
8260static const struct snd_kcontrol_new slimbus_6_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308261 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8262 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8263 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308264 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8265 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8266 msm_routing_put_voice_mixer),
8267 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8268 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8269 msm_routing_put_voice_mixer),
8270 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8271 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8272 msm_routing_put_voice_mixer),
8273 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8274 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8275 msm_routing_put_voice_mixer),
8276};
8277
8278static const struct snd_kcontrol_new usb_audio_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308279 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_USB_RX,
8280 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8281 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308282 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_USB_RX,
8283 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8284 msm_routing_put_voice_mixer),
8285 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_USB_RX,
8286 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8287 msm_routing_put_voice_mixer),
8288 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_USB_RX,
8289 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8290 msm_routing_put_voice_mixer),
8291 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_USB_RX,
8292 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8293 msm_routing_put_voice_mixer),
8294};
8295
Aalique Grahamee4fd7d52017-11-28 13:24:13 -08008296static const struct snd_kcontrol_new display_port_rx_voice_mixer_controls[] = {
8297 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
8298 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8299 msm_routing_put_voice_mixer),
Aalique Grahamee4fd7d52017-11-28 13:24:13 -08008300 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
8301 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8302 msm_routing_put_voice_mixer),
8303 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
8304 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8305 msm_routing_put_voice_mixer),
8306 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
8307 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8308 msm_routing_put_voice_mixer),
8309 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
8310 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8311 msm_routing_put_voice_mixer),
8312};
8313
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308314static const struct snd_kcontrol_new bt_sco_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308315 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8316 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8317 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308318 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8319 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8320 msm_routing_put_voice_mixer),
8321 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8322 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8323 msm_routing_put_voice_mixer),
8324 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8325 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8326 msm_routing_put_voice_mixer),
8327 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8328 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8329 msm_routing_put_voice_mixer),
8330};
8331
8332static const struct snd_kcontrol_new mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308333 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_MI2S_RX,
8334 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8335 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308336 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_MI2S_RX,
8337 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8338 msm_routing_put_voice_mixer),
8339 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_MI2S_RX,
8340 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8341 msm_routing_put_voice_mixer),
8342 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_MI2S_RX,
8343 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8344 msm_routing_put_voice_mixer),
8345 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_MI2S_RX,
8346 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8347 msm_routing_put_voice_mixer),
8348};
8349
8350static const struct snd_kcontrol_new pri_mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308351 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_PRI_MI2S_RX,
8352 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8353 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308354 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_PRI_MI2S_RX,
8355 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8356 msm_routing_put_voice_mixer),
8357 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_PRI_MI2S_RX,
8358 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8359 msm_routing_put_voice_mixer),
8360 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_PRI_MI2S_RX,
8361 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8362 msm_routing_put_voice_mixer),
8363 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_PRI_MI2S_RX,
8364 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8365 msm_routing_put_voice_mixer),
8366};
8367
8368static const struct snd_kcontrol_new int0_mi2s_rx_voice_mixer_controls[] = {
8369 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_INT0_MI2S_RX,
8370 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8371 msm_routing_put_voice_mixer),
8372 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_INT0_MI2S_RX,
8373 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8374 msm_routing_put_voice_mixer),
8375 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_INT0_MI2S_RX,
8376 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8377 msm_routing_put_voice_mixer),
8378 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_INT0_MI2S_RX,
8379 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8380 msm_routing_put_voice_mixer),
8381 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_INT0_MI2S_RX,
8382 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8383 msm_routing_put_voice_mixer),
8384};
8385
8386static const struct snd_kcontrol_new int4_mi2s_rx_voice_mixer_controls[] = {
8387 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_INT4_MI2S_RX,
8388 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8389 msm_routing_put_voice_mixer),
8390 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_INT4_MI2S_RX,
8391 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8392 msm_routing_put_voice_mixer),
8393 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_INT4_MI2S_RX,
8394 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8395 msm_routing_put_voice_mixer),
8396 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_INT4_MI2S_RX,
8397 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8398 msm_routing_put_voice_mixer),
8399 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_INT4_MI2S_RX,
8400 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8401 msm_routing_put_voice_mixer),
8402};
8403
8404static const struct snd_kcontrol_new tert_mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308405 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8406 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8407 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308408 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8409 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8410 msm_routing_put_voice_mixer),
8411 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8412 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8413 msm_routing_put_voice_mixer),
8414 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8415 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8416 msm_routing_put_voice_mixer),
8417 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8418 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8419 msm_routing_put_voice_mixer),
8420};
8421
8422static const struct snd_kcontrol_new quat_mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308423 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8424 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8425 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308426 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8427 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8428 msm_routing_put_voice_mixer),
8429 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8430 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8431 msm_routing_put_voice_mixer),
8432 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8433 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8434 msm_routing_put_voice_mixer),
8435 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8436 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8437 msm_routing_put_voice_mixer),
8438};
8439
8440static const struct snd_kcontrol_new quin_mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308441 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8442 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8443 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308444 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8445 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8446 msm_routing_put_voice_mixer),
8447 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8448 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8449 msm_routing_put_voice_mixer),
8450 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8451 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8452 msm_routing_put_voice_mixer),
8453 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8454 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8455 msm_routing_put_voice_mixer),
8456};
8457
8458static const struct snd_kcontrol_new afe_pcm_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308459 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_AFE_PCM_RX,
8460 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8461 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308462 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_AFE_PCM_RX,
8463 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8464 msm_routing_put_voice_mixer),
8465 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_AFE_PCM_RX,
8466 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8467 msm_routing_put_voice_mixer),
8468 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_AFE_PCM_RX,
8469 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8470 msm_routing_put_voice_mixer),
8471 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_AFE_PCM_RX,
8472 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8473 msm_routing_put_voice_mixer),
8474};
8475
8476static const struct snd_kcontrol_new aux_pcm_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308477 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_AUXPCM_RX,
8478 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8479 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308480 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_AUXPCM_RX,
8481 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8482 msm_routing_put_voice_mixer),
8483 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_AUXPCM_RX,
8484 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8485 msm_routing_put_voice_mixer),
8486 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_AUXPCM_RX,
8487 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8488 msm_routing_put_voice_mixer),
8489 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_AUXPCM_RX,
8490 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8491 msm_routing_put_voice_mixer),
8492};
8493
8494static const struct snd_kcontrol_new sec_aux_pcm_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308495 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8496 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8497 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308498 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8499 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8500 msm_routing_put_voice_mixer),
8501 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8502 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8503 msm_routing_put_voice_mixer),
8504 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8505 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8506 msm_routing_put_voice_mixer),
8507 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8508 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8509 msm_routing_put_voice_mixer),
8510};
8511
8512static const struct snd_kcontrol_new tert_aux_pcm_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308513 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8514 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8515 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308516 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8517 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8518 msm_routing_put_voice_mixer),
8519 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8520 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8521 msm_routing_put_voice_mixer),
8522 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8523 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8524 msm_routing_put_voice_mixer),
8525 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8526 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8527 msm_routing_put_voice_mixer),
8528};
8529
8530static const struct snd_kcontrol_new quat_aux_pcm_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308531 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8532 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8533 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308534 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8535 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8536 msm_routing_put_voice_mixer),
8537 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8538 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8539 msm_routing_put_voice_mixer),
8540 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8541 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8542 msm_routing_put_voice_mixer),
8543 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8544 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8545 msm_routing_put_voice_mixer),
8546};
8547
Rohit Kumara5077932017-09-10 22:05:05 +05308548static const struct snd_kcontrol_new quin_aux_pcm_rx_voice_mixer_controls[] = {
Rohit Kumara5077932017-09-10 22:05:05 +05308549 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
8550 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8551 msm_routing_put_voice_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308552 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
8553 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8554 msm_routing_put_voice_mixer),
8555 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
8556 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8557 msm_routing_put_voice_mixer),
8558 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
8559 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8560 msm_routing_put_voice_mixer),
8561 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
8562 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8563 msm_routing_put_voice_mixer),
8564};
8565
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308566static const struct snd_kcontrol_new hdmi_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308567 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_HDMI_RX,
8568 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8569 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308570 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_HDMI_RX,
8571 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8572 msm_routing_put_voice_mixer),
8573 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_HDMI_RX,
8574 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8575 msm_routing_put_voice_mixer),
8576 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_HDMI_RX,
8577 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8578 msm_routing_put_voice_mixer),
8579 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_HDMI_RX,
8580 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8581 msm_routing_put_voice_mixer),
8582};
8583
Raja Mallik321d5712018-05-04 17:22:11 +05308584static const struct snd_kcontrol_new pri_tdm_rx_0_voice_mixer_controls[] = {
8585 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_PRI_TDM_RX_0,
8586 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8587 msm_routing_put_voice_mixer),
8588 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_PRI_TDM_RX_0,
8589 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8590 msm_routing_put_voice_stub_mixer),
8591 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_PRI_TDM_RX_0,
8592 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8593 msm_routing_put_voice_stub_mixer),
8594 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_PRI_TDM_RX_0,
8595 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_mixer,
8596 msm_routing_put_voice_mixer),
8597 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_PRI_TDM_RX_0,
8598 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8599 msm_routing_put_voice_mixer),
8600 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_PRI_TDM_RX_0,
8601 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8602 msm_routing_put_voice_mixer),
8603 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_PRI_TDM_RX_0,
8604 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8605 msm_routing_put_voice_mixer),
8606 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_PRI_TDM_RX_0,
8607 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8608 msm_routing_put_voice_mixer),
8609};
8610
8611static const struct snd_kcontrol_new pri_tdm_rx_1_voice_mixer_controls[] = {
8612 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_PRI_TDM_RX_1,
8613 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8614 msm_routing_put_voice_mixer),
8615 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_PRI_TDM_RX_1,
8616 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8617 msm_routing_put_voice_stub_mixer),
8618 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_PRI_TDM_RX_1,
8619 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8620 msm_routing_put_voice_stub_mixer),
8621 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_PRI_TDM_RX_1,
8622 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_mixer,
8623 msm_routing_put_voice_mixer),
8624 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_PRI_TDM_RX_1,
8625 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8626 msm_routing_put_voice_mixer),
8627 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_PRI_TDM_RX_1,
8628 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8629 msm_routing_put_voice_mixer),
8630 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_PRI_TDM_RX_1,
8631 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8632 msm_routing_put_voice_mixer),
8633 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_PRI_TDM_RX_1,
8634 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8635 msm_routing_put_voice_mixer),
8636};
8637
8638static const struct snd_kcontrol_new pri_tdm_rx_2_voice_mixer_controls[] = {
8639 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_PRI_TDM_RX_2,
8640 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8641 msm_routing_put_voice_mixer),
8642 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_PRI_TDM_RX_2,
8643 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8644 msm_routing_put_voice_stub_mixer),
8645 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_PRI_TDM_RX_2,
8646 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8647 msm_routing_put_voice_stub_mixer),
8648 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_PRI_TDM_RX_2,
8649 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_mixer,
8650 msm_routing_put_voice_mixer),
8651 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_PRI_TDM_RX_2,
8652 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8653 msm_routing_put_voice_mixer),
8654 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_PRI_TDM_RX_2,
8655 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8656 msm_routing_put_voice_mixer),
8657 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_PRI_TDM_RX_2,
8658 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8659 msm_routing_put_voice_mixer),
8660 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_PRI_TDM_RX_2,
8661 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8662 msm_routing_put_voice_mixer),
8663};
8664
8665static const struct snd_kcontrol_new pri_tdm_rx_3_voice_mixer_controls[] = {
8666 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_PRI_TDM_RX_3,
8667 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8668 msm_routing_put_voice_mixer),
8669 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_PRI_TDM_RX_3,
8670 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8671 msm_routing_put_voice_stub_mixer),
8672 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_PRI_TDM_RX_3,
8673 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8674 msm_routing_put_voice_stub_mixer),
8675 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_PRI_TDM_RX_3,
8676 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_mixer,
8677 msm_routing_put_voice_mixer),
8678 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_PRI_TDM_RX_3,
8679 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8680 msm_routing_put_voice_mixer),
8681 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_PRI_TDM_RX_3,
8682 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8683 msm_routing_put_voice_mixer),
8684 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_PRI_TDM_RX_3,
8685 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8686 msm_routing_put_voice_mixer),
8687 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_PRI_TDM_RX_3,
8688 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8689 msm_routing_put_voice_mixer),
8690};
8691
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308692static const struct snd_kcontrol_new slimbus_7_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308693 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8694 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8695 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308696 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8697 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8698 msm_routing_put_voice_mixer),
8699 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8700 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8701 msm_routing_put_voice_mixer),
8702 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8703 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8704 msm_routing_put_voice_mixer),
8705 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8706 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8707 msm_routing_put_voice_mixer),
8708};
8709
8710static const struct snd_kcontrol_new slimbus_8_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308711 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8712 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8713 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308714 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8715 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8716 msm_routing_put_voice_mixer),
8717 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8718 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8719 msm_routing_put_voice_mixer),
8720 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8721 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8722 msm_routing_put_voice_mixer),
8723 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8724 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8725 msm_routing_put_voice_mixer),
8726};
8727
8728static const struct snd_kcontrol_new quat_tdm_rx_2_voice_mixer_controls[] = {
8729 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
8730 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8731 msm_routing_put_voice_mixer),
8732};
8733
8734static const struct snd_kcontrol_new stub_rx_mixer_controls[] = {
kunleizdf5a00a2017-11-27 15:27:36 +08008735 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_EXTPROC_RX,
8736 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8737 msm_routing_put_voice_mixer),
8738 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_EXTPROC_RX,
8739 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8740 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308741};
8742
8743static const struct snd_kcontrol_new slimbus_1_rx_mixer_controls[] = {
kunleizdf5a00a2017-11-27 15:27:36 +08008744 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_1_RX,
8745 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8746 msm_routing_put_voice_mixer),
8747 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_1_RX,
8748 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8749 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308750};
8751
8752static const struct snd_kcontrol_new slimbus_3_rx_mixer_controls[] = {
kunleizdf5a00a2017-11-27 15:27:36 +08008753 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_3_RX,
8754 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8755 msm_routing_put_voice_mixer),
8756 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_3_RX,
8757 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8758 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308759};
8760
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308761static const struct snd_kcontrol_new tx_voicemmode1_mixer_controls[] = {
8762 SOC_SINGLE_EXT("PRI_TX_MMode1", MSM_BACKEND_DAI_PRI_I2S_TX,
8763 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8764 msm_routing_put_voice_mixer),
8765 SOC_SINGLE_EXT("MI2S_TX_MMode1", MSM_BACKEND_DAI_MI2S_TX,
8766 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8767 msm_routing_put_voice_mixer),
8768 SOC_SINGLE_EXT("SLIM_0_TX_MMode1",
8769 MSM_BACKEND_DAI_SLIMBUS_0_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8770 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8771 SOC_SINGLE_EXT("INT_BT_SCO_TX_MMode1",
8772 MSM_BACKEND_DAI_INT_BT_SCO_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8773 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8774 SOC_SINGLE_EXT("AFE_PCM_TX_MMode1",
8775 MSM_BACKEND_DAI_AFE_PCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0,
8776 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8777 SOC_SINGLE_EXT("AUX_PCM_TX_MMode1",
8778 MSM_BACKEND_DAI_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0,
8779 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8780 SOC_SINGLE_EXT("SEC_AUX_PCM_TX_MMode1",
8781 MSM_BACKEND_DAI_SEC_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8782 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8783 SOC_SINGLE_EXT("TERT_AUX_PCM_TX_MMode1",
8784 MSM_BACKEND_DAI_TERT_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8785 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8786 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX_MMode1",
8787 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8788 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308789 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX_MMode1",
8790 MSM_BACKEND_DAI_QUIN_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8791 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308792 SOC_SINGLE_EXT("PRI_MI2S_TX_MMode1",
8793 MSM_BACKEND_DAI_PRI_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0,
8794 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8795 SOC_SINGLE_EXT("TERT_MI2S_TX_MMode1",
8796 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE1,
8797 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8798 SOC_SINGLE_EXT("INT3_MI2S_TX_MMode1",
8799 MSM_BACKEND_DAI_INT3_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE1,
8800 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8801 SOC_SINGLE_EXT("SLIM_7_TX_MMode1",
8802 MSM_BACKEND_DAI_SLIMBUS_7_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8803 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8804 SOC_SINGLE_EXT("SLIM_8_TX_MMode1",
8805 MSM_BACKEND_DAI_SLIMBUS_8_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8806 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8807 SOC_SINGLE_EXT("USB_AUDIO_TX_MMode1", MSM_BACKEND_DAI_USB_TX,
8808 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8809 msm_routing_put_voice_mixer),
8810 SOC_SINGLE_EXT("QUAT_TDM_TX_0_MMode1",
8811 MSM_BACKEND_DAI_QUAT_TDM_TX_0, MSM_FRONTEND_DAI_VOICEMMODE1,
8812 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Raja Mallik321d5712018-05-04 17:22:11 +05308813 SOC_SINGLE_EXT("PRI_TDM_TX_3_MMode1",
8814 MSM_BACKEND_DAI_PRI_TDM_TX_3, MSM_FRONTEND_DAI_VOICEMMODE1,
8815 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Aditya Bavanari769c3102018-02-23 16:34:40 +05308816 SOC_SINGLE_EXT("QUAT_MI2S_TX_MMode1",
8817 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0,
8818 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8819 SOC_SINGLE_EXT("QUIN_MI2S_TX_MMode1",
8820 MSM_BACKEND_DAI_QUINARY_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE1,
8821 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308822};
8823
8824static const struct snd_kcontrol_new tx_voicemmode2_mixer_controls[] = {
8825 SOC_SINGLE_EXT("PRI_TX_MMode2", MSM_BACKEND_DAI_PRI_I2S_TX,
8826 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8827 msm_routing_put_voice_mixer),
8828 SOC_SINGLE_EXT("MI2S_TX_MMode2", MSM_BACKEND_DAI_MI2S_TX,
8829 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8830 msm_routing_put_voice_mixer),
8831 SOC_SINGLE_EXT("SLIM_0_TX_MMode2",
8832 MSM_BACKEND_DAI_SLIMBUS_0_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8833 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8834 SOC_SINGLE_EXT("INT_BT_SCO_TX_MMode2",
8835 MSM_BACKEND_DAI_INT_BT_SCO_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8836 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8837 SOC_SINGLE_EXT("AFE_PCM_TX_MMode2",
8838 MSM_BACKEND_DAI_AFE_PCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0,
8839 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8840 SOC_SINGLE_EXT("AUX_PCM_TX_MMode2",
8841 MSM_BACKEND_DAI_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0,
8842 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8843 SOC_SINGLE_EXT("SEC_AUX_PCM_TX_MMode2",
8844 MSM_BACKEND_DAI_SEC_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8845 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8846 SOC_SINGLE_EXT("TERT_AUX_PCM_TX_MMode2",
8847 MSM_BACKEND_DAI_TERT_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8848 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8849 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX_MMode2",
8850 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8851 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308852 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX_MMode2",
8853 MSM_BACKEND_DAI_QUIN_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8854 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308855 SOC_SINGLE_EXT("PRI_MI2S_TX_MMode2",
8856 MSM_BACKEND_DAI_PRI_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0,
8857 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8858 SOC_SINGLE_EXT("TERT_MI2S_TX_MMode2",
8859 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE2,
8860 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Raja Mallik321d5712018-05-04 17:22:11 +05308861 SOC_SINGLE_EXT("PRI_TDM_TX_3_MMode2",
8862 MSM_BACKEND_DAI_PRI_TDM_TX_3, MSM_FRONTEND_DAI_VOICEMMODE2,
8863 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308864 SOC_SINGLE_EXT("INT3_MI2S_TX_MMode2",
8865 MSM_BACKEND_DAI_INT3_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE2,
8866 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8867 SOC_SINGLE_EXT("SLIM_7_TX_MMode2",
8868 MSM_BACKEND_DAI_SLIMBUS_7_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8869 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8870 SOC_SINGLE_EXT("SLIM_8_TX_MMode2",
8871 MSM_BACKEND_DAI_SLIMBUS_8_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8872 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8873 SOC_SINGLE_EXT("USB_AUDIO_TX_MMode2",
8874 MSM_BACKEND_DAI_USB_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8875 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Aditya Bavanari769c3102018-02-23 16:34:40 +05308876 SOC_SINGLE_EXT("QUAT_MI2S_TX_MMode2",
8877 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0,
8878 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8879 SOC_SINGLE_EXT("QUIN_MI2S_TX_MMode2",
8880 MSM_BACKEND_DAI_QUINARY_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE2,
8881 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308882};
8883
8884static const struct snd_kcontrol_new tx_voip_mixer_controls[] = {
8885 SOC_SINGLE_EXT("PRI_TX_Voip", MSM_BACKEND_DAI_PRI_I2S_TX,
8886 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8887 msm_routing_put_voice_mixer),
8888 SOC_SINGLE_EXT("MI2S_TX_Voip", MSM_BACKEND_DAI_MI2S_TX,
8889 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8890 msm_routing_put_voice_mixer),
8891 SOC_SINGLE_EXT("SLIM_0_TX_Voip", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8892 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8893 msm_routing_put_voice_mixer),
8894 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX_Voip", MSM_BACKEND_DAI_INT_BT_SCO_TX,
8895 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8896 msm_routing_put_voice_mixer),
8897 SOC_SINGLE_EXT("AFE_PCM_TX_Voip", MSM_BACKEND_DAI_AFE_PCM_TX,
8898 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8899 msm_routing_put_voice_mixer),
8900 SOC_SINGLE_EXT("AUX_PCM_TX_Voip", MSM_BACKEND_DAI_AUXPCM_TX,
8901 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8902 msm_routing_put_voice_mixer),
8903 SOC_SINGLE_EXT("SEC_AUX_PCM_TX_Voip", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
8904 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8905 msm_routing_put_voice_mixer),
8906 SOC_SINGLE_EXT("TERT_AUX_PCM_TX_Voip", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
8907 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8908 msm_routing_put_voice_mixer),
8909 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX_Voip", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
8910 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8911 msm_routing_put_voice_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308912 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX_Voip", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
8913 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8914 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308915 SOC_SINGLE_EXT("PRI_MI2S_TX_Voip", MSM_BACKEND_DAI_PRI_MI2S_TX,
8916 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8917 msm_routing_put_voice_mixer),
8918 SOC_SINGLE_EXT("TERT_MI2S_TX_Voip", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
8919 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8920 msm_routing_put_voice_mixer),
8921 SOC_SINGLE_EXT("INT3_MI2S_TX_Voip", MSM_BACKEND_DAI_INT3_MI2S_TX,
8922 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8923 msm_routing_put_voice_mixer),
8924 SOC_SINGLE_EXT("SLIM_7_TX_Voip", MSM_BACKEND_DAI_SLIMBUS_7_TX,
8925 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8926 msm_routing_put_voice_mixer),
8927 SOC_SINGLE_EXT("SLIM_8_TX_Voip", MSM_BACKEND_DAI_SLIMBUS_8_TX,
8928 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8929 msm_routing_put_voice_mixer),
8930 SOC_SINGLE_EXT("USB_AUDIO_TX_Voip", MSM_BACKEND_DAI_USB_TX,
8931 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8932 msm_routing_put_voice_mixer),
8933};
8934
8935static const struct snd_kcontrol_new tx_voice_stub_mixer_controls[] = {
8936 SOC_SINGLE_EXT("STUB_TX_HL", MSM_BACKEND_DAI_EXTPROC_TX,
8937 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8938 msm_routing_put_voice_stub_mixer),
8939 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
8940 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8941 msm_routing_put_voice_stub_mixer),
8942 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
8943 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8944 msm_routing_put_voice_stub_mixer),
8945 SOC_SINGLE_EXT("STUB_1_TX_HL", MSM_BACKEND_DAI_EXTPROC_EC_TX,
8946 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8947 msm_routing_put_voice_stub_mixer),
8948 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
8949 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8950 msm_routing_put_voice_stub_mixer),
8951 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
8952 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8953 msm_routing_put_voice_stub_mixer),
8954 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
8955 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8956 msm_routing_put_voice_stub_mixer),
8957 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
8958 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8959 msm_routing_put_voice_stub_mixer),
8960 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
8961 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8962 msm_routing_put_voice_stub_mixer),
8963 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
8964 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8965 msm_routing_put_voice_stub_mixer),
8966 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
8967 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8968 msm_routing_put_voice_stub_mixer),
8969 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
8970 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8971 msm_routing_put_voice_stub_mixer),
8972 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
8973 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8974 msm_routing_put_voice_stub_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308975 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
8976 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8977 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308978 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8979 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8980 msm_routing_put_voice_stub_mixer),
8981 SOC_SINGLE_EXT("SLIM_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
8982 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8983 msm_routing_put_voice_stub_mixer),
8984 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
8985 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8986 msm_routing_put_voice_stub_mixer),
8987 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
8988 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8989 msm_routing_put_voice_stub_mixer),
8990 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
8991 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8992 msm_routing_put_voice_stub_mixer),
8993};
8994
8995static const struct snd_kcontrol_new tx_voice2_stub_mixer_controls[] = {
8996 SOC_SINGLE_EXT("STUB_TX_HL", MSM_BACKEND_DAI_EXTPROC_TX,
8997 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8998 msm_routing_put_voice_stub_mixer),
8999 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
9000 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9001 msm_routing_put_voice_stub_mixer),
9002 SOC_SINGLE_EXT("STUB_1_TX_HL", MSM_BACKEND_DAI_EXTPROC_EC_TX,
9003 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9004 msm_routing_put_voice_stub_mixer),
9005 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
9006 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9007 msm_routing_put_voice_stub_mixer),
9008 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
9009 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9010 msm_routing_put_voice_stub_mixer),
9011 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
9012 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9013 msm_routing_put_voice_stub_mixer),
9014 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
9015 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9016 msm_routing_put_voice_stub_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309017 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
9018 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9019 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309020 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
9021 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9022 msm_routing_put_voice_stub_mixer),
9023 SOC_SINGLE_EXT("SLIM_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
9024 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9025 msm_routing_put_voice_stub_mixer),
9026 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
9027 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9028 msm_routing_put_voice_stub_mixer),
9029 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
9030 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9031 msm_routing_put_voice_stub_mixer),
9032 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
9033 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9034 msm_routing_put_voice_stub_mixer),
9035 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
9036 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9037 msm_routing_put_voice_stub_mixer),
9038 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
9039 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9040 msm_routing_put_voice_stub_mixer),
9041};
9042
9043static const struct snd_kcontrol_new tx_volte_stub_mixer_controls[] = {
9044 SOC_SINGLE_EXT("STUB_TX_HL", MSM_BACKEND_DAI_EXTPROC_TX,
9045 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9046 msm_routing_put_voice_stub_mixer),
9047 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
9048 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9049 msm_routing_put_voice_stub_mixer),
9050 SOC_SINGLE_EXT("STUB_1_TX_HL", MSM_BACKEND_DAI_EXTPROC_EC_TX,
9051 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9052 msm_routing_put_voice_stub_mixer),
9053 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
9054 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9055 msm_routing_put_voice_stub_mixer),
9056 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
9057 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9058 msm_routing_put_voice_stub_mixer),
9059 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
9060 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9061 msm_routing_put_voice_stub_mixer),
9062 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
9063 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9064 msm_routing_put_voice_stub_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309065 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
9066 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9067 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309068 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
9069 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9070 msm_routing_put_voice_stub_mixer),
9071 SOC_SINGLE_EXT("SLIM_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
9072 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9073 msm_routing_put_voice_stub_mixer),
9074 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
9075 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9076 msm_routing_put_voice_stub_mixer),
9077 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
9078 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9079 msm_routing_put_voice_stub_mixer),
9080 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
9081 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9082 msm_routing_put_voice_stub_mixer),
9083 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
9084 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9085 msm_routing_put_voice_stub_mixer),
9086 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
9087 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9088 msm_routing_put_voice_stub_mixer),
9089};
9090
9091static const struct snd_kcontrol_new tx_qchat_mixer_controls[] = {
9092 SOC_SINGLE_EXT("PRI_TX_QCHAT", MSM_BACKEND_DAI_PRI_I2S_TX,
9093 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9094 msm_routing_put_voice_mixer),
9095 SOC_SINGLE_EXT("SLIM_0_TX_QCHAT", MSM_BACKEND_DAI_SLIMBUS_0_TX,
9096 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9097 msm_routing_put_voice_mixer),
9098 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX_QCHAT",
9099 MSM_BACKEND_DAI_INT_BT_SCO_TX, MSM_FRONTEND_DAI_QCHAT, 1, 0,
9100 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
9101 SOC_SINGLE_EXT("AFE_PCM_TX_QCHAT", MSM_BACKEND_DAI_AFE_PCM_TX,
9102 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9103 msm_routing_put_voice_mixer),
9104 SOC_SINGLE_EXT("AUX_PCM_TX_QCHAT", MSM_BACKEND_DAI_AUXPCM_TX,
9105 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9106 msm_routing_put_voice_mixer),
9107 SOC_SINGLE_EXT("SEC_AUX_PCM_TX_QCHAT", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
9108 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9109 msm_routing_put_voice_mixer),
9110 SOC_SINGLE_EXT("TERT_AUX_PCM_TX_QCHAT", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
9111 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9112 msm_routing_put_voice_mixer),
9113 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX_QCHAT", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
9114 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9115 msm_routing_put_voice_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309116 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX_QCHAT", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
9117 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9118 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309119 SOC_SINGLE_EXT("MI2S_TX_QCHAT", MSM_BACKEND_DAI_MI2S_TX,
9120 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9121 msm_routing_put_voice_mixer),
9122 SOC_SINGLE_EXT("PRI_MI2S_TX_QCHAT", MSM_BACKEND_DAI_PRI_MI2S_TX,
9123 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9124 msm_routing_put_voice_mixer),
9125 SOC_SINGLE_EXT("TERT_MI2S_TX_QCHAT", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
9126 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9127 msm_routing_put_voice_mixer),
9128 SOC_SINGLE_EXT("INT3_MI2S_TX_QCHAT", MSM_BACKEND_DAI_INT3_MI2S_TX,
9129 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9130 msm_routing_put_voice_mixer),
9131 SOC_SINGLE_EXT("SLIM_7_TX_QCHAT", MSM_BACKEND_DAI_SLIMBUS_7_TX,
9132 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9133 msm_routing_put_voice_mixer),
9134 SOC_SINGLE_EXT("SLIM_8_TX_QCHAT", MSM_BACKEND_DAI_SLIMBUS_8_TX,
9135 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9136 msm_routing_put_voice_mixer),
9137 SOC_SINGLE_EXT("USB_AUDIO_TX_QCHAT", MSM_BACKEND_DAI_USB_TX,
9138 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9139 msm_routing_put_voice_mixer),
9140};
9141
9142static const struct snd_kcontrol_new int0_mi2s_rx_port_mixer_controls[] = {
9143 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9144 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9145 msm_routing_put_port_mixer),
9146 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9147 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9148 msm_routing_put_port_mixer),
9149 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9150 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9151 msm_routing_put_port_mixer),
9152 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9153 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9154 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309155 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9156 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9157 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309158 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9159 MSM_BACKEND_DAI_INT3_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9160 msm_routing_put_port_mixer),
9161 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9162 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9163 msm_routing_put_port_mixer),
9164 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9165 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
9166 msm_routing_put_port_mixer),
9167 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9168 MSM_BACKEND_DAI_SLIMBUS_7_TX, 1, 0, msm_routing_get_port_mixer,
9169 msm_routing_put_port_mixer),
9170 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9171 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9172 msm_routing_put_port_mixer),
9173};
9174
9175static const struct snd_kcontrol_new int4_mi2s_rx_port_mixer_controls[] = {
9176 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9177 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9178 msm_routing_put_port_mixer),
9179 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9180 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9181 msm_routing_put_port_mixer),
9182 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9183 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9184 msm_routing_put_port_mixer),
9185 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9186 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9187 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309188 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9189 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9190 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309191 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9192 MSM_BACKEND_DAI_INT3_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9193 msm_routing_put_port_mixer),
9194 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9195 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9196 msm_routing_put_port_mixer),
9197 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9198 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
9199 msm_routing_put_port_mixer),
9200 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9201 MSM_BACKEND_DAI_SLIMBUS_7_TX, 1, 0, msm_routing_get_port_mixer,
9202 msm_routing_put_port_mixer),
9203 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9204 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9205 msm_routing_put_port_mixer),
9206};
9207
9208static const struct snd_kcontrol_new sbus_0_rx_port_mixer_controls[] = {
9209 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9210 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9211 msm_routing_put_port_mixer),
9212 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9213 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9214 msm_routing_put_port_mixer),
9215 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9216 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9217 msm_routing_put_port_mixer),
9218 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9219 MSM_BACKEND_DAI_SLIMBUS_7_TX, 1, 0, msm_routing_get_port_mixer,
9220 msm_routing_put_port_mixer),
9221 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9222 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9223 msm_routing_put_port_mixer),
9224 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9225 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9226 msm_routing_put_port_mixer),
9227 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9228 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9229 msm_routing_put_port_mixer),
9230 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9231 MSM_BACKEND_DAI_TERT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9232 msm_routing_put_port_mixer),
9233 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9234 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9235 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309236 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9237 MSM_BACKEND_DAI_QUIN_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9238 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309239 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9240 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9241 msm_routing_put_port_mixer),
9242 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9243 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9244 msm_routing_put_port_mixer),
9245 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9246 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9247 msm_routing_put_port_mixer),
9248 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9249 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9250 msm_routing_put_port_mixer),
9251 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9252 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9253 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309254 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9255 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9256 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309257 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9258 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
9259 msm_routing_put_port_mixer),
9260 SOC_SINGLE_EXT("PRI_MI2S_RX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9261 MSM_BACKEND_DAI_PRI_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
9262 msm_routing_put_port_mixer),
9263 SOC_SINGLE_EXT("SEC_MI2S_RX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9264 MSM_BACKEND_DAI_SECONDARY_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
9265 msm_routing_put_port_mixer),
9266 SOC_SINGLE_EXT("TERT_MI2S_RX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9267 MSM_BACKEND_DAI_TERTIARY_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
9268 msm_routing_put_port_mixer),
9269 SOC_SINGLE_EXT("QUAT_MI2S_RX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9270 MSM_BACKEND_DAI_QUATERNARY_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
9271 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309272 SOC_SINGLE_EXT("QUIN_MI2S_RX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9273 MSM_BACKEND_DAI_QUINARY_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
9274 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309275};
9276
9277static const struct snd_kcontrol_new aux_pcm_rx_port_mixer_controls[] = {
9278 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_RX,
9279 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9280 msm_routing_put_port_mixer),
9281 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_AUXPCM_RX,
9282 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9283 msm_routing_put_port_mixer),
9284 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_AUXPCM_RX,
9285 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9286 msm_routing_put_port_mixer),
9287 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_RX,
9288 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9289 msm_routing_put_port_mixer),
9290 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_AUXPCM_RX,
9291 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0, msm_routing_get_port_mixer,
9292 msm_routing_put_port_mixer),
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -08009293 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_AUXPCM_RX,
9294 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9295 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309296};
9297
9298static const struct snd_kcontrol_new sec_auxpcm_rx_port_mixer_controls[] = {
9299 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
9300 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9301 msm_routing_put_port_mixer),
9302 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
9303 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9304 msm_routing_put_port_mixer),
9305 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
9306 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9307 msm_routing_put_port_mixer),
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -08009308 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
9309 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9310 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309311};
9312
9313static const struct snd_kcontrol_new tert_auxpcm_rx_port_mixer_controls[] = {
9314 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
9315 MSM_BACKEND_DAI_TERT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9316 msm_routing_put_port_mixer),
9317 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
9318 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9319 msm_routing_put_port_mixer),
9320 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
9321 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9322 msm_routing_put_port_mixer),
9323};
9324
9325static const struct snd_kcontrol_new quat_auxpcm_rx_port_mixer_controls[] = {
9326 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
9327 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9328 msm_routing_put_port_mixer),
9329 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
9330 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9331 msm_routing_put_port_mixer),
9332 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
9333 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9334 msm_routing_put_port_mixer),
9335};
9336
Rohit Kumara5077932017-09-10 22:05:05 +05309337static const struct snd_kcontrol_new quin_auxpcm_rx_port_mixer_controls[] = {
9338 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
9339 MSM_BACKEND_DAI_QUIN_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9340 msm_routing_put_port_mixer),
9341 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
9342 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9343 msm_routing_put_port_mixer),
9344 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
9345 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9346 msm_routing_put_port_mixer),
9347};
9348
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309349static const struct snd_kcontrol_new sbus_1_rx_port_mixer_controls[] = {
9350 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9351 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
9352 msm_routing_put_port_mixer),
9353 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9354 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0, msm_routing_get_port_mixer,
9355 msm_routing_put_port_mixer),
9356 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9357 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9358 msm_routing_put_port_mixer),
9359 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9360 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9361 msm_routing_put_port_mixer),
9362 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9363 MSM_BACKEND_DAI_TERT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9364 msm_routing_put_port_mixer),
9365 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9366 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9367 msm_routing_put_port_mixer),
9368};
9369
9370static const struct snd_kcontrol_new sbus_3_rx_port_mixer_controls[] = {
9371 SOC_SINGLE_EXT("INTERNAL_BT_SCO_RX", MSM_BACKEND_DAI_SLIMBUS_3_RX,
9372 MSM_BACKEND_DAI_INT_BT_SCO_RX, 1, 0, msm_routing_get_port_mixer,
9373 msm_routing_put_port_mixer),
9374 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_3_RX,
9375 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9376 msm_routing_put_port_mixer),
9377 SOC_SINGLE_EXT("AFE_PCM_RX", MSM_BACKEND_DAI_SLIMBUS_3_RX,
9378 MSM_BACKEND_DAI_AFE_PCM_RX, 1, 0, msm_routing_get_port_mixer,
9379 msm_routing_put_port_mixer),
9380 SOC_SINGLE_EXT("AUX_PCM_RX", MSM_BACKEND_DAI_SLIMBUS_3_RX,
9381 MSM_BACKEND_DAI_AUXPCM_RX, 1, 0, msm_routing_get_port_mixer,
9382 msm_routing_put_port_mixer),
9383 SOC_SINGLE_EXT("SLIM_0_RX", MSM_BACKEND_DAI_SLIMBUS_3_RX,
9384 MSM_BACKEND_DAI_SLIMBUS_0_RX, 1, 0, msm_routing_get_port_mixer,
9385 msm_routing_put_port_mixer),
9386};
9387
9388static const struct snd_kcontrol_new sbus_6_rx_port_mixer_controls[] = {
9389 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9390 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9391 msm_routing_put_port_mixer),
9392 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9393 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9394 msm_routing_put_port_mixer),
9395 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9396 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9397 msm_routing_put_port_mixer),
9398 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9399 MSM_BACKEND_DAI_SLIMBUS_7_TX, 1, 0, msm_routing_get_port_mixer,
9400 msm_routing_put_port_mixer),
9401 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9402 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9403 msm_routing_put_port_mixer),
9404 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9405 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9406 msm_routing_put_port_mixer),
9407 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9408 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9409 msm_routing_put_port_mixer),
9410 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9411 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9412 msm_routing_put_port_mixer),
9413 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9414 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9415 msm_routing_put_port_mixer),
9416 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9417 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9418 msm_routing_put_port_mixer),
9419 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9420 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9421 msm_routing_put_port_mixer),
9422 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9423 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
9424 msm_routing_put_port_mixer),
9425};
9426
9427static const struct snd_kcontrol_new bt_sco_rx_port_mixer_controls[] = {
9428 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_INT_BT_SCO_RX,
9429 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9430 msm_routing_put_port_mixer),
9431 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_INT_BT_SCO_RX,
9432 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9433 msm_routing_put_port_mixer),
9434};
9435
9436static const struct snd_kcontrol_new afe_pcm_rx_port_mixer_controls[] = {
9437 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_AFE_PCM_RX,
9438 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9439 msm_routing_put_port_mixer),
9440 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_AFE_PCM_RX,
9441 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9442 msm_routing_put_port_mixer),
9443};
9444
9445
9446static const struct snd_kcontrol_new hdmi_rx_port_mixer_controls[] = {
9447 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_HDMI_RX,
9448 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9449 msm_routing_put_port_mixer),
9450};
9451
9452static const struct snd_kcontrol_new display_port_rx_port_mixer_controls[] = {
9453 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
9454 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9455 msm_routing_put_port_mixer),
9456};
9457
9458static const struct snd_kcontrol_new sec_i2s_rx_port_mixer_controls[] = {
9459 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_SEC_I2S_RX,
9460 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9461 msm_routing_put_port_mixer),
9462};
9463
9464static const struct snd_kcontrol_new mi2s_rx_port_mixer_controls[] = {
9465 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_MI2S_RX,
9466 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9467 msm_routing_put_port_mixer),
9468 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_RX,
9469 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9470 msm_routing_put_port_mixer),
9471};
9472
9473static const struct snd_kcontrol_new primary_mi2s_rx_port_mixer_controls[] = {
9474 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9475 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9476 msm_routing_put_port_mixer),
9477 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9478 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9479 msm_routing_put_port_mixer),
9480 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9481 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9482 msm_routing_put_port_mixer),
9483 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9484 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9485 msm_routing_put_port_mixer),
9486 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9487 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
9488 msm_routing_put_port_mixer),
9489 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9490 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9491 msm_routing_put_port_mixer),
9492 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9493 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9494 msm_routing_put_port_mixer),
9495 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9496 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9497 msm_routing_put_port_mixer),
9498 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9499 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9500 msm_routing_put_port_mixer),
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -08009501 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9502 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9503 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309504};
9505
9506static const struct snd_kcontrol_new usb_rx_port_mixer_controls[] = {
9507 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_RX,
9508 MSM_BACKEND_DAI_USB_TX, 1, 0, msm_routing_get_port_mixer,
9509 msm_routing_put_port_mixer),
9510};
9511
9512static const struct snd_kcontrol_new quat_mi2s_rx_port_mixer_controls[] = {
9513 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9514 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9515 msm_routing_put_port_mixer),
9516 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9517 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9518 msm_routing_put_port_mixer),
9519 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9520 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9521 msm_routing_put_port_mixer),
9522 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9523 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9524 msm_routing_put_port_mixer),
9525 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9526 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9527 msm_routing_put_port_mixer),
9528 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9529 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9530 msm_routing_put_port_mixer),
9531 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9532 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9533 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309534 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9535 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9536 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309537 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9538 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9539 msm_routing_put_port_mixer),
9540};
9541
Rohit Kumara5077932017-09-10 22:05:05 +05309542static const struct snd_kcontrol_new quin_mi2s_rx_port_mixer_controls[] = {
9543 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9544 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9545 msm_routing_put_port_mixer),
9546 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9547 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9548 msm_routing_put_port_mixer),
9549 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9550 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9551 msm_routing_put_port_mixer),
9552 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9553 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9554 msm_routing_put_port_mixer),
9555 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9556 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9557 msm_routing_put_port_mixer),
9558 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9559 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9560 msm_routing_put_port_mixer),
9561 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9562 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9563 msm_routing_put_port_mixer),
9564};
9565
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309566static const struct snd_kcontrol_new pri_tdm_rx_0_port_mixer_controls[] = {
9567 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9568 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9569 msm_routing_get_port_mixer,
9570 msm_routing_put_port_mixer),
9571 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9572 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9573 msm_routing_get_port_mixer,
9574 msm_routing_put_port_mixer),
9575 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9576 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9577 msm_routing_get_port_mixer,
9578 msm_routing_put_port_mixer),
9579 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9580 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9581 msm_routing_get_port_mixer,
9582 msm_routing_put_port_mixer),
9583 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9584 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9585 msm_routing_get_port_mixer,
9586 msm_routing_put_port_mixer),
9587 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9588 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9589 msm_routing_get_port_mixer,
9590 msm_routing_put_port_mixer),
9591 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9592 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9593 msm_routing_get_port_mixer,
9594 msm_routing_put_port_mixer),
9595 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9596 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9597 msm_routing_get_port_mixer,
9598 msm_routing_put_port_mixer),
9599 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9600 MSM_BACKEND_DAI_PRI_TDM_TX_0, 1, 0,
9601 msm_routing_get_port_mixer,
9602 msm_routing_put_port_mixer),
9603 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9604 MSM_BACKEND_DAI_PRI_TDM_TX_1, 1, 0,
9605 msm_routing_get_port_mixer,
9606 msm_routing_put_port_mixer),
9607 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9608 MSM_BACKEND_DAI_PRI_TDM_TX_2, 1, 0,
9609 msm_routing_get_port_mixer,
9610 msm_routing_put_port_mixer),
9611 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9612 MSM_BACKEND_DAI_PRI_TDM_TX_3, 1, 0,
9613 msm_routing_get_port_mixer,
9614 msm_routing_put_port_mixer),
9615 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9616 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9617 msm_routing_get_port_mixer,
9618 msm_routing_put_port_mixer),
9619 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9620 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9621 msm_routing_get_port_mixer,
9622 msm_routing_put_port_mixer),
9623 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9624 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9625 msm_routing_get_port_mixer,
9626 msm_routing_put_port_mixer),
9627 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9628 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9629 msm_routing_get_port_mixer,
9630 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309631 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9632 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9633 msm_routing_get_port_mixer,
9634 msm_routing_put_port_mixer),
9635 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9636 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9637 msm_routing_get_port_mixer,
9638 msm_routing_put_port_mixer),
9639 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9640 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9641 msm_routing_get_port_mixer,
9642 msm_routing_put_port_mixer),
9643 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9644 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9645 msm_routing_get_port_mixer,
9646 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309647};
9648
9649static const struct snd_kcontrol_new pri_tdm_rx_1_port_mixer_controls[] = {
9650 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9651 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9652 msm_routing_get_port_mixer,
9653 msm_routing_put_port_mixer),
9654 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9655 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9656 msm_routing_get_port_mixer,
9657 msm_routing_put_port_mixer),
9658 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9659 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9660 msm_routing_get_port_mixer,
9661 msm_routing_put_port_mixer),
9662 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9663 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9664 msm_routing_get_port_mixer,
9665 msm_routing_put_port_mixer),
9666 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9667 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9668 msm_routing_get_port_mixer,
9669 msm_routing_put_port_mixer),
9670 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9671 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9672 msm_routing_get_port_mixer,
9673 msm_routing_put_port_mixer),
9674 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9675 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9676 msm_routing_get_port_mixer,
9677 msm_routing_put_port_mixer),
9678 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9679 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9680 msm_routing_get_port_mixer,
9681 msm_routing_put_port_mixer),
9682 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9683 MSM_BACKEND_DAI_PRI_TDM_TX_0, 1, 0,
9684 msm_routing_get_port_mixer,
9685 msm_routing_put_port_mixer),
9686 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9687 MSM_BACKEND_DAI_PRI_TDM_TX_1, 1, 0,
9688 msm_routing_get_port_mixer,
9689 msm_routing_put_port_mixer),
9690 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9691 MSM_BACKEND_DAI_PRI_TDM_TX_2, 1, 0,
9692 msm_routing_get_port_mixer,
9693 msm_routing_put_port_mixer),
9694 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9695 MSM_BACKEND_DAI_PRI_TDM_TX_3, 1, 0,
9696 msm_routing_get_port_mixer,
9697 msm_routing_put_port_mixer),
9698 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9699 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9700 msm_routing_get_port_mixer,
9701 msm_routing_put_port_mixer),
9702 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9703 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9704 msm_routing_get_port_mixer,
9705 msm_routing_put_port_mixer),
9706 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9707 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9708 msm_routing_get_port_mixer,
9709 msm_routing_put_port_mixer),
9710 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9711 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9712 msm_routing_get_port_mixer,
9713 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309714 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9715 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9716 msm_routing_get_port_mixer,
9717 msm_routing_put_port_mixer),
9718 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9719 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9720 msm_routing_get_port_mixer,
9721 msm_routing_put_port_mixer),
9722 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9723 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9724 msm_routing_get_port_mixer,
9725 msm_routing_put_port_mixer),
9726 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9727 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9728 msm_routing_get_port_mixer,
9729 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309730};
9731
9732static const struct snd_kcontrol_new pri_tdm_rx_2_port_mixer_controls[] = {
9733 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9734 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9735 msm_routing_get_port_mixer,
9736 msm_routing_put_port_mixer),
9737 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9738 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9739 msm_routing_get_port_mixer,
9740 msm_routing_put_port_mixer),
9741 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9742 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9743 msm_routing_get_port_mixer,
9744 msm_routing_put_port_mixer),
9745 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9746 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9747 msm_routing_get_port_mixer,
9748 msm_routing_put_port_mixer),
9749 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9750 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9751 msm_routing_get_port_mixer,
9752 msm_routing_put_port_mixer),
9753 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9754 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9755 msm_routing_get_port_mixer,
9756 msm_routing_put_port_mixer),
9757 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9758 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9759 msm_routing_get_port_mixer,
9760 msm_routing_put_port_mixer),
9761 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9762 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9763 msm_routing_get_port_mixer,
9764 msm_routing_put_port_mixer),
9765 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9766 MSM_BACKEND_DAI_PRI_TDM_TX_0, 1, 0,
9767 msm_routing_get_port_mixer,
9768 msm_routing_put_port_mixer),
9769 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9770 MSM_BACKEND_DAI_PRI_TDM_TX_1, 1, 0,
9771 msm_routing_get_port_mixer,
9772 msm_routing_put_port_mixer),
9773 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9774 MSM_BACKEND_DAI_PRI_TDM_TX_2, 1, 0,
9775 msm_routing_get_port_mixer,
9776 msm_routing_put_port_mixer),
9777 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9778 MSM_BACKEND_DAI_PRI_TDM_TX_3, 1, 0,
9779 msm_routing_get_port_mixer,
9780 msm_routing_put_port_mixer),
9781 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9782 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9783 msm_routing_get_port_mixer,
9784 msm_routing_put_port_mixer),
9785 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9786 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9787 msm_routing_get_port_mixer,
9788 msm_routing_put_port_mixer),
9789 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9790 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9791 msm_routing_get_port_mixer,
9792 msm_routing_put_port_mixer),
9793 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9794 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9795 msm_routing_get_port_mixer,
9796 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309797 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9798 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9799 msm_routing_get_port_mixer,
9800 msm_routing_put_port_mixer),
9801 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9802 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9803 msm_routing_get_port_mixer,
9804 msm_routing_put_port_mixer),
9805 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9806 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9807 msm_routing_get_port_mixer,
9808 msm_routing_put_port_mixer),
9809 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9810 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9811 msm_routing_get_port_mixer,
9812 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309813};
9814
9815static const struct snd_kcontrol_new pri_tdm_rx_3_port_mixer_controls[] = {
9816 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9817 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9818 msm_routing_get_port_mixer,
9819 msm_routing_put_port_mixer),
9820 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9821 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9822 msm_routing_get_port_mixer,
9823 msm_routing_put_port_mixer),
9824 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9825 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9826 msm_routing_get_port_mixer,
9827 msm_routing_put_port_mixer),
9828 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9829 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9830 msm_routing_get_port_mixer,
9831 msm_routing_put_port_mixer),
9832 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9833 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9834 msm_routing_get_port_mixer,
9835 msm_routing_put_port_mixer),
9836 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9837 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9838 msm_routing_get_port_mixer,
9839 msm_routing_put_port_mixer),
9840 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9841 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9842 msm_routing_get_port_mixer,
9843 msm_routing_put_port_mixer),
9844 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9845 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9846 msm_routing_get_port_mixer,
9847 msm_routing_put_port_mixer),
9848 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9849 MSM_BACKEND_DAI_PRI_TDM_TX_0, 1, 0,
9850 msm_routing_get_port_mixer,
9851 msm_routing_put_port_mixer),
9852 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9853 MSM_BACKEND_DAI_PRI_TDM_TX_1, 1, 0,
9854 msm_routing_get_port_mixer,
9855 msm_routing_put_port_mixer),
9856 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9857 MSM_BACKEND_DAI_PRI_TDM_TX_2, 1, 0,
9858 msm_routing_get_port_mixer,
9859 msm_routing_put_port_mixer),
9860 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9861 MSM_BACKEND_DAI_PRI_TDM_TX_3, 1, 0,
9862 msm_routing_get_port_mixer,
9863 msm_routing_put_port_mixer),
9864 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9865 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9866 msm_routing_get_port_mixer,
9867 msm_routing_put_port_mixer),
9868 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9869 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9870 msm_routing_get_port_mixer,
9871 msm_routing_put_port_mixer),
9872 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9873 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9874 msm_routing_get_port_mixer,
9875 msm_routing_put_port_mixer),
9876 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9877 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9878 msm_routing_get_port_mixer,
9879 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309880 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9881 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9882 msm_routing_get_port_mixer,
9883 msm_routing_put_port_mixer),
9884 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9885 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9886 msm_routing_get_port_mixer,
9887 msm_routing_put_port_mixer),
9888 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9889 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9890 msm_routing_get_port_mixer,
9891 msm_routing_put_port_mixer),
9892 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9893 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9894 msm_routing_get_port_mixer,
9895 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309896};
9897
9898static const struct snd_kcontrol_new sec_tdm_rx_0_port_mixer_controls[] = {
9899 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9900 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9901 msm_routing_get_port_mixer,
9902 msm_routing_put_port_mixer),
9903 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9904 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9905 msm_routing_get_port_mixer,
9906 msm_routing_put_port_mixer),
9907 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9908 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9909 msm_routing_get_port_mixer,
9910 msm_routing_put_port_mixer),
9911 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9912 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9913 msm_routing_get_port_mixer,
9914 msm_routing_put_port_mixer),
9915 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9916 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9917 msm_routing_get_port_mixer,
9918 msm_routing_put_port_mixer),
9919 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9920 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9921 msm_routing_get_port_mixer,
9922 msm_routing_put_port_mixer),
9923 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9924 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9925 msm_routing_get_port_mixer,
9926 msm_routing_put_port_mixer),
9927 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9928 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9929 msm_routing_get_port_mixer,
9930 msm_routing_put_port_mixer),
9931 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9932 MSM_BACKEND_DAI_SEC_TDM_TX_0, 1, 0,
9933 msm_routing_get_port_mixer,
9934 msm_routing_put_port_mixer),
9935 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9936 MSM_BACKEND_DAI_SEC_TDM_TX_1, 1, 0,
9937 msm_routing_get_port_mixer,
9938 msm_routing_put_port_mixer),
9939 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9940 MSM_BACKEND_DAI_SEC_TDM_TX_2, 1, 0,
9941 msm_routing_get_port_mixer,
9942 msm_routing_put_port_mixer),
9943 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9944 MSM_BACKEND_DAI_SEC_TDM_TX_3, 1, 0,
9945 msm_routing_get_port_mixer,
9946 msm_routing_put_port_mixer),
9947 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9948 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9949 msm_routing_get_port_mixer,
9950 msm_routing_put_port_mixer),
9951 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9952 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9953 msm_routing_get_port_mixer,
9954 msm_routing_put_port_mixer),
9955 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9956 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9957 msm_routing_get_port_mixer,
9958 msm_routing_put_port_mixer),
9959 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9960 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9961 msm_routing_get_port_mixer,
9962 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309963 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9964 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9965 msm_routing_get_port_mixer,
9966 msm_routing_put_port_mixer),
9967 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9968 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9969 msm_routing_get_port_mixer,
9970 msm_routing_put_port_mixer),
9971 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9972 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9973 msm_routing_get_port_mixer,
9974 msm_routing_put_port_mixer),
9975 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9976 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9977 msm_routing_get_port_mixer,
9978 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309979};
9980
9981static const struct snd_kcontrol_new sec_tdm_rx_1_port_mixer_controls[] = {
9982 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9983 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9984 msm_routing_get_port_mixer,
9985 msm_routing_put_port_mixer),
9986 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9987 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9988 msm_routing_get_port_mixer,
9989 msm_routing_put_port_mixer),
9990 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9991 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9992 msm_routing_get_port_mixer,
9993 msm_routing_put_port_mixer),
9994 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9995 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9996 msm_routing_get_port_mixer,
9997 msm_routing_put_port_mixer),
9998 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9999 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10000 msm_routing_get_port_mixer,
10001 msm_routing_put_port_mixer),
10002 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10003 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10004 msm_routing_get_port_mixer,
10005 msm_routing_put_port_mixer),
10006 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10007 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10008 msm_routing_get_port_mixer,
10009 msm_routing_put_port_mixer),
10010 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10011 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10012 msm_routing_get_port_mixer,
10013 msm_routing_put_port_mixer),
10014 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10015 MSM_BACKEND_DAI_SEC_TDM_TX_0, 1, 0,
10016 msm_routing_get_port_mixer,
10017 msm_routing_put_port_mixer),
10018 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10019 MSM_BACKEND_DAI_SEC_TDM_TX_1, 1, 0,
10020 msm_routing_get_port_mixer,
10021 msm_routing_put_port_mixer),
10022 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10023 MSM_BACKEND_DAI_SEC_TDM_TX_2, 1, 0,
10024 msm_routing_get_port_mixer,
10025 msm_routing_put_port_mixer),
10026 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10027 MSM_BACKEND_DAI_SEC_TDM_TX_3, 1, 0,
10028 msm_routing_get_port_mixer,
10029 msm_routing_put_port_mixer),
10030 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10031 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10032 msm_routing_get_port_mixer,
10033 msm_routing_put_port_mixer),
10034 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10035 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10036 msm_routing_get_port_mixer,
10037 msm_routing_put_port_mixer),
10038 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10039 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10040 msm_routing_get_port_mixer,
10041 msm_routing_put_port_mixer),
10042 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10043 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10044 msm_routing_get_port_mixer,
10045 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010046 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10047 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10048 msm_routing_get_port_mixer,
10049 msm_routing_put_port_mixer),
10050 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10051 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10052 msm_routing_get_port_mixer,
10053 msm_routing_put_port_mixer),
10054 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10055 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10056 msm_routing_get_port_mixer,
10057 msm_routing_put_port_mixer),
10058 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10059 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10060 msm_routing_get_port_mixer,
10061 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010062};
10063
10064static const struct snd_kcontrol_new sec_tdm_rx_2_port_mixer_controls[] = {
10065 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10066 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10067 msm_routing_get_port_mixer,
10068 msm_routing_put_port_mixer),
10069 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10070 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10071 msm_routing_get_port_mixer,
10072 msm_routing_put_port_mixer),
10073 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10074 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
10075 msm_routing_get_port_mixer,
10076 msm_routing_put_port_mixer),
10077 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10078 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10079 msm_routing_get_port_mixer,
10080 msm_routing_put_port_mixer),
10081 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10082 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10083 msm_routing_get_port_mixer,
10084 msm_routing_put_port_mixer),
10085 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10086 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10087 msm_routing_get_port_mixer,
10088 msm_routing_put_port_mixer),
10089 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10090 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10091 msm_routing_get_port_mixer,
10092 msm_routing_put_port_mixer),
10093 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10094 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10095 msm_routing_get_port_mixer,
10096 msm_routing_put_port_mixer),
10097 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10098 MSM_BACKEND_DAI_SEC_TDM_TX_0, 1, 0,
10099 msm_routing_get_port_mixer,
10100 msm_routing_put_port_mixer),
10101 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10102 MSM_BACKEND_DAI_SEC_TDM_TX_1, 1, 0,
10103 msm_routing_get_port_mixer,
10104 msm_routing_put_port_mixer),
10105 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10106 MSM_BACKEND_DAI_SEC_TDM_TX_2, 1, 0,
10107 msm_routing_get_port_mixer,
10108 msm_routing_put_port_mixer),
10109 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10110 MSM_BACKEND_DAI_SEC_TDM_TX_3, 1, 0,
10111 msm_routing_get_port_mixer,
10112 msm_routing_put_port_mixer),
10113 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10114 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10115 msm_routing_get_port_mixer,
10116 msm_routing_put_port_mixer),
10117 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10118 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10119 msm_routing_get_port_mixer,
10120 msm_routing_put_port_mixer),
10121 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10122 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10123 msm_routing_get_port_mixer,
10124 msm_routing_put_port_mixer),
10125 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10126 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10127 msm_routing_get_port_mixer,
10128 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010129 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10130 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10131 msm_routing_get_port_mixer,
10132 msm_routing_put_port_mixer),
10133 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10134 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10135 msm_routing_get_port_mixer,
10136 msm_routing_put_port_mixer),
10137 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10138 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10139 msm_routing_get_port_mixer,
10140 msm_routing_put_port_mixer),
10141 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10142 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10143 msm_routing_get_port_mixer,
10144 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010145};
10146
10147static const struct snd_kcontrol_new sec_tdm_rx_3_port_mixer_controls[] = {
10148 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10149 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10150 msm_routing_get_port_mixer,
10151 msm_routing_put_port_mixer),
10152 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10153 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10154 msm_routing_get_port_mixer,
10155 msm_routing_put_port_mixer),
10156 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10157 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
10158 msm_routing_get_port_mixer,
10159 msm_routing_put_port_mixer),
10160 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10161 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10162 msm_routing_get_port_mixer,
10163 msm_routing_put_port_mixer),
10164 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10165 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10166 msm_routing_get_port_mixer,
10167 msm_routing_put_port_mixer),
10168 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10169 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10170 msm_routing_get_port_mixer,
10171 msm_routing_put_port_mixer),
10172 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10173 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10174 msm_routing_get_port_mixer,
10175 msm_routing_put_port_mixer),
10176 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10177 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10178 msm_routing_get_port_mixer,
10179 msm_routing_put_port_mixer),
10180 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10181 MSM_BACKEND_DAI_SEC_TDM_TX_0, 1, 0,
10182 msm_routing_get_port_mixer,
10183 msm_routing_put_port_mixer),
10184 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10185 MSM_BACKEND_DAI_SEC_TDM_TX_1, 1, 0,
10186 msm_routing_get_port_mixer,
10187 msm_routing_put_port_mixer),
10188 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10189 MSM_BACKEND_DAI_SEC_TDM_TX_2, 1, 0,
10190 msm_routing_get_port_mixer,
10191 msm_routing_put_port_mixer),
10192 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10193 MSM_BACKEND_DAI_SEC_TDM_TX_3, 1, 0,
10194 msm_routing_get_port_mixer,
10195 msm_routing_put_port_mixer),
10196 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10197 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10198 msm_routing_get_port_mixer,
10199 msm_routing_put_port_mixer),
10200 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10201 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10202 msm_routing_get_port_mixer,
10203 msm_routing_put_port_mixer),
10204 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10205 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10206 msm_routing_get_port_mixer,
10207 msm_routing_put_port_mixer),
10208 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10209 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10210 msm_routing_get_port_mixer,
10211 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010212 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10213 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10214 msm_routing_get_port_mixer,
10215 msm_routing_put_port_mixer),
10216 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10217 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10218 msm_routing_get_port_mixer,
10219 msm_routing_put_port_mixer),
10220 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10221 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10222 msm_routing_get_port_mixer,
10223 msm_routing_put_port_mixer),
10224 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10225 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10226 msm_routing_get_port_mixer,
10227 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010228};
10229
10230static const struct snd_kcontrol_new tert_tdm_rx_0_port_mixer_controls[] = {
10231 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10232 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10233 msm_routing_get_port_mixer,
10234 msm_routing_put_port_mixer),
10235 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10236 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10237 msm_routing_get_port_mixer,
10238 msm_routing_put_port_mixer),
10239 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10240 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
10241 msm_routing_get_port_mixer,
10242 msm_routing_put_port_mixer),
10243 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10244 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10245 msm_routing_get_port_mixer,
10246 msm_routing_put_port_mixer),
10247 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10248 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10249 msm_routing_get_port_mixer,
10250 msm_routing_put_port_mixer),
10251 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10252 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10253 msm_routing_get_port_mixer,
10254 msm_routing_put_port_mixer),
10255 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10256 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10257 msm_routing_get_port_mixer,
10258 msm_routing_put_port_mixer),
10259 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10260 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10261 msm_routing_get_port_mixer,
10262 msm_routing_put_port_mixer),
10263 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10264 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10265 msm_routing_get_port_mixer,
10266 msm_routing_put_port_mixer),
10267 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10268 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10269 msm_routing_get_port_mixer,
10270 msm_routing_put_port_mixer),
10271 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10272 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10273 msm_routing_get_port_mixer,
10274 msm_routing_put_port_mixer),
10275 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10276 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10277 msm_routing_get_port_mixer,
10278 msm_routing_put_port_mixer),
10279 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10280 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10281 msm_routing_get_port_mixer,
10282 msm_routing_put_port_mixer),
10283 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10284 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10285 msm_routing_get_port_mixer,
10286 msm_routing_put_port_mixer),
10287 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10288 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10289 msm_routing_get_port_mixer,
10290 msm_routing_put_port_mixer),
10291 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10292 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10293 msm_routing_get_port_mixer,
10294 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010295 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10296 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10297 msm_routing_get_port_mixer,
10298 msm_routing_put_port_mixer),
10299 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10300 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10301 msm_routing_get_port_mixer,
10302 msm_routing_put_port_mixer),
10303 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10304 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10305 msm_routing_get_port_mixer,
10306 msm_routing_put_port_mixer),
10307 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10308 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10309 msm_routing_get_port_mixer,
10310 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010311};
10312
10313static const struct snd_kcontrol_new tert_tdm_rx_1_port_mixer_controls[] = {
10314 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10315 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10316 msm_routing_get_port_mixer,
10317 msm_routing_put_port_mixer),
10318 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10319 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10320 msm_routing_get_port_mixer,
10321 msm_routing_put_port_mixer),
10322 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10323 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
10324 msm_routing_get_port_mixer,
10325 msm_routing_put_port_mixer),
10326 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10327 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10328 msm_routing_get_port_mixer,
10329 msm_routing_put_port_mixer),
10330 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10331 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10332 msm_routing_get_port_mixer,
10333 msm_routing_put_port_mixer),
10334 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10335 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10336 msm_routing_get_port_mixer,
10337 msm_routing_put_port_mixer),
10338 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10339 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10340 msm_routing_get_port_mixer,
10341 msm_routing_put_port_mixer),
10342 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10343 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10344 msm_routing_get_port_mixer,
10345 msm_routing_put_port_mixer),
10346 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10347 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10348 msm_routing_get_port_mixer,
10349 msm_routing_put_port_mixer),
10350 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10351 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10352 msm_routing_get_port_mixer,
10353 msm_routing_put_port_mixer),
10354 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10355 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10356 msm_routing_get_port_mixer,
10357 msm_routing_put_port_mixer),
10358 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10359 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10360 msm_routing_get_port_mixer,
10361 msm_routing_put_port_mixer),
10362 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10363 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10364 msm_routing_get_port_mixer,
10365 msm_routing_put_port_mixer),
10366 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10367 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10368 msm_routing_get_port_mixer,
10369 msm_routing_put_port_mixer),
10370 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10371 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10372 msm_routing_get_port_mixer,
10373 msm_routing_put_port_mixer),
10374 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10375 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10376 msm_routing_get_port_mixer,
10377 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010378 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10379 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10380 msm_routing_get_port_mixer,
10381 msm_routing_put_port_mixer),
10382 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10383 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10384 msm_routing_get_port_mixer,
10385 msm_routing_put_port_mixer),
10386 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10387 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10388 msm_routing_get_port_mixer,
10389 msm_routing_put_port_mixer),
10390 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10391 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10392 msm_routing_get_port_mixer,
10393 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010394};
10395
10396static const struct snd_kcontrol_new tert_tdm_rx_2_port_mixer_controls[] = {
10397 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10398 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10399 msm_routing_get_port_mixer,
10400 msm_routing_put_port_mixer),
10401 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10402 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10403 msm_routing_get_port_mixer,
10404 msm_routing_put_port_mixer),
10405 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10406 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
10407 msm_routing_get_port_mixer,
10408 msm_routing_put_port_mixer),
10409 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10410 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10411 msm_routing_get_port_mixer,
10412 msm_routing_put_port_mixer),
10413 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10414 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10415 msm_routing_get_port_mixer,
10416 msm_routing_put_port_mixer),
10417 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10418 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10419 msm_routing_get_port_mixer,
10420 msm_routing_put_port_mixer),
10421 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10422 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10423 msm_routing_get_port_mixer,
10424 msm_routing_put_port_mixer),
10425 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10426 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10427 msm_routing_get_port_mixer,
10428 msm_routing_put_port_mixer),
10429 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10430 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10431 msm_routing_get_port_mixer,
10432 msm_routing_put_port_mixer),
10433 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10434 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10435 msm_routing_get_port_mixer,
10436 msm_routing_put_port_mixer),
10437 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10438 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10439 msm_routing_get_port_mixer,
10440 msm_routing_put_port_mixer),
10441 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10442 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10443 msm_routing_get_port_mixer,
10444 msm_routing_put_port_mixer),
10445 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10446 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10447 msm_routing_get_port_mixer,
10448 msm_routing_put_port_mixer),
10449 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10450 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10451 msm_routing_get_port_mixer,
10452 msm_routing_put_port_mixer),
10453 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10454 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10455 msm_routing_get_port_mixer,
10456 msm_routing_put_port_mixer),
10457 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10458 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10459 msm_routing_get_port_mixer,
10460 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010461 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10462 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10463 msm_routing_get_port_mixer,
10464 msm_routing_put_port_mixer),
10465 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10466 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10467 msm_routing_get_port_mixer,
10468 msm_routing_put_port_mixer),
10469 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10470 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10471 msm_routing_get_port_mixer,
10472 msm_routing_put_port_mixer),
10473 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10474 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10475 msm_routing_get_port_mixer,
10476 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010477};
10478
10479static const struct snd_kcontrol_new tert_tdm_rx_3_port_mixer_controls[] = {
10480 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10481 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10482 msm_routing_get_port_mixer,
10483 msm_routing_put_port_mixer),
10484 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10485 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10486 msm_routing_get_port_mixer,
10487 msm_routing_put_port_mixer),
10488 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10489 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
10490 msm_routing_get_port_mixer,
10491 msm_routing_put_port_mixer),
10492 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10493 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10494 msm_routing_get_port_mixer,
10495 msm_routing_put_port_mixer),
10496 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10497 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10498 msm_routing_get_port_mixer,
10499 msm_routing_put_port_mixer),
10500 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10501 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10502 msm_routing_get_port_mixer,
10503 msm_routing_put_port_mixer),
10504 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10505 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10506 msm_routing_get_port_mixer,
10507 msm_routing_put_port_mixer),
10508 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10509 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10510 msm_routing_get_port_mixer,
10511 msm_routing_put_port_mixer),
10512 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10513 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10514 msm_routing_get_port_mixer,
10515 msm_routing_put_port_mixer),
10516 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10517 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10518 msm_routing_get_port_mixer,
10519 msm_routing_put_port_mixer),
10520 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10521 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10522 msm_routing_get_port_mixer,
10523 msm_routing_put_port_mixer),
10524 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10525 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10526 msm_routing_get_port_mixer,
10527 msm_routing_put_port_mixer),
10528 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10529 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10530 msm_routing_get_port_mixer,
10531 msm_routing_put_port_mixer),
10532 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10533 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10534 msm_routing_get_port_mixer,
10535 msm_routing_put_port_mixer),
10536 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10537 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10538 msm_routing_get_port_mixer,
10539 msm_routing_put_port_mixer),
10540 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10541 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10542 msm_routing_get_port_mixer,
10543 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010544 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10545 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10546 msm_routing_get_port_mixer,
10547 msm_routing_put_port_mixer),
10548 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10549 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10550 msm_routing_get_port_mixer,
10551 msm_routing_put_port_mixer),
10552 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10553 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10554 msm_routing_get_port_mixer,
10555 msm_routing_put_port_mixer),
10556 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10557 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10558 msm_routing_get_port_mixer,
10559 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010560};
10561
10562static const struct snd_kcontrol_new quat_tdm_rx_0_port_mixer_controls[] = {
10563 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10564 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10565 msm_routing_get_port_mixer,
10566 msm_routing_put_port_mixer),
10567 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10568 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10569 msm_routing_get_port_mixer,
10570 msm_routing_put_port_mixer),
10571 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10572 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10573 msm_routing_get_port_mixer,
10574 msm_routing_put_port_mixer),
10575 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10576 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10577 msm_routing_get_port_mixer,
10578 msm_routing_put_port_mixer),
10579 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10580 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10581 msm_routing_get_port_mixer,
10582 msm_routing_put_port_mixer),
10583 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10584 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10585 msm_routing_get_port_mixer,
10586 msm_routing_put_port_mixer),
10587 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10588 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10589 msm_routing_get_port_mixer,
10590 msm_routing_put_port_mixer),
10591 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10592 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10593 msm_routing_get_port_mixer,
10594 msm_routing_put_port_mixer),
10595 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10596 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10597 msm_routing_get_port_mixer,
10598 msm_routing_put_port_mixer),
10599 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10600 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10601 msm_routing_get_port_mixer,
10602 msm_routing_put_port_mixer),
10603 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10604 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10605 msm_routing_get_port_mixer,
10606 msm_routing_put_port_mixer),
10607 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10608 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10609 msm_routing_get_port_mixer,
10610 msm_routing_put_port_mixer),
10611 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10612 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10613 msm_routing_get_port_mixer,
10614 msm_routing_put_port_mixer),
10615 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10616 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10617 msm_routing_get_port_mixer,
10618 msm_routing_put_port_mixer),
10619 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10620 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10621 msm_routing_get_port_mixer,
10622 msm_routing_put_port_mixer),
10623 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10624 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10625 msm_routing_get_port_mixer,
10626 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010627 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10628 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10629 msm_routing_get_port_mixer,
10630 msm_routing_put_port_mixer),
10631 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10632 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10633 msm_routing_get_port_mixer,
10634 msm_routing_put_port_mixer),
10635 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10636 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10637 msm_routing_get_port_mixer,
10638 msm_routing_put_port_mixer),
10639 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10640 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10641 msm_routing_get_port_mixer,
10642 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010643};
10644
10645static const struct snd_kcontrol_new quat_tdm_rx_1_port_mixer_controls[] = {
10646 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10647 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10648 msm_routing_get_port_mixer,
10649 msm_routing_put_port_mixer),
10650 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10651 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10652 msm_routing_get_port_mixer,
10653 msm_routing_put_port_mixer),
10654 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10655 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10656 msm_routing_get_port_mixer,
10657 msm_routing_put_port_mixer),
10658 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10659 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10660 msm_routing_get_port_mixer,
10661 msm_routing_put_port_mixer),
10662 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10663 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10664 msm_routing_get_port_mixer,
10665 msm_routing_put_port_mixer),
10666 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10667 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10668 msm_routing_get_port_mixer,
10669 msm_routing_put_port_mixer),
10670 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10671 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10672 msm_routing_get_port_mixer,
10673 msm_routing_put_port_mixer),
10674 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10675 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10676 msm_routing_get_port_mixer,
10677 msm_routing_put_port_mixer),
10678 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10679 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10680 msm_routing_get_port_mixer,
10681 msm_routing_put_port_mixer),
10682 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10683 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10684 msm_routing_get_port_mixer,
10685 msm_routing_put_port_mixer),
10686 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10687 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10688 msm_routing_get_port_mixer,
10689 msm_routing_put_port_mixer),
10690 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10691 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10692 msm_routing_get_port_mixer,
10693 msm_routing_put_port_mixer),
10694 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10695 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10696 msm_routing_get_port_mixer,
10697 msm_routing_put_port_mixer),
10698 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10699 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10700 msm_routing_get_port_mixer,
10701 msm_routing_put_port_mixer),
10702 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10703 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10704 msm_routing_get_port_mixer,
10705 msm_routing_put_port_mixer),
10706 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10707 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10708 msm_routing_get_port_mixer,
10709 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010710 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10711 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10712 msm_routing_get_port_mixer,
10713 msm_routing_put_port_mixer),
10714 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10715 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10716 msm_routing_get_port_mixer,
10717 msm_routing_put_port_mixer),
10718 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10719 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10720 msm_routing_get_port_mixer,
10721 msm_routing_put_port_mixer),
10722 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10723 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10724 msm_routing_get_port_mixer,
10725 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010726};
10727
10728static const struct snd_kcontrol_new quat_tdm_rx_2_port_mixer_controls[] = {
10729 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10730 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10731 msm_routing_get_port_mixer,
10732 msm_routing_put_port_mixer),
10733 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10734 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10735 msm_routing_get_port_mixer,
10736 msm_routing_put_port_mixer),
10737 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10738 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10739 msm_routing_get_port_mixer,
10740 msm_routing_put_port_mixer),
10741 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10742 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10743 msm_routing_get_port_mixer,
10744 msm_routing_put_port_mixer),
10745 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10746 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10747 msm_routing_get_port_mixer,
10748 msm_routing_put_port_mixer),
10749 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10750 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10751 msm_routing_get_port_mixer,
10752 msm_routing_put_port_mixer),
10753 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10754 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10755 msm_routing_get_port_mixer,
10756 msm_routing_put_port_mixer),
10757 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10758 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10759 msm_routing_get_port_mixer,
10760 msm_routing_put_port_mixer),
10761 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10762 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10763 msm_routing_get_port_mixer,
10764 msm_routing_put_port_mixer),
10765 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10766 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10767 msm_routing_get_port_mixer,
10768 msm_routing_put_port_mixer),
10769 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10770 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10771 msm_routing_get_port_mixer,
10772 msm_routing_put_port_mixer),
10773 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10774 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10775 msm_routing_get_port_mixer,
10776 msm_routing_put_port_mixer),
10777 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10778 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10779 msm_routing_get_port_mixer,
10780 msm_routing_put_port_mixer),
10781 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10782 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10783 msm_routing_get_port_mixer,
10784 msm_routing_put_port_mixer),
10785 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10786 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10787 msm_routing_get_port_mixer,
10788 msm_routing_put_port_mixer),
10789 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10790 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10791 msm_routing_get_port_mixer,
10792 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010793 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10794 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10795 msm_routing_get_port_mixer,
10796 msm_routing_put_port_mixer),
10797 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10798 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10799 msm_routing_get_port_mixer,
10800 msm_routing_put_port_mixer),
10801 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10802 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10803 msm_routing_get_port_mixer,
10804 msm_routing_put_port_mixer),
10805 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10806 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10807 msm_routing_get_port_mixer,
10808 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010809};
10810
10811static const struct snd_kcontrol_new quat_tdm_rx_3_port_mixer_controls[] = {
10812 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10813 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10814 msm_routing_get_port_mixer,
10815 msm_routing_put_port_mixer),
10816 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10817 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10818 msm_routing_get_port_mixer,
10819 msm_routing_put_port_mixer),
10820 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10821 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10822 msm_routing_get_port_mixer,
10823 msm_routing_put_port_mixer),
10824 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10825 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10826 msm_routing_get_port_mixer,
10827 msm_routing_put_port_mixer),
10828 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10829 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10830 msm_routing_get_port_mixer,
10831 msm_routing_put_port_mixer),
10832 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10833 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10834 msm_routing_get_port_mixer,
10835 msm_routing_put_port_mixer),
10836 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10837 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10838 msm_routing_get_port_mixer,
10839 msm_routing_put_port_mixer),
10840 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10841 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10842 msm_routing_get_port_mixer,
10843 msm_routing_put_port_mixer),
10844 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10845 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10846 msm_routing_get_port_mixer,
10847 msm_routing_put_port_mixer),
10848 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10849 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10850 msm_routing_get_port_mixer,
10851 msm_routing_put_port_mixer),
10852 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10853 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10854 msm_routing_get_port_mixer,
10855 msm_routing_put_port_mixer),
10856 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10857 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10858 msm_routing_get_port_mixer,
10859 msm_routing_put_port_mixer),
10860 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10861 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10862 msm_routing_get_port_mixer,
10863 msm_routing_put_port_mixer),
10864 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10865 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10866 msm_routing_get_port_mixer,
10867 msm_routing_put_port_mixer),
10868 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10869 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10870 msm_routing_get_port_mixer,
10871 msm_routing_put_port_mixer),
10872 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10873 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10874 msm_routing_get_port_mixer,
10875 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010876 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10877 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10878 msm_routing_get_port_mixer,
10879 msm_routing_put_port_mixer),
10880 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10881 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10882 msm_routing_get_port_mixer,
10883 msm_routing_put_port_mixer),
10884 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10885 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10886 msm_routing_get_port_mixer,
10887 msm_routing_put_port_mixer),
10888 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10889 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10890 msm_routing_get_port_mixer,
10891 msm_routing_put_port_mixer),
10892};
10893
10894static const struct snd_kcontrol_new quin_tdm_rx_0_port_mixer_controls[] = {
10895 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10896 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10897 msm_routing_get_port_mixer,
10898 msm_routing_put_port_mixer),
10899 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10900 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10901 msm_routing_get_port_mixer,
10902 msm_routing_put_port_mixer),
10903 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10904 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10905 msm_routing_get_port_mixer,
10906 msm_routing_put_port_mixer),
10907 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10908 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10909 msm_routing_get_port_mixer,
10910 msm_routing_put_port_mixer),
10911 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10912 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10913 msm_routing_get_port_mixer,
10914 msm_routing_put_port_mixer),
10915 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10916 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10917 msm_routing_get_port_mixer,
10918 msm_routing_put_port_mixer),
10919 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10920 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10921 msm_routing_get_port_mixer,
10922 msm_routing_put_port_mixer),
10923 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10924 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10925 msm_routing_get_port_mixer,
10926 msm_routing_put_port_mixer),
10927 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10928 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10929 msm_routing_get_port_mixer,
10930 msm_routing_put_port_mixer),
10931 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10932 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10933 msm_routing_get_port_mixer,
10934 msm_routing_put_port_mixer),
10935 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10936 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10937 msm_routing_get_port_mixer,
10938 msm_routing_put_port_mixer),
10939 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10940 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10941 msm_routing_get_port_mixer,
10942 msm_routing_put_port_mixer),
10943 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10944 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10945 msm_routing_get_port_mixer,
10946 msm_routing_put_port_mixer),
10947 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10948 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10949 msm_routing_get_port_mixer,
10950 msm_routing_put_port_mixer),
10951 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10952 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10953 msm_routing_get_port_mixer,
10954 msm_routing_put_port_mixer),
10955 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10956 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10957 msm_routing_get_port_mixer,
10958 msm_routing_put_port_mixer),
10959 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10960 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10961 msm_routing_get_port_mixer,
10962 msm_routing_put_port_mixer),
10963 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10964 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10965 msm_routing_get_port_mixer,
10966 msm_routing_put_port_mixer),
10967 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10968 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10969 msm_routing_get_port_mixer,
10970 msm_routing_put_port_mixer),
10971 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10972 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10973 msm_routing_get_port_mixer,
10974 msm_routing_put_port_mixer),
10975};
10976
10977static const struct snd_kcontrol_new quin_tdm_rx_1_port_mixer_controls[] = {
10978 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10979 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10980 msm_routing_get_port_mixer,
10981 msm_routing_put_port_mixer),
10982 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10983 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10984 msm_routing_get_port_mixer,
10985 msm_routing_put_port_mixer),
10986 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10987 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10988 msm_routing_get_port_mixer,
10989 msm_routing_put_port_mixer),
10990 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10991 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10992 msm_routing_get_port_mixer,
10993 msm_routing_put_port_mixer),
10994 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10995 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10996 msm_routing_get_port_mixer,
10997 msm_routing_put_port_mixer),
10998 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10999 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
11000 msm_routing_get_port_mixer,
11001 msm_routing_put_port_mixer),
11002 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11003 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
11004 msm_routing_get_port_mixer,
11005 msm_routing_put_port_mixer),
11006 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11007 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
11008 msm_routing_get_port_mixer,
11009 msm_routing_put_port_mixer),
11010 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11011 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
11012 msm_routing_get_port_mixer,
11013 msm_routing_put_port_mixer),
11014 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11015 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
11016 msm_routing_get_port_mixer,
11017 msm_routing_put_port_mixer),
11018 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11019 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
11020 msm_routing_get_port_mixer,
11021 msm_routing_put_port_mixer),
11022 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11023 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
11024 msm_routing_get_port_mixer,
11025 msm_routing_put_port_mixer),
11026 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11027 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
11028 msm_routing_get_port_mixer,
11029 msm_routing_put_port_mixer),
11030 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11031 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
11032 msm_routing_get_port_mixer,
11033 msm_routing_put_port_mixer),
11034 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11035 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
11036 msm_routing_get_port_mixer,
11037 msm_routing_put_port_mixer),
11038 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11039 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
11040 msm_routing_get_port_mixer,
11041 msm_routing_put_port_mixer),
11042 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11043 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
11044 msm_routing_get_port_mixer,
11045 msm_routing_put_port_mixer),
11046 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11047 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
11048 msm_routing_get_port_mixer,
11049 msm_routing_put_port_mixer),
11050 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11051 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
11052 msm_routing_get_port_mixer,
11053 msm_routing_put_port_mixer),
11054 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11055 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
11056 msm_routing_get_port_mixer,
11057 msm_routing_put_port_mixer),
11058};
11059
11060static const struct snd_kcontrol_new quin_tdm_rx_2_port_mixer_controls[] = {
11061 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11062 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
11063 msm_routing_get_port_mixer,
11064 msm_routing_put_port_mixer),
11065 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11066 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
11067 msm_routing_get_port_mixer,
11068 msm_routing_put_port_mixer),
11069 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11070 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
11071 msm_routing_get_port_mixer,
11072 msm_routing_put_port_mixer),
11073 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11074 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
11075 msm_routing_get_port_mixer,
11076 msm_routing_put_port_mixer),
11077 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11078 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
11079 msm_routing_get_port_mixer,
11080 msm_routing_put_port_mixer),
11081 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11082 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
11083 msm_routing_get_port_mixer,
11084 msm_routing_put_port_mixer),
11085 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11086 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
11087 msm_routing_get_port_mixer,
11088 msm_routing_put_port_mixer),
11089 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11090 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
11091 msm_routing_get_port_mixer,
11092 msm_routing_put_port_mixer),
11093 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11094 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
11095 msm_routing_get_port_mixer,
11096 msm_routing_put_port_mixer),
11097 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11098 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
11099 msm_routing_get_port_mixer,
11100 msm_routing_put_port_mixer),
11101 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11102 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
11103 msm_routing_get_port_mixer,
11104 msm_routing_put_port_mixer),
11105 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11106 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
11107 msm_routing_get_port_mixer,
11108 msm_routing_put_port_mixer),
11109 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11110 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
11111 msm_routing_get_port_mixer,
11112 msm_routing_put_port_mixer),
11113 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11114 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
11115 msm_routing_get_port_mixer,
11116 msm_routing_put_port_mixer),
11117 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11118 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
11119 msm_routing_get_port_mixer,
11120 msm_routing_put_port_mixer),
11121 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11122 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
11123 msm_routing_get_port_mixer,
11124 msm_routing_put_port_mixer),
11125 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11126 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
11127 msm_routing_get_port_mixer,
11128 msm_routing_put_port_mixer),
11129 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11130 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
11131 msm_routing_get_port_mixer,
11132 msm_routing_put_port_mixer),
11133 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11134 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
11135 msm_routing_get_port_mixer,
11136 msm_routing_put_port_mixer),
11137 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11138 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
11139 msm_routing_get_port_mixer,
11140 msm_routing_put_port_mixer),
11141};
11142
11143static const struct snd_kcontrol_new quin_tdm_rx_3_port_mixer_controls[] = {
11144 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11145 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
11146 msm_routing_get_port_mixer,
11147 msm_routing_put_port_mixer),
11148 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11149 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
11150 msm_routing_get_port_mixer,
11151 msm_routing_put_port_mixer),
11152 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11153 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
11154 msm_routing_get_port_mixer,
11155 msm_routing_put_port_mixer),
11156 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11157 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
11158 msm_routing_get_port_mixer,
11159 msm_routing_put_port_mixer),
11160 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11161 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
11162 msm_routing_get_port_mixer,
11163 msm_routing_put_port_mixer),
11164 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11165 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
11166 msm_routing_get_port_mixer,
11167 msm_routing_put_port_mixer),
11168 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11169 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
11170 msm_routing_get_port_mixer,
11171 msm_routing_put_port_mixer),
11172 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11173 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
11174 msm_routing_get_port_mixer,
11175 msm_routing_put_port_mixer),
11176 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11177 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
11178 msm_routing_get_port_mixer,
11179 msm_routing_put_port_mixer),
11180 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11181 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
11182 msm_routing_get_port_mixer,
11183 msm_routing_put_port_mixer),
11184 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11185 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
11186 msm_routing_get_port_mixer,
11187 msm_routing_put_port_mixer),
11188 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11189 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
11190 msm_routing_get_port_mixer,
11191 msm_routing_put_port_mixer),
11192 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11193 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
11194 msm_routing_get_port_mixer,
11195 msm_routing_put_port_mixer),
11196 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11197 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
11198 msm_routing_get_port_mixer,
11199 msm_routing_put_port_mixer),
11200 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11201 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
11202 msm_routing_get_port_mixer,
11203 msm_routing_put_port_mixer),
11204 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11205 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
11206 msm_routing_get_port_mixer,
11207 msm_routing_put_port_mixer),
11208 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11209 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
11210 msm_routing_get_port_mixer,
11211 msm_routing_put_port_mixer),
11212 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11213 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
11214 msm_routing_get_port_mixer,
11215 msm_routing_put_port_mixer),
11216 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11217 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
11218 msm_routing_get_port_mixer,
11219 msm_routing_put_port_mixer),
11220 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11221 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
11222 msm_routing_get_port_mixer,
11223 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011224};
11225
11226static const struct snd_kcontrol_new tert_mi2s_rx_port_mixer_controls[] = {
11227 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
11228 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11229 msm_routing_put_port_mixer),
11230 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
11231 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11232 msm_routing_put_port_mixer),
11233 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
11234 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
11235 msm_routing_put_port_mixer),
11236 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
11237 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11238 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053011239 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
11240 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11241 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011242 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
11243 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11244 msm_routing_put_port_mixer),
11245 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
11246 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
11247 msm_routing_put_port_mixer),
11248};
11249
11250static const struct snd_kcontrol_new sec_mi2s_rx_port_mixer_controls[] = {
11251 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11252 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11253 msm_routing_put_port_mixer),
11254 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11255 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11256 msm_routing_put_port_mixer),
11257 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11258 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11259 msm_routing_put_port_mixer),
11260 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11261 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11262 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053011263 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11264 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11265 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011266 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11267 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
11268 msm_routing_put_port_mixer),
11269 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11270 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
11271 msm_routing_put_port_mixer),
11272 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11273 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
11274 msm_routing_put_port_mixer),
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -080011275 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11276 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
11277 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011278};
11279
11280static const struct snd_kcontrol_new lsm1_mixer_controls[] = {
11281 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11282 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11283 msm_routing_put_listen_mixer),
11284 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11285 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11286 msm_routing_put_listen_mixer),
11287 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11288 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11289 msm_routing_put_listen_mixer),
11290 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11291 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11292 msm_routing_put_listen_mixer),
11293 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11294 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11295 msm_routing_put_listen_mixer),
11296 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11297 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11298 msm_routing_put_listen_mixer),
11299 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11300 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11301 msm_routing_put_listen_mixer),
11302 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11303 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11304 msm_routing_put_listen_mixer),
Ashish Jain01b10322018-05-12 15:37:44 +053011305 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
11306 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11307 msm_routing_put_listen_mixer),
11308 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
11309 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11310 msm_routing_put_listen_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011311};
11312
11313static const struct snd_kcontrol_new lsm2_mixer_controls[] = {
11314 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11315 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11316 msm_routing_put_listen_mixer),
11317 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11318 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11319 msm_routing_put_listen_mixer),
11320 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11321 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11322 msm_routing_put_listen_mixer),
11323 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11324 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11325 msm_routing_put_listen_mixer),
11326 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11327 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11328 msm_routing_put_listen_mixer),
11329 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11330 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11331 msm_routing_put_listen_mixer),
11332 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11333 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11334 msm_routing_put_listen_mixer),
11335 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11336 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11337 msm_routing_put_listen_mixer),
Ashish Jain01b10322018-05-12 15:37:44 +053011338 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
11339 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11340 msm_routing_put_listen_mixer),
11341 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
11342 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11343 msm_routing_put_listen_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011344};
11345
11346static const struct snd_kcontrol_new lsm3_mixer_controls[] = {
11347 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11348 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11349 msm_routing_put_listen_mixer),
11350 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11351 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11352 msm_routing_put_listen_mixer),
11353 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11354 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11355 msm_routing_put_listen_mixer),
11356 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11357 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11358 msm_routing_put_listen_mixer),
11359 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11360 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11361 msm_routing_put_listen_mixer),
11362 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11363 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11364 msm_routing_put_listen_mixer),
11365 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11366 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11367 msm_routing_put_listen_mixer),
11368 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11369 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11370 msm_routing_put_listen_mixer),
Ashish Jain01b10322018-05-12 15:37:44 +053011371 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
11372 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11373 msm_routing_put_listen_mixer),
11374 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
11375 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11376 msm_routing_put_listen_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011377};
11378
11379static const struct snd_kcontrol_new lsm4_mixer_controls[] = {
11380 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11381 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11382 msm_routing_put_listen_mixer),
11383 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11384 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11385 msm_routing_put_listen_mixer),
11386 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11387 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11388 msm_routing_put_listen_mixer),
11389 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11390 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11391 msm_routing_put_listen_mixer),
11392 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11393 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11394 msm_routing_put_listen_mixer),
11395 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11396 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11397 msm_routing_put_listen_mixer),
11398 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11399 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11400 msm_routing_put_listen_mixer),
11401 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11402 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11403 msm_routing_put_listen_mixer),
Ashish Jain01b10322018-05-12 15:37:44 +053011404 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
11405 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11406 msm_routing_put_listen_mixer),
11407 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
11408 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11409 msm_routing_put_listen_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011410};
11411
11412static const struct snd_kcontrol_new lsm5_mixer_controls[] = {
11413 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11414 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11415 msm_routing_put_listen_mixer),
11416 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11417 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11418 msm_routing_put_listen_mixer),
11419 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11420 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11421 msm_routing_put_listen_mixer),
11422 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11423 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11424 msm_routing_put_listen_mixer),
11425 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11426 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11427 msm_routing_put_listen_mixer),
11428 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11429 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11430 msm_routing_put_listen_mixer),
11431 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11432 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11433 msm_routing_put_listen_mixer),
11434 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11435 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11436 msm_routing_put_listen_mixer),
Ashish Jain01b10322018-05-12 15:37:44 +053011437 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
11438 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11439 msm_routing_put_listen_mixer),
11440 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
11441 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11442 msm_routing_put_listen_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011443};
11444
11445static const struct snd_kcontrol_new lsm6_mixer_controls[] = {
11446 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11447 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11448 msm_routing_put_listen_mixer),
11449 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11450 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11451 msm_routing_put_listen_mixer),
11452 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11453 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11454 msm_routing_put_listen_mixer),
11455 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11456 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11457 msm_routing_put_listen_mixer),
11458 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11459 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11460 msm_routing_put_listen_mixer),
11461 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11462 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11463 msm_routing_put_listen_mixer),
11464 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11465 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11466 msm_routing_put_listen_mixer),
11467 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11468 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11469 msm_routing_put_listen_mixer),
Ashish Jain01b10322018-05-12 15:37:44 +053011470 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
11471 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11472 msm_routing_put_listen_mixer),
11473 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
11474 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11475 msm_routing_put_listen_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011476};
11477
11478static const struct snd_kcontrol_new lsm7_mixer_controls[] = {
11479 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11480 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11481 msm_routing_put_listen_mixer),
11482 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11483 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11484 msm_routing_put_listen_mixer),
11485 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11486 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11487 msm_routing_put_listen_mixer),
11488 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11489 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11490 msm_routing_put_listen_mixer),
11491 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11492 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11493 msm_routing_put_listen_mixer),
11494 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11495 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11496 msm_routing_put_listen_mixer),
11497 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11498 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11499 msm_routing_put_listen_mixer),
11500 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11501 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11502 msm_routing_put_listen_mixer),
Ashish Jain01b10322018-05-12 15:37:44 +053011503 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
11504 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11505 msm_routing_put_listen_mixer),
11506 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
11507 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11508 msm_routing_put_listen_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011509};
11510
11511static const struct snd_kcontrol_new lsm8_mixer_controls[] = {
11512 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11513 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11514 msm_routing_put_listen_mixer),
11515 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11516 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11517 msm_routing_put_listen_mixer),
11518 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11519 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11520 msm_routing_put_listen_mixer),
11521 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11522 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11523 msm_routing_put_listen_mixer),
11524 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11525 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11526 msm_routing_put_listen_mixer),
11527 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11528 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11529 msm_routing_put_listen_mixer),
11530 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11531 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11532 msm_routing_put_listen_mixer),
11533 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11534 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11535 msm_routing_put_listen_mixer),
Ashish Jain01b10322018-05-12 15:37:44 +053011536 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
11537 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11538 msm_routing_put_listen_mixer),
11539 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
11540 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11541 msm_routing_put_listen_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011542};
11543
11544static const struct snd_kcontrol_new slim_fm_switch_mixer_controls =
11545 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11546 0, 1, 0, msm_routing_get_switch_mixer,
11547 msm_routing_put_switch_mixer);
11548
11549static const struct snd_kcontrol_new slim1_fm_switch_mixer_controls =
11550 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11551 0, 1, 0, msm_routing_get_switch_mixer,
11552 msm_routing_put_switch_mixer);
11553
11554static const struct snd_kcontrol_new slim3_fm_switch_mixer_controls =
11555 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11556 0, 1, 0, msm_routing_get_switch_mixer,
11557 msm_routing_put_switch_mixer);
11558
11559static const struct snd_kcontrol_new slim4_fm_switch_mixer_controls =
11560 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11561 0, 1, 0, msm_routing_get_switch_mixer,
11562 msm_routing_put_switch_mixer);
11563
11564static const struct snd_kcontrol_new slim6_fm_switch_mixer_controls =
11565 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11566 0, 1, 0, msm_routing_get_switch_mixer,
11567 msm_routing_put_switch_mixer);
11568
11569static const struct snd_kcontrol_new pcm_rx_switch_mixer_controls =
11570 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11571 0, 1, 0, msm_routing_get_fm_pcmrx_switch_mixer,
11572 msm_routing_put_fm_pcmrx_switch_mixer);
11573
11574static const struct snd_kcontrol_new int0_mi2s_rx_switch_mixer_controls =
11575 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11576 0, 1, 0, msm_routing_get_int0_mi2s_switch_mixer,
11577 msm_routing_put_int0_mi2s_switch_mixer);
11578
11579static const struct snd_kcontrol_new int4_mi2s_rx_switch_mixer_controls =
11580 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11581 0, 1, 0, msm_routing_get_int4_mi2s_switch_mixer,
11582 msm_routing_put_int4_mi2s_switch_mixer);
11583
11584static const struct snd_kcontrol_new pri_mi2s_rx_switch_mixer_controls =
11585 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11586 0, 1, 0, msm_routing_get_pri_mi2s_switch_mixer,
11587 msm_routing_put_pri_mi2s_switch_mixer);
11588
11589static const struct snd_kcontrol_new sec_mi2s_rx_switch_mixer_controls =
11590 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11591 0, 1, 0, msm_routing_get_sec_mi2s_switch_mixer,
11592 msm_routing_put_sec_mi2s_switch_mixer);
11593
11594static const struct snd_kcontrol_new tert_mi2s_rx_switch_mixer_controls =
11595 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11596 0, 1, 0, msm_routing_get_tert_mi2s_switch_mixer,
11597 msm_routing_put_tert_mi2s_switch_mixer);
11598
11599static const struct snd_kcontrol_new quat_mi2s_rx_switch_mixer_controls =
11600 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11601 0, 1, 0, msm_routing_get_quat_mi2s_switch_mixer,
11602 msm_routing_put_quat_mi2s_switch_mixer);
11603
Rohit Kumara5077932017-09-10 22:05:05 +053011604static const struct snd_kcontrol_new quin_mi2s_rx_switch_mixer_controls =
11605 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11606 0, 1, 0, msm_routing_get_quin_mi2s_switch_mixer,
11607 msm_routing_put_quin_mi2s_switch_mixer);
11608
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011609static const struct snd_kcontrol_new hfp_pri_aux_switch_mixer_controls =
11610 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11611 0, 1, 0, msm_routing_get_hfp_switch_mixer,
11612 msm_routing_put_hfp_switch_mixer);
11613
11614static const struct snd_kcontrol_new hfp_aux_switch_mixer_controls =
11615 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11616 0, 1, 0, msm_routing_get_hfp_switch_mixer,
11617 msm_routing_put_hfp_switch_mixer);
11618
11619static const struct snd_kcontrol_new hfp_int_switch_mixer_controls =
11620 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11621 0, 1, 0, msm_routing_get_hfp_switch_mixer,
11622 msm_routing_put_hfp_switch_mixer);
11623
11624static const struct snd_kcontrol_new hfp_slim7_switch_mixer_controls =
11625 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11626 0, 1, 0, msm_routing_get_hfp_switch_mixer,
11627 msm_routing_put_hfp_switch_mixer);
11628
11629static const struct snd_kcontrol_new usb_switch_mixer_controls =
11630 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11631 0, 1, 0, msm_routing_get_usb_switch_mixer,
11632 msm_routing_put_usb_switch_mixer);
11633
11634static const struct soc_enum lsm_port_enum =
11635 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(lsm_port_text), lsm_port_text);
11636
11637static const char * const lsm_func_text[] = {
11638 "None", "AUDIO", "BEACON", "ULTRASOUND", "SWAUDIO",
11639};
11640static const struct soc_enum lsm_func_enum =
11641 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(lsm_func_text), lsm_func_text);
11642
11643static const struct snd_kcontrol_new lsm_controls[] = {
11644 /* kcontrol of lsm_function */
11645 SOC_ENUM_EXT(SLIMBUS_0_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11646 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11647 SOC_ENUM_EXT(SLIMBUS_1_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11648 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11649 SOC_ENUM_EXT(SLIMBUS_2_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11650 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11651 SOC_ENUM_EXT(SLIMBUS_3_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11652 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11653 SOC_ENUM_EXT(SLIMBUS_4_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11654 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11655 SOC_ENUM_EXT(SLIMBUS_5_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11656 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11657 SOC_ENUM_EXT(TERT_MI2S_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11658 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11659 SOC_ENUM_EXT(QUAT_MI2S_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11660 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11661 SOC_ENUM_EXT(INT3_MI2S_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11662 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
Ashish Jain01b10322018-05-12 15:37:44 +053011663 SOC_ENUM_EXT(PRI_TDM_TX_2_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11664 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11665 SOC_ENUM_EXT(PRI_TDM_TX_3_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11666 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011667 /* kcontrol of lsm_port */
11668 SOC_ENUM_EXT("LSM1 Port", lsm_port_enum,
11669 msm_routing_lsm_port_get,
11670 msm_routing_lsm_port_put),
11671 SOC_ENUM_EXT("LSM2 Port", lsm_port_enum,
11672 msm_routing_lsm_port_get,
11673 msm_routing_lsm_port_put),
11674 SOC_ENUM_EXT("LSM3 Port", lsm_port_enum,
11675 msm_routing_lsm_port_get,
11676 msm_routing_lsm_port_put),
11677 SOC_ENUM_EXT("LSM4 Port", lsm_port_enum,
11678 msm_routing_lsm_port_get,
11679 msm_routing_lsm_port_put),
11680 SOC_ENUM_EXT("LSM5 Port", lsm_port_enum,
11681 msm_routing_lsm_port_get,
11682 msm_routing_lsm_port_put),
11683 SOC_ENUM_EXT("LSM6 Port", lsm_port_enum,
11684 msm_routing_lsm_port_get,
11685 msm_routing_lsm_port_put),
11686 SOC_ENUM_EXT("LSM7 Port", lsm_port_enum,
11687 msm_routing_lsm_port_get,
11688 msm_routing_lsm_port_put),
11689 SOC_ENUM_EXT("LSM8 Port", lsm_port_enum,
11690 msm_routing_lsm_port_get,
11691 msm_routing_lsm_port_put),
11692};
11693
11694static const char * const aanc_slim_0_rx_text[] = {
11695 "ZERO", "SLIMBUS_0_TX", "SLIMBUS_1_TX", "SLIMBUS_2_TX", "SLIMBUS_3_TX",
11696 "SLIMBUS_4_TX", "SLIMBUS_5_TX", "SLIMBUS_6_TX"
11697};
11698
11699static const struct soc_enum aanc_slim_0_rx_enum =
11700 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(aanc_slim_0_rx_text),
11701 aanc_slim_0_rx_text);
11702
11703static const struct snd_kcontrol_new aanc_slim_0_rx_mux[] = {
11704 SOC_ENUM_EXT("AANC_SLIM_0_RX MUX", aanc_slim_0_rx_enum,
11705 msm_routing_slim_0_rx_aanc_mux_get,
11706 msm_routing_slim_0_rx_aanc_mux_put)
11707};
11708
11709static int msm_routing_get_stereo_to_custom_stereo_control(
11710 struct snd_kcontrol *kcontrol,
11711 struct snd_ctl_elem_value *ucontrol)
11712{
11713 ucontrol->value.integer.value[0] = is_custom_stereo_on;
11714 return 0;
11715}
11716
11717static int msm_routing_put_stereo_to_custom_stereo_control(
11718 struct snd_kcontrol *kcontrol,
11719 struct snd_ctl_elem_value *ucontrol)
11720{
11721 int flag = 0, i = 0, rc = 0, idx = 0;
11722 int be_index = 0, port_id, topo_id;
11723 unsigned int session_id = 0;
11724 uint16_t op_FL_ip_FL_weight = 0;
11725 uint16_t op_FL_ip_FR_weight = 0;
11726 uint16_t op_FR_ip_FL_weight = 0;
11727 uint16_t op_FR_ip_FR_weight = 0;
11728
11729 flag = ucontrol->value.integer.value[0];
11730 pr_debug("%s E flag %d\n", __func__, flag);
11731
11732 if ((is_custom_stereo_on && flag) || (!is_custom_stereo_on && !flag)) {
11733 pr_err("%s: is_custom_stereo_on %d, flag %d\n",
11734 __func__, is_custom_stereo_on, flag);
11735 return 0;
11736 }
11737 is_custom_stereo_on = flag ? true : false;
11738 pr_debug("%s:is_custom_stereo_on %d\n", __func__, is_custom_stereo_on);
11739 for (be_index = 0; be_index < MSM_BACKEND_DAI_MAX; be_index++) {
11740 port_id = msm_bedais[be_index].port_id;
11741 if (!msm_bedais[be_index].active)
11742 continue;
11743 if ((port_id != SLIMBUS_0_RX) &&
11744 (port_id != RT_PROXY_PORT_001_RX) &&
11745 (port_id != AFE_PORT_ID_PRIMARY_MI2S_RX) &&
11746 (port_id != AFE_PORT_ID_INT4_MI2S_RX))
11747 continue;
11748
11749 for_each_set_bit(i, &msm_bedais[be_index].fe_sessions[0],
11750 MSM_FRONTEND_DAI_MM_SIZE) {
11751 if (fe_dai_map[i][SESSION_TYPE_RX].perf_mode !=
11752 LEGACY_PCM_MODE)
11753 goto skip_send_custom_stereo;
11754 session_id =
11755 fe_dai_map[i][SESSION_TYPE_RX].strm_id;
11756 if (is_custom_stereo_on) {
11757 op_FL_ip_FL_weight =
11758 Q14_GAIN_ZERO_POINT_FIVE;
11759 op_FL_ip_FR_weight =
11760 Q14_GAIN_ZERO_POINT_FIVE;
11761 op_FR_ip_FL_weight =
11762 Q14_GAIN_ZERO_POINT_FIVE;
11763 op_FR_ip_FR_weight =
11764 Q14_GAIN_ZERO_POINT_FIVE;
11765 } else {
11766 op_FL_ip_FL_weight = Q14_GAIN_UNITY;
11767 op_FL_ip_FR_weight = 0;
11768 op_FR_ip_FL_weight = 0;
11769 op_FR_ip_FR_weight = Q14_GAIN_UNITY;
11770 }
11771 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++) {
11772 unsigned long copp =
11773 session_copp_map[i]
11774 [SESSION_TYPE_RX][be_index];
11775 if (!test_bit(idx, &copp))
11776 goto skip_send_custom_stereo;
11777 topo_id = adm_get_topology_for_port_copp_idx(
11778 msm_bedais[be_index].port_id, idx);
11779 if (topo_id < 0)
11780 pr_debug("%s:Err:custom stereo topo %d",
11781 __func__, topo_id);
11782 pr_debug("idx %d\n", idx);
11783 if (topo_id == DS2_ADM_COPP_TOPOLOGY_ID)
11784 rc = msm_ds2_dap_set_custom_stereo_onoff
11785 (msm_bedais[be_index].port_id,
11786 idx, is_custom_stereo_on);
11787 else if (topo_id == DOLBY_ADM_COPP_TOPOLOGY_ID)
11788 rc = dolby_dap_set_custom_stereo_onoff(
11789 msm_bedais[be_index].port_id,
11790 idx, is_custom_stereo_on);
11791 else
11792 rc = msm_qti_pp_send_stereo_to_custom_stereo_cmd
11793 (msm_bedais[be_index].port_id,
11794 idx, session_id,
11795 op_FL_ip_FL_weight,
11796 op_FL_ip_FR_weight,
11797 op_FR_ip_FL_weight,
11798 op_FR_ip_FR_weight);
11799 if (rc < 0)
11800skip_send_custom_stereo:
11801 pr_err("%s: err setting custom stereo\n",
11802 __func__);
11803 }
11804
11805 }
11806 }
11807 return 0;
11808}
11809
11810static const struct snd_kcontrol_new stereo_to_custom_stereo_controls[] = {
11811 SOC_SINGLE_EXT("Set Custom Stereo OnOff", SND_SOC_NOPM, 0,
11812 1, 0, msm_routing_get_stereo_to_custom_stereo_control,
11813 msm_routing_put_stereo_to_custom_stereo_control),
11814};
11815
11816static int msm_routing_get_app_type_cfg_control(struct snd_kcontrol *kcontrol,
11817 struct snd_ctl_elem_value *ucontrol)
11818{
11819 return 0;
11820}
11821
11822static int msm_routing_put_app_type_cfg_control(struct snd_kcontrol *kcontrol,
11823 struct snd_ctl_elem_value *ucontrol)
11824{
11825 int i = 0, j;
11826 int num_app_types = ucontrol->value.integer.value[i++];
11827
11828 pr_debug("%s\n", __func__);
11829
11830 memset(app_type_cfg, 0, MAX_APP_TYPES*
11831 sizeof(struct msm_pcm_routing_app_type_data));
11832 if (num_app_types > MAX_APP_TYPES) {
11833 pr_err("%s: number of app types exceed the max supported\n",
11834 __func__);
11835 return -EINVAL;
11836 }
11837 for (j = 0; j < num_app_types; j++) {
11838 app_type_cfg[j].app_type =
11839 ucontrol->value.integer.value[i++];
11840 app_type_cfg[j].sample_rate =
11841 ucontrol->value.integer.value[i++];
11842 app_type_cfg[j].bit_width =
11843 ucontrol->value.integer.value[i++];
11844 }
11845
11846 return 0;
11847}
11848
11849static int msm_routing_put_app_type_gain_control(struct snd_kcontrol *kcontrol,
11850 struct snd_ctl_elem_value *ucontrol)
11851{
11852 int j, fe_id, be_id, port_type;
11853 int ret = 0;
11854 unsigned long copp;
11855 struct msm_pcm_routing_bdai_data *bedai;
11856 int dir = ucontrol->value.integer.value[0] ? SESSION_TYPE_TX :
11857 SESSION_TYPE_RX;
11858 int app_type = ucontrol->value.integer.value[1];
11859 int gain = (ucontrol->value.integer.value[2] +
11860 ucontrol->value.integer.value[3])/2;
11861
11862 port_type = (dir == SESSION_TYPE_RX) ? MSM_AFE_PORT_TYPE_RX :
11863 MSM_AFE_PORT_TYPE_TX;
11864
11865 mutex_lock(&routing_lock);
11866 for (be_id = 0; be_id < MSM_BACKEND_DAI_MAX; be_id++) {
11867 if (is_be_dai_extproc(be_id))
11868 continue;
11869
11870 bedai = &msm_bedais[be_id];
11871 if (afe_get_port_type(bedai->port_id) != port_type)
11872 continue;
11873
11874 if (!bedai->active)
11875 continue;
11876
11877 for (fe_id = 0; fe_id < MSM_FRONTEND_DAI_MAX; fe_id++) {
11878 if (!test_bit(fe_id, &bedai->fe_sessions[0]))
11879 continue;
11880
11881 if (app_type !=
11882 fe_dai_app_type_cfg[fe_id][dir][be_id].app_type)
11883 continue;
11884
11885 copp = session_copp_map[fe_id][dir][be_id];
11886 for (j = 0; j < MAX_COPPS_PER_PORT; j++) {
11887 if (!test_bit(j, &copp))
11888 continue;
11889 ret |= adm_set_volume(bedai->port_id, j, gain);
11890 }
11891 }
11892 }
11893 mutex_unlock(&routing_lock);
11894 return ret ? -EINVAL : 0;
11895}
11896
11897static const struct snd_kcontrol_new app_type_cfg_controls[] = {
11898 SOC_SINGLE_MULTI_EXT("App Type Config", SND_SOC_NOPM, 0,
11899 0xFFFFFFFF, 0, 128, msm_routing_get_app_type_cfg_control,
11900 msm_routing_put_app_type_cfg_control),
11901 SOC_SINGLE_MULTI_EXT("App Type Gain", SND_SOC_NOPM, 0,
11902 0x2000, 0, 4, NULL, msm_routing_put_app_type_gain_control)
11903};
11904
Vikram Pandurangaee9c03a2017-09-07 15:06:17 -070011905static int msm_routing_put_module_cfg_control(struct snd_kcontrol *kcontrol,
11906 struct snd_ctl_elem_value *ucontrol)
11907{
11908 int copp_idx, fe_id, be_id, port_type;
11909 int ret = 0;
11910 unsigned long copp;
11911 struct msm_pcm_routing_bdai_data *bedai;
11912 char *param_data = NULL;
11913 uint32_t *update_param_data = NULL;
11914 uint32_t param_size = sizeof(uint32_t) +
11915 sizeof(struct adm_param_data_v5);
11916 int dir = ucontrol->value.integer.value[0] ? SESSION_TYPE_TX :
11917 SESSION_TYPE_RX;
11918 int app_type = ucontrol->value.integer.value[1];
11919 int module_id = ucontrol->value.integer.value[2];
11920 int instance_id = ucontrol->value.integer.value[3];
11921 int param_id = ucontrol->value.integer.value[4];
11922 int param_value = ucontrol->value.integer.value[5];
11923
11924 port_type = (dir == SESSION_TYPE_RX) ? MSM_AFE_PORT_TYPE_RX :
11925 MSM_AFE_PORT_TYPE_TX;
11926 pr_debug("%s app_type:%d mod_id:%d instance_id:%d param_id:%d value:%d\n",
11927 __func__, app_type, module_id,
11928 instance_id, param_id, param_value);
11929
11930 param_data = kzalloc(param_size, GFP_KERNEL);
11931 if (!param_data)
11932 return -ENOMEM;
11933
11934 update_param_data = (uint32_t *)param_data;
11935 *update_param_data++ = module_id;
11936 *update_param_data++ = param_id;
11937 *update_param_data++ = sizeof(uint32_t);
11938 *update_param_data++ = param_value;
11939
11940 mutex_lock(&routing_lock);
11941 for (be_id = 0; be_id < MSM_BACKEND_DAI_MAX; be_id++) {
11942 if (is_be_dai_extproc(be_id))
11943 continue;
11944
11945 bedai = &msm_bedais[be_id];
11946 if (afe_get_port_type(bedai->port_id) != port_type)
11947 continue;
11948
11949 if (!bedai->active)
11950 continue;
11951
11952 for (fe_id = 0; fe_id < MSM_FRONTEND_DAI_MAX; fe_id++) {
11953 if (!test_bit(fe_id, &bedai->fe_sessions[0]))
11954 continue;
11955
11956 if (app_type !=
11957 fe_dai_app_type_cfg[fe_id][dir][be_id].app_type)
11958 continue;
11959
11960 copp = session_copp_map[fe_id][dir][be_id];
11961 for (copp_idx = 0; copp_idx < MAX_COPPS_PER_PORT;
11962 copp_idx++) {
11963 if (!test_bit(copp_idx, &copp))
11964 continue;
11965
11966 ret = adm_send_params_v5(bedai->port_id,
11967 copp_idx,
11968 param_data,
11969 param_size);
11970 if (ret) {
11971 pr_err("%s: Setting param failed with err=%d\n",
11972 __func__, ret);
11973 ret = -EINVAL;
11974 goto done;
11975 }
11976 }
11977 }
11978 }
11979done:
11980 mutex_unlock(&routing_lock);
11981 kfree(param_data);
11982 return ret;
11983}
11984
11985static const struct snd_kcontrol_new module_cfg_controls[] = {
11986 SOC_SINGLE_MULTI_EXT("Audio Effect", SND_SOC_NOPM, 0,
11987 0x2000, 0, 6, NULL, msm_routing_put_module_cfg_control)
11988};
11989
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011990static int msm_routing_get_lsm_app_type_cfg_control(
11991 struct snd_kcontrol *kcontrol,
11992 struct snd_ctl_elem_value *ucontrol)
11993{
11994 return 0;
11995}
11996
11997static int msm_routing_put_lsm_app_type_cfg_control(
11998 struct snd_kcontrol *kcontrol,
11999 struct snd_ctl_elem_value *ucontrol)
12000{
12001 int i = 0, j;
12002 int num_app_types = ucontrol->value.integer.value[i++];
12003
12004 memset(lsm_app_type_cfg, 0, MAX_APP_TYPES*
12005 sizeof(struct msm_pcm_routing_app_type_data));
12006 if (num_app_types > MAX_APP_TYPES) {
12007 pr_err("%s: number of app types exceed the max supported\n",
12008 __func__);
12009 return -EINVAL;
12010 }
12011 for (j = 0; j < num_app_types; j++) {
12012 lsm_app_type_cfg[j].app_type =
12013 ucontrol->value.integer.value[i++];
12014 lsm_app_type_cfg[j].sample_rate =
12015 ucontrol->value.integer.value[i++];
12016 lsm_app_type_cfg[j].bit_width =
12017 ucontrol->value.integer.value[i++];
12018 }
12019
12020 return 0;
12021}
12022
12023static const struct snd_kcontrol_new lsm_app_type_cfg_controls[] = {
12024 SOC_SINGLE_MULTI_EXT("Listen App Type Config", SND_SOC_NOPM, 0,
12025 0xFFFFFFFF, 0, 128, msm_routing_get_lsm_app_type_cfg_control,
12026 msm_routing_put_lsm_app_type_cfg_control),
12027};
12028
12029static int msm_routing_get_use_ds1_or_ds2_control(
12030 struct snd_kcontrol *kcontrol,
12031 struct snd_ctl_elem_value *ucontrol)
12032{
12033 ucontrol->value.integer.value[0] = is_ds2_on;
12034 return 0;
12035}
12036
12037static int msm_routing_put_use_ds1_or_ds2_control(
12038 struct snd_kcontrol *kcontrol,
12039 struct snd_ctl_elem_value *ucontrol)
12040{
12041 is_ds2_on = ucontrol->value.integer.value[0];
12042 return 0;
12043}
12044
12045static const struct snd_kcontrol_new use_ds1_or_ds2_controls[] = {
12046 SOC_SINGLE_EXT("DS2 OnOff", SND_SOC_NOPM, 0,
12047 1, 0, msm_routing_get_use_ds1_or_ds2_control,
12048 msm_routing_put_use_ds1_or_ds2_control),
12049};
12050
12051int msm_routing_get_rms_value_control(struct snd_kcontrol *kcontrol,
12052 struct snd_ctl_elem_value *ucontrol) {
12053 int rc = 0;
12054 int be_idx = 0;
12055 char *param_value;
12056 int *update_param_value;
12057 uint32_t param_length = sizeof(uint32_t);
12058 uint32_t param_payload_len = RMS_PAYLOAD_LEN * sizeof(uint32_t);
12059
12060 param_value = kzalloc(param_length + param_payload_len, GFP_KERNEL);
12061 if (!param_value)
12062 return -ENOMEM;
12063
12064 for (be_idx = 0; be_idx < MSM_BACKEND_DAI_MAX; be_idx++)
12065 if (msm_bedais[be_idx].port_id == SLIMBUS_0_TX)
12066 break;
12067 if ((be_idx < MSM_BACKEND_DAI_MAX) && msm_bedais[be_idx].active) {
12068 rc = adm_get_params(SLIMBUS_0_TX, 0,
12069 RMS_MODULEID_APPI_PASSTHRU,
12070 RMS_PARAM_FIRST_SAMPLE,
12071 param_length + param_payload_len,
12072 param_value);
12073 if (rc) {
12074 pr_err("%s: get parameters failed:%d\n", __func__, rc);
12075 kfree(param_value);
12076 return -EINVAL;
12077 }
12078 update_param_value = (int *)param_value;
12079 ucontrol->value.integer.value[0] = update_param_value[0];
12080
12081 pr_debug("%s: FROM DSP value[0] 0x%x\n",
12082 __func__, update_param_value[0]);
12083 }
12084 kfree(param_value);
12085 return 0;
12086}
12087
12088static int msm_voc_session_id_put(struct snd_kcontrol *kcontrol,
12089 struct snd_ctl_elem_value *ucontrol)
12090{
12091 voc_session_id = ucontrol->value.integer.value[0];
12092
12093 pr_debug("%s: voc_session_id=%u\n", __func__, voc_session_id);
12094
12095 return 0;
12096}
12097
12098static int msm_voc_session_id_get(struct snd_kcontrol *kcontrol,
12099 struct snd_ctl_elem_value *ucontrol)
12100{
12101 ucontrol->value.integer.value[0] = voc_session_id;
12102
12103 return 0;
12104}
12105
12106static struct snd_kcontrol_new msm_voc_session_controls[] = {
12107 SOC_SINGLE_MULTI_EXT("Voc VSID", SND_SOC_NOPM, 0,
12108 0xFFFFFFFF, 0, 1, msm_voc_session_id_get,
12109 msm_voc_session_id_put),
12110};
12111
12112static int msm_sound_focus_info(struct snd_kcontrol *kcontrol,
12113 struct snd_ctl_elem_info *uinfo)
12114{
12115 uinfo->type = SNDRV_CTL_ELEM_TYPE_BYTES;
12116 uinfo->count = sizeof(struct sound_focus_param);
12117
12118 return 0;
12119}
12120
12121static int msm_voice_sound_focus_put(struct snd_kcontrol *kcontrol,
12122 struct snd_ctl_elem_value *ucontrol)
12123{
12124 int ret = 0;
12125 struct sound_focus_param soundFocusData;
12126
12127 memcpy((void *)&soundFocusData, ucontrol->value.bytes.data,
12128 sizeof(struct sound_focus_param));
12129 ret = voc_set_sound_focus(soundFocusData);
12130 if (ret) {
12131 pr_err("%s: Error setting Sound Focus Params, err=%d\n",
12132 __func__, ret);
12133
12134 ret = -EINVAL;
12135 }
12136
12137 return ret;
12138}
12139
12140static int msm_voice_sound_focus_get(struct snd_kcontrol *kcontrol,
12141 struct snd_ctl_elem_value *ucontrol)
12142{
12143 int ret = 0;
12144 struct sound_focus_param soundFocusData;
12145
12146 memset(&soundFocusData, 0, sizeof(struct sound_focus_param));
12147
12148 ret = voc_get_sound_focus(&soundFocusData);
12149 if (ret) {
12150 pr_err("%s: Error getting Sound Focus Params, err=%d\n",
12151 __func__, ret);
12152
12153 ret = -EINVAL;
12154 goto done;
12155 }
12156 memcpy(ucontrol->value.bytes.data, (void *)&soundFocusData,
12157 sizeof(struct sound_focus_param));
12158
12159done:
12160 return ret;
12161}
12162
12163static int msm_source_tracking_info(struct snd_kcontrol *kcontrol,
12164 struct snd_ctl_elem_info *uinfo)
12165{
12166 uinfo->type = SNDRV_CTL_ELEM_TYPE_BYTES;
12167 uinfo->count = sizeof(struct source_tracking_param);
12168
12169 return 0;
12170}
12171
12172static int msm_voice_source_tracking_get(struct snd_kcontrol *kcontrol,
12173 struct snd_ctl_elem_value *ucontrol)
12174{
12175 int ret = 0;
12176 struct source_tracking_param sourceTrackingData;
12177
12178 memset(&sourceTrackingData, 0, sizeof(struct source_tracking_param));
12179
12180 ret = voc_get_source_tracking(&sourceTrackingData);
12181 if (ret) {
12182 pr_err("%s: Error getting Source Tracking Params, err=%d\n",
12183 __func__, ret);
12184
12185 ret = -EINVAL;
12186 goto done;
12187 }
12188 memcpy(ucontrol->value.bytes.data, (void *)&sourceTrackingData,
12189 sizeof(struct source_tracking_param));
12190
12191done:
12192 return ret;
12193}
12194
12195static int msm_audio_get_copp_idx_from_port_id(int port_id, int session_type,
12196 int *copp_idx)
12197{
12198 int i, idx, be_idx;
12199 int ret = 0;
12200 unsigned long copp;
12201
12202 pr_debug("%s: Enter, port_id=%d\n", __func__, port_id);
12203
12204 ret = q6audio_validate_port(port_id);
12205 if (ret < 0) {
12206 pr_err("%s: port validation failed id 0x%x ret %d\n",
12207 __func__, port_id, ret);
12208
12209 ret = -EINVAL;
12210 goto done;
12211 }
12212
12213 for (be_idx = 0; be_idx < MSM_BACKEND_DAI_MAX; be_idx++) {
12214 if (msm_bedais[be_idx].port_id == port_id)
12215 break;
12216 }
12217 if (be_idx >= MSM_BACKEND_DAI_MAX) {
12218 pr_err("%s: Invalid be id %d\n", __func__, be_idx);
12219
12220 ret = -EINVAL;
12221 goto done;
12222 }
12223
12224 for_each_set_bit(i, &msm_bedais[be_idx].fe_sessions[0],
12225 MSM_FRONTEND_DAI_MM_SIZE) {
12226 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++) {
12227 copp = session_copp_map[i]
12228 [session_type][be_idx];
12229 if (test_bit(idx, &copp))
12230 break;
12231 }
12232 if (idx >= MAX_COPPS_PER_PORT)
12233 continue;
12234 else
12235 break;
12236 }
12237 if (i >= MSM_FRONTEND_DAI_MM_SIZE) {
12238 pr_err("%s: Invalid FE, exiting\n", __func__);
12239
12240 ret = -EINVAL;
12241 goto done;
12242 }
12243 *copp_idx = idx;
12244 pr_debug("%s: copp_idx=%d\n", __func__, *copp_idx);
12245
12246done:
12247 return ret;
12248}
12249
12250static int msm_audio_sound_focus_derive_port_id(struct snd_kcontrol *kcontrol,
12251 const char *prefix, int *port_id)
12252{
12253 int ret = 0;
12254
12255 pr_debug("%s: Enter, prefix:%s\n", __func__, prefix);
12256
12257 /*
12258 * Mixer control name will be like "Sound Focus Audio Tx SLIMBUS_0"
12259 * where the prefix is "Sound Focus Audio Tx ". Skip the prefix
12260 * and compare the string with the backend name to derive the port id.
12261 */
12262 if (!strcmp(kcontrol->id.name + strlen(prefix),
12263 "SLIMBUS_0")) {
12264 *port_id = SLIMBUS_0_TX;
12265 } else if (!strcmp(kcontrol->id.name + strlen(prefix),
12266 "TERT_MI2S")) {
12267 *port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
12268 } else if (!strcmp(kcontrol->id.name + strlen(prefix),
12269 "INT3_MI2S")) {
12270 *port_id = AFE_PORT_ID_INT3_MI2S_TX;
12271 } else {
12272 pr_err("%s: mixer ctl name=%s, could not derive valid port id\n",
12273 __func__, kcontrol->id.name);
12274
12275 ret = -EINVAL;
12276 goto done;
12277 }
12278 pr_debug("%s: mixer ctl name=%s, derived port_id=%d\n",
12279 __func__, kcontrol->id.name, *port_id);
12280
12281done:
12282 return ret;
12283}
12284
12285static int msm_audio_sound_focus_put(struct snd_kcontrol *kcontrol,
12286 struct snd_ctl_elem_value *ucontrol)
12287{
12288 int ret = 0;
12289 struct sound_focus_param soundFocusData;
12290 int port_id, copp_idx;
12291
12292 ret = msm_audio_sound_focus_derive_port_id(kcontrol,
12293 "Sound Focus Audio Tx ", &port_id);
12294 if (ret != 0) {
12295 pr_err("%s: Error in deriving port id, err=%d\n",
12296 __func__, ret);
12297
12298 ret = -EINVAL;
12299 goto done;
12300 }
12301
12302 ret = msm_audio_get_copp_idx_from_port_id(port_id, SESSION_TYPE_TX,
12303 &copp_idx);
12304 if (ret) {
12305 pr_err("%s: Could not get copp idx for port_id=%d\n",
12306 __func__, port_id);
12307
12308 ret = -EINVAL;
12309 goto done;
12310 }
12311
12312 memcpy((void *)&soundFocusData, ucontrol->value.bytes.data,
12313 sizeof(struct sound_focus_param));
12314
12315 ret = adm_set_sound_focus(port_id, copp_idx, soundFocusData);
12316 if (ret) {
12317 pr_err("%s: Error setting Sound Focus Params, err=%d\n",
12318 __func__, ret);
12319
12320 ret = -EINVAL;
12321 goto done;
12322 }
12323
12324done:
12325 return ret;
12326}
12327
12328static int msm_audio_sound_focus_get(struct snd_kcontrol *kcontrol,
12329 struct snd_ctl_elem_value *ucontrol)
12330{
12331 int ret = 0;
12332 struct sound_focus_param soundFocusData;
12333 int port_id, copp_idx;
12334
12335 ret = msm_audio_sound_focus_derive_port_id(kcontrol,
12336 "Sound Focus Audio Tx ", &port_id);
12337 if (ret) {
12338 pr_err("%s: Error in deriving port id, err=%d\n",
12339 __func__, ret);
12340
12341 ret = -EINVAL;
12342 goto done;
12343 }
12344
12345 ret = msm_audio_get_copp_idx_from_port_id(port_id, SESSION_TYPE_TX,
12346 &copp_idx);
12347 if (ret) {
12348 pr_err("%s: Could not get copp idx for port_id=%d\n",
12349 __func__, port_id);
12350
12351 ret = -EINVAL;
12352 goto done;
12353 }
12354
12355 ret = adm_get_sound_focus(port_id, copp_idx, &soundFocusData);
12356 if (ret) {
12357 pr_err("%s: Error getting Sound Focus Params, err=%d\n",
12358 __func__, ret);
12359
12360 ret = -EINVAL;
12361 goto done;
12362 }
12363
12364 memcpy(ucontrol->value.bytes.data, (void *)&soundFocusData,
12365 sizeof(struct sound_focus_param));
12366
12367done:
12368 return ret;
12369}
12370
12371static int msm_audio_source_tracking_get(struct snd_kcontrol *kcontrol,
12372 struct snd_ctl_elem_value *ucontrol)
12373{
12374 int ret = 0;
12375 struct source_tracking_param sourceTrackingData;
12376 int port_id, copp_idx;
12377
12378 ret = msm_audio_sound_focus_derive_port_id(kcontrol,
12379 "Source Tracking Audio Tx ", &port_id);
12380 if (ret) {
12381 pr_err("%s: Error in deriving port id, err=%d\n",
12382 __func__, ret);
12383
12384 ret = -EINVAL;
12385 goto done;
12386 }
12387
12388 ret = msm_audio_get_copp_idx_from_port_id(port_id, SESSION_TYPE_TX,
12389 &copp_idx);
12390 if (ret) {
12391 pr_err("%s: Could not get copp idx for port_id=%d\n",
12392 __func__, port_id);
12393
12394 ret = -EINVAL;
12395 goto done;
12396 }
12397
12398 ret = adm_get_source_tracking(port_id, copp_idx, &sourceTrackingData);
12399 if (ret) {
12400 pr_err("%s: Error getting Source Tracking Params, err=%d\n",
12401 __func__, ret);
12402
12403 ret = -EINVAL;
12404 goto done;
12405 }
12406
12407 memcpy(ucontrol->value.bytes.data, (void *)&sourceTrackingData,
12408 sizeof(struct source_tracking_param));
12409
12410done:
12411 return ret;
12412}
12413
12414static const struct snd_kcontrol_new msm_source_tracking_controls[] = {
12415 {
12416 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12417 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12418 .name = "Sound Focus Voice Tx SLIMBUS_0",
12419 .info = msm_sound_focus_info,
12420 .get = msm_voice_sound_focus_get,
12421 .put = msm_voice_sound_focus_put,
12422 },
12423 {
12424 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12425 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12426 .name = "Source Tracking Voice Tx SLIMBUS_0",
12427 .info = msm_source_tracking_info,
12428 .get = msm_voice_source_tracking_get,
12429 },
12430 {
12431 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12432 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12433 .name = "Sound Focus Audio Tx SLIMBUS_0",
12434 .info = msm_sound_focus_info,
12435 .get = msm_audio_sound_focus_get,
12436 .put = msm_audio_sound_focus_put,
12437 },
12438 {
12439 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12440 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12441 .name = "Source Tracking Audio Tx SLIMBUS_0",
12442 .info = msm_source_tracking_info,
12443 .get = msm_audio_source_tracking_get,
12444 },
12445 {
12446 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12447 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12448 .name = "Sound Focus Voice Tx TERT_MI2S",
12449 .info = msm_sound_focus_info,
12450 .get = msm_voice_sound_focus_get,
12451 .put = msm_voice_sound_focus_put,
12452 },
12453 {
12454 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12455 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12456 .name = "Source Tracking Voice Tx TERT_MI2S",
12457 .info = msm_source_tracking_info,
12458 .get = msm_voice_source_tracking_get,
12459 },
12460 {
12461 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12462 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12463 .name = "Sound Focus Audio Tx TERT_MI2S",
12464 .info = msm_sound_focus_info,
12465 .get = msm_audio_sound_focus_get,
12466 .put = msm_audio_sound_focus_put,
12467 },
12468 {
12469 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12470 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12471 .name = "Source Tracking Audio Tx TERT_MI2S",
12472 .info = msm_source_tracking_info,
12473 .get = msm_audio_source_tracking_get,
12474 },
12475 {
12476 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12477 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12478 .name = "Sound Focus Voice Tx INT3_MI2S",
12479 .info = msm_sound_focus_info,
12480 .get = msm_voice_sound_focus_get,
12481 .put = msm_voice_sound_focus_put,
12482 },
12483 {
12484 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12485 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12486 .name = "Source Tracking Voice Tx INT3_MI2S",
12487 .info = msm_source_tracking_info,
12488 .get = msm_voice_source_tracking_get,
12489 },
12490 {
12491 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12492 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12493 .name = "Sound Focus Audio Tx INT3_MI2S",
12494 .info = msm_sound_focus_info,
12495 .get = msm_audio_sound_focus_get,
12496 .put = msm_audio_sound_focus_put,
12497 },
12498 {
12499 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12500 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12501 .name = "Source Tracking Audio Tx INT3_MI2S",
12502 .info = msm_source_tracking_info,
12503 .get = msm_audio_source_tracking_get,
12504 },
12505};
12506
12507static int spkr_prot_put_vi_lch_port(struct snd_kcontrol *kcontrol,
12508 struct snd_ctl_elem_value *ucontrol)
12509{
12510 int ret = 0;
12511 int item;
12512 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
12513
12514 pr_debug("%s item is %d\n", __func__,
12515 ucontrol->value.enumerated.item[0]);
12516 mutex_lock(&routing_lock);
12517 item = ucontrol->value.enumerated.item[0];
12518 if (item < e->items) {
12519 pr_debug("%s RX DAI ID %d TX DAI id %d\n",
12520 __func__, e->shift_l, e->values[item]);
12521 if (e->shift_l < MSM_BACKEND_DAI_MAX &&
12522 e->values[item] < MSM_BACKEND_DAI_MAX)
12523 /* Enable feedback TX path */
12524 ret = afe_spk_prot_feed_back_cfg(
12525 msm_bedais[e->values[item]].port_id,
12526 msm_bedais[e->shift_l].port_id, 1, 0, 1);
12527 else {
12528 pr_debug("%s values are out of range item %d\n",
12529 __func__, e->values[item]);
12530 /* Disable feedback TX path */
12531 if (e->values[item] == MSM_BACKEND_DAI_MAX)
12532 ret = afe_spk_prot_feed_back_cfg(0, 0, 0, 0, 0);
12533 else
12534 ret = -EINVAL;
12535 }
12536 } else {
12537 pr_err("%s item value is out of range item\n", __func__);
12538 ret = -EINVAL;
12539 }
12540 mutex_unlock(&routing_lock);
12541 return ret;
12542}
12543
12544static int spkr_prot_put_vi_rch_port(struct snd_kcontrol *kcontrol,
12545 struct snd_ctl_elem_value *ucontrol)
12546{
12547 int ret = 0;
12548 int item;
12549 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
12550
12551 pr_debug("%s item is %d\n", __func__,
12552 ucontrol->value.enumerated.item[0]);
12553 mutex_lock(&routing_lock);
12554 item = ucontrol->value.enumerated.item[0];
12555 if (item < e->items) {
12556 pr_debug("%s RX DAI ID %d TX DAI id %d\n",
12557 __func__, e->shift_l, e->values[item]);
12558 if (e->shift_l < MSM_BACKEND_DAI_MAX &&
12559 e->values[item] < MSM_BACKEND_DAI_MAX)
12560 /* Enable feedback TX path */
12561 ret = afe_spk_prot_feed_back_cfg(
12562 msm_bedais[e->values[item]].port_id,
12563 msm_bedais[e->shift_l].port_id,
12564 1, 1, 1);
12565 else {
12566 pr_debug("%s values are out of range item %d\n",
12567 __func__, e->values[item]);
12568 /* Disable feedback TX path */
12569 if (e->values[item] == MSM_BACKEND_DAI_MAX)
12570 ret = afe_spk_prot_feed_back_cfg(0,
12571 0, 0, 0, 0);
12572 else
12573 ret = -EINVAL;
12574 }
12575 } else {
12576 pr_err("%s item value is out of range item\n", __func__);
12577 ret = -EINVAL;
12578 }
12579 mutex_unlock(&routing_lock);
12580 return ret;
12581}
12582
12583static int spkr_prot_get_vi_lch_port(struct snd_kcontrol *kcontrol,
12584 struct snd_ctl_elem_value *ucontrol)
12585{
12586 pr_debug("%s\n", __func__);
12587 return 0;
12588}
12589
12590static int spkr_prot_get_vi_rch_port(struct snd_kcontrol *kcontrol,
12591 struct snd_ctl_elem_value *ucontrol)
12592{
12593 pr_debug("%s\n", __func__);
12594 ucontrol->value.enumerated.item[0] = 0;
12595 return 0;
12596}
12597
12598static const char * const slim0_rx_vi_fb_tx_lch_mux_text[] = {
12599 "ZERO", "SLIM4_TX"
12600};
12601
12602static const char * const slim0_rx_vi_fb_tx_rch_mux_text[] = {
12603 "ZERO", "SLIM4_TX"
12604};
12605
12606static const char * const mi2s_rx_vi_fb_tx_mux_text[] = {
12607 "ZERO", "SENARY_TX"
12608};
12609
12610static const char * const int4_mi2s_rx_vi_fb_tx_mono_mux_text[] = {
12611 "ZERO", "INT5_MI2S_TX"
12612};
12613
12614static const char * const int4_mi2s_rx_vi_fb_tx_stereo_mux_text[] = {
12615 "ZERO", "INT5_MI2S_TX"
12616};
12617
12618static const int const slim0_rx_vi_fb_tx_lch_value[] = {
12619 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_SLIMBUS_4_TX
12620};
12621
12622static const int const slim0_rx_vi_fb_tx_rch_value[] = {
12623 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_SLIMBUS_4_TX
12624};
12625
12626static const int const mi2s_rx_vi_fb_tx_value[] = {
12627 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_SENARY_MI2S_TX
12628};
12629
12630static const int const int4_mi2s_rx_vi_fb_tx_mono_ch_value[] = {
12631 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_INT5_MI2S_TX
12632};
12633
12634static const int const int4_mi2s_rx_vi_fb_tx_stereo_ch_value[] = {
12635 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_INT5_MI2S_TX
12636};
12637
12638static const struct soc_enum slim0_rx_vi_fb_lch_mux_enum =
12639 SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_SLIMBUS_0_RX, 0, 0,
12640 ARRAY_SIZE(slim0_rx_vi_fb_tx_lch_mux_text),
12641 slim0_rx_vi_fb_tx_lch_mux_text, slim0_rx_vi_fb_tx_lch_value);
12642
12643static const struct soc_enum slim0_rx_vi_fb_rch_mux_enum =
12644 SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_SLIMBUS_0_RX, 0, 0,
12645 ARRAY_SIZE(slim0_rx_vi_fb_tx_rch_mux_text),
12646 slim0_rx_vi_fb_tx_rch_mux_text, slim0_rx_vi_fb_tx_rch_value);
12647
12648static const struct soc_enum mi2s_rx_vi_fb_mux_enum =
12649 SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_PRI_MI2S_RX, 0, 0,
12650 ARRAY_SIZE(mi2s_rx_vi_fb_tx_mux_text),
12651 mi2s_rx_vi_fb_tx_mux_text, mi2s_rx_vi_fb_tx_value);
12652
12653static const struct soc_enum int4_mi2s_rx_vi_fb_mono_ch_mux_enum =
12654 SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_INT4_MI2S_RX, 0, 0,
12655 ARRAY_SIZE(int4_mi2s_rx_vi_fb_tx_mono_mux_text),
12656 int4_mi2s_rx_vi_fb_tx_mono_mux_text,
12657 int4_mi2s_rx_vi_fb_tx_mono_ch_value);
12658
12659static const struct soc_enum int4_mi2s_rx_vi_fb_stereo_ch_mux_enum =
12660 SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_INT4_MI2S_RX, 0, 0,
12661 ARRAY_SIZE(int4_mi2s_rx_vi_fb_tx_stereo_mux_text),
12662 int4_mi2s_rx_vi_fb_tx_stereo_mux_text,
12663 int4_mi2s_rx_vi_fb_tx_stereo_ch_value);
12664
12665static const struct snd_kcontrol_new slim0_rx_vi_fb_lch_mux =
12666 SOC_DAPM_ENUM_EXT("SLIM0_RX_VI_FB_LCH_MUX",
12667 slim0_rx_vi_fb_lch_mux_enum, spkr_prot_get_vi_lch_port,
12668 spkr_prot_put_vi_lch_port);
12669
12670static const struct snd_kcontrol_new slim0_rx_vi_fb_rch_mux =
12671 SOC_DAPM_ENUM_EXT("SLIM0_RX_VI_FB_RCH_MUX",
12672 slim0_rx_vi_fb_rch_mux_enum, spkr_prot_get_vi_rch_port,
12673 spkr_prot_put_vi_rch_port);
12674
12675static const struct snd_kcontrol_new mi2s_rx_vi_fb_mux =
12676 SOC_DAPM_ENUM_EXT("PRI_MI2S_RX_VI_FB_MUX",
12677 mi2s_rx_vi_fb_mux_enum, spkr_prot_get_vi_lch_port,
12678 spkr_prot_put_vi_lch_port);
12679
12680static const struct snd_kcontrol_new int4_mi2s_rx_vi_fb_mono_ch_mux =
12681 SOC_DAPM_ENUM_EXT("INT4_MI2S_RX_VI_FB_MONO_CH_MUX",
12682 int4_mi2s_rx_vi_fb_mono_ch_mux_enum, spkr_prot_get_vi_lch_port,
12683 spkr_prot_put_vi_lch_port);
12684
12685static const struct snd_kcontrol_new int4_mi2s_rx_vi_fb_stereo_ch_mux =
12686 SOC_DAPM_ENUM_EXT("INT4_MI2S_RX_VI_FB_STEREO_CH_MUX",
12687 int4_mi2s_rx_vi_fb_stereo_ch_mux_enum, spkr_prot_get_vi_rch_port,
12688 spkr_prot_put_vi_rch_port);
12689
12690static const struct snd_soc_dapm_widget msm_qdsp6_widgets[] = {
12691 /* Frontend AIF */
12692 /* Widget name equals to Front-End DAI name<Need confirmation>,
12693 * Stream name must contains substring of front-end dai name
12694 */
12695 SND_SOC_DAPM_AIF_IN("MM_DL1", "MultiMedia1 Playback", 0, 0, 0, 0),
12696 SND_SOC_DAPM_AIF_IN("MM_DL2", "MultiMedia2 Playback", 0, 0, 0, 0),
12697 SND_SOC_DAPM_AIF_IN("MM_DL3", "MultiMedia3 Playback", 0, 0, 0, 0),
12698 SND_SOC_DAPM_AIF_IN("MM_DL4", "MultiMedia4 Playback", 0, 0, 0, 0),
12699 SND_SOC_DAPM_AIF_IN("MM_DL5", "MultiMedia5 Playback", 0, 0, 0, 0),
12700 SND_SOC_DAPM_AIF_IN("MM_DL6", "MultiMedia6 Playback", 0, 0, 0, 0),
12701 SND_SOC_DAPM_AIF_IN("MM_DL7", "MultiMedia7 Playback", 0, 0, 0, 0),
12702 SND_SOC_DAPM_AIF_IN("MM_DL8", "MultiMedia8 Playback", 0, 0, 0, 0),
12703 SND_SOC_DAPM_AIF_IN("MM_DL9", "MultiMedia9 Playback", 0, 0, 0, 0),
12704 SND_SOC_DAPM_AIF_IN("MM_DL10", "MultiMedia10 Playback", 0, 0, 0, 0),
12705 SND_SOC_DAPM_AIF_IN("MM_DL11", "MultiMedia11 Playback", 0, 0, 0, 0),
12706 SND_SOC_DAPM_AIF_IN("MM_DL12", "MultiMedia12 Playback", 0, 0, 0, 0),
12707 SND_SOC_DAPM_AIF_IN("MM_DL13", "MultiMedia13 Playback", 0, 0, 0, 0),
12708 SND_SOC_DAPM_AIF_IN("MM_DL14", "MultiMedia14 Playback", 0, 0, 0, 0),
12709 SND_SOC_DAPM_AIF_IN("MM_DL15", "MultiMedia15 Playback", 0, 0, 0, 0),
12710 SND_SOC_DAPM_AIF_IN("MM_DL16", "MultiMedia16 Playback", 0, 0, 0, 0),
12711 SND_SOC_DAPM_AIF_IN("MM_DL20", "MultiMedia20 Playback", 0, 0, 0, 0),
12712 SND_SOC_DAPM_AIF_IN("VOIP_DL", "VoIP Playback", 0, 0, 0, 0),
12713 SND_SOC_DAPM_AIF_OUT("MM_UL1", "MultiMedia1 Capture", 0, 0, 0, 0),
12714 SND_SOC_DAPM_AIF_OUT("MM_UL2", "MultiMedia2 Capture", 0, 0, 0, 0),
12715 SND_SOC_DAPM_AIF_OUT("MM_UL3", "MultiMedia3 Capture", 0, 0, 0, 0),
12716 SND_SOC_DAPM_AIF_OUT("MM_UL4", "MultiMedia4 Capture", 0, 0, 0, 0),
12717 SND_SOC_DAPM_AIF_OUT("MM_UL5", "MultiMedia5 Capture", 0, 0, 0, 0),
12718 SND_SOC_DAPM_AIF_OUT("MM_UL6", "MultiMedia6 Capture", 0, 0, 0, 0),
12719 SND_SOC_DAPM_AIF_OUT("MM_UL8", "MultiMedia8 Capture", 0, 0, 0, 0),
12720 SND_SOC_DAPM_AIF_OUT("MM_UL9", "MultiMedia9 Capture", 0, 0, 0, 0),
Laxminath Kasam38070be2017-08-17 18:21:59 +053012721 SND_SOC_DAPM_AIF_OUT("MM_UL10", "MultiMedia10 Capture", 0, 0, 0, 0),
Asish Bhattacharya34504582017-08-08 12:55:01 +053012722 SND_SOC_DAPM_AIF_OUT("MM_UL16", "MultiMedia16 Capture", 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012723 SND_SOC_DAPM_AIF_OUT("MM_UL17", "MultiMedia17 Capture", 0, 0, 0, 0),
12724 SND_SOC_DAPM_AIF_OUT("MM_UL18", "MultiMedia18 Capture", 0, 0, 0, 0),
12725 SND_SOC_DAPM_AIF_OUT("MM_UL19", "MultiMedia19 Capture", 0, 0, 0, 0),
12726 SND_SOC_DAPM_AIF_OUT("MM_UL20", "MultiMedia20 Capture", 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012727 SND_SOC_DAPM_AIF_OUT("VOIP_UL", "VoIP Capture", 0, 0, 0, 0),
12728 SND_SOC_DAPM_AIF_IN("VOICEMMODE1_DL",
12729 "VoiceMMode1 Playback", 0, 0, 0, 0),
12730 SND_SOC_DAPM_AIF_OUT("VOICEMMODE1_UL",
12731 "VoiceMMode1 Capture", 0, 0, 0, 0),
12732 SND_SOC_DAPM_AIF_IN("VOICEMMODE2_DL",
12733 "VoiceMMode2 Playback", 0, 0, 0, 0),
12734 SND_SOC_DAPM_AIF_OUT("VOICEMMODE2_UL",
12735 "VoiceMMode2 Capture", 0, 0, 0, 0),
12736 SND_SOC_DAPM_AIF_IN("SLIM0_DL_HL", "SLIMBUS0_HOSTLESS Playback",
12737 0, 0, 0, 0),
12738 SND_SOC_DAPM_AIF_OUT("SLIM0_UL_HL", "SLIMBUS0_HOSTLESS Capture",
12739 0, 0, 0, 0),
12740 SND_SOC_DAPM_AIF_OUT("CPE_LSM_UL_HL", "CPE LSM capture",
12741 0, 0, 0, 0),
12742 SND_SOC_DAPM_AIF_IN("SLIM1_DL_HL", "SLIMBUS1_HOSTLESS Playback",
12743 0, 0, 0, 0),
12744 SND_SOC_DAPM_AIF_OUT("SLIM1_UL_HL", "SLIMBUS1_HOSTLESS Capture",
12745 0, 0, 0, 0),
12746 SND_SOC_DAPM_AIF_IN("SLIM3_DL_HL", "SLIMBUS3_HOSTLESS Playback",
12747 0, 0, 0, 0),
12748 SND_SOC_DAPM_AIF_OUT("SLIM3_UL_HL", "SLIMBUS3_HOSTLESS Capture",
12749 0, 0, 0, 0),
12750 SND_SOC_DAPM_AIF_IN("SLIM4_DL_HL", "SLIMBUS4_HOSTLESS Playback",
12751 0, 0, 0, 0),
12752 SND_SOC_DAPM_AIF_OUT("SLIM4_UL_HL", "SLIMBUS4_HOSTLESS Capture",
12753 0, 0, 0, 0),
12754 SND_SOC_DAPM_AIF_IN("SLIM6_DL_HL", "SLIMBUS6_HOSTLESS Playback",
12755 0, 0, 0, 0),
12756 SND_SOC_DAPM_AIF_OUT("SLIM6_UL_HL", "SLIMBUS6_HOSTLESS Capture",
12757 0, 0, 0, 0),
12758 SND_SOC_DAPM_AIF_IN("SLIM7_DL_HL", "SLIMBUS7_HOSTLESS Playback",
12759 0, 0, 0, 0),
12760 SND_SOC_DAPM_AIF_OUT("SLIM7_UL_HL", "SLIMBUS7_HOSTLESS Capture",
12761 0, 0, 0, 0),
12762 SND_SOC_DAPM_AIF_IN("SLIM8_DL_HL", "SLIMBUS8_HOSTLESS Playback",
12763 0, 0, 0, 0),
12764 SND_SOC_DAPM_AIF_OUT("SLIM8_UL_HL", "SLIMBUS8_HOSTLESS Capture",
12765 0, 0, 0, 0),
12766 SND_SOC_DAPM_AIF_IN("INTFM_DL_HL", "INT_FM_HOSTLESS Playback",
12767 0, 0, 0, 0),
12768 SND_SOC_DAPM_AIF_OUT("INTFM_UL_HL", "INT_FM_HOSTLESS Capture",
12769 0, 0, 0, 0),
12770 SND_SOC_DAPM_AIF_IN("INTHFP_DL_HL", "INT_HFP_BT_HOSTLESS Playback",
12771 0, 0, 0, 0),
12772 SND_SOC_DAPM_AIF_OUT("INTHFP_UL_HL", "INT_HFP_BT_HOSTLESS Capture",
12773 0, 0, 0, 0),
12774 SND_SOC_DAPM_AIF_IN("USBAUDIO_DL_HL", "USBAUDIO_HOSTLESS Playback",
12775 0, 0, 0, 0),
12776 SND_SOC_DAPM_AIF_OUT("USBAUDIO_UL_HL", "USBAUDIO_HOSTLESS Capture",
12777 0, 0, 0, 0),
12778 SND_SOC_DAPM_AIF_IN("HDMI_DL_HL", "HDMI_HOSTLESS Playback", 0, 0, 0, 0),
12779 SND_SOC_DAPM_AIF_IN("SEC_I2S_DL_HL", "SEC_I2S_RX_HOSTLESS Playback",
12780 0, 0, 0, 0),
12781 SND_SOC_DAPM_AIF_IN("INT0_MI2S_DL_HL",
12782 "INT0 MI2S_RX Hostless Playback",
12783 0, 0, 0, 0),
12784 SND_SOC_DAPM_AIF_IN("INT4_MI2S_DL_HL",
12785 "INT4 MI2S_RX Hostless Playback",
12786 0, 0, 0, 0),
12787 SND_SOC_DAPM_AIF_IN("PRI_MI2S_DL_HL",
12788 "Primary MI2S_RX Hostless Playback",
12789 0, 0, 0, 0),
12790 SND_SOC_DAPM_AIF_IN("SEC_MI2S_DL_HL",
12791 "Secondary MI2S_RX Hostless Playback",
12792 0, 0, 0, 0),
12793 SND_SOC_DAPM_AIF_IN("TERT_MI2S_DL_HL",
12794 "Tertiary MI2S_RX Hostless Playback",
12795 0, 0, 0, 0),
12796 SND_SOC_DAPM_AIF_IN("QUAT_MI2S_DL_HL",
12797 "Quaternary MI2S_RX Hostless Playback",
12798 0, 0, 0, 0),
Rohit Kumara5077932017-09-10 22:05:05 +053012799 SND_SOC_DAPM_AIF_IN("QUIN_MI2S_DL_HL",
12800 "Quinary MI2S_RX Hostless Playback",
12801 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012802
12803 SND_SOC_DAPM_AIF_IN("AUXPCM_DL_HL", "AUXPCM_HOSTLESS Playback",
12804 0, 0, 0, 0),
12805 SND_SOC_DAPM_AIF_OUT("AUXPCM_UL_HL", "AUXPCM_HOSTLESS Capture",
12806 0, 0, 0, 0),
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -080012807 SND_SOC_DAPM_AIF_IN("SEC_AUXPCM_DL_HL", "SEC_AUXPCM_HOSTLESS Playback",
12808 0, 0, 0, 0),
12809 SND_SOC_DAPM_AIF_OUT("SEC_AUXPCM_UL_HL", "SEC_AUXPCM_HOSTLESS Capture",
12810 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012811 SND_SOC_DAPM_AIF_OUT("MI2S_UL_HL", "MI2S_TX_HOSTLESS Capture",
12812 0, 0, 0, 0),
12813 SND_SOC_DAPM_AIF_OUT("INT3_MI2S_UL_HL",
12814 "INT3 MI2S_TX Hostless Capture",
12815 0, 0, 0, 0),
12816 SND_SOC_DAPM_AIF_OUT("TERT_MI2S_UL_HL",
12817 "Tertiary MI2S_TX Hostless Capture",
12818 0, 0, 0, 0),
12819 SND_SOC_DAPM_AIF_OUT("SEC_MI2S_UL_HL",
12820 "Secondary MI2S_TX Hostless Capture",
12821 0, 0, 0, 0),
12822 SND_SOC_DAPM_AIF_OUT("PRI_MI2S_UL_HL",
12823 "Primary MI2S_TX Hostless Capture",
12824 0, 0, 0, 0),
12825 SND_SOC_DAPM_AIF_OUT("MI2S_DL_HL", "MI2S_RX_HOSTLESS Playback",
12826 0, 0, 0, 0),
12827 SND_SOC_DAPM_AIF_IN("DTMF_DL_HL", "DTMF_RX_HOSTLESS Playback",
12828 0, 0, 0, 0),
12829 SND_SOC_DAPM_AIF_OUT("QUAT_MI2S_UL_HL",
12830 "Quaternary MI2S_TX Hostless Capture",
12831 0, 0, 0, 0),
Rohit Kumara5077932017-09-10 22:05:05 +053012832 SND_SOC_DAPM_AIF_OUT("QUIN_MI2S_UL_HL",
12833 "Quinary MI2S_TX Hostless Capture",
12834 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012835
12836 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_0_DL_HL",
12837 "Primary TDM0 Hostless Playback",
12838 0, 0, 0, 0),
12839 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_0_UL_HL",
12840 "Primary TDM0 Hostless Capture",
12841 0, 0, 0, 0),
12842 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_1_DL_HL",
12843 "Primary TDM1 Hostless Playback",
12844 0, 0, 0, 0),
12845 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_1_UL_HL",
12846 "Primary TDM1 Hostless Capture",
12847 0, 0, 0, 0),
12848 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_2_DL_HL",
12849 "Primary TDM2 Hostless Playback",
12850 0, 0, 0, 0),
12851 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_2_UL_HL",
12852 "Primary TDM2 Hostless Capture",
12853 0, 0, 0, 0),
12854 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_3_DL_HL",
12855 "Primary TDM3 Hostless Playback",
12856 0, 0, 0, 0),
12857 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_3_UL_HL",
12858 "Primary TDM3 Hostless Capture",
12859 0, 0, 0, 0),
12860 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_4_DL_HL",
12861 "Primary TDM4 Hostless Playback",
12862 0, 0, 0, 0),
12863 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_4_UL_HL",
12864 "Primary TDM4 Hostless Capture",
12865 0, 0, 0, 0),
12866 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_5_DL_HL",
12867 "Primary TDM5 Hostless Playback",
12868 0, 0, 0, 0),
12869 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_5_UL_HL",
12870 "Primary TDM5 Hostless Capture",
12871 0, 0, 0, 0),
12872 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_6_DL_HL",
12873 "Primary TDM6 Hostless Playback",
12874 0, 0, 0, 0),
12875 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_6_UL_HL",
12876 "Primary TDM6 Hostless Capture",
12877 0, 0, 0, 0),
12878 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_7_DL_HL",
12879 "Primary TDM7 Hostless Playback",
12880 0, 0, 0, 0),
12881 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_7_UL_HL",
12882 "Primary TDM7 Hostless Capture",
12883 0, 0, 0, 0),
12884 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_0_DL_HL",
12885 "Secondary TDM0 Hostless Playback",
12886 0, 0, 0, 0),
12887 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_0_UL_HL",
12888 "Secondary TDM0 Hostless Capture",
12889 0, 0, 0, 0),
12890 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_1_DL_HL",
12891 "Secondary TDM1 Hostless Playback",
12892 0, 0, 0, 0),
12893 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_1_UL_HL",
12894 "Secondary TDM1 Hostless Capture",
12895 0, 0, 0, 0),
12896 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_2_DL_HL",
12897 "Secondary TDM2 Hostless Playback",
12898 0, 0, 0, 0),
12899 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_2_UL_HL",
12900 "Secondary TDM2 Hostless Capture",
12901 0, 0, 0, 0),
12902 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_3_DL_HL",
12903 "Secondary TDM3 Hostless Playback",
12904 0, 0, 0, 0),
12905 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_3_UL_HL",
12906 "Secondary TDM3 Hostless Capture",
12907 0, 0, 0, 0),
12908 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_4_DL_HL",
12909 "Secondary TDM4 Hostless Playback",
12910 0, 0, 0, 0),
12911 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_4_UL_HL",
12912 "Secondary TDM4 Hostless Capture",
12913 0, 0, 0, 0),
12914 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_5_DL_HL",
12915 "Secondary TDM5 Hostless Playback",
12916 0, 0, 0, 0),
12917 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_5_UL_HL",
12918 "Secondary TDM5 Hostless Capture",
12919 0, 0, 0, 0),
12920 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_6_DL_HL",
12921 "Secondary TDM6 Hostless Playback",
12922 0, 0, 0, 0),
12923 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_6_UL_HL",
12924 "Secondary TDM6 Hostless Capture",
12925 0, 0, 0, 0),
12926 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_7_DL_HL",
12927 "Secondary TDM7 Hostless Playback",
12928 0, 0, 0, 0),
12929 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_7_UL_HL",
12930 "Secondary TDM7 Hostless Capture",
12931 0, 0, 0, 0),
12932 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_0_DL_HL",
12933 "Tertiary TDM0 Hostless Playback",
12934 0, 0, 0, 0),
12935 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_0_UL_HL",
12936 "Tertiary TDM0 Hostless Capture",
12937 0, 0, 0, 0),
12938 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_1_DL_HL",
12939 "Tertiary TDM1 Hostless Playback",
12940 0, 0, 0, 0),
12941 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_1_UL_HL",
12942 "Tertiary TDM1 Hostless Capture",
12943 0, 0, 0, 0),
12944 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_2_DL_HL",
12945 "Tertiary TDM2 Hostless Playback",
12946 0, 0, 0, 0),
12947 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_2_UL_HL",
12948 "Tertiary TDM2 Hostless Capture",
12949 0, 0, 0, 0),
12950 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_3_DL_HL",
12951 "Tertiary TDM3 Hostless Playback",
12952 0, 0, 0, 0),
12953 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_3_UL_HL",
12954 "Tertiary TDM3 Hostless Capture",
12955 0, 0, 0, 0),
12956 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_4_DL_HL",
12957 "Tertiary TDM4 Hostless Playback",
12958 0, 0, 0, 0),
12959 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_4_UL_HL",
12960 "Tertiary TDM4 Hostless Capture",
12961 0, 0, 0, 0),
12962 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_5_DL_HL",
12963 "Tertiary TDM5 Hostless Playback",
12964 0, 0, 0, 0),
12965 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_5_UL_HL",
12966 "Tertiary TDM5 Hostless Capture",
12967 0, 0, 0, 0),
12968 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_6_DL_HL",
12969 "Tertiary TDM6 Hostless Playback",
12970 0, 0, 0, 0),
12971 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_6_UL_HL",
12972 "Tertiary TDM6 Hostless Capture",
12973 0, 0, 0, 0),
12974 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_7_DL_HL",
12975 "Tertiary TDM7 Hostless Playback",
12976 0, 0, 0, 0),
12977 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_7_UL_HL",
12978 "Tertiary TDM7 Hostless Capture",
12979 0, 0, 0, 0),
12980 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_0_DL_HL",
12981 "Quaternary TDM0 Hostless Playback",
12982 0, 0, 0, 0),
12983 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_0_UL_HL",
12984 "Quaternary TDM0 Hostless Capture",
12985 0, 0, 0, 0),
12986 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_1_DL_HL",
12987 "Quaternary TDM1 Hostless Playback",
12988 0, 0, 0, 0),
12989 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_1_UL_HL",
12990 "Quaternary TDM1 Hostless Capture",
12991 0, 0, 0, 0),
12992 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_2_DL_HL",
12993 "Quaternary TDM2 Hostless Playback",
12994 0, 0, 0, 0),
12995 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_2_UL_HL",
12996 "Quaternary TDM2 Hostless Capture",
12997 0, 0, 0, 0),
12998 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_3_DL_HL",
12999 "Quaternary TDM3 Hostless Playback",
13000 0, 0, 0, 0),
13001 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_3_UL_HL",
13002 "Quaternary TDM3 Hostless Capture",
13003 0, 0, 0, 0),
13004 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_4_DL_HL",
13005 "Quaternary TDM4 Hostless Playback",
13006 0, 0, 0, 0),
13007 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_4_UL_HL",
13008 "Quaternary TDM4 Hostless Capture",
13009 0, 0, 0, 0),
13010 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_5_DL_HL",
13011 "Quaternary TDM5 Hostless Playback",
13012 0, 0, 0, 0),
13013 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_5_UL_HL",
13014 "Quaternary TDM5 Hostless Capture",
13015 0, 0, 0, 0),
13016 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_6_DL_HL",
13017 "Quaternary TDM6 Hostless Playback",
13018 0, 0, 0, 0),
13019 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_6_UL_HL",
13020 "Quaternary TDM6 Hostless Capture",
13021 0, 0, 0, 0),
13022 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_7_DL_HL",
13023 "Quaternary TDM7 Hostless Playback",
13024 0, 0, 0, 0),
13025 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_7_UL_HL",
13026 "Quaternary TDM7 Hostless Capture",
13027 0, 0, 0, 0),
Rohit Kumara5077932017-09-10 22:05:05 +053013028 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_0_DL_HL",
13029 "Quinary TDM0 Hostless Playback",
13030 0, 0, 0, 0),
13031 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_0_UL_HL",
13032 "Quinary TDM0 Hostless Capture",
13033 0, 0, 0, 0),
13034 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_1_DL_HL",
13035 "Quinary TDM1 Hostless Playback",
13036 0, 0, 0, 0),
13037 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_1_UL_HL",
13038 "Quinary TDM1 Hostless Capture",
13039 0, 0, 0, 0),
13040 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_2_DL_HL",
13041 "Quinary TDM2 Hostless Playback",
13042 0, 0, 0, 0),
13043 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_2_UL_HL",
13044 "Quinary TDM2 Hostless Capture",
13045 0, 0, 0, 0),
13046 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_3_DL_HL",
13047 "Quinary TDM3 Hostless Playback",
13048 0, 0, 0, 0),
13049 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_3_UL_HL",
13050 "Quinary TDM3 Hostless Capture",
13051 0, 0, 0, 0),
13052 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_4_DL_HL",
13053 "Quinary TDM4 Hostless Playback",
13054 0, 0, 0, 0),
13055 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_4_UL_HL",
13056 "Quinary TDM4 Hostless Capture",
13057 0, 0, 0, 0),
13058 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_5_DL_HL",
13059 "Quinary TDM5 Hostless Playback",
13060 0, 0, 0, 0),
13061 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_5_UL_HL",
13062 "Quinary TDM5 Hostless Capture",
13063 0, 0, 0, 0),
13064 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_6_DL_HL",
13065 "Quinary TDM6 Hostless Playback",
13066 0, 0, 0, 0),
13067 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_6_UL_HL",
13068 "Quinary TDM6 Hostless Capture",
13069 0, 0, 0, 0),
13070 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_7_DL_HL",
13071 "Quinary TDM7 Hostless Playback",
13072 0, 0, 0, 0),
13073 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_7_UL_HL",
13074 "Quinary TDM7 Hostless Capture",
13075 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013076
13077 /* LSM */
13078 SND_SOC_DAPM_AIF_OUT("LSM1_UL_HL", "Listen 1 Audio Service Capture",
13079 0, 0, 0, 0),
13080 SND_SOC_DAPM_AIF_OUT("LSM2_UL_HL", "Listen 2 Audio Service Capture",
13081 0, 0, 0, 0),
13082 SND_SOC_DAPM_AIF_OUT("LSM3_UL_HL", "Listen 3 Audio Service Capture",
13083 0, 0, 0, 0),
13084 SND_SOC_DAPM_AIF_OUT("LSM4_UL_HL", "Listen 4 Audio Service Capture",
13085 0, 0, 0, 0),
13086 SND_SOC_DAPM_AIF_OUT("LSM5_UL_HL", "Listen 5 Audio Service Capture",
13087 0, 0, 0, 0),
13088 SND_SOC_DAPM_AIF_OUT("LSM6_UL_HL", "Listen 6 Audio Service Capture",
13089 0, 0, 0, 0),
13090 SND_SOC_DAPM_AIF_OUT("LSM7_UL_HL", "Listen 7 Audio Service Capture",
13091 0, 0, 0, 0),
13092 SND_SOC_DAPM_AIF_OUT("LSM8_UL_HL", "Listen 8 Audio Service Capture",
13093 0, 0, 0, 0),
13094 SND_SOC_DAPM_AIF_IN("QCHAT_DL", "QCHAT Playback", 0, 0, 0, 0),
13095 SND_SOC_DAPM_AIF_OUT("QCHAT_UL", "QCHAT Capture", 0, 0, 0, 0),
13096 /* Backend AIF */
13097 /* Stream name equals to backend dai link stream name */
13098 SND_SOC_DAPM_AIF_OUT("PRI_I2S_RX", "Primary I2S Playback", 0, 0, 0, 0),
13099 SND_SOC_DAPM_AIF_OUT("SEC_I2S_RX", "Secondary I2S Playback",
13100 0, 0, 0, 0),
13101 SND_SOC_DAPM_AIF_OUT("SPDIF_RX", "SPDIF Playback", 0, 0, 0, 0),
13102 SND_SOC_DAPM_AIF_OUT("SLIMBUS_0_RX", "Slimbus Playback", 0, 0, 0, 0),
13103 SND_SOC_DAPM_AIF_OUT("SLIMBUS_2_RX", "Slimbus2 Playback", 0, 0, 0, 0),
13104 SND_SOC_DAPM_AIF_OUT("SLIMBUS_5_RX", "Slimbus5 Playback", 0, 0, 0, 0),
13105 SND_SOC_DAPM_AIF_OUT("HDMI", "HDMI Playback", 0, 0, 0, 0),
13106 SND_SOC_DAPM_AIF_OUT("DISPLAY_PORT", "Display Port Playback",
13107 0, 0, 0, 0),
13108 SND_SOC_DAPM_AIF_OUT("MI2S_RX", "MI2S Playback", 0, 0, 0, 0),
13109 SND_SOC_DAPM_AIF_OUT("QUAT_MI2S_RX", "Quaternary MI2S Playback",
13110 0, 0, 0, 0),
13111 SND_SOC_DAPM_AIF_OUT("TERT_MI2S_RX", "Tertiary MI2S Playback",
13112 0, 0, 0, 0),
13113 SND_SOC_DAPM_AIF_OUT("SEC_MI2S_RX", "Secondary MI2S Playback",
13114 0, 0, 0, 0),
13115 SND_SOC_DAPM_AIF_OUT("SEC_MI2S_RX_SD1",
13116 "Secondary MI2S Playback SD1",
13117 0, 0, 0, 0),
13118 SND_SOC_DAPM_AIF_OUT("PRI_MI2S_RX", "Primary MI2S Playback",
13119 0, 0, 0, 0),
13120 SND_SOC_DAPM_AIF_OUT("INT0_MI2S_RX", "INT0 MI2S Playback",
13121 0, 0, 0, 0),
Laxminath Kasam52697fe2017-11-29 15:44:14 +053013122 SND_SOC_DAPM_AIF_OUT("INT2_MI2S_RX", "INT2 MI2S Playback",
13123 0, 0, 0, 0),
13124 SND_SOC_DAPM_AIF_OUT("INT3_MI2S_RX", "INT3 MI2S Playback",
13125 0, 0, 0, 0),
13126 SND_SOC_DAPM_AIF_OUT("INT5_MI2S_RX", "INT5 MI2S Playback",
13127 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013128 SND_SOC_DAPM_AIF_OUT("INT4_MI2S_RX", "INT4 MI2S Playback",
13129 0, 0, 0, 0),
Laxminath Kasam52697fe2017-11-29 15:44:14 +053013130 SND_SOC_DAPM_AIF_OUT("INT4_MI2S_TX", "INT4 MI2S Capture",
13131 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013132 SND_SOC_DAPM_AIF_OUT("QUIN_MI2S_RX", "Quinary MI2S Playback",
13133 0, 0, 0, 0),
13134 SND_SOC_DAPM_AIF_IN("PRI_I2S_TX", "Primary I2S Capture", 0, 0, 0, 0),
13135 SND_SOC_DAPM_AIF_IN("MI2S_TX", "MI2S Capture", 0, 0, 0, 0),
13136 SND_SOC_DAPM_AIF_IN("QUAT_MI2S_TX", "Quaternary MI2S Capture",
13137 0, 0, 0, 0),
13138 SND_SOC_DAPM_AIF_IN("PRI_MI2S_TX", "Primary MI2S Capture",
13139 0, 0, 0, 0),
13140 SND_SOC_DAPM_AIF_IN("TERT_MI2S_TX", "Tertiary MI2S Capture",
13141 0, 0, 0, 0),
Laxminath Kasam52697fe2017-11-29 15:44:14 +053013142 SND_SOC_DAPM_AIF_OUT("INT0_MI2S_TX", "INT0 MI2S Capture",
13143 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013144 SND_SOC_DAPM_AIF_IN("INT2_MI2S_TX", "INT2 MI2S Capture",
13145 0, 0, 0, 0),
13146 SND_SOC_DAPM_AIF_IN("INT3_MI2S_TX", "INT3 MI2S Capture",
13147 0, 0, 0, 0),
13148 SND_SOC_DAPM_AIF_IN("SEC_MI2S_TX", "Secondary MI2S Capture",
13149 0, 0, 0, 0),
13150 SND_SOC_DAPM_AIF_IN("SLIMBUS_0_TX", "Slimbus Capture", 0, 0, 0, 0),
13151 SND_SOC_DAPM_AIF_IN("SLIMBUS_2_TX", "Slimbus2 Capture", 0, 0, 0, 0),
13152 SND_SOC_DAPM_AIF_IN("QUIN_MI2S_TX", "Quinary MI2S Capture",
13153 0, 0, 0, 0),
13154 SND_SOC_DAPM_AIF_IN("SENARY_MI2S_TX", "Senary MI2S Capture",
13155 0, 0, 0, 0),
13156 SND_SOC_DAPM_AIF_OUT("INT_BT_SCO_RX", "Internal BT-SCO Playback",
13157 0, 0, 0, 0),
13158 SND_SOC_DAPM_AIF_IN("INT_BT_SCO_TX", "Internal BT-SCO Capture",
13159 0, 0, 0, 0),
13160 SND_SOC_DAPM_AIF_OUT("INT_BT_A2DP_RX", "Internal BT-A2DP Playback",
13161 0, 0, 0, 0),
13162 SND_SOC_DAPM_AIF_OUT("INT_FM_RX", "Internal FM Playback",
13163 0, 0, 0, 0),
13164 SND_SOC_DAPM_AIF_IN("INT_FM_TX", "Internal FM Capture",
13165 0, 0, 0, 0),
13166 SND_SOC_DAPM_AIF_OUT("PCM_RX", "AFE Playback",
13167 0, 0, 0, 0),
13168 SND_SOC_DAPM_AIF_IN("PCM_TX", "AFE Capture",
13169 0, 0, 0, 0),
13170 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_0", "Primary TDM0 Playback",
13171 0, 0, 0, 0),
13172 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_0", "Primary TDM0 Capture",
13173 0, 0, 0, 0),
13174 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_1", "Primary TDM1 Playback",
13175 0, 0, 0, 0),
13176 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_1", "Primary TDM1 Capture",
13177 0, 0, 0, 0),
13178 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_2", "Primary TDM2 Playback",
13179 0, 0, 0, 0),
13180 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_2", "Primary TDM2 Capture",
13181 0, 0, 0, 0),
13182 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_3", "Primary TDM3 Playback",
13183 0, 0, 0, 0),
13184 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_3", "Primary TDM3 Capture",
13185 0, 0, 0, 0),
13186 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_4", "Primary TDM4 Playback",
13187 0, 0, 0, 0),
13188 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_4", "Primary TDM4 Capture",
13189 0, 0, 0, 0),
13190 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_5", "Primary TDM5 Playback",
13191 0, 0, 0, 0),
13192 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_5", "Primary TDM5 Capture",
13193 0, 0, 0, 0),
13194 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_6", "Primary TDM6 Playback",
13195 0, 0, 0, 0),
13196 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_6", "Primary TDM6 Capture",
13197 0, 0, 0, 0),
13198 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_7", "Primary TDM7 Playback",
13199 0, 0, 0, 0),
13200 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_7", "Primary TDM7 Capture",
13201 0, 0, 0, 0),
13202 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_0", "Secondary TDM0 Playback",
13203 0, 0, 0, 0),
13204 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_0", "Secondary TDM0 Capture",
13205 0, 0, 0, 0),
13206 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_1", "Secondary TDM1 Playback",
13207 0, 0, 0, 0),
13208 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_1", "Secondary TDM1 Capture",
13209 0, 0, 0, 0),
13210 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_2", "Secondary TDM2 Playback",
13211 0, 0, 0, 0),
13212 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_2", "Secondary TDM2 Capture",
13213 0, 0, 0, 0),
13214 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_3", "Secondary TDM3 Playback",
13215 0, 0, 0, 0),
13216 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_3", "Secondary TDM3 Capture",
13217 0, 0, 0, 0),
13218 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_4", "Secondary TDM4 Playback",
13219 0, 0, 0, 0),
13220 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_4", "Secondary TDM4 Capture",
13221 0, 0, 0, 0),
13222 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_5", "Secondary TDM5 Playback",
13223 0, 0, 0, 0),
13224 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_5", "Secondary TDM5 Capture",
13225 0, 0, 0, 0),
13226 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_6", "Secondary TDM6 Playback",
13227 0, 0, 0, 0),
13228 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_6", "Secondary TDM6 Capture",
13229 0, 0, 0, 0),
13230 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_7", "Secondary TDM7 Playback",
13231 0, 0, 0, 0),
13232 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_7", "Secondary TDM7 Capture",
13233 0, 0, 0, 0),
13234 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_0", "Tertiary TDM0 Playback",
13235 0, 0, 0, 0),
13236 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_0", "Tertiary TDM0 Capture",
13237 0, 0, 0, 0),
13238 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_1", "Tertiary TDM1 Playback",
13239 0, 0, 0, 0),
13240 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_1", "Tertiary TDM1 Capture",
13241 0, 0, 0, 0),
13242 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_2", "Tertiary TDM2 Playback",
13243 0, 0, 0, 0),
13244 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_2", "Tertiary TDM2 Capture",
13245 0, 0, 0, 0),
13246 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_3", "Tertiary TDM3 Playback",
13247 0, 0, 0, 0),
13248 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_3", "Tertiary TDM3 Capture",
13249 0, 0, 0, 0),
13250 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_4", "Tertiary TDM4 Playback",
13251 0, 0, 0, 0),
13252 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_4", "Tertiary TDM4 Capture",
13253 0, 0, 0, 0),
13254 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_5", "Tertiary TDM5 Playback",
13255 0, 0, 0, 0),
13256 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_5", "Tertiary TDM5 Capture",
13257 0, 0, 0, 0),
13258 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_6", "Tertiary TDM6 Playback",
13259 0, 0, 0, 0),
13260 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_6", "Tertiary TDM6 Capture",
13261 0, 0, 0, 0),
13262 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_7", "Tertiary TDM7 Playback",
13263 0, 0, 0, 0),
13264 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_7", "Tertiary TDM7 Capture",
13265 0, 0, 0, 0),
13266 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_0", "Quaternary TDM0 Playback",
13267 0, 0, 0, 0),
13268 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_0", "Quaternary TDM0 Capture",
13269 0, 0, 0, 0),
13270 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_1", "Quaternary TDM1 Playback",
13271 0, 0, 0, 0),
13272 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_1", "Quaternary TDM1 Capture",
13273 0, 0, 0, 0),
13274 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_2", "Quaternary TDM2 Playback",
13275 0, 0, 0, 0),
13276 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_2", "Quaternary TDM2 Capture",
13277 0, 0, 0, 0),
13278 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_3", "Quaternary TDM3 Playback",
13279 0, 0, 0, 0),
13280 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_3", "Quaternary TDM3 Capture",
13281 0, 0, 0, 0),
13282 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_4", "Quaternary TDM4 Playback",
13283 0, 0, 0, 0),
13284 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_4", "Quaternary TDM4 Capture",
13285 0, 0, 0, 0),
13286 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_5", "Quaternary TDM5 Playback",
13287 0, 0, 0, 0),
13288 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_5", "Quaternary TDM5 Capture",
13289 0, 0, 0, 0),
13290 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_6", "Quaternary TDM6 Playback",
13291 0, 0, 0, 0),
13292 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_6", "Quaternary TDM6 Capture",
13293 0, 0, 0, 0),
13294 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_7", "Quaternary TDM7 Playback",
13295 0, 0, 0, 0),
13296 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_7", "Quaternary TDM7 Capture",
13297 0, 0, 0, 0),
Rohit Kumara5077932017-09-10 22:05:05 +053013298 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_0", "Quinary TDM0 Playback",
13299 0, 0, 0, 0),
13300 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_0", "Quinary TDM0 Capture",
13301 0, 0, 0, 0),
13302 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_1", "Quinary TDM1 Playback",
13303 0, 0, 0, 0),
13304 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_1", "Quinary TDM1 Capture",
13305 0, 0, 0, 0),
13306 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_2", "Quinary TDM2 Playback",
13307 0, 0, 0, 0),
13308 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_2", "Quinary TDM2 Capture",
13309 0, 0, 0, 0),
13310 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_3", "Quinary TDM3 Playback",
13311 0, 0, 0, 0),
13312 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_3", "Quinary TDM3 Capture",
13313 0, 0, 0, 0),
13314 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_4", "Quinary TDM4 Playback",
13315 0, 0, 0, 0),
13316 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_4", "Quinary TDM4 Capture",
13317 0, 0, 0, 0),
13318 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_5", "Quinary TDM5 Playback",
13319 0, 0, 0, 0),
13320 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_5", "Quinary TDM5 Capture",
13321 0, 0, 0, 0),
13322 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_6", "Quinary TDM6 Playback",
13323 0, 0, 0, 0),
13324 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_6", "Quinary TDM6 Capture",
13325 0, 0, 0, 0),
13326 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_7", "Quinary TDM7 Playback",
13327 0, 0, 0, 0),
13328 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_7", "Quinary TDM7 Capture",
13329 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013330 /* incall */
13331 SND_SOC_DAPM_AIF_OUT("VOICE_PLAYBACK_TX", "Voice Farend Playback",
13332 0, 0, 0, 0),
13333 SND_SOC_DAPM_AIF_OUT("VOICE2_PLAYBACK_TX", "Voice2 Farend Playback",
13334 0, 0, 0, 0),
13335 SND_SOC_DAPM_AIF_OUT("SLIMBUS_4_RX", "Slimbus4 Playback",
13336 0, 0, 0, 0),
13337 SND_SOC_DAPM_AIF_IN("INCALL_RECORD_TX", "Voice Uplink Capture",
13338 0, 0, 0, 0),
13339 SND_SOC_DAPM_AIF_IN("INCALL_RECORD_RX", "Voice Downlink Capture",
13340 0, 0, 0, 0),
13341 SND_SOC_DAPM_AIF_IN("SLIMBUS_4_TX", "Slimbus4 Capture",
13342 0, 0, 0, 0),
13343 SND_SOC_DAPM_AIF_IN("SENARY_TX", "Senary_mi2s Capture",
13344 0, 0, 0, 0),
13345 SND_SOC_DAPM_AIF_IN("INT5_MI2S_TX", "INT5 MI2S Capture",
13346 0, 0, 0, 0),
13347 SND_SOC_DAPM_AIF_IN("SLIMBUS_5_TX", "Slimbus5 Capture", 0, 0, 0, 0),
13348
13349 SND_SOC_DAPM_AIF_OUT("AUX_PCM_RX", "AUX PCM Playback", 0, 0, 0, 0),
13350 SND_SOC_DAPM_AIF_IN("AUX_PCM_TX", "AUX PCM Capture", 0, 0, 0, 0),
13351 SND_SOC_DAPM_AIF_OUT("SEC_AUX_PCM_RX", "Sec AUX PCM Playback",
13352 0, 0, 0, 0),
13353 SND_SOC_DAPM_AIF_IN("SEC_AUX_PCM_TX", "Sec AUX PCM Capture",
13354 0, 0, 0, 0),
13355 SND_SOC_DAPM_AIF_OUT("TERT_AUX_PCM_RX", "Tert AUX PCM Playback",
13356 0, 0, 0, 0),
13357 SND_SOC_DAPM_AIF_IN("TERT_AUX_PCM_TX", "Tert AUX PCM Capture",
13358 0, 0, 0, 0),
13359 SND_SOC_DAPM_AIF_OUT("QUAT_AUX_PCM_RX", "Quat AUX PCM Playback",
13360 0, 0, 0, 0),
13361 SND_SOC_DAPM_AIF_IN("QUAT_AUX_PCM_TX", "Quat AUX PCM Capture",
13362 0, 0, 0, 0),
Rohit Kumara5077932017-09-10 22:05:05 +053013363 SND_SOC_DAPM_AIF_OUT("QUIN_AUX_PCM_RX", "Quin AUX PCM Playback",
13364 0, 0, 0, 0),
13365 SND_SOC_DAPM_AIF_IN("QUIN_AUX_PCM_TX", "Quin AUX PCM Capture",
13366 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013367 SND_SOC_DAPM_AIF_IN("VOICE_STUB_DL", "VOICE_STUB Playback", 0, 0, 0, 0),
13368 SND_SOC_DAPM_AIF_OUT("VOICE_STUB_UL", "VOICE_STUB Capture", 0, 0, 0, 0),
13369 SND_SOC_DAPM_AIF_IN("VOICE2_STUB_DL", "VOICE2_STUB Playback",
13370 0, 0, 0, 0),
13371 SND_SOC_DAPM_AIF_OUT("VOICE2_STUB_UL", "VOICE2_STUB Capture",
13372 0, 0, 0, 0),
13373 SND_SOC_DAPM_AIF_IN("VOLTE_STUB_DL", "VOLTE_STUB Playback", 0, 0, 0, 0),
13374 SND_SOC_DAPM_AIF_OUT("VOLTE_STUB_UL", "VOLTE_STUB Capture", 0, 0, 0, 0),
13375 SND_SOC_DAPM_AIF_OUT("STUB_RX", "Stub Playback", 0, 0, 0, 0),
13376 SND_SOC_DAPM_AIF_IN("STUB_TX", "Stub Capture", 0, 0, 0, 0),
13377 SND_SOC_DAPM_AIF_OUT("SLIMBUS_1_RX", "Slimbus1 Playback", 0, 0, 0, 0),
13378 SND_SOC_DAPM_AIF_IN("SLIMBUS_1_TX", "Slimbus1 Capture", 0, 0, 0, 0),
13379 SND_SOC_DAPM_AIF_IN("STUB_1_TX", "Stub1 Capture", 0, 0, 0, 0),
13380 SND_SOC_DAPM_AIF_OUT("SLIMBUS_3_RX", "Slimbus3 Playback", 0, 0, 0, 0),
13381 SND_SOC_DAPM_AIF_IN("SLIMBUS_3_TX", "Slimbus3 Capture", 0, 0, 0, 0),
13382 /* In- call recording */
13383 SND_SOC_DAPM_AIF_OUT("SLIMBUS_6_RX", "Slimbus6 Playback", 0, 0, 0, 0),
13384 SND_SOC_DAPM_AIF_IN("SLIMBUS_6_TX", "Slimbus6 Capture", 0, 0, 0, 0),
Raja Mallik425e1d32018-05-20 19:21:10 +053013385 SND_SOC_DAPM_AIF_IN("AFE_LOOPBACK_TX", "AFE Loopback Capture",
13386 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013387 SND_SOC_DAPM_AIF_OUT("SLIMBUS_7_RX", "Slimbus7 Playback", 0, 0, 0, 0),
13388 SND_SOC_DAPM_AIF_IN("SLIMBUS_7_TX", "Slimbus7 Capture", 0, 0, 0, 0),
13389
13390 SND_SOC_DAPM_AIF_OUT("SLIMBUS_8_RX", "Slimbus8 Playback", 0, 0, 0, 0),
13391 SND_SOC_DAPM_AIF_IN("SLIMBUS_8_TX", "Slimbus8 Capture", 0, 0, 0, 0),
13392 SND_SOC_DAPM_AIF_OUT("USB_AUDIO_RX", "USB Audio Playback", 0, 0, 0, 0),
13393 SND_SOC_DAPM_AIF_IN("USB_AUDIO_TX", "USB Audio Capture", 0, 0, 0, 0),
13394
13395 /* Switch Definitions */
13396 SND_SOC_DAPM_SWITCH("SLIMBUS_DL_HL", SND_SOC_NOPM, 0, 0,
13397 &slim_fm_switch_mixer_controls),
13398 SND_SOC_DAPM_SWITCH("SLIMBUS1_DL_HL", SND_SOC_NOPM, 0, 0,
13399 &slim1_fm_switch_mixer_controls),
13400 SND_SOC_DAPM_SWITCH("SLIMBUS3_DL_HL", SND_SOC_NOPM, 0, 0,
13401 &slim3_fm_switch_mixer_controls),
13402 SND_SOC_DAPM_SWITCH("SLIMBUS4_DL_HL", SND_SOC_NOPM, 0, 0,
13403 &slim4_fm_switch_mixer_controls),
13404 SND_SOC_DAPM_SWITCH("SLIMBUS6_DL_HL", SND_SOC_NOPM, 0, 0,
13405 &slim6_fm_switch_mixer_controls),
13406 SND_SOC_DAPM_SWITCH("PCM_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13407 &pcm_rx_switch_mixer_controls),
13408 SND_SOC_DAPM_SWITCH("INT0_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13409 &int0_mi2s_rx_switch_mixer_controls),
13410 SND_SOC_DAPM_SWITCH("INT4_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13411 &int4_mi2s_rx_switch_mixer_controls),
13412 SND_SOC_DAPM_SWITCH("PRI_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13413 &pri_mi2s_rx_switch_mixer_controls),
13414 SND_SOC_DAPM_SWITCH("SEC_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13415 &sec_mi2s_rx_switch_mixer_controls),
13416 SND_SOC_DAPM_SWITCH("TERT_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13417 &tert_mi2s_rx_switch_mixer_controls),
13418 SND_SOC_DAPM_SWITCH("QUAT_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13419 &quat_mi2s_rx_switch_mixer_controls),
Rohit Kumara5077932017-09-10 22:05:05 +053013420 SND_SOC_DAPM_SWITCH("QUIN_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13421 &quin_mi2s_rx_switch_mixer_controls),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013422 SND_SOC_DAPM_SWITCH("HFP_PRI_AUX_UL_HL", SND_SOC_NOPM, 0, 0,
13423 &hfp_pri_aux_switch_mixer_controls),
13424 SND_SOC_DAPM_SWITCH("HFP_AUX_UL_HL", SND_SOC_NOPM, 0, 0,
13425 &hfp_aux_switch_mixer_controls),
13426 SND_SOC_DAPM_SWITCH("HFP_INT_UL_HL", SND_SOC_NOPM, 0, 0,
13427 &hfp_int_switch_mixer_controls),
13428 SND_SOC_DAPM_SWITCH("HFP_SLIM7_UL_HL", SND_SOC_NOPM, 0, 0,
13429 &hfp_slim7_switch_mixer_controls),
13430 SND_SOC_DAPM_SWITCH("USB_DL_HL", SND_SOC_NOPM, 0, 0,
13431 &usb_switch_mixer_controls),
13432
13433 /* Mixer definitions */
13434 SND_SOC_DAPM_MIXER("PRI_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13435 pri_i2s_rx_mixer_controls, ARRAY_SIZE(pri_i2s_rx_mixer_controls)),
13436 SND_SOC_DAPM_MIXER("SEC_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13437 sec_i2s_rx_mixer_controls, ARRAY_SIZE(sec_i2s_rx_mixer_controls)),
13438 SND_SOC_DAPM_MIXER("SLIMBUS_0_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13439 slimbus_rx_mixer_controls, ARRAY_SIZE(slimbus_rx_mixer_controls)),
13440 SND_SOC_DAPM_MIXER("SLIMBUS_2_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13441 slimbus_2_rx_mixer_controls, ARRAY_SIZE(slimbus_2_rx_mixer_controls)),
13442 SND_SOC_DAPM_MIXER("SLIMBUS_5_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13443 slimbus_5_rx_mixer_controls, ARRAY_SIZE(slimbus_5_rx_mixer_controls)),
13444 SND_SOC_DAPM_MIXER("SLIMBUS_7_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13445 slimbus_7_rx_mixer_controls, ARRAY_SIZE(slimbus_7_rx_mixer_controls)),
13446 SND_SOC_DAPM_MIXER("HDMI Mixer", SND_SOC_NOPM, 0, 0,
13447 hdmi_mixer_controls, ARRAY_SIZE(hdmi_mixer_controls)),
13448 SND_SOC_DAPM_MIXER("DISPLAY_PORT Mixer", SND_SOC_NOPM, 0, 0,
13449 display_port_mixer_controls, ARRAY_SIZE(display_port_mixer_controls)),
13450 SND_SOC_DAPM_MIXER("SPDIF_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13451 spdif_rx_mixer_controls, ARRAY_SIZE(spdif_rx_mixer_controls)),
13452 SND_SOC_DAPM_MIXER("MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13453 mi2s_rx_mixer_controls, ARRAY_SIZE(mi2s_rx_mixer_controls)),
13454 SND_SOC_DAPM_MIXER("QUAT_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13455 quaternary_mi2s_rx_mixer_controls,
13456 ARRAY_SIZE(quaternary_mi2s_rx_mixer_controls)),
13457 SND_SOC_DAPM_MIXER("TERT_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13458 tertiary_mi2s_rx_mixer_controls,
13459 ARRAY_SIZE(tertiary_mi2s_rx_mixer_controls)),
13460 SND_SOC_DAPM_MIXER("SEC_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13461 secondary_mi2s_rx_mixer_controls,
13462 ARRAY_SIZE(secondary_mi2s_rx_mixer_controls)),
13463 SND_SOC_DAPM_MIXER("SEC_MI2S_RX_SD1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13464 secondary_mi2s_rx2_mixer_controls,
13465 ARRAY_SIZE(secondary_mi2s_rx2_mixer_controls)),
13466 SND_SOC_DAPM_MIXER("PRI_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13467 primary_mi2s_rx_mixer_controls,
13468 ARRAY_SIZE(primary_mi2s_rx_mixer_controls)),
13469 SND_SOC_DAPM_MIXER("INT0_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13470 int0_mi2s_rx_mixer_controls,
13471 ARRAY_SIZE(int0_mi2s_rx_mixer_controls)),
13472 SND_SOC_DAPM_MIXER("INT4_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13473 int4_mi2s_rx_mixer_controls,
13474 ARRAY_SIZE(int4_mi2s_rx_mixer_controls)),
13475 SND_SOC_DAPM_MIXER("QUIN_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13476 quinary_mi2s_rx_mixer_controls,
13477 ARRAY_SIZE(quinary_mi2s_rx_mixer_controls)),
13478 SND_SOC_DAPM_MIXER("PRI_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13479 pri_tdm_rx_0_mixer_controls,
13480 ARRAY_SIZE(pri_tdm_rx_0_mixer_controls)),
13481 SND_SOC_DAPM_MIXER("PRI_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13482 pri_tdm_rx_1_mixer_controls,
13483 ARRAY_SIZE(pri_tdm_rx_1_mixer_controls)),
13484 SND_SOC_DAPM_MIXER("PRI_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13485 pri_tdm_rx_2_mixer_controls,
13486 ARRAY_SIZE(pri_tdm_rx_2_mixer_controls)),
13487 SND_SOC_DAPM_MIXER("PRI_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
13488 pri_tdm_rx_3_mixer_controls,
13489 ARRAY_SIZE(pri_tdm_rx_3_mixer_controls)),
13490 SND_SOC_DAPM_MIXER("PRI_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13491 pri_tdm_tx_0_mixer_controls,
13492 ARRAY_SIZE(pri_tdm_tx_0_mixer_controls)),
13493 SND_SOC_DAPM_MIXER("SEC_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13494 sec_tdm_rx_0_mixer_controls,
13495 ARRAY_SIZE(sec_tdm_rx_0_mixer_controls)),
13496 SND_SOC_DAPM_MIXER("SEC_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13497 sec_tdm_rx_1_mixer_controls,
13498 ARRAY_SIZE(sec_tdm_rx_1_mixer_controls)),
13499 SND_SOC_DAPM_MIXER("SEC_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13500 sec_tdm_rx_2_mixer_controls,
13501 ARRAY_SIZE(sec_tdm_rx_2_mixer_controls)),
13502 SND_SOC_DAPM_MIXER("SEC_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
13503 sec_tdm_rx_3_mixer_controls,
13504 ARRAY_SIZE(sec_tdm_rx_3_mixer_controls)),
13505 SND_SOC_DAPM_MIXER("SEC_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13506 sec_tdm_tx_0_mixer_controls,
13507 ARRAY_SIZE(sec_tdm_tx_0_mixer_controls)),
13508 SND_SOC_DAPM_MIXER("TERT_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13509 tert_tdm_rx_0_mixer_controls,
13510 ARRAY_SIZE(tert_tdm_rx_0_mixer_controls)),
13511 SND_SOC_DAPM_MIXER("TERT_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13512 tert_tdm_tx_0_mixer_controls,
13513 ARRAY_SIZE(tert_tdm_tx_0_mixer_controls)),
13514 SND_SOC_DAPM_MIXER("TERT_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13515 tert_tdm_rx_1_mixer_controls,
13516 ARRAY_SIZE(tert_tdm_rx_1_mixer_controls)),
13517 SND_SOC_DAPM_MIXER("TERT_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13518 tert_tdm_rx_2_mixer_controls,
13519 ARRAY_SIZE(tert_tdm_rx_2_mixer_controls)),
13520 SND_SOC_DAPM_MIXER("TERT_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
13521 tert_tdm_rx_3_mixer_controls,
13522 ARRAY_SIZE(tert_tdm_rx_3_mixer_controls)),
13523 SND_SOC_DAPM_MIXER("TERT_TDM_RX_4 Audio Mixer", SND_SOC_NOPM, 0, 0,
13524 tert_tdm_rx_4_mixer_controls,
13525 ARRAY_SIZE(tert_tdm_rx_4_mixer_controls)),
13526 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13527 quat_tdm_rx_0_mixer_controls,
13528 ARRAY_SIZE(quat_tdm_rx_0_mixer_controls)),
13529 SND_SOC_DAPM_MIXER("QUAT_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13530 quat_tdm_tx_0_mixer_controls,
13531 ARRAY_SIZE(quat_tdm_tx_0_mixer_controls)),
13532 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13533 quat_tdm_rx_1_mixer_controls,
13534 ARRAY_SIZE(quat_tdm_rx_1_mixer_controls)),
13535 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13536 quat_tdm_rx_2_mixer_controls,
13537 ARRAY_SIZE(quat_tdm_rx_2_mixer_controls)),
13538 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
13539 quat_tdm_rx_3_mixer_controls,
13540 ARRAY_SIZE(quat_tdm_rx_3_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013541 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13542 quin_tdm_rx_0_mixer_controls,
13543 ARRAY_SIZE(quin_tdm_rx_0_mixer_controls)),
13544 SND_SOC_DAPM_MIXER("QUIN_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13545 quin_tdm_tx_0_mixer_controls,
13546 ARRAY_SIZE(quin_tdm_tx_0_mixer_controls)),
13547 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13548 quin_tdm_rx_1_mixer_controls,
13549 ARRAY_SIZE(quin_tdm_rx_1_mixer_controls)),
13550 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13551 quin_tdm_rx_2_mixer_controls,
13552 ARRAY_SIZE(quin_tdm_rx_2_mixer_controls)),
13553 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
13554 quin_tdm_rx_3_mixer_controls,
13555 ARRAY_SIZE(quin_tdm_rx_3_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013556 SND_SOC_DAPM_MIXER("MultiMedia1 Mixer", SND_SOC_NOPM, 0, 0,
13557 mmul1_mixer_controls, ARRAY_SIZE(mmul1_mixer_controls)),
13558 SND_SOC_DAPM_MIXER("MultiMedia2 Mixer", SND_SOC_NOPM, 0, 0,
13559 mmul2_mixer_controls, ARRAY_SIZE(mmul2_mixer_controls)),
13560 SND_SOC_DAPM_MIXER("MultiMedia3 Mixer", SND_SOC_NOPM, 0, 0,
13561 mmul3_mixer_controls, ARRAY_SIZE(mmul3_mixer_controls)),
13562 SND_SOC_DAPM_MIXER("MultiMedia4 Mixer", SND_SOC_NOPM, 0, 0,
13563 mmul4_mixer_controls, ARRAY_SIZE(mmul4_mixer_controls)),
13564 SND_SOC_DAPM_MIXER("MultiMedia5 Mixer", SND_SOC_NOPM, 0, 0,
13565 mmul5_mixer_controls, ARRAY_SIZE(mmul5_mixer_controls)),
13566 SND_SOC_DAPM_MIXER("MultiMedia6 Mixer", SND_SOC_NOPM, 0, 0,
13567 mmul6_mixer_controls, ARRAY_SIZE(mmul6_mixer_controls)),
13568 SND_SOC_DAPM_MIXER("MultiMedia8 Mixer", SND_SOC_NOPM, 0, 0,
13569 mmul8_mixer_controls, ARRAY_SIZE(mmul8_mixer_controls)),
13570 SND_SOC_DAPM_MIXER("MultiMedia9 Mixer", SND_SOC_NOPM, 0, 0,
13571 mmul9_mixer_controls, ARRAY_SIZE(mmul9_mixer_controls)),
Laxminath Kasam38070be2017-08-17 18:21:59 +053013572 SND_SOC_DAPM_MIXER("MultiMedia10 Mixer", SND_SOC_NOPM, 0, 0,
13573 mmul10_mixer_controls, ARRAY_SIZE(mmul10_mixer_controls)),
Asish Bhattacharya34504582017-08-08 12:55:01 +053013574 SND_SOC_DAPM_MIXER("MultiMedia16 Mixer", SND_SOC_NOPM, 0, 0,
13575 mmul16_mixer_controls, ARRAY_SIZE(mmul16_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013576 SND_SOC_DAPM_MIXER("MultiMedia17 Mixer", SND_SOC_NOPM, 0, 0,
13577 mmul17_mixer_controls, ARRAY_SIZE(mmul17_mixer_controls)),
13578 SND_SOC_DAPM_MIXER("MultiMedia18 Mixer", SND_SOC_NOPM, 0, 0,
13579 mmul18_mixer_controls, ARRAY_SIZE(mmul18_mixer_controls)),
13580 SND_SOC_DAPM_MIXER("MultiMedia19 Mixer", SND_SOC_NOPM, 0, 0,
13581 mmul19_mixer_controls, ARRAY_SIZE(mmul19_mixer_controls)),
13582 SND_SOC_DAPM_MIXER("MultiMedia20 Mixer", SND_SOC_NOPM, 0, 0,
13583 mmul20_mixer_controls, ARRAY_SIZE(mmul20_mixer_controls)),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053013584 SND_SOC_DAPM_MIXER("MultiMedia28 Mixer", SND_SOC_NOPM, 0, 0,
13585 mmul28_mixer_controls, ARRAY_SIZE(mmul28_mixer_controls)),
13586 SND_SOC_DAPM_MIXER("MultiMedia29 Mixer", SND_SOC_NOPM, 0, 0,
13587 mmul29_mixer_controls, ARRAY_SIZE(mmul29_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013588 SND_SOC_DAPM_MIXER("AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13589 auxpcm_rx_mixer_controls, ARRAY_SIZE(auxpcm_rx_mixer_controls)),
13590 SND_SOC_DAPM_MIXER("SEC_AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13591 sec_auxpcm_rx_mixer_controls, ARRAY_SIZE(sec_auxpcm_rx_mixer_controls)),
13592 SND_SOC_DAPM_MIXER("TERT_AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13593 tert_auxpcm_rx_mixer_controls,
13594 ARRAY_SIZE(tert_auxpcm_rx_mixer_controls)),
13595 SND_SOC_DAPM_MIXER("QUAT_AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13596 quat_auxpcm_rx_mixer_controls,
13597 ARRAY_SIZE(quat_auxpcm_rx_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013598 SND_SOC_DAPM_MIXER("QUIN_AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13599 quin_auxpcm_rx_mixer_controls,
13600 ARRAY_SIZE(quin_auxpcm_rx_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013601 /* incall */
13602 SND_SOC_DAPM_MIXER("Incall_Music Audio Mixer", SND_SOC_NOPM, 0, 0,
13603 incall_music_delivery_mixer_controls,
13604 ARRAY_SIZE(incall_music_delivery_mixer_controls)),
13605 SND_SOC_DAPM_MIXER("Incall_Music_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13606 incall_music2_delivery_mixer_controls,
13607 ARRAY_SIZE(incall_music2_delivery_mixer_controls)),
13608 SND_SOC_DAPM_MIXER("SLIMBUS_4_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13609 slimbus_4_rx_mixer_controls,
13610 ARRAY_SIZE(slimbus_4_rx_mixer_controls)),
13611 SND_SOC_DAPM_MIXER("SLIMBUS_6_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13612 slimbus_6_rx_mixer_controls,
13613 ARRAY_SIZE(slimbus_6_rx_mixer_controls)),
13614 SND_SOC_DAPM_MIXER("USB_AUDIO_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13615 usb_audio_rx_mixer_controls,
13616 ARRAY_SIZE(usb_audio_rx_mixer_controls)),
13617 /* Voice Mixer */
13618 SND_SOC_DAPM_MIXER("PRI_RX_Voice Mixer",
13619 SND_SOC_NOPM, 0, 0, pri_rx_voice_mixer_controls,
13620 ARRAY_SIZE(pri_rx_voice_mixer_controls)),
13621 SND_SOC_DAPM_MIXER("SEC_RX_Voice Mixer",
13622 SND_SOC_NOPM, 0, 0,
13623 sec_i2s_rx_voice_mixer_controls,
13624 ARRAY_SIZE(sec_i2s_rx_voice_mixer_controls)),
13625 SND_SOC_DAPM_MIXER("SEC_MI2S_RX_Voice Mixer",
13626 SND_SOC_NOPM, 0, 0,
13627 sec_mi2s_rx_voice_mixer_controls,
13628 ARRAY_SIZE(sec_mi2s_rx_voice_mixer_controls)),
13629 SND_SOC_DAPM_MIXER("SLIM_0_RX_Voice Mixer",
13630 SND_SOC_NOPM, 0, 0,
13631 slimbus_rx_voice_mixer_controls,
13632 ARRAY_SIZE(slimbus_rx_voice_mixer_controls)),
13633 SND_SOC_DAPM_MIXER("INTERNAL_BT_SCO_RX_Voice Mixer",
13634 SND_SOC_NOPM, 0, 0,
13635 bt_sco_rx_voice_mixer_controls,
13636 ARRAY_SIZE(bt_sco_rx_voice_mixer_controls)),
13637 SND_SOC_DAPM_MIXER("AFE_PCM_RX_Voice Mixer",
13638 SND_SOC_NOPM, 0, 0,
13639 afe_pcm_rx_voice_mixer_controls,
13640 ARRAY_SIZE(afe_pcm_rx_voice_mixer_controls)),
13641 SND_SOC_DAPM_MIXER("AUX_PCM_RX_Voice Mixer",
13642 SND_SOC_NOPM, 0, 0,
13643 aux_pcm_rx_voice_mixer_controls,
13644 ARRAY_SIZE(aux_pcm_rx_voice_mixer_controls)),
13645 SND_SOC_DAPM_MIXER("SEC_AUX_PCM_RX_Voice Mixer",
13646 SND_SOC_NOPM, 0, 0,
13647 sec_aux_pcm_rx_voice_mixer_controls,
13648 ARRAY_SIZE(sec_aux_pcm_rx_voice_mixer_controls)),
13649 SND_SOC_DAPM_MIXER("TERT_AUX_PCM_RX_Voice Mixer",
13650 SND_SOC_NOPM, 0, 0,
13651 tert_aux_pcm_rx_voice_mixer_controls,
13652 ARRAY_SIZE(tert_aux_pcm_rx_voice_mixer_controls)),
13653 SND_SOC_DAPM_MIXER("QUAT_AUX_PCM_RX_Voice Mixer",
13654 SND_SOC_NOPM, 0, 0,
13655 quat_aux_pcm_rx_voice_mixer_controls,
13656 ARRAY_SIZE(quat_aux_pcm_rx_voice_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013657 SND_SOC_DAPM_MIXER("QUIN_AUX_PCM_RX_Voice Mixer",
13658 SND_SOC_NOPM, 0, 0,
13659 quin_aux_pcm_rx_voice_mixer_controls,
13660 ARRAY_SIZE(quin_aux_pcm_rx_voice_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013661 SND_SOC_DAPM_MIXER("HDMI_RX_Voice Mixer",
13662 SND_SOC_NOPM, 0, 0,
13663 hdmi_rx_voice_mixer_controls,
13664 ARRAY_SIZE(hdmi_rx_voice_mixer_controls)),
13665 SND_SOC_DAPM_MIXER("MI2S_RX_Voice Mixer",
13666 SND_SOC_NOPM, 0, 0,
13667 mi2s_rx_voice_mixer_controls,
13668 ARRAY_SIZE(mi2s_rx_voice_mixer_controls)),
13669 SND_SOC_DAPM_MIXER("PRI_MI2S_RX_Voice Mixer",
13670 SND_SOC_NOPM, 0, 0,
13671 pri_mi2s_rx_voice_mixer_controls,
13672 ARRAY_SIZE(pri_mi2s_rx_voice_mixer_controls)),
13673 SND_SOC_DAPM_MIXER("INT0_MI2S_RX_Voice Mixer",
13674 SND_SOC_NOPM, 0, 0,
13675 int0_mi2s_rx_voice_mixer_controls,
13676 ARRAY_SIZE(int0_mi2s_rx_voice_mixer_controls)),
13677 SND_SOC_DAPM_MIXER("INT4_MI2S_RX_Voice Mixer",
13678 SND_SOC_NOPM, 0, 0,
13679 int4_mi2s_rx_voice_mixer_controls,
13680 ARRAY_SIZE(int4_mi2s_rx_voice_mixer_controls)),
13681 SND_SOC_DAPM_MIXER("TERT_MI2S_RX_Voice Mixer",
13682 SND_SOC_NOPM, 0, 0,
13683 tert_mi2s_rx_voice_mixer_controls,
13684 ARRAY_SIZE(tert_mi2s_rx_voice_mixer_controls)),
13685 SND_SOC_DAPM_MIXER("QUAT_MI2S_RX_Voice Mixer",
13686 SND_SOC_NOPM, 0, 0,
13687 quat_mi2s_rx_voice_mixer_controls,
13688 ARRAY_SIZE(quat_mi2s_rx_voice_mixer_controls)),
13689 SND_SOC_DAPM_MIXER("QUIN_MI2S_RX_Voice Mixer",
13690 SND_SOC_NOPM, 0, 0,
13691 quin_mi2s_rx_voice_mixer_controls,
13692 ARRAY_SIZE(quin_mi2s_rx_voice_mixer_controls)),
Raja Mallik321d5712018-05-04 17:22:11 +053013693 SND_SOC_DAPM_MIXER("PRI_TDM_RX_0_Voice Mixer",
13694 SND_SOC_NOPM, 0, 0,
13695 pri_tdm_rx_0_voice_mixer_controls,
13696 ARRAY_SIZE(pri_tdm_rx_0_voice_mixer_controls)),
13697 SND_SOC_DAPM_MIXER("PRI_TDM_RX_1_Voice Mixer",
13698 SND_SOC_NOPM, 0, 0,
13699 pri_tdm_rx_1_voice_mixer_controls,
13700 ARRAY_SIZE(pri_tdm_rx_1_voice_mixer_controls)),
13701 SND_SOC_DAPM_MIXER("PRI_TDM_RX_2_Voice Mixer",
13702 SND_SOC_NOPM, 0, 0,
13703 pri_tdm_rx_2_voice_mixer_controls,
13704 ARRAY_SIZE(pri_tdm_rx_2_voice_mixer_controls)),
13705 SND_SOC_DAPM_MIXER("PRI_TDM_RX_3_Voice Mixer",
13706 SND_SOC_NOPM, 0, 0,
13707 pri_tdm_rx_3_voice_mixer_controls,
13708 ARRAY_SIZE(pri_tdm_rx_3_voice_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013709 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_2_Voice Mixer",
13710 SND_SOC_NOPM, 0, 0,
13711 quat_tdm_rx_2_voice_mixer_controls,
13712 ARRAY_SIZE(quat_tdm_rx_2_voice_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013713 SND_SOC_DAPM_MIXER("Voip_Tx Mixer",
13714 SND_SOC_NOPM, 0, 0, tx_voip_mixer_controls,
13715 ARRAY_SIZE(tx_voip_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013716 SND_SOC_DAPM_MIXER("VoiceMMode1_Tx Mixer",
13717 SND_SOC_NOPM, 0, 0, tx_voicemmode1_mixer_controls,
13718 ARRAY_SIZE(tx_voicemmode1_mixer_controls)),
13719 SND_SOC_DAPM_MIXER("VoiceMMode2_Tx Mixer",
13720 SND_SOC_NOPM, 0, 0, tx_voicemmode2_mixer_controls,
13721 ARRAY_SIZE(tx_voicemmode2_mixer_controls)),
13722 SND_SOC_DAPM_MIXER("INTERNAL_BT_SCO_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13723 int_bt_sco_rx_mixer_controls, ARRAY_SIZE(int_bt_sco_rx_mixer_controls)),
13724 SND_SOC_DAPM_MIXER("INTERNAL_A2DP_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13725 int_bt_a2dp_rx_mixer_controls,
13726 ARRAY_SIZE(int_bt_a2dp_rx_mixer_controls)),
13727 SND_SOC_DAPM_MIXER("INTERNAL_FM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13728 int_fm_rx_mixer_controls, ARRAY_SIZE(int_fm_rx_mixer_controls)),
13729 SND_SOC_DAPM_MIXER("AFE_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13730 afe_pcm_rx_mixer_controls, ARRAY_SIZE(afe_pcm_rx_mixer_controls)),
13731 SND_SOC_DAPM_MIXER("Voice Stub Tx Mixer", SND_SOC_NOPM, 0, 0,
13732 tx_voice_stub_mixer_controls, ARRAY_SIZE(tx_voice_stub_mixer_controls)),
13733 SND_SOC_DAPM_MIXER("Voice2 Stub Tx Mixer", SND_SOC_NOPM, 0, 0,
13734 tx_voice2_stub_mixer_controls,
13735 ARRAY_SIZE(tx_voice2_stub_mixer_controls)),
13736 SND_SOC_DAPM_MIXER("VoLTE Stub Tx Mixer", SND_SOC_NOPM, 0, 0,
13737 tx_volte_stub_mixer_controls, ARRAY_SIZE(tx_volte_stub_mixer_controls)),
13738 SND_SOC_DAPM_MIXER("STUB_RX Mixer", SND_SOC_NOPM, 0, 0,
13739 stub_rx_mixer_controls, ARRAY_SIZE(stub_rx_mixer_controls)),
13740 SND_SOC_DAPM_MIXER("SLIMBUS_1_RX Mixer", SND_SOC_NOPM, 0, 0,
13741 slimbus_1_rx_mixer_controls, ARRAY_SIZE(slimbus_1_rx_mixer_controls)),
13742 SND_SOC_DAPM_MIXER("SLIMBUS_3_RX_Voice Mixer", SND_SOC_NOPM, 0, 0,
13743 slimbus_3_rx_mixer_controls, ARRAY_SIZE(slimbus_3_rx_mixer_controls)),
13744 SND_SOC_DAPM_MIXER("SLIM_6_RX_Voice Mixer",
13745 SND_SOC_NOPM, 0, 0,
13746 slimbus_6_rx_voice_mixer_controls,
13747 ARRAY_SIZE(slimbus_6_rx_voice_mixer_controls)),
13748 SND_SOC_DAPM_MIXER("SLIM_7_RX_Voice Mixer", SND_SOC_NOPM, 0, 0,
13749 slimbus_7_rx_voice_mixer_controls,
13750 ARRAY_SIZE(slimbus_7_rx_voice_mixer_controls)),
13751 SND_SOC_DAPM_MIXER("SLIM_8_RX_Voice Mixer", SND_SOC_NOPM, 0, 0,
13752 slimbus_8_rx_voice_mixer_controls,
13753 ARRAY_SIZE(slimbus_8_rx_voice_mixer_controls)),
13754 /* port mixer */
13755 SND_SOC_DAPM_MIXER("SLIMBUS_0_RX Port Mixer",
13756 SND_SOC_NOPM, 0, 0, sbus_0_rx_port_mixer_controls,
13757 ARRAY_SIZE(sbus_0_rx_port_mixer_controls)),
13758 SND_SOC_DAPM_MIXER("AUX_PCM_RX Port Mixer",
13759 SND_SOC_NOPM, 0, 0, aux_pcm_rx_port_mixer_controls,
13760 ARRAY_SIZE(aux_pcm_rx_port_mixer_controls)),
13761 SND_SOC_DAPM_MIXER("SEC_AUXPCM_RX Port Mixer",
13762 SND_SOC_NOPM, 0, 0, sec_auxpcm_rx_port_mixer_controls,
13763 ARRAY_SIZE(sec_auxpcm_rx_port_mixer_controls)),
13764 SND_SOC_DAPM_MIXER("TERT_AUXPCM_RX Port Mixer",
13765 SND_SOC_NOPM, 0, 0, tert_auxpcm_rx_port_mixer_controls,
13766 ARRAY_SIZE(tert_auxpcm_rx_port_mixer_controls)),
13767 SND_SOC_DAPM_MIXER("QUAT_AUXPCM_RX Port Mixer",
13768 SND_SOC_NOPM, 0, 0, quat_auxpcm_rx_port_mixer_controls,
13769 ARRAY_SIZE(quat_auxpcm_rx_port_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013770 SND_SOC_DAPM_MIXER("QUIN_AUXPCM_RX Port Mixer",
13771 SND_SOC_NOPM, 0, 0, quin_auxpcm_rx_port_mixer_controls,
13772 ARRAY_SIZE(quin_auxpcm_rx_port_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013773 SND_SOC_DAPM_MIXER("SLIMBUS_1_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13774 sbus_1_rx_port_mixer_controls,
13775 ARRAY_SIZE(sbus_1_rx_port_mixer_controls)),
13776 SND_SOC_DAPM_MIXER("INTERNAL_BT_SCO_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13777 bt_sco_rx_port_mixer_controls,
13778 ARRAY_SIZE(bt_sco_rx_port_mixer_controls)),
13779 SND_SOC_DAPM_MIXER("AFE_PCM_RX Port Mixer",
13780 SND_SOC_NOPM, 0, 0, afe_pcm_rx_port_mixer_controls,
13781 ARRAY_SIZE(afe_pcm_rx_port_mixer_controls)),
13782 SND_SOC_DAPM_MIXER("HDMI_RX Port Mixer",
13783 SND_SOC_NOPM, 0, 0, hdmi_rx_port_mixer_controls,
13784 ARRAY_SIZE(hdmi_rx_port_mixer_controls)),
13785 SND_SOC_DAPM_MIXER("DISPLAY_PORT_RX Port Mixer",
13786 SND_SOC_NOPM, 0, 0, display_port_rx_port_mixer_controls,
13787 ARRAY_SIZE(display_port_rx_port_mixer_controls)),
13788 SND_SOC_DAPM_MIXER("SEC_I2S_RX Port Mixer",
13789 SND_SOC_NOPM, 0, 0, sec_i2s_rx_port_mixer_controls,
13790 ARRAY_SIZE(sec_i2s_rx_port_mixer_controls)),
13791 SND_SOC_DAPM_MIXER("SLIMBUS_3_RX Port Mixer",
13792 SND_SOC_NOPM, 0, 0, sbus_3_rx_port_mixer_controls,
13793 ARRAY_SIZE(sbus_3_rx_port_mixer_controls)),
13794 SND_SOC_DAPM_MIXER("SLIMBUS_6_RX Port Mixer",
13795 SND_SOC_NOPM, 0, 0, sbus_6_rx_port_mixer_controls,
13796 ARRAY_SIZE(sbus_6_rx_port_mixer_controls)),
13797 SND_SOC_DAPM_MIXER("MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13798 mi2s_rx_port_mixer_controls, ARRAY_SIZE(mi2s_rx_port_mixer_controls)),
13799 SND_SOC_DAPM_MIXER("PRI_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13800 primary_mi2s_rx_port_mixer_controls,
13801 ARRAY_SIZE(primary_mi2s_rx_port_mixer_controls)),
13802 SND_SOC_DAPM_MIXER("SEC_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13803 sec_mi2s_rx_port_mixer_controls,
13804 ARRAY_SIZE(sec_mi2s_rx_port_mixer_controls)),
13805 SND_SOC_DAPM_MIXER("TERT_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13806 tert_mi2s_rx_port_mixer_controls,
13807 ARRAY_SIZE(tert_mi2s_rx_port_mixer_controls)),
13808 SND_SOC_DAPM_MIXER("QUAT_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13809 quat_mi2s_rx_port_mixer_controls,
13810 ARRAY_SIZE(quat_mi2s_rx_port_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013811 SND_SOC_DAPM_MIXER("QUIN_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13812 quin_mi2s_rx_port_mixer_controls,
13813 ARRAY_SIZE(quin_mi2s_rx_port_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013814 SND_SOC_DAPM_MIXER("PRI_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
13815 pri_tdm_rx_0_port_mixer_controls,
13816 ARRAY_SIZE(pri_tdm_rx_0_port_mixer_controls)),
13817 SND_SOC_DAPM_MIXER("PRI_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
13818 pri_tdm_rx_1_port_mixer_controls,
13819 ARRAY_SIZE(pri_tdm_rx_1_port_mixer_controls)),
13820 SND_SOC_DAPM_MIXER("PRI_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
13821 pri_tdm_rx_2_port_mixer_controls,
13822 ARRAY_SIZE(pri_tdm_rx_2_port_mixer_controls)),
13823 SND_SOC_DAPM_MIXER("PRI_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
13824 pri_tdm_rx_3_port_mixer_controls,
13825 ARRAY_SIZE(pri_tdm_rx_3_port_mixer_controls)),
13826 SND_SOC_DAPM_MIXER("SEC_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
13827 sec_tdm_rx_0_port_mixer_controls,
13828 ARRAY_SIZE(sec_tdm_rx_0_port_mixer_controls)),
13829 SND_SOC_DAPM_MIXER("SEC_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
13830 sec_tdm_rx_1_port_mixer_controls,
13831 ARRAY_SIZE(sec_tdm_rx_1_port_mixer_controls)),
13832 SND_SOC_DAPM_MIXER("SEC_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
13833 sec_tdm_rx_2_port_mixer_controls,
13834 ARRAY_SIZE(sec_tdm_rx_2_port_mixer_controls)),
13835 SND_SOC_DAPM_MIXER("SEC_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
13836 sec_tdm_rx_3_port_mixer_controls,
13837 ARRAY_SIZE(sec_tdm_rx_3_port_mixer_controls)),
13838 SND_SOC_DAPM_MIXER("TERT_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
13839 tert_tdm_rx_0_port_mixer_controls,
13840 ARRAY_SIZE(tert_tdm_rx_0_port_mixer_controls)),
13841 SND_SOC_DAPM_MIXER("TERT_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
13842 tert_tdm_rx_1_port_mixer_controls,
13843 ARRAY_SIZE(tert_tdm_rx_1_port_mixer_controls)),
13844 SND_SOC_DAPM_MIXER("TERT_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
13845 tert_tdm_rx_2_port_mixer_controls,
13846 ARRAY_SIZE(tert_tdm_rx_2_port_mixer_controls)),
13847 SND_SOC_DAPM_MIXER("TERT_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
13848 tert_tdm_rx_3_port_mixer_controls,
13849 ARRAY_SIZE(tert_tdm_rx_3_port_mixer_controls)),
13850 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
13851 quat_tdm_rx_0_port_mixer_controls,
13852 ARRAY_SIZE(quat_tdm_rx_0_port_mixer_controls)),
13853 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
13854 quat_tdm_rx_1_port_mixer_controls,
13855 ARRAY_SIZE(quat_tdm_rx_1_port_mixer_controls)),
13856 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
13857 quat_tdm_rx_2_port_mixer_controls,
13858 ARRAY_SIZE(quat_tdm_rx_2_port_mixer_controls)),
13859 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
13860 quat_tdm_rx_3_port_mixer_controls,
13861 ARRAY_SIZE(quat_tdm_rx_3_port_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013862 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
13863 quin_tdm_rx_0_port_mixer_controls,
13864 ARRAY_SIZE(quin_tdm_rx_0_port_mixer_controls)),
13865 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
13866 quin_tdm_rx_1_port_mixer_controls,
13867 ARRAY_SIZE(quin_tdm_rx_1_port_mixer_controls)),
13868 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
13869 quin_tdm_rx_2_port_mixer_controls,
13870 ARRAY_SIZE(quin_tdm_rx_2_port_mixer_controls)),
13871 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
13872 quin_tdm_rx_3_port_mixer_controls,
13873 ARRAY_SIZE(quin_tdm_rx_3_port_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013874 SND_SOC_DAPM_MIXER("INT0_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13875 int0_mi2s_rx_port_mixer_controls,
13876 ARRAY_SIZE(int0_mi2s_rx_port_mixer_controls)),
13877 SND_SOC_DAPM_MIXER("INT4_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13878 int4_mi2s_rx_port_mixer_controls,
13879 ARRAY_SIZE(int4_mi2s_rx_port_mixer_controls)),
13880 SND_SOC_DAPM_MIXER("QCHAT_Tx Mixer",
13881 SND_SOC_NOPM, 0, 0, tx_qchat_mixer_controls,
13882 ARRAY_SIZE(tx_qchat_mixer_controls)),
13883 SND_SOC_DAPM_MIXER("USB_AUDIO_RX_Voice Mixer",
13884 SND_SOC_NOPM, 0, 0, usb_audio_rx_voice_mixer_controls,
13885 ARRAY_SIZE(usb_audio_rx_voice_mixer_controls)),
13886 SND_SOC_DAPM_MIXER("USB_AUDIO_RX Port Mixer",
13887 SND_SOC_NOPM, 0, 0, usb_rx_port_mixer_controls,
13888 ARRAY_SIZE(usb_rx_port_mixer_controls)),
Aalique Grahamee4fd7d52017-11-28 13:24:13 -080013889 SND_SOC_DAPM_MIXER("DISPLAY_PORT_RX_Voice Mixer",
13890 SND_SOC_NOPM, 0, 0, display_port_rx_voice_mixer_controls,
13891 ARRAY_SIZE(display_port_rx_voice_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013892 /* lsm mixer definitions */
13893 SND_SOC_DAPM_MIXER("LSM1 Mixer", SND_SOC_NOPM, 0, 0,
13894 lsm1_mixer_controls, ARRAY_SIZE(lsm1_mixer_controls)),
13895 SND_SOC_DAPM_MIXER("LSM2 Mixer", SND_SOC_NOPM, 0, 0,
13896 lsm2_mixer_controls, ARRAY_SIZE(lsm2_mixer_controls)),
13897 SND_SOC_DAPM_MIXER("LSM3 Mixer", SND_SOC_NOPM, 0, 0,
13898 lsm3_mixer_controls, ARRAY_SIZE(lsm3_mixer_controls)),
13899 SND_SOC_DAPM_MIXER("LSM4 Mixer", SND_SOC_NOPM, 0, 0,
13900 lsm4_mixer_controls, ARRAY_SIZE(lsm4_mixer_controls)),
13901 SND_SOC_DAPM_MIXER("LSM5 Mixer", SND_SOC_NOPM, 0, 0,
13902 lsm5_mixer_controls, ARRAY_SIZE(lsm5_mixer_controls)),
13903 SND_SOC_DAPM_MIXER("LSM6 Mixer", SND_SOC_NOPM, 0, 0,
13904 lsm6_mixer_controls, ARRAY_SIZE(lsm6_mixer_controls)),
13905 SND_SOC_DAPM_MIXER("LSM7 Mixer", SND_SOC_NOPM, 0, 0,
13906 lsm7_mixer_controls, ARRAY_SIZE(lsm7_mixer_controls)),
13907 SND_SOC_DAPM_MIXER("LSM8 Mixer", SND_SOC_NOPM, 0, 0,
13908 lsm8_mixer_controls, ARRAY_SIZE(lsm8_mixer_controls)),
13909 /* Virtual Pins to force backends ON atm */
13910 SND_SOC_DAPM_OUTPUT("BE_OUT"),
13911 SND_SOC_DAPM_INPUT("BE_IN"),
13912
13913 SND_SOC_DAPM_MUX("SLIM0_RX_VI_FB_LCH_MUX", SND_SOC_NOPM, 0, 0,
13914 &slim0_rx_vi_fb_lch_mux),
13915 SND_SOC_DAPM_MUX("SLIM0_RX_VI_FB_RCH_MUX", SND_SOC_NOPM, 0, 0,
13916 &slim0_rx_vi_fb_rch_mux),
13917 SND_SOC_DAPM_MUX("PRI_MI2S_RX_VI_FB_MUX", SND_SOC_NOPM, 0, 0,
13918 &mi2s_rx_vi_fb_mux),
13919 SND_SOC_DAPM_MUX("INT4_MI2S_RX_VI_FB_MONO_CH_MUX", SND_SOC_NOPM, 0, 0,
13920 &int4_mi2s_rx_vi_fb_mono_ch_mux),
13921 SND_SOC_DAPM_MUX("INT4_MI2S_RX_VI_FB_STEREO_CH_MUX", SND_SOC_NOPM, 0, 0,
13922 &int4_mi2s_rx_vi_fb_stereo_ch_mux),
13923
13924 SND_SOC_DAPM_MUX("VOC_EXT_EC MUX", SND_SOC_NOPM, 0, 0,
13925 &voc_ext_ec_mux),
13926 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL1 MUX", SND_SOC_NOPM, 0, 0,
13927 &ext_ec_ref_mux_ul1),
13928 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL2 MUX", SND_SOC_NOPM, 0, 0,
13929 &ext_ec_ref_mux_ul2),
13930 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL3 MUX", SND_SOC_NOPM, 0, 0,
13931 &ext_ec_ref_mux_ul3),
13932 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL4 MUX", SND_SOC_NOPM, 0, 0,
13933 &ext_ec_ref_mux_ul4),
13934 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL5 MUX", SND_SOC_NOPM, 0, 0,
13935 &ext_ec_ref_mux_ul5),
13936 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL6 MUX", SND_SOC_NOPM, 0, 0,
13937 &ext_ec_ref_mux_ul6),
13938 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL8 MUX", SND_SOC_NOPM, 0, 0,
13939 &ext_ec_ref_mux_ul8),
13940 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL9 MUX", SND_SOC_NOPM, 0, 0,
13941 &ext_ec_ref_mux_ul9),
Laxminath Kasam38070be2017-08-17 18:21:59 +053013942 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL10 MUX", SND_SOC_NOPM, 0, 0,
13943 &ext_ec_ref_mux_ul10),
Asish Bhattacharya34504582017-08-08 12:55:01 +053013944 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL16 MUX", SND_SOC_NOPM, 0, 0,
13945 &ext_ec_ref_mux_ul16),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013946 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL17 MUX", SND_SOC_NOPM, 0, 0,
13947 &ext_ec_ref_mux_ul17),
13948 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL18 MUX", SND_SOC_NOPM, 0, 0,
13949 &ext_ec_ref_mux_ul18),
13950 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL19 MUX", SND_SOC_NOPM, 0, 0,
13951 &ext_ec_ref_mux_ul19),
13952};
13953
13954static const struct snd_soc_dapm_route intercon[] = {
13955 {"PRI_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13956 {"PRI_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13957 {"PRI_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13958 {"PRI_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13959 {"PRI_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13960 {"PRI_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13961 {"PRI_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13962 {"PRI_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13963 {"PRI_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
13964 {"PRI_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13965 {"PRI_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13966 {"PRI_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13967 {"PRI_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13968 {"PRI_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13969 {"PRI_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13970 {"PRI_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13971 {"PRI_I2S_RX", NULL, "PRI_RX Audio Mixer"},
13972
13973 {"SEC_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13974 {"SEC_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13975 {"SEC_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13976 {"SEC_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13977 {"SEC_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13978 {"SEC_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13979 {"SEC_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13980 {"SEC_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13981 {"SEC_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
13982 {"SEC_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13983 {"SEC_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13984 {"SEC_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13985 {"SEC_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13986 {"SEC_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13987 {"SEC_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13988 {"SEC_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13989 {"SEC_I2S_RX", NULL, "SEC_RX Audio Mixer"},
13990
13991 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13992 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13993 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13994 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13995 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13996 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13997 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13998 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13999 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14000 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14001 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14002 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14003 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14004 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14005 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14006 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14007 {"SLIMBUS_0_RX", NULL, "SLIMBUS_0_RX Audio Mixer"},
14008
14009 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14010 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14011 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14012 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14013 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14014 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14015 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14016 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14017 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14018 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14019 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14020 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14021 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14022 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14023 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14024 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14025 {"SLIMBUS_2_RX", NULL, "SLIMBUS_2_RX Audio Mixer"},
14026
14027 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14028 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14029 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14030 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14031 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14032 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14033 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14034 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14035 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14036 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14037 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14038 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14039 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14040 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14041 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14042 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14043 {"SLIMBUS_5_RX", NULL, "SLIMBUS_5_RX Audio Mixer"},
14044
14045 {"HDMI Mixer", "MultiMedia1", "MM_DL1"},
14046 {"HDMI Mixer", "MultiMedia2", "MM_DL2"},
14047 {"HDMI Mixer", "MultiMedia3", "MM_DL3"},
14048 {"HDMI Mixer", "MultiMedia4", "MM_DL4"},
14049 {"HDMI Mixer", "MultiMedia5", "MM_DL5"},
14050 {"HDMI Mixer", "MultiMedia6", "MM_DL6"},
14051 {"HDMI Mixer", "MultiMedia7", "MM_DL7"},
14052 {"HDMI Mixer", "MultiMedia8", "MM_DL8"},
14053 {"HDMI Mixer", "MultiMedia9", "MM_DL9"},
14054 {"HDMI Mixer", "MultiMedia10", "MM_DL10"},
14055 {"HDMI Mixer", "MultiMedia11", "MM_DL11"},
14056 {"HDMI Mixer", "MultiMedia12", "MM_DL12"},
14057 {"HDMI Mixer", "MultiMedia13", "MM_DL13"},
14058 {"HDMI Mixer", "MultiMedia14", "MM_DL14"},
14059 {"HDMI Mixer", "MultiMedia15", "MM_DL15"},
14060 {"HDMI Mixer", "MultiMedia16", "MM_DL16"},
14061 {"HDMI", NULL, "HDMI Mixer"},
14062
14063 {"DISPLAY_PORT Mixer", "MultiMedia1", "MM_DL1"},
14064 {"DISPLAY_PORT Mixer", "MultiMedia2", "MM_DL2"},
14065 {"DISPLAY_PORT Mixer", "MultiMedia3", "MM_DL3"},
14066 {"DISPLAY_PORT Mixer", "MultiMedia4", "MM_DL4"},
14067 {"DISPLAY_PORT Mixer", "MultiMedia5", "MM_DL5"},
14068 {"DISPLAY_PORT Mixer", "MultiMedia6", "MM_DL6"},
14069 {"DISPLAY_PORT Mixer", "MultiMedia7", "MM_DL7"},
14070 {"DISPLAY_PORT Mixer", "MultiMedia8", "MM_DL8"},
14071 {"DISPLAY_PORT Mixer", "MultiMedia9", "MM_DL9"},
14072 {"DISPLAY_PORT Mixer", "MultiMedia10", "MM_DL10"},
14073 {"DISPLAY_PORT Mixer", "MultiMedia11", "MM_DL11"},
14074 {"DISPLAY_PORT Mixer", "MultiMedia12", "MM_DL12"},
14075 {"DISPLAY_PORT Mixer", "MultiMedia13", "MM_DL13"},
14076 {"DISPLAY_PORT Mixer", "MultiMedia14", "MM_DL14"},
14077 {"DISPLAY_PORT Mixer", "MultiMedia15", "MM_DL15"},
14078 {"DISPLAY_PORT Mixer", "MultiMedia16", "MM_DL16"},
14079 {"DISPLAY_PORT", NULL, "DISPLAY_PORT Mixer"},
14080
14081 {"SPDIF_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14082 {"SPDIF_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14083 {"SPDIF_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14084 {"SPDIF_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14085 {"SPDIF_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14086 {"SPDIF_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14087 {"SPDIF_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14088 {"SPDIF_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14089 {"SPDIF_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14090 {"SPDIF_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14091 {"SPDIF_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14092 {"SPDIF_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14093 {"SPDIF_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14094 {"SPDIF_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14095 {"SPDIF_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14096 {"SPDIF_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14097 {"SPDIF_RX", NULL, "SPDIF_RX Audio Mixer"},
14098
14099 /* incall */
14100 {"Incall_Music Audio Mixer", "MultiMedia1", "MM_DL1"},
14101 {"Incall_Music Audio Mixer", "MultiMedia2", "MM_DL2"},
14102 {"Incall_Music Audio Mixer", "MultiMedia5", "MM_DL5"},
14103 {"Incall_Music Audio Mixer", "MultiMedia9", "MM_DL9"},
14104 {"VOICE_PLAYBACK_TX", NULL, "Incall_Music Audio Mixer"},
14105 {"Incall_Music_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
14106 {"Incall_Music_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
14107 {"Incall_Music_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
14108 {"Incall_Music_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
14109 {"VOICE2_PLAYBACK_TX", NULL, "Incall_Music_2 Audio Mixer"},
14110 {"SLIMBUS_4_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14111 {"SLIMBUS_4_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14112 {"SLIMBUS_4_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14113 {"SLIMBUS_4_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14114 {"SLIMBUS_4_RX", NULL, "SLIMBUS_4_RX Audio Mixer"},
14115
14116 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14117 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14118 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14119 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14120 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14121 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14122 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14123 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14124 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14125 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14126 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14127 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14128 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14129 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14130 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14131 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14132 {"SLIMBUS_6_RX", NULL, "SLIMBUS_6_RX Audio Mixer"},
14133
14134 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14135 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14136 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14137 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14138 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14139 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14140 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14141 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14142 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14143 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14144 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14145 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14146 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14147 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14148 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14149 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14150 {"SLIMBUS_7_RX", NULL, "SLIMBUS_7_RX Audio Mixer"},
14151
14152 {"USB_AUDIO_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14153 {"USB_AUDIO_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14154 {"USB_AUDIO_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14155 {"USB_AUDIO_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14156 {"USB_AUDIO_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14157 {"USB_AUDIO_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14158 {"USB_AUDIO_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14159 {"USB_AUDIO_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14160 {"USB_AUDIO_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14161 {"USB_AUDIO_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14162 {"USB_AUDIO_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14163 {"USB_AUDIO_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14164 {"USB_AUDIO_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14165 {"USB_AUDIO_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14166 {"USB_AUDIO_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14167 {"USB_AUDIO_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14168 {"USB_AUDIO_RX", NULL, "USB_AUDIO_RX Audio Mixer"},
14169
14170 {"MultiMedia1 Mixer", "VOC_REC_UL", "INCALL_RECORD_TX"},
14171 {"MultiMedia4 Mixer", "VOC_REC_UL", "INCALL_RECORD_TX"},
14172 {"MultiMedia8 Mixer", "VOC_REC_UL", "INCALL_RECORD_TX"},
14173 {"MultiMedia1 Mixer", "VOC_REC_DL", "INCALL_RECORD_RX"},
14174 {"MultiMedia4 Mixer", "VOC_REC_DL", "INCALL_RECORD_RX"},
14175 {"MultiMedia8 Mixer", "VOC_REC_DL", "INCALL_RECORD_RX"},
14176 {"MultiMedia1 Mixer", "SLIM_4_TX", "SLIMBUS_4_TX"},
14177 {"MultiMedia1 Mixer", "SLIM_6_TX", "SLIMBUS_6_TX"},
14178 {"MultiMedia1 Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
14179 {"MultiMedia1 Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
14180 {"MultiMedia8 Mixer", "SLIM_6_TX", "SLIMBUS_6_TX"},
14181 {"MultiMedia8 Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
14182 {"MultiMedia4 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14183 {"MultiMedia17 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14184 {"MultiMedia18 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14185 {"MultiMedia19 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053014186 {"MultiMedia28 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14187 {"MultiMedia29 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014188 {"MultiMedia8 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14189 {"MultiMedia2 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14190 {"MultiMedia4 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14191 {"MultiMedia17 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14192 {"MultiMedia18 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14193 {"MultiMedia19 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053014194 {"MultiMedia28 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14195 {"MultiMedia29 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014196 {"MultiMedia8 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053014197 {"MultiMedia17 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14198 {"MultiMedia18 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14199 {"MultiMedia19 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14200 {"MultiMedia28 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14201 {"MultiMedia29 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14202 {"MultiMedia17 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014203 {"MultiMedia18 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053014204 {"MultiMedia19 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14205 {"MultiMedia28 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14206 {"MultiMedia29 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014207 {"MultiMedia8 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14208 {"MultiMedia3 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14209 {"MultiMedia5 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014210 {"MultiMedia10 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014211 {"MultiMedia16 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014212 {"MultiMedia5 Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
14213 {"MultiMedia5 Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014214 {"MultiMedia10 Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014215 {"MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14216 {"MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14217 {"MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14218 {"MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14219 {"MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14220 {"MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14221 {"MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14222 {"MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14223 {"MI2S_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14224 {"MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14225 {"MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14226 {"MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14227 {"MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14228 {"MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14229 {"MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14230 {"MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14231 {"MI2S_RX", NULL, "MI2S_RX Audio Mixer"},
14232
14233 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14234 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14235 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14236 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14237 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14238 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14239 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14240 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14241 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14242 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14243 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14244 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14245 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14246 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14247 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14248 {"QUAT_MI2S_RX", NULL, "QUAT_MI2S_RX Audio Mixer"},
14249
14250 {"TERT_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14251 {"TERT_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14252 {"TERT_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14253 {"TERT_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14254 {"TERT_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14255 {"TERT_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14256 {"TERT_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14257 {"TERT_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14258 {"TERT_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14259 {"TERT_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14260 {"TERT_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14261 {"TERT_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14262 {"TERT_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14263 {"TERT_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14264 {"TERT_MI2S_RX", NULL, "TERT_MI2S_RX Audio Mixer"},
14265
14266 {"SEC_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14267 {"SEC_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14268 {"SEC_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14269 {"SEC_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14270 {"SEC_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14271 {"SEC_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14272 {"SEC_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14273 {"SEC_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14274 {"SEC_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14275 {"SEC_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14276 {"SEC_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14277 {"SEC_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14278 {"SEC_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14279 {"SEC_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14280 {"SEC_MI2S_RX", NULL, "SEC_MI2S_RX Audio Mixer"},
14281
14282 {"SEC_MI2S_RX_SD1 Audio Mixer", "MultiMedia6", "MM_DL6"},
14283 {"SEC_MI2S_RX_SD1", NULL, "SEC_MI2S_RX_SD1 Audio Mixer"},
14284
14285 {"SEC_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14286 {"SEC_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
14287
14288 {"PRI_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14289 {"PRI_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14290 {"PRI_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14291 {"PRI_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14292 {"PRI_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14293 {"PRI_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14294 {"PRI_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14295 {"PRI_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14296 {"PRI_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14297 {"PRI_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14298 {"PRI_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14299 {"PRI_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14300 {"PRI_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14301 {"PRI_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14302 {"PRI_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14303 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX Audio Mixer"},
14304
14305 {"INT0_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14306 {"INT0_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14307 {"INT0_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14308 {"INT0_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14309 {"INT0_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14310 {"INT0_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14311 {"INT0_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14312 {"INT0_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14313 {"INT0_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14314 {"INT0_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14315 {"INT0_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14316 {"INT0_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14317 {"INT0_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14318 {"INT0_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14319 {"INT0_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14320 {"INT0_MI2S_RX", NULL, "INT0_MI2S_RX Audio Mixer"},
14321
14322 {"INT4_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14323 {"INT4_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14324 {"INT4_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14325 {"INT4_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14326 {"INT4_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14327 {"INT4_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14328 {"INT4_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14329 {"INT4_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14330 {"INT4_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14331 {"INT4_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14332 {"INT4_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14333 {"INT4_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14334 {"INT4_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14335 {"INT4_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14336 {"INT4_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14337 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX Audio Mixer"},
14338
14339 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14340 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14341 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14342 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14343 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14344 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14345 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14346 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14347 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14348 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14349 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14350 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14351 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14352 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14353 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14354 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14355 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14356 {"QUIN_MI2S_RX", NULL, "QUIN_MI2S_RX Audio Mixer"},
14357
14358 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14359 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14360 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14361 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14362 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14363 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14364 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14365 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14366 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14367 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14368 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14369 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14370 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14371 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14372 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14373 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14374 {"PRI_TDM_RX_0", NULL, "PRI_TDM_RX_0 Audio Mixer"},
14375
14376 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
14377 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
14378 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
14379 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
14380 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
14381 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
14382 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
14383 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
14384 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
14385 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
14386 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
14387 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
14388 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
14389 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
14390 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
14391 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
14392 {"PRI_TDM_RX_1", NULL, "PRI_TDM_RX_1 Audio Mixer"},
14393
14394 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
14395 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
14396 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
14397 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
14398 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
14399 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
14400 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
14401 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
14402 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
14403 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
14404 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
14405 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
14406 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
14407 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
14408 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
14409 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
14410 {"PRI_TDM_RX_2", NULL, "PRI_TDM_RX_2 Audio Mixer"},
14411
14412 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
14413 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
14414 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
14415 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
14416 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
14417 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
14418 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
14419 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
14420 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
14421 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
14422 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
14423 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
14424 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
14425 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
14426 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
14427 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
14428 {"PRI_TDM_RX_3", NULL, "PRI_TDM_RX_3 Audio Mixer"},
14429
14430 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14431 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14432 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14433 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14434 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14435 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14436 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14437 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14438 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14439 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14440 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14441 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14442 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14443 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14444 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14445 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14446 {"PRI_TDM_TX_0", NULL, "PRI_TDM_TX_0 Audio Mixer"},
14447
14448 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14449 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14450 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14451 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14452 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14453 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14454 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14455 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14456 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14457 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14458 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14459 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14460 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14461 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14462 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14463 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14464 {"SEC_TDM_RX_0", NULL, "SEC_TDM_RX_0 Audio Mixer"},
14465
14466 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
14467 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
14468 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
14469 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
14470 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
14471 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
14472 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
14473 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
14474 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
14475 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
14476 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
14477 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
14478 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
14479 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
14480 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
14481 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
14482 {"SEC_TDM_RX_1", NULL, "SEC_TDM_RX_1 Audio Mixer"},
14483
14484 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
14485 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
14486 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
14487 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
14488 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
14489 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
14490 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
14491 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
14492 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
14493 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
14494 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
14495 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
14496 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
14497 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
14498 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
14499 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
14500 {"SEC_TDM_RX_2", NULL, "SEC_TDM_RX_2 Audio Mixer"},
14501
14502 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
14503 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
14504 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
14505 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
14506 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
14507 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
14508 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
14509 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
14510 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
14511 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
14512 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
14513 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
14514 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
14515 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
14516 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
14517 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
14518 {"SEC_TDM_RX_3", NULL, "SEC_TDM_RX_3 Audio Mixer"},
14519
14520 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14521 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14522 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14523 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14524 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14525 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14526 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14527 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14528 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14529 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14530 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14531 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14532 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14533 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14534 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14535 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14536 {"SEC_TDM_TX_0", NULL, "SEC_TDM_TX_0 Audio Mixer"},
14537
14538 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14539 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14540 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14541 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14542 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14543 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14544 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14545 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14546 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14547 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14548 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14549 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14550 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14551 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14552 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14553 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14554 {"TERT_TDM_RX_0", NULL, "TERT_TDM_RX_0 Audio Mixer"},
14555
14556 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14557 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14558 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14559 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14560 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14561 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14562 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14563 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14564 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14565 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14566 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14567 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14568 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14569 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14570 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14571 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14572 {"TERT_TDM_TX_0", NULL, "TERT_TDM_TX_0 Audio Mixer"},
14573
14574 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
14575 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
14576 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
14577 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
14578 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
14579 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
14580 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
14581 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
14582 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
14583 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
14584 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
14585 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
14586 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
14587 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
14588 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
14589 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
14590 {"TERT_TDM_RX_1", NULL, "TERT_TDM_RX_1 Audio Mixer"},
14591
14592 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
14593 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
14594 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
14595 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
14596 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
14597 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
14598 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
14599 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
14600 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
14601 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
14602 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
14603 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
14604 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
14605 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
14606 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
14607 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
14608 {"TERT_TDM_RX_2", NULL, "TERT_TDM_RX_2 Audio Mixer"},
14609
14610 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
14611 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
14612 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
14613 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
14614 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
14615 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
14616 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
14617 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
14618 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
14619 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
14620 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
14621 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
14622 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
14623 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
14624 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
14625 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
14626 {"TERT_TDM_RX_3", NULL, "TERT_TDM_RX_3 Audio Mixer"},
14627
14628 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia1", "MM_DL1"},
14629 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia2", "MM_DL2"},
14630 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia3", "MM_DL3"},
14631 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia4", "MM_DL4"},
14632 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia5", "MM_DL5"},
14633 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia6", "MM_DL6"},
14634 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia7", "MM_DL7"},
14635 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia8", "MM_DL8"},
14636 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia9", "MM_DL9"},
14637 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia10", "MM_DL10"},
14638 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia11", "MM_DL11"},
14639 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia12", "MM_DL12"},
14640 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia13", "MM_DL13"},
14641 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia14", "MM_DL14"},
14642 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia15", "MM_DL15"},
14643 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia16", "MM_DL16"},
14644 {"TERT_TDM_RX_4", NULL, "TERT_TDM_RX_4 Audio Mixer"},
14645
14646 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14647 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14648 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14649 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14650 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14651 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14652 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14653 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14654 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14655 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14656 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14657 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14658 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14659 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14660 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14661 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14662 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia20", "MM_DL20"},
14663 {"QUAT_TDM_RX_0", NULL, "QUAT_TDM_RX_0 Audio Mixer"},
14664
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014665 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14666 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14667 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14668 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14669 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14670 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14671 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14672 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14673 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14674 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14675 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14676 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14677 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14678 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14679 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14680 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14681 {"QUAT_TDM_TX_0", NULL, "QUAT_TDM_TX_0 Audio Mixer"},
14682
14683 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
14684 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
14685 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
14686 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
14687 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
14688 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
14689 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
14690 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
14691 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
14692 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
14693 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
14694 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
14695 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
14696 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
14697 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
14698 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
14699 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia20", "MM_DL20"},
14700 {"QUAT_TDM_RX_1", NULL, "QUAT_TDM_RX_1 Audio Mixer"},
14701
14702 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
14703 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
14704 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
14705 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
14706 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
14707 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
14708 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
14709 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
14710 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
14711 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
14712 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
14713 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
14714 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
14715 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
14716 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
14717 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
14718 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia20", "MM_DL20"},
14719 {"QUAT_TDM_RX_2", NULL, "QUAT_TDM_RX_2 Audio Mixer"},
14720
14721 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
14722 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
14723 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
14724 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
14725 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
14726 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
14727 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
14728 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
14729 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
14730 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
14731 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
14732 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
14733 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
14734 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
14735 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
14736 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
14737 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia20", "MM_DL20"},
14738 {"QUAT_TDM_RX_3", NULL, "QUAT_TDM_RX_3 Audio Mixer"},
14739
Rohit Kumara5077932017-09-10 22:05:05 +053014740 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14741 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14742 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14743 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14744 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14745 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14746 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14747 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14748 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14749 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14750 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14751 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14752 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14753 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14754 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14755 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14756 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia20", "MM_DL20"},
14757 {"QUIN_TDM_RX_0", NULL, "QUIN_TDM_RX_0 Audio Mixer"},
14758
14759 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14760 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14761 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14762 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14763 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14764 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14765 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14766 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14767 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14768 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14769 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14770 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14771 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14772 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14773 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14774 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14775 {"QUIN_TDM_TX_0", NULL, "QUIN_TDM_TX_0 Audio Mixer"},
14776
14777 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
14778 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
14779 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
14780 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
14781 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
14782 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
14783 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
14784 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
14785 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
14786 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
14787 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
14788 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
14789 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
14790 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
14791 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
14792 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
14793 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia20", "MM_DL20"},
14794 {"QUIN_TDM_RX_1", NULL, "QUIN_TDM_RX_1 Audio Mixer"},
14795
14796 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
14797 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
14798 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
14799 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
14800 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
14801 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
14802 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
14803 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
14804 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
14805 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
14806 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
14807 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
14808 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
14809 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
14810 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
14811 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
14812 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia20", "MM_DL20"},
14813 {"QUIN_TDM_RX_2", NULL, "QUIN_TDM_RX_2 Audio Mixer"},
14814
14815 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
14816 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
14817 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
14818 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
14819 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
14820 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
14821 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
14822 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
14823 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
14824 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
14825 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
14826 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
14827 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
14828 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
14829 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
14830 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
14831 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia20", "MM_DL20"},
14832 {"QUIN_TDM_RX_3", NULL, "QUIN_TDM_RX_3 Audio Mixer"},
14833
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014834 {"MultiMedia1 Mixer", "PRI_TX", "PRI_I2S_TX"},
14835 {"MultiMedia1 Mixer", "MI2S_TX", "MI2S_TX"},
14836 {"MultiMedia2 Mixer", "MI2S_TX", "MI2S_TX"},
14837 {"MultiMedia3 Mixer", "MI2S_TX", "MI2S_TX"},
14838 {"MultiMedia5 Mixer", "MI2S_TX", "MI2S_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014839 {"MultiMedia10 Mixer", "MI2S_TX", "MI2S_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014840 {"MultiMedia16 Mixer", "MI2S_TX", "MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014841 {"MultiMedia1 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14842 {"MultiMedia2 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14843 {"MultiMedia6 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14844 {"MultiMedia1 Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
14845 {"MultiMedia2 Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
14846 {"MultiMedia1 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14847 {"MultiMedia2 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14848 {"MultiMedia1 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
14849 {"MultiMedia2 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
14850 {"MultiMedia1 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14851 {"MultiMedia2 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14852 {"MultiMedia1 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14853 {"MultiMedia1 Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
14854 {"MultiMedia3 Mixer", "AUX_PCM_TX", "AUX_PCM_TX"},
14855 {"MultiMedia5 Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014856 {"MultiMedia10 Mixer", "AUX_PCM_TX", "AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014857 {"MultiMedia1 Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
14858 {"MultiMedia3 Mixer", "SEC_AUX_PCM_TX", "SEC_AUX_PCM_TX"},
14859 {"MultiMedia5 Mixer", "SEC_AUX_PCM_TX", "SEC_AUX_PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014860 {"MultiMedia10 Mixer", "SEC_AUX_PCM_TX", "SEC_AUX_PCM_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014861 {"MultiMedia16 Mixer", "AUX_PCM_TX", "AUX_PCM_TX"},
14862 {"MultiMedia16 Mixer", "SEC_AUX_PCM_TX", "SEC_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014863 {"MultiMedia1 Mixer", "TERT_AUXPCM_UL_TX", "TERT_AUX_PCM_TX"},
14864 {"MultiMedia3 Mixer", "TERT_AUX_PCM_TX", "TERT_AUX_PCM_TX"},
14865 {"MultiMedia5 Mixer", "TERT_AUX_PCM_TX", "TERT_AUX_PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014866 {"MultiMedia10 Mixer", "TERT_AUX_PCM_TX", "TERT_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014867 {"MultiMedia1 Mixer", "QUAT_AUXPCM_UL_TX", "QUAT_AUX_PCM_TX"},
14868 {"MultiMedia3 Mixer", "QUAT_AUX_PCM_TX", "QUAT_AUX_PCM_TX"},
14869 {"MultiMedia5 Mixer", "QUAT_AUX_PCM_TX", "QUAT_AUX_PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014870 {"MultiMedia10 Mixer", "QUAT_AUX_PCM_TX", "QUAT_AUX_PCM_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014871 {"MultiMedia16 Mixer", "QUAT_AUX_PCM_TX", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053014872 {"MultiMedia1 Mixer", "QUIN_AUXPCM_UL_TX", "QUIN_AUX_PCM_TX"},
14873 {"MultiMedia3 Mixer", "QUIN_AUX_PCM_TX", "QUIN_AUX_PCM_TX"},
14874 {"MultiMedia5 Mixer", "QUIN_AUX_PCM_TX", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014875 {"MultiMedia2 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14876 {"MultiMedia2 Mixer", "SLIM_6_TX", "SLIMBUS_6_TX"},
14877 {"MultiMedia2 Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
14878 {"MultiMedia2 Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
14879 {"MultiMedia1 Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
14880 {"MultiMedia1 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14881 {"MultiMedia2 Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
14882 {"MultiMedia6 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14883 {"MultiMedia6 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14884 {"MultiMedia3 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14885 {"MultiMedia5 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014886 {"MultiMedia10 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014887 {"MultiMedia6 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
14888 {"MultiMedia3 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
14889 {"MultiMedia5 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014890 {"MultiMedia10 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014891 {"MultiMedia16 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014892 {"MultiMedia6 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14893 {"MultiMedia3 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14894 {"MultiMedia5 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014895 {"MultiMedia10 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014896 {"MultiMedia16 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053014897 {"MultiMedia17 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14898 {"MultiMedia18 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14899 {"MultiMedia19 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14900 {"MultiMedia28 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14901 {"MultiMedia29 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014902 {"MultiMedia6 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14903 {"MultiMedia6 Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
14904 {"MultiMedia6 Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
14905 {"MultiMedia6 Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053014906 {"MultiMedia6 Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014907
14908 {"MultiMedia1 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
14909 {"MultiMedia1 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
14910 {"MultiMedia1 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
14911 {"MultiMedia1 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
14912 {"MultiMedia1 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
14913 {"MultiMedia1 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
14914 {"MultiMedia1 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
14915 {"MultiMedia1 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
14916 {"MultiMedia1 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14917 {"MultiMedia1 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14918 {"MultiMedia1 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14919 {"MultiMedia1 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14920 {"MultiMedia1 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14921 {"MultiMedia1 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14922 {"MultiMedia1 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14923 {"MultiMedia1 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Raja Mallik425e1d32018-05-20 19:21:10 +053014924 {"MultiMedia1 Mixer", "AFE_LOOPBACK_TX", "AFE_LOOPBACK_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053014925 {"MultiMedia1 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
14926 {"MultiMedia1 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
14927 {"MultiMedia1 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
14928 {"MultiMedia1 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014929
14930 {"MultiMedia2 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
14931 {"MultiMedia2 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
14932 {"MultiMedia2 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
14933 {"MultiMedia2 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
14934 {"MultiMedia2 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
14935 {"MultiMedia2 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
14936 {"MultiMedia2 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
14937 {"MultiMedia2 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
14938 {"MultiMedia2 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14939 {"MultiMedia2 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14940 {"MultiMedia2 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14941 {"MultiMedia2 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14942 {"MultiMedia2 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14943 {"MultiMedia2 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14944 {"MultiMedia2 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14945 {"MultiMedia2 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Raja Mallik425e1d32018-05-20 19:21:10 +053014946 {"MultiMedia2 Mixer", "AFE_LOOPBACK_TX", "AFE_LOOPBACK_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053014947 {"MultiMedia2 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
14948 {"MultiMedia2 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
14949 {"MultiMedia2 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
14950 {"MultiMedia2 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014951
14952 {"MultiMedia3 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
14953 {"MultiMedia3 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
14954 {"MultiMedia3 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
14955 {"MultiMedia3 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
14956 {"MultiMedia3 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
14957 {"MultiMedia3 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
14958 {"MultiMedia3 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
14959 {"MultiMedia3 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
14960 {"MultiMedia3 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14961 {"MultiMedia3 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14962 {"MultiMedia3 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14963 {"MultiMedia3 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14964 {"MultiMedia3 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14965 {"MultiMedia3 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14966 {"MultiMedia3 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14967 {"MultiMedia3 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Raja Mallik425e1d32018-05-20 19:21:10 +053014968 {"MultiMedia3 Mixer", "AFE_LOOPBACK_TX", "AFE_LOOPBACK_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053014969 {"MultiMedia3 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
14970 {"MultiMedia3 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
14971 {"MultiMedia3 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
14972 {"MultiMedia3 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014973
14974 {"MultiMedia4 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
14975 {"MultiMedia4 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
14976 {"MultiMedia4 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
14977 {"MultiMedia4 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
14978 {"MultiMedia4 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
14979 {"MultiMedia4 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
14980 {"MultiMedia4 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
14981 {"MultiMedia4 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
14982 {"MultiMedia4 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14983 {"MultiMedia4 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14984 {"MultiMedia4 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14985 {"MultiMedia4 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14986 {"MultiMedia4 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14987 {"MultiMedia4 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14988 {"MultiMedia4 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14989 {"MultiMedia4 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Raja Mallik425e1d32018-05-20 19:21:10 +053014990 {"MultiMedia4 Mixer", "AFE_LOOPBACK_TX", "AFE_LOOPBACK_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053014991 {"MultiMedia4 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
14992 {"MultiMedia4 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
14993 {"MultiMedia4 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
14994 {"MultiMedia4 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014995
14996 {"MultiMedia5 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
14997 {"MultiMedia5 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
14998 {"MultiMedia5 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
14999 {"MultiMedia5 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15000 {"MultiMedia5 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15001 {"MultiMedia5 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15002 {"MultiMedia5 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15003 {"MultiMedia5 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15004 {"MultiMedia5 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15005 {"MultiMedia5 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15006 {"MultiMedia5 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15007 {"MultiMedia5 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15008 {"MultiMedia5 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15009 {"MultiMedia5 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15010 {"MultiMedia5 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15011 {"MultiMedia5 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Raja Mallik425e1d32018-05-20 19:21:10 +053015012 {"MultiMedia5 Mixer", "AFE_LOOPBACK_TX", "AFE_LOOPBACK_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015013 {"MultiMedia5 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15014 {"MultiMedia5 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15015 {"MultiMedia5 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15016 {"MultiMedia5 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015017
15018 {"MultiMedia6 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15019 {"MultiMedia6 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15020 {"MultiMedia6 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15021 {"MultiMedia6 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15022 {"MultiMedia6 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15023 {"MultiMedia6 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15024 {"MultiMedia6 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15025 {"MultiMedia6 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15026 {"MultiMedia6 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15027 {"MultiMedia6 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15028 {"MultiMedia6 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15029 {"MultiMedia6 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15030 {"MultiMedia6 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15031 {"MultiMedia6 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15032 {"MultiMedia6 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15033 {"MultiMedia6 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Raja Mallik425e1d32018-05-20 19:21:10 +053015034 {"MultiMedia6 Mixer", "AFE_LOOPBACK_TX", "AFE_LOOPBACK_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015035 {"MultiMedia6 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15036 {"MultiMedia6 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15037 {"MultiMedia6 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15038 {"MultiMedia6 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015039
15040 {"MultiMedia8 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15041 {"MultiMedia8 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15042 {"MultiMedia8 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15043 {"MultiMedia8 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15044 {"MultiMedia8 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15045 {"MultiMedia8 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15046 {"MultiMedia8 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15047 {"MultiMedia8 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15048 {"MultiMedia8 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15049 {"MultiMedia8 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15050 {"MultiMedia8 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15051 {"MultiMedia8 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15052 {"MultiMedia8 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15053 {"MultiMedia8 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15054 {"MultiMedia8 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15055 {"MultiMedia8 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Raja Mallik425e1d32018-05-20 19:21:10 +053015056 {"MultiMedia8 Mixer", "AFE_LOOPBACK_TX", "AFE_LOOPBACK_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015057 {"MultiMedia8 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15058 {"MultiMedia8 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15059 {"MultiMedia8 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15060 {"MultiMedia8 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015061
15062 {"MultiMedia9 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15063 {"MultiMedia9 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15064 {"MultiMedia9 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15065 {"MultiMedia9 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15066 {"MultiMedia9 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15067 {"MultiMedia9 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15068 {"MultiMedia9 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15069 {"MultiMedia9 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015070 {"MultiMedia9 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15071 {"MultiMedia9 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15072 {"MultiMedia9 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15073 {"MultiMedia9 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Raja Mallik425e1d32018-05-20 19:21:10 +053015074 {"MultiMedia9 Mixer", "AFE_LOOPBACK_TX", "AFE_LOOPBACK_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015075
Laxminath Kasam38070be2017-08-17 18:21:59 +053015076 {"MultiMedia10 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15077 {"MultiMedia10 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15078 {"MultiMedia10 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15079 {"MultiMedia10 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15080 {"MultiMedia10 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15081 {"MultiMedia10 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15082 {"MultiMedia10 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15083 {"MultiMedia10 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015084 {"MultiMedia20 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15085 {"MultiMedia20 Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15086 {"MultiMedia20 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15087 {"MultiMedia20 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015088 {"MultiMedia20 Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015089 {"MultiMedia20 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15090 {"MultiMedia20 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15091 {"MultiMedia20 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15092 {"MultiMedia20 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15093 {"MultiMedia20 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15094 {"MultiMedia20 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15095 {"MultiMedia20 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15096 {"MultiMedia20 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15097 {"MultiMedia20 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15098 {"MultiMedia20 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15099 {"MultiMedia20 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15100 {"MultiMedia20 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15101 {"MultiMedia20 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15102 {"MultiMedia20 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15103 {"MultiMedia20 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15104 {"MultiMedia20 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015105 {"MultiMedia20 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15106 {"MultiMedia20 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15107 {"MultiMedia20 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15108 {"MultiMedia20 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015109
15110 {"MultiMedia1 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
15111 {"MultiMedia2 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
15112 {"MultiMedia4 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
15113 {"MultiMedia5 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
15114 {"MultiMedia6 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
15115 {"MultiMedia8 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053015116 {"MultiMedia10 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015117
Asish Bhattacharya34504582017-08-08 12:55:01 +053015118 {"MultiMedia16 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15119 {"MultiMedia16 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15120 {"MultiMedia16 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15121 {"MultiMedia16 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15122 {"MultiMedia16 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15123 {"MultiMedia16 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15124 {"MultiMedia16 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15125 {"MultiMedia16 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15126 {"MultiMedia16 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15127 {"MultiMedia16 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15128 {"MultiMedia16 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15129 {"MultiMedia16 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15130 {"MultiMedia16 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15131 {"MultiMedia16 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15132 {"MultiMedia16 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15133 {"MultiMedia16 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
15134 {"MultiMedia16 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
15135
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015136 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15137 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15138 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15139 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15140 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15141 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15142 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15143 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15144 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15145 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15146 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15147 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15148 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15149 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15150 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15151 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15152 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia6", "MM_UL6"},
15153 {"INT_BT_SCO_RX", NULL, "INTERNAL_BT_SCO_RX Audio Mixer"},
15154
15155 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15156 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15157 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15158 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15159 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15160 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15161 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15162 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15163 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15164 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15165 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15166 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15167 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15168 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15169 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15170 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15171 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia6", "MM_UL6"},
15172 {"INT_BT_A2DP_RX", NULL, "INTERNAL_A2DP_RX Audio Mixer"},
15173
15174 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15175 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15176 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15177 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15178 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15179 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15180 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15181 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15182 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15183 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15184 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15185 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15186 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15187 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15188 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15189 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15190 {"INT_FM_RX", NULL, "INTERNAL_FM_RX Audio Mixer"},
15191
15192 {"AFE_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15193 {"AFE_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15194 {"AFE_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15195 {"AFE_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15196 {"AFE_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15197 {"AFE_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15198 {"AFE_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15199 {"AFE_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15200 {"AFE_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15201 {"AFE_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15202 {"AFE_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15203 {"AFE_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15204 {"AFE_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15205 {"AFE_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15206 {"AFE_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15207 {"AFE_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15208 {"PCM_RX", NULL, "AFE_PCM_RX Audio Mixer"},
15209
15210 {"MultiMedia1 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15211 {"MultiMedia3 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15212 {"MultiMedia4 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053015213 {"MultiMedia10 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015214 {"MultiMedia17 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15215 {"MultiMedia18 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15216 {"MultiMedia19 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053015217 {"MultiMedia28 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15218 {"MultiMedia29 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015219 {"MultiMedia5 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15220 {"MultiMedia8 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053015221 {"MultiMedia16 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015222 {"MultiMedia1 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15223 {"MultiMedia4 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053015224 {"MultiMedia16 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015225 {"MultiMedia17 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15226 {"MultiMedia18 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15227 {"MultiMedia19 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053015228 {"MultiMedia28 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15229 {"MultiMedia29 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015230 {"MultiMedia5 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15231 {"MultiMedia6 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15232 {"MultiMedia8 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15233
15234 {"MultiMedia1 Mixer", "AFE_PCM_TX", "PCM_TX"},
15235 {"MultiMedia3 Mixer", "AFE_PCM_TX", "PCM_TX"},
15236 {"MultiMedia4 Mixer", "AFE_PCM_TX", "PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053015237 {"MultiMedia10 Mixer", "AFE_PCM_TX", "PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015238 {"MultiMedia17 Mixer", "AFE_PCM_TX", "PCM_TX"},
15239 {"MultiMedia18 Mixer", "AFE_PCM_TX", "PCM_TX"},
15240 {"MultiMedia19 Mixer", "AFE_PCM_TX", "PCM_TX"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053015241 {"MultiMedia28 Mixer", "AFE_PCM_TX", "PCM_TX"},
15242 {"MultiMedia29 Mixer", "AFE_PCM_TX", "PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015243 {"MultiMedia5 Mixer", "AFE_PCM_TX", "PCM_TX"},
15244 {"MultiMedia8 Mixer", "AFE_PCM_TX", "PCM_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053015245 {"MultiMedia16 Mixer", "AFE_PCM_TX", "PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015246 {"MM_UL1", NULL, "MultiMedia1 Mixer"},
15247 {"MultiMedia2 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15248 {"MM_UL2", NULL, "MultiMedia2 Mixer"},
15249 {"MM_UL3", NULL, "MultiMedia3 Mixer"},
15250 {"MM_UL4", NULL, "MultiMedia4 Mixer"},
15251 {"MM_UL5", NULL, "MultiMedia5 Mixer"},
15252 {"MM_UL6", NULL, "MultiMedia6 Mixer"},
15253 {"MM_UL8", NULL, "MultiMedia8 Mixer"},
15254 {"MM_UL9", NULL, "MultiMedia9 Mixer"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053015255 {"MM_UL10", NULL, "MultiMedia10 Mixer"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053015256 {"MM_UL16", NULL, "MultiMedia16 Mixer"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015257 {"MM_UL17", NULL, "MultiMedia17 Mixer"},
15258 {"MM_UL18", NULL, "MultiMedia18 Mixer"},
15259 {"MM_UL19", NULL, "MultiMedia19 Mixer"},
15260 {"MM_UL20", NULL, "MultiMedia20 Mixer"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053015261 {"MM_UL28", NULL, "MultiMedia28 Mixer"},
15262 {"MM_UL29", NULL, "MultiMedia29 Mixer"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015263
15264 {"AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15265 {"AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15266 {"AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15267 {"AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15268 {"AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15269 {"AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15270 {"AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15271 {"AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15272 {"AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15273 {"AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15274 {"AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15275 {"AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15276 {"AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15277 {"AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15278 {"AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15279 {"AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15280 {"AUX_PCM_RX", NULL, "AUX_PCM_RX Audio Mixer"},
15281
15282 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15283 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15284 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15285 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15286 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15287 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15288 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15289 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15290 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15291 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15292 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15293 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15294 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15295 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15296 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15297 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15298 {"SEC_AUX_PCM_RX", NULL, "SEC_AUX_PCM_RX Audio Mixer"},
15299
15300 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15301 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15302 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15303 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15304 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15305 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15306 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15307 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15308 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15309 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15310 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15311 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15312 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15313 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15314 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15315 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15316 {"TERT_AUX_PCM_RX", NULL, "TERT_AUX_PCM_RX Audio Mixer"},
15317
15318 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15319 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15320 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15321 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15322 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15323 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15324 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15325 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15326 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15327 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15328 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15329 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15330 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15331 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15332 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15333 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15334 {"QUAT_AUX_PCM_RX", NULL, "QUAT_AUX_PCM_RX Audio Mixer"},
15335
Rohit Kumara5077932017-09-10 22:05:05 +053015336 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15337 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15338 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15339 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15340 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15341 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15342 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15343 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15344 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15345 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15346 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15347 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15348 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15349 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15350 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15351 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15352 {"QUIN_AUX_PCM_RX", NULL, "QUIN_AUX_PCM_RX Audio Mixer"},
15353
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015354 {"PRI_RX_Voice Mixer", "Voip", "VOIP_DL"},
15355 {"PRI_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15356 {"PRI_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15357 {"PRI_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15358 {"PRI_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15359 {"PRI_I2S_RX", NULL, "PRI_RX_Voice Mixer"},
15360
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015361 {"SEC_RX_Voice Mixer", "Voip", "VOIP_DL"},
15362 {"SEC_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15363 {"SEC_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15364 {"SEC_I2S_RX", NULL, "SEC_RX_Voice Mixer"},
15365
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015366 {"SEC_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
15367 {"SEC_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15368 {"SEC_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15369 {"SEC_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15370 {"SEC_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15371 {"SEC_MI2S_RX", NULL, "SEC_MI2S_RX_Voice Mixer"},
15372
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015373 {"SLIM_0_RX_Voice Mixer", "Voip", "VOIP_DL"},
15374 {"SLIM_0_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015375 {"SLIM_0_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15376 {"SLIM_0_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15377 {"SLIM_0_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15378 {"SLIMBUS_0_RX", NULL, "SLIM_0_RX_Voice Mixer"},
15379
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015380 {"SLIM_6_RX_Voice Mixer", "Voip", "VOIP_DL"},
15381 {"SLIM_6_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015382 {"SLIM_6_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15383 {"SLIM_6_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15384 {"SLIM_6_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15385 {"SLIMBUS_6_RX", NULL, "SLIM_6_RX_Voice Mixer"},
15386
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015387 {"USB_AUDIO_RX_Voice Mixer", "Voip", "VOIP_DL"},
15388 {"USB_AUDIO_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015389 {"USB_AUDIO_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15390 {"USB_AUDIO_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15391 {"USB_AUDIO_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15392 {"USB_AUDIO_RX", NULL, "USB_AUDIO_RX_Voice Mixer"},
15393
Aalique Grahamee4fd7d52017-11-28 13:24:13 -080015394 {"DISPLAY_PORT_RX_Voice Mixer", "Voip", "VOIP_DL"},
15395 {"DISPLAY_PORT_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Aalique Grahamee4fd7d52017-11-28 13:24:13 -080015396 {"DISPLAY_PORT_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15397 {"DISPLAY_PORT_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15398 {"DISPLAY_PORT_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15399 {"DISPLAY_PORT", NULL, "DISPLAY_PORT_RX_Voice Mixer"},
15400
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015401 {"INTERNAL_BT_SCO_RX_Voice Mixer", "Voip", "VOIP_DL"},
15402 {"INTERNAL_BT_SCO_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15403 {"INTERNAL_BT_SCO_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15404 {"INTERNAL_BT_SCO_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15405 {"INTERNAL_BT_SCO_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015406 {"INT_BT_SCO_RX", NULL, "INTERNAL_BT_SCO_RX_Voice Mixer"},
15407
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015408 {"AFE_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
15409 {"AFE_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15410 {"AFE_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15411 {"AFE_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15412 {"AFE_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15413 {"PCM_RX", NULL, "AFE_PCM_RX_Voice Mixer"},
15414
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015415 {"AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
15416 {"AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015417 {"AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15418 {"AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15419 {"AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15420 {"AUX_PCM_RX", NULL, "AUX_PCM_RX_Voice Mixer"},
15421
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015422 {"SEC_AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
15423 {"SEC_AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015424 {"SEC_AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15425 {"SEC_AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15426 {"SEC_AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15427 {"SEC_AUX_PCM_RX", NULL, "SEC_AUX_PCM_RX_Voice Mixer"},
15428
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015429 {"TERT_AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
15430 {"TERT_AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015431 {"TERT_AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15432 {"TERT_AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15433 {"TERT_AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15434 {"TERT_AUX_PCM_RX", NULL, "TERT_AUX_PCM_RX_Voice Mixer"},
15435
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015436 {"QUAT_AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
15437 {"QUAT_AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015438 {"QUAT_AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15439 {"QUAT_AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15440 {"QUAT_AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15441 {"QUAT_AUX_PCM_RX", NULL, "QUAT_AUX_PCM_RX_Voice Mixer"},
15442
Rohit Kumara5077932017-09-10 22:05:05 +053015443 {"QUIN_AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
15444 {"QUIN_AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Rohit Kumara5077932017-09-10 22:05:05 +053015445 {"QUIN_AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15446 {"QUIN_AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15447 {"QUIN_AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15448 {"QUIN_AUX_PCM_RX", NULL, "QUIN_AUX_PCM_RX_Voice Mixer"},
15449
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015450 {"HDMI_RX_Voice Mixer", "Voip", "VOIP_DL"},
15451 {"HDMI_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15452 {"HDMI_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15453 {"HDMI_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15454 {"HDMI_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15455 {"HDMI", NULL, "HDMI_RX_Voice Mixer"},
15456 {"HDMI", NULL, "HDMI_DL_HL"},
15457
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015458 {"MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015459 {"MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15460 {"MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15461 {"MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
kunleiz8a60b822017-10-11 15:04:02 +080015462 {"MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015463 {"MI2S_RX", NULL, "MI2S_RX_Voice Mixer"},
15464
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015465 {"PRI_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015466 {"PRI_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15467 {"PRI_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15468 {"PRI_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15469 {"PRI_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15470 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX_Voice Mixer"},
15471
15472 {"INT0_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
15473 {"INT0_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15474 {"INT0_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15475 {"INT0_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15476 {"INT0_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15477 {"INT0_MI2S_RX", NULL, "INT0_MI2S_RX_Voice Mixer"},
15478
15479 {"INT4_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
15480 {"INT4_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15481 {"INT4_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15482 {"INT4_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15483 {"INT4_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15484 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX_Voice Mixer"},
15485
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015486 {"TERT_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015487 {"TERT_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15488 {"TERT_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15489 {"TERT_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15490 {"TERT_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15491 {"TERT_MI2S_RX", NULL, "TERT_MI2S_RX_Voice Mixer"},
15492
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015493 {"QUAT_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015494 {"QUAT_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15495 {"QUAT_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15496 {"QUAT_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15497 {"QUAT_MI2S_RX", NULL, "QUAT_MI2S_RX_Voice Mixer"},
15498
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015499 {"QUIN_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015500 {"QUIN_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15501 {"QUIN_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15502 {"QUIN_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15503 {"QUIN_MI2S_RX", NULL, "QUIN_MI2S_RX_Voice Mixer"},
15504
Raja Mallik321d5712018-05-04 17:22:11 +053015505 {"PRI_TDM_RX_0_Voice Mixer", "CSVoice", "CS-VOICE_DL1"},
15506 {"PRI_TDM_RX_0_Voice Mixer", "Voice2", "VOICE2_DL"},
15507 {"PRI_TDM_RX_0_Voice Mixer", "Voip", "VOIP_DL"},
15508 {"PRI_TDM_RX_0_Voice Mixer", "VoLTE", "VoLTE_DL"},
15509 {"PRI_TDM_RX_0_Voice Mixer", "VoWLAN", "VoWLAN_DL"},
15510 {"PRI_TDM_RX_0_Voice Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
15511 {"PRI_TDM_RX_0_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
15512 {"PRI_TDM_RX_0_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
15513 {"PRI_TDM_RX_0_Voice Mixer", "QCHAT", "QCHAT_DL"},
15514 {"PRI_TDM_RX_0_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15515 {"PRI_TDM_RX_0_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15516 {"PRI_TDM_RX_0_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15517 {"PRI_TDM_RX_0", NULL, "PRI_TDM_RX_0_Voice Mixer"},
15518
15519 {"PRI_TDM_RX_1_Voice Mixer", "CSVoice", "CS-VOICE_DL1"},
15520 {"PRI_TDM_RX_1_Voice Mixer", "Voice2", "VOICE2_DL"},
15521 {"PRI_TDM_RX_1_Voice Mixer", "Voip", "VOIP_DL"},
15522 {"PRI_TDM_RX_1_Voice Mixer", "VoLTE", "VoLTE_DL"},
15523 {"PRI_TDM_RX_1_Voice Mixer", "VoWLAN", "VoWLAN_DL"},
15524 {"PRI_TDM_RX_1_Voice Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
15525 {"PRI_TDM_RX_1_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
15526 {"PRI_TDM_RX_1_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
15527 {"PRI_TDM_RX_1_Voice Mixer", "QCHAT", "QCHAT_DL"},
15528 {"PRI_TDM_RX_1_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15529 {"PRI_TDM_RX_1_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15530 {"PRI_TDM_RX_1_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15531 {"PRI_TDM_RX_1", NULL, "PRI_TDM_RX_1_Voice Mixer"},
15532
15533 {"PRI_TDM_RX_2_Voice Mixer", "CSVoice", "CS-VOICE_DL1"},
15534 {"PRI_TDM_RX_2_Voice Mixer", "Voice2", "VOICE2_DL"},
15535 {"PRI_TDM_RX_2_Voice Mixer", "Voip", "VOIP_DL"},
15536 {"PRI_TDM_RX_2_Voice Mixer", "VoLTE", "VoLTE_DL"},
15537 {"PRI_TDM_RX_2_Voice Mixer", "VoWLAN", "VoWLAN_DL"},
15538 {"PRI_TDM_RX_2_Voice Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
15539 {"PRI_TDM_RX_2_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
15540 {"PRI_TDM_RX_2_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
15541 {"PRI_TDM_RX_2_Voice Mixer", "QCHAT", "QCHAT_DL"},
15542 {"PRI_TDM_RX_2_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15543 {"PRI_TDM_RX_2_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15544 {"PRI_TDM_RX_2_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15545 {"PRI_TDM_RX_2", NULL, "PRI_TDM_RX_2_Voice Mixer"},
15546
15547 {"PRI_TDM_RX_3_Voice Mixer", "CSVoice", "CS-VOICE_DL1"},
15548 {"PRI_TDM_RX_3_Voice Mixer", "Voice2", "VOICE2_DL"},
15549 {"PRI_TDM_RX_3_Voice Mixer", "Voip", "VOIP_DL"},
15550 {"PRI_TDM_RX_3_Voice Mixer", "VoLTE", "VoLTE_DL"},
15551 {"PRI_TDM_RX_3_Voice Mixer", "VoWLAN", "VoWLAN_DL"},
15552 {"PRI_TDM_RX_3_Voice Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
15553 {"PRI_TDM_RX_3_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
15554 {"PRI_TDM_RX_3_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
15555 {"PRI_TDM_RX_3_Voice Mixer", "QCHAT", "QCHAT_DL"},
15556 {"PRI_TDM_RX_3_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15557 {"PRI_TDM_RX_3_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15558 {"PRI_TDM_RX_3_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15559 {"PRI_TDM_RX_3", NULL, "PRI_TDM_RX_3_Voice Mixer"},
15560
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015561 {"QUAT_TDM_RX_2_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15562 {"QUAT_TDM_RX_2", NULL, "QUAT_TDM_RX_2_Voice Mixer"},
15563
15564 {"VOC_EXT_EC MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15565 {"VOC_EXT_EC MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15566 {"VOC_EXT_EC MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15567 {"VOC_EXT_EC MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015568 {"VOC_EXT_EC MUX", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015569 {"VOC_EXT_EC MUX", "SLIM_1_TX", "SLIMBUS_1_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015570 {"VOIP_UL", NULL, "VOC_EXT_EC MUX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015571 {"VOICEMMODE1_UL", NULL, "VOC_EXT_EC MUX"},
15572 {"VOICEMMODE2_UL", NULL, "VOC_EXT_EC MUX"},
15573
15574 {"AUDIO_REF_EC_UL1 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15575 {"AUDIO_REF_EC_UL1 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15576 {"AUDIO_REF_EC_UL1 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15577 {"AUDIO_REF_EC_UL1 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15578 {"AUDIO_REF_EC_UL1 MUX", "SLIM_1_TX", "SLIMBUS_1_TX"},
15579 {"AUDIO_REF_EC_UL1 MUX", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15580 {"AUDIO_REF_EC_UL1 MUX", "QUAT_TDM_RX_0", "QUAT_TDM_RX_0"},
15581 {"AUDIO_REF_EC_UL1 MUX", "QUAT_TDM_RX_1", "QUAT_TDM_RX_1"},
15582 {"AUDIO_REF_EC_UL1 MUX", "QUAT_TDM_RX_2", "QUAT_TDM_RX_2"},
15583 {"AUDIO_REF_EC_UL1 MUX", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15584
15585 {"AUDIO_REF_EC_UL2 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15586 {"AUDIO_REF_EC_UL2 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15587 {"AUDIO_REF_EC_UL2 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15588 {"AUDIO_REF_EC_UL2 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15589
15590 {"AUDIO_REF_EC_UL3 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15591 {"AUDIO_REF_EC_UL3 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15592 {"AUDIO_REF_EC_UL3 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15593 {"AUDIO_REF_EC_UL3 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15594
15595 {"AUDIO_REF_EC_UL4 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15596 {"AUDIO_REF_EC_UL4 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15597 {"AUDIO_REF_EC_UL4 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15598 {"AUDIO_REF_EC_UL4 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15599
15600 {"AUDIO_REF_EC_UL5 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15601 {"AUDIO_REF_EC_UL5 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15602 {"AUDIO_REF_EC_UL5 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15603 {"AUDIO_REF_EC_UL5 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15604
15605 {"AUDIO_REF_EC_UL6 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15606 {"AUDIO_REF_EC_UL6 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15607 {"AUDIO_REF_EC_UL6 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15608 {"AUDIO_REF_EC_UL6 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15609
15610 {"AUDIO_REF_EC_UL8 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15611 {"AUDIO_REF_EC_UL8 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15612 {"AUDIO_REF_EC_UL8 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15613 {"AUDIO_REF_EC_UL8 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15614
15615 {"AUDIO_REF_EC_UL9 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15616 {"AUDIO_REF_EC_UL9 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15617 {"AUDIO_REF_EC_UL9 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15618 {"AUDIO_REF_EC_UL9 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15619
Laxminath Kasam38070be2017-08-17 18:21:59 +053015620 {"AUDIO_REF_EC_UL10 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15621 {"AUDIO_REF_EC_UL10 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15622 {"AUDIO_REF_EC_UL10 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15623 {"AUDIO_REF_EC_UL10 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15624 {"AUDIO_REF_EC_UL10 MUX", "SLIM_1_TX", "SLIMBUS_1_TX"},
15625 {"AUDIO_REF_EC_UL10 MUX", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15626 {"AUDIO_REF_EC_UL10 MUX", "QUAT_TDM_RX_0", "QUAT_TDM_RX_0"},
15627 {"AUDIO_REF_EC_UL10 MUX", "QUAT_TDM_RX_1", "QUAT_TDM_RX_1"},
15628 {"AUDIO_REF_EC_UL10 MUX", "QUAT_TDM_RX_2", "QUAT_TDM_RX_2"},
15629 {"AUDIO_REF_EC_UL10 MUX", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
Vikram Panduranga016c49f2017-09-11 15:15:56 -070015630
15631 {"AUDIO_REF_EC_UL16 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15632 {"AUDIO_REF_EC_UL16 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15633 {"AUDIO_REF_EC_UL16 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15634 {"AUDIO_REF_EC_UL16 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15635
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015636 {"AUDIO_REF_EC_UL17 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15637 {"AUDIO_REF_EC_UL17 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15638 {"AUDIO_REF_EC_UL17 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15639 {"AUDIO_REF_EC_UL17 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15640
15641 {"AUDIO_REF_EC_UL18 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15642 {"AUDIO_REF_EC_UL18 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15643 {"AUDIO_REF_EC_UL18 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15644 {"AUDIO_REF_EC_UL18 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15645
15646 {"AUDIO_REF_EC_UL19 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15647 {"AUDIO_REF_EC_UL19 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15648 {"AUDIO_REF_EC_UL19 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15649 {"AUDIO_REF_EC_UL19 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15650
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053015651 {"AUDIO_REF_EC_UL28 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15652 {"AUDIO_REF_EC_UL28 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15653 {"AUDIO_REF_EC_UL28 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15654 {"AUDIO_REF_EC_UL28 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15655
15656 {"AUDIO_REF_EC_UL29 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15657 {"AUDIO_REF_EC_UL29 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15658 {"AUDIO_REF_EC_UL29 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15659 {"AUDIO_REF_EC_UL29 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Yunfei Zhang3efc4a22017-11-07 16:30:13 +080015660
15661 {"LSM1_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15662 {"LSM2_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15663 {"LSM3_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15664 {"LSM4_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15665 {"LSM5_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15666 {"LSM6_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15667 {"LSM7_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15668 {"LSM8_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15669
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015670 {"MM_UL1", NULL, "AUDIO_REF_EC_UL1 MUX"},
15671 {"MM_UL2", NULL, "AUDIO_REF_EC_UL2 MUX"},
15672 {"MM_UL3", NULL, "AUDIO_REF_EC_UL3 MUX"},
15673 {"MM_UL4", NULL, "AUDIO_REF_EC_UL4 MUX"},
15674 {"MM_UL5", NULL, "AUDIO_REF_EC_UL5 MUX"},
15675 {"MM_UL6", NULL, "AUDIO_REF_EC_UL6 MUX"},
15676 {"MM_UL8", NULL, "AUDIO_REF_EC_UL8 MUX"},
15677 {"MM_UL9", NULL, "AUDIO_REF_EC_UL9 MUX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053015678 {"MM_UL10", NULL, "AUDIO_REF_EC_UL10 MUX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053015679 {"MM_UL16", NULL, "AUDIO_REF_EC_UL16 MUX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015680 {"MM_UL17", NULL, "AUDIO_REF_EC_UL17 MUX"},
15681 {"MM_UL18", NULL, "AUDIO_REF_EC_UL18 MUX"},
15682 {"MM_UL19", NULL, "AUDIO_REF_EC_UL19 MUX"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053015683 {"MM_UL28", NULL, "AUDIO_REF_EC_UL28 MUX"},
15684 {"MM_UL29", NULL, "AUDIO_REF_EC_UL29 MUX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015685
Raja Mallik321d5712018-05-04 17:22:11 +053015686 {"Voice_Tx Mixer", "PRI_TX_Voice", "PRI_I2S_TX"},
15687 {"Voice_Tx Mixer", "PRI_MI2S_TX_Voice", "PRI_MI2S_TX"},
15688 {"Voice_Tx Mixer", "MI2S_TX_Voice", "MI2S_TX"},
15689 {"Voice_Tx Mixer", "TERT_MI2S_TX_Voice", "TERT_MI2S_TX"},
15690 {"Voice_Tx Mixer", "SLIM_0_TX_Voice", "SLIMBUS_0_TX"},
15691 {"Voice_Tx Mixer", "INTERNAL_BT_SCO_TX_Voice", "INT_BT_SCO_TX"},
15692 {"Voice_Tx Mixer", "AFE_PCM_TX_Voice", "PCM_TX"},
15693 {"Voice_Tx Mixer", "AUX_PCM_TX_Voice", "AUX_PCM_TX"},
15694 {"Voice_Tx Mixer", "SEC_AUX_PCM_TX_Voice", "SEC_AUX_PCM_TX"},
15695 {"Voice_Tx Mixer", "SEC_MI2S_TX_Voice", "SEC_MI2S_TX"},
15696 {"Voice_Tx Mixer", "PRI_TDM_TX_3_Voice", "PRI_TDM_TX_3"},
15697 {"CS-VOICE_UL1", NULL, "Voice_Tx Mixer"},
15698
15699 {"Voice2_Tx Mixer", "PRI_TX_Voice2", "PRI_I2S_TX"},
15700 {"Voice2_Tx Mixer", "PRI_MI2S_TX_Voice2", "PRI_MI2S_TX"},
15701 {"Voice2_Tx Mixer", "MI2S_TX_Voice2", "MI2S_TX"},
15702 {"Voice2_Tx Mixer", "TERT_MI2S_TX_Voice2", "TERT_MI2S_TX"},
15703 {"Voice2_Tx Mixer", "SLIM_0_TX_Voice2", "SLIMBUS_0_TX"},
15704 {"Voice2_Tx Mixer", "INTERNAL_BT_SCO_TX_Voice2", "INT_BT_SCO_TX"},
15705 {"Voice2_Tx Mixer", "AFE_PCM_TX_Voice2", "PCM_TX"},
15706 {"Voice2_Tx Mixer", "AUX_PCM_TX_Voice2", "AUX_PCM_TX"},
15707 {"Voice2_Tx Mixer", "SEC_AUX_PCM_TX_Voice2", "SEC_AUX_PCM_TX"},
15708 {"Voice2_Tx Mixer", "PRI_TDM_TX_3_Voice2", "PRI_TDM_TX_3"},
15709 {"VOICE2_UL", NULL, "Voice2_Tx Mixer"},
15710
15711 {"VoLTE_Tx Mixer", "PRI_TX_VoLTE", "PRI_I2S_TX"},
15712 {"VoLTE_Tx Mixer", "SLIM_0_TX_VoLTE", "SLIMBUS_0_TX"},
15713 {"VoLTE_Tx Mixer", "INTERNAL_BT_SCO_TX_VoLTE", "INT_BT_SCO_TX"},
15714 {"VoLTE_Tx Mixer", "AFE_PCM_TX_VoLTE", "PCM_TX"},
15715 {"VoLTE_Tx Mixer", "AUX_PCM_TX_VoLTE", "AUX_PCM_TX"},
15716 {"VoLTE_Tx Mixer", "SEC_AUX_PCM_TX_VoLTE", "SEC_AUX_PCM_TX"},
15717 {"VoLTE_Tx Mixer", "MI2S_TX_VoLTE", "MI2S_TX"},
15718 {"VoLTE_Tx Mixer", "PRI_MI2S_TX_VoLTE", "PRI_MI2S_TX"},
15719 {"VoLTE_Tx Mixer", "TERT_MI2S_TX_VoLTE", "TERT_MI2S_TX"},
15720 {"VoLTE_Tx Mixer", "PRI_TDM_TX_3_VoLTE", "PRI_TDM_TX_3"},
15721 {"VoLTE_UL", NULL, "VoLTE_Tx Mixer"},
15722
15723 {"VoWLAN_Tx Mixer", "PRI_TX_VoWLAN", "PRI_I2S_TX"},
15724 {"VoWLAN_Tx Mixer", "SLIM_0_TX_VoWLAN", "SLIMBUS_0_TX"},
15725 {"VoWLAN_Tx Mixer", "INTERNAL_BT_SCO_TX_VoWLAN", "INT_BT_SCO_TX"},
15726 {"VoWLAN_Tx Mixer", "AFE_PCM_TX_VoWLAN", "PCM_TX"},
15727 {"VoWLAN_Tx Mixer", "AUX_PCM_TX_VoWLAN", "AUX_PCM_TX"},
15728 {"VoWLAN_Tx Mixer", "SEC_AUX_PCM_TX_VoWLAN", "SEC_AUX_PCM_TX"},
15729 {"VoWLAN_Tx Mixer", "MI2S_TX_VoWLAN", "MI2S_TX"},
15730 {"VoWLAN_Tx Mixer", "PRI_MI2S_TX_VoWLAN", "PRI_MI2S_TX"},
15731 {"VoWLAN_Tx Mixer", "TERT_MI2S_TX_VoWLAN", "TERT_MI2S_TX"},
15732 {"VoWLAN_Tx Mixer", "PRI_TDM_TX_3_VoWLAN", "PRI_TDM_TX_3"},
15733 {"VoWLAN_UL", NULL, "VoWLAN_Tx Mixer"},
15734
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015735 {"VoiceMMode1_Tx Mixer", "PRI_TX_MMode1", "PRI_I2S_TX"},
15736 {"VoiceMMode1_Tx Mixer", "PRI_MI2S_TX_MMode1", "PRI_MI2S_TX"},
15737 {"VoiceMMode1_Tx Mixer", "MI2S_TX_MMode1", "MI2S_TX"},
15738 {"VoiceMMode1_Tx Mixer", "TERT_MI2S_TX_MMode1", "TERT_MI2S_TX"},
15739 {"VoiceMMode1_Tx Mixer", "INT3_MI2S_TX_MMode1", "INT3_MI2S_TX"},
15740 {"VoiceMMode1_Tx Mixer", "SLIM_0_TX_MMode1", "SLIMBUS_0_TX"},
15741 {"VoiceMMode1_Tx Mixer", "SLIM_7_TX_MMode1", "SLIMBUS_7_TX"},
15742 {"VoiceMMode1_Tx Mixer", "SLIM_8_TX_MMode1", "SLIMBUS_8_TX"},
15743 {"VoiceMMode1_Tx Mixer", "USB_AUDIO_TX_MMode1", "USB_AUDIO_TX"},
15744 {"VoiceMMode1_Tx Mixer", "INT_BT_SCO_TX_MMode1", "INT_BT_SCO_TX"},
15745 {"VoiceMMode1_Tx Mixer", "AFE_PCM_TX_MMode1", "PCM_TX"},
15746 {"VoiceMMode1_Tx Mixer", "AUX_PCM_TX_MMode1", "AUX_PCM_TX"},
15747 {"VoiceMMode1_Tx Mixer", "SEC_AUX_PCM_TX_MMode1", "SEC_AUX_PCM_TX"},
15748 {"VoiceMMode1_Tx Mixer", "TERT_AUX_PCM_TX_MMode1", "TERT_AUX_PCM_TX"},
15749 {"VoiceMMode1_Tx Mixer", "QUAT_AUX_PCM_TX_MMode1", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015750 {"VoiceMMode1_Tx Mixer", "QUIN_AUX_PCM_TX_MMode1", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015751 {"VoiceMMode1_Tx Mixer", "QUAT_TDM_TX_0_MMode1", "QUAT_TDM_TX_0"},
Raja Mallik321d5712018-05-04 17:22:11 +053015752 {"VoiceMMode1_Tx Mixer", "PRI_TDM_TX_3_MMode1", "PRI_TDM_TX_3"},
Aditya Bavanari769c3102018-02-23 16:34:40 +053015753 {"VoiceMMode1_Tx Mixer", "QUAT_MI2S_TX_MMode1", "QUAT_MI2S_TX"},
15754 {"VoiceMMode1_Tx Mixer", "QUIN_MI2S_TX_MMode1", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015755 {"VOICEMMODE1_UL", NULL, "VoiceMMode1_Tx Mixer"},
15756
15757 {"VoiceMMode2_Tx Mixer", "PRI_TX_MMode2", "PRI_I2S_TX"},
15758 {"VoiceMMode2_Tx Mixer", "PRI_MI2S_TX_MMode2", "PRI_MI2S_TX"},
15759 {"VoiceMMode2_Tx Mixer", "MI2S_TX_MMode2", "MI2S_TX"},
15760 {"VoiceMMode2_Tx Mixer", "TERT_MI2S_TX_MMode2", "TERT_MI2S_TX"},
15761 {"VoiceMMode2_Tx Mixer", "INT3_MI2S_TX_MMode2", "INT3_MI2S_TX"},
15762 {"VoiceMMode2_Tx Mixer", "SLIM_0_TX_MMode2", "SLIMBUS_0_TX"},
15763 {"VoiceMMode2_Tx Mixer", "SLIM_7_TX_MMode2", "SLIMBUS_7_TX"},
15764 {"VoiceMMode2_Tx Mixer", "SLIM_8_TX_MMode2", "SLIMBUS_8_TX"},
15765 {"VoiceMMode2_Tx Mixer", "USB_AUDIO_TX_MMode2", "USB_AUDIO_TX"},
15766 {"VoiceMMode2_Tx Mixer", "INT_BT_SCO_TX_MMode2", "INT_BT_SCO_TX"},
15767 {"VoiceMMode2_Tx Mixer", "AFE_PCM_TX_MMode2", "PCM_TX"},
15768 {"VoiceMMode2_Tx Mixer", "AUX_PCM_TX_MMode2", "AUX_PCM_TX"},
15769 {"VoiceMMode2_Tx Mixer", "SEC_AUX_PCM_TX_MMode2", "SEC_AUX_PCM_TX"},
15770 {"VoiceMMode2_Tx Mixer", "TERT_AUX_PCM_TX_MMode2", "TERT_AUX_PCM_TX"},
15771 {"VoiceMMode2_Tx Mixer", "QUAT_AUX_PCM_TX_MMode2", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015772 {"VoiceMMode2_Tx Mixer", "QUIN_AUX_PCM_TX_MMode2", "QUIN_AUX_PCM_TX"},
Aditya Bavanari769c3102018-02-23 16:34:40 +053015773 {"VoiceMMode2_Tx Mixer", "QUAT_MI2S_TX_MMode2", "QUAT_MI2S_TX"},
15774 {"VoiceMMode2_Tx Mixer", "QUIN_MI2S_TX_MMode2", "QUIN_MI2S_TX"},
Raja Mallik321d5712018-05-04 17:22:11 +053015775 {"VoiceMMode2_Tx Mixer", "PRI_TDM_TX_3_MMode2", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015776 {"VOICEMMODE2_UL", NULL, "VoiceMMode2_Tx Mixer"},
15777
15778 {"Voip_Tx Mixer", "PRI_TX_Voip", "PRI_I2S_TX"},
15779 {"Voip_Tx Mixer", "MI2S_TX_Voip", "MI2S_TX"},
15780 {"Voip_Tx Mixer", "TERT_MI2S_TX_Voip", "TERT_MI2S_TX"},
15781 {"Voip_Tx Mixer", "INT3_MI2S_TX_Voip", "INT3_MI2S_TX"},
15782 {"Voip_Tx Mixer", "SLIM_0_TX_Voip", "SLIMBUS_0_TX"},
15783 {"Voip_Tx Mixer", "SLIM_7_TX_Voip", "SLIMBUS_7_TX"},
15784 {"Voip_Tx Mixer", "SLIM_8_TX_Voip", "SLIMBUS_8_TX"},
15785 {"Voip_Tx Mixer", "USB_AUDIO_TX_Voip", "USB_AUDIO_TX"},
15786 {"Voip_Tx Mixer", "INTERNAL_BT_SCO_TX_Voip", "INT_BT_SCO_TX"},
15787 {"Voip_Tx Mixer", "AFE_PCM_TX_Voip", "PCM_TX"},
15788 {"Voip_Tx Mixer", "AUX_PCM_TX_Voip", "AUX_PCM_TX"},
15789 {"Voip_Tx Mixer", "SEC_AUX_PCM_TX_Voip", "SEC_AUX_PCM_TX"},
15790 {"Voip_Tx Mixer", "TERT_AUX_PCM_TX_Voip", "TERT_AUX_PCM_TX"},
15791 {"Voip_Tx Mixer", "QUAT_AUX_PCM_TX_Voip", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015792 {"Voip_Tx Mixer", "QUIN_AUX_PCM_TX_Voip", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015793 {"Voip_Tx Mixer", "PRI_MI2S_TX_Voip", "PRI_MI2S_TX"},
Raja Mallik321d5712018-05-04 17:22:11 +053015794 {"Voip_Tx Mixer", "PRI_TDM_TX_3_Voip", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015795 {"VOIP_UL", NULL, "Voip_Tx Mixer"},
15796
15797 {"SLIMBUS_DL_HL", "Switch", "SLIM0_DL_HL"},
15798 {"SLIMBUS_0_RX", NULL, "SLIMBUS_DL_HL"},
15799 {"SLIMBUS1_DL_HL", "Switch", "SLIM1_DL_HL"},
15800 {"SLIMBUS_1_RX", NULL, "SLIMBUS1_DL_HL"},
15801 {"SLIMBUS3_DL_HL", "Switch", "SLIM3_DL_HL"},
15802 {"SLIMBUS_3_RX", NULL, "SLIMBUS3_DL_HL"},
15803 {"SLIMBUS4_DL_HL", "Switch", "SLIM4_DL_HL"},
15804 {"SLIMBUS_4_RX", NULL, "SLIMBUS4_DL_HL"},
15805 {"SLIMBUS6_DL_HL", "Switch", "SLIM0_DL_HL"},
15806 {"SLIMBUS_6_RX", NULL, "SLIMBUS6_DL_HL"},
15807 {"SLIM0_UL_HL", NULL, "SLIMBUS_0_TX"},
15808 {"SLIM1_UL_HL", NULL, "SLIMBUS_1_TX"},
15809 {"SLIM3_UL_HL", NULL, "SLIMBUS_3_TX"},
15810 {"SLIM4_UL_HL", NULL, "SLIMBUS_4_TX"},
15811 {"SLIM8_UL_HL", NULL, "SLIMBUS_8_TX"},
15812
15813 {"LSM1 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15814 {"LSM1 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15815 {"LSM1 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15816 {"LSM1 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15817 {"LSM1 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15818 {"LSM1 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15819 {"LSM1 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15820 {"LSM1 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Ashish Jain01b10322018-05-12 15:37:44 +053015821 {"LSM1 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15822 {"LSM1 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015823 {"LSM1_UL_HL", NULL, "LSM1 Mixer"},
15824
15825 {"LSM2 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15826 {"LSM2 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15827 {"LSM2 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15828 {"LSM2 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15829 {"LSM2 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15830 {"LSM2 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15831 {"LSM2 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15832 {"LSM2 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Ashish Jain01b10322018-05-12 15:37:44 +053015833 {"LSM2 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15834 {"LSM2 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015835 {"LSM2_UL_HL", NULL, "LSM2 Mixer"},
15836
15837
15838 {"LSM3 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15839 {"LSM3 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15840 {"LSM3 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15841 {"LSM3 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15842 {"LSM3 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15843 {"LSM3 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15844 {"LSM3 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15845 {"LSM3 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Ashish Jain01b10322018-05-12 15:37:44 +053015846 {"LSM3 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15847 {"LSM3 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015848 {"LSM3_UL_HL", NULL, "LSM3 Mixer"},
15849
15850
15851 {"LSM4 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15852 {"LSM4 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15853 {"LSM4 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15854 {"LSM4 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15855 {"LSM4 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15856 {"LSM4 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15857 {"LSM4 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15858 {"LSM4 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Ashish Jain01b10322018-05-12 15:37:44 +053015859 {"LSM4 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15860 {"LSM4 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015861 {"LSM4_UL_HL", NULL, "LSM4 Mixer"},
15862
15863 {"LSM5 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15864 {"LSM5 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15865 {"LSM5 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15866 {"LSM5 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15867 {"LSM5 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15868 {"LSM5 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15869 {"LSM5 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15870 {"LSM5 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Ashish Jain01b10322018-05-12 15:37:44 +053015871 {"LSM5 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15872 {"LSM5 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015873 {"LSM5_UL_HL", NULL, "LSM5 Mixer"},
15874
15875 {"LSM6 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15876 {"LSM6 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15877 {"LSM6 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15878 {"LSM6 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15879 {"LSM6 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15880 {"LSM6 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Ashish Jain01b10322018-05-12 15:37:44 +053015881 {"LSM6 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15882 {"LSM6 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015883 {"LSM6_UL_HL", NULL, "LSM6 Mixer"},
15884
15885 {"LSM7 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15886 {"LSM7 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15887 {"LSM7 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15888 {"LSM7 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15889 {"LSM7 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15890 {"LSM7 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Ashish Jain01b10322018-05-12 15:37:44 +053015891 {"LSM7 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15892 {"LSM7 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015893 {"LSM7_UL_HL", NULL, "LSM7 Mixer"},
15894
15895 {"LSM8 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15896 {"LSM8 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15897 {"LSM8 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15898 {"LSM8 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15899 {"LSM8 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15900 {"LSM8 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Ashish Jain01b10322018-05-12 15:37:44 +053015901 {"LSM8 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15902 {"LSM8 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015903 {"LSM8_UL_HL", NULL, "LSM8 Mixer"},
15904
15905
15906 {"CPE_LSM_UL_HL", NULL, "BE_IN"},
15907 {"QCHAT_Tx Mixer", "PRI_TX_QCHAT", "PRI_I2S_TX"},
15908 {"QCHAT_Tx Mixer", "SLIM_0_TX_QCHAT", "SLIMBUS_0_TX"},
15909 {"QCHAT_Tx Mixer", "SLIM_7_TX_QCHAT", "SLIMBUS_7_TX"},
15910 {"QCHAT_Tx Mixer", "SLIM_8_TX_QCHAT", "SLIMBUS_8_TX"},
15911 {"QCHAT_Tx Mixer", "INTERNAL_BT_SCO_TX_QCHAT", "INT_BT_SCO_TX"},
15912 {"QCHAT_Tx Mixer", "AFE_PCM_TX_QCHAT", "PCM_TX"},
15913 {"QCHAT_Tx Mixer", "AUX_PCM_TX_QCHAT", "AUX_PCM_TX"},
15914 {"QCHAT_Tx Mixer", "SEC_AUX_PCM_TX_QCHAT", "SEC_AUX_PCM_TX"},
15915 {"QCHAT_Tx Mixer", "TERT_AUX_PCM_TX_QCHAT", "TERT_AUX_PCM_TX"},
15916 {"QCHAT_Tx Mixer", "QUAT_AUX_PCM_TX_QCHAT", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015917 {"QCHAT_Tx Mixer", "QUIN_AUX_PCM_TX_QCHAT", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015918 {"QCHAT_Tx Mixer", "MI2S_TX_QCHAT", "MI2S_TX"},
15919 {"QCHAT_Tx Mixer", "PRI_MI2S_TX_QCHAT", "PRI_MI2S_TX"},
15920 {"QCHAT_Tx Mixer", "TERT_MI2S_TX_QCHAT", "TERT_MI2S_TX"},
15921 {"QCHAT_Tx Mixer", "INT3_MI2S_TX_QCHAT", "INT3_MI2S_TX"},
15922 {"QCHAT_Tx Mixer", "USB_AUDIO_TX_QCHAT", "USB_AUDIO_TX"},
15923 {"QCHAT_UL", NULL, "QCHAT_Tx Mixer"},
15924
15925 {"INT_FM_RX", NULL, "INTFM_DL_HL"},
15926 {"INTFM_UL_HL", NULL, "INT_FM_TX"},
15927 {"INTHFP_UL_HL", NULL, "HFP_PRI_AUX_UL_HL"},
15928 {"HFP_PRI_AUX_UL_HL", "Switch", "AUX_PCM_TX"},
15929 {"INTHFP_UL_HL", NULL, "HFP_AUX_UL_HL"},
15930 {"HFP_AUX_UL_HL", "Switch", "SEC_AUX_PCM_TX"},
15931 {"INTHFP_UL_HL", NULL, "HFP_INT_UL_HL"},
15932 {"HFP_INT_UL_HL", "Switch", "INT_BT_SCO_TX"},
15933 {"SLIM7_UL_HL", NULL, "HFP_SLIM7_UL_HL"},
15934 {"HFP_SLIM7_UL_HL", "Switch", "SLIMBUS_7_TX"},
15935 {"AUX_PCM_RX", NULL, "AUXPCM_DL_HL"},
15936 {"AUX_PCM_RX", NULL, "INTHFP_DL_HL"},
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -080015937 {"SEC_AUX_PCM_RX", NULL, "SEC_AUXPCM_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015938 {"AUXPCM_UL_HL", NULL, "AUX_PCM_TX"},
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -080015939 {"SEC_AUXPCM_UL_HL", NULL, "SEC_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015940 {"MI2S_RX", NULL, "MI2S_DL_HL"},
15941 {"MI2S_UL_HL", NULL, "MI2S_TX"},
15942 {"PCM_RX_DL_HL", "Switch", "SLIM0_DL_HL"},
15943 {"PCM_RX", NULL, "PCM_RX_DL_HL"},
15944
15945 /* connect to INT4_MI2S_DL_HL since same pcm_id */
15946 {"INT0_MI2S_RX_DL_HL", "Switch", "INT4_MI2S_DL_HL"},
15947 {"INT0_MI2S_RX", NULL, "INT0_MI2S_RX_DL_HL"},
15948 {"INT4_MI2S_RX_DL_HL", "Switch", "INT4_MI2S_DL_HL"},
15949 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX_DL_HL"},
15950 {"PRI_MI2S_RX_DL_HL", "Switch", "PRI_MI2S_DL_HL"},
15951 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX_DL_HL"},
15952 {"SEC_MI2S_RX_DL_HL", "Switch", "SEC_MI2S_DL_HL"},
15953 {"SEC_MI2S_RX", NULL, "SEC_MI2S_RX_DL_HL"},
15954 {"TERT_MI2S_RX_DL_HL", "Switch", "TERT_MI2S_DL_HL"},
15955 {"TERT_MI2S_RX", NULL, "TERT_MI2S_RX_DL_HL"},
15956
15957 {"QUAT_MI2S_RX_DL_HL", "Switch", "QUAT_MI2S_DL_HL"},
15958 {"QUAT_MI2S_RX", NULL, "QUAT_MI2S_RX_DL_HL"},
Rohit Kumara5077932017-09-10 22:05:05 +053015959 {"QUIN_MI2S_RX_DL_HL", "Switch", "QUIN_MI2S_DL_HL"},
15960 {"QUIN_MI2S_RX", NULL, "QUIN_MI2S_RX_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015961 {"MI2S_UL_HL", NULL, "TERT_MI2S_TX"},
15962 {"INT3_MI2S_UL_HL", NULL, "INT3_MI2S_TX"},
15963 {"TERT_MI2S_UL_HL", NULL, "TERT_MI2S_TX"},
15964 {"SEC_I2S_RX", NULL, "SEC_I2S_DL_HL"},
15965 {"PRI_MI2S_UL_HL", NULL, "PRI_MI2S_TX"},
15966 {"SEC_MI2S_UL_HL", NULL, "SEC_MI2S_TX"},
15967 {"SEC_MI2S_RX", NULL, "SEC_MI2S_DL_HL"},
15968 {"PRI_MI2S_RX", NULL, "PRI_MI2S_DL_HL"},
15969 {"TERT_MI2S_RX", NULL, "TERT_MI2S_DL_HL"},
15970 {"QUAT_MI2S_UL_HL", NULL, "QUAT_MI2S_TX"},
15971
15972 {"PRI_TDM_TX_0_UL_HL", NULL, "PRI_TDM_TX_0"},
15973 {"PRI_TDM_TX_1_UL_HL", NULL, "PRI_TDM_TX_1"},
15974 {"PRI_TDM_TX_2_UL_HL", NULL, "PRI_TDM_TX_2"},
15975 {"PRI_TDM_TX_3_UL_HL", NULL, "PRI_TDM_TX_3"},
15976 {"PRI_TDM_RX_0", NULL, "PRI_TDM_RX_0_DL_HL"},
15977 {"PRI_TDM_RX_1", NULL, "PRI_TDM_RX_1_DL_HL"},
15978 {"PRI_TDM_RX_2", NULL, "PRI_TDM_RX_2_DL_HL"},
15979 {"PRI_TDM_RX_3", NULL, "PRI_TDM_RX_3_DL_HL"},
15980 {"SEC_TDM_TX_0_UL_HL", NULL, "SEC_TDM_TX_0"},
15981 {"SEC_TDM_TX_1_UL_HL", NULL, "SEC_TDM_TX_1"},
15982 {"SEC_TDM_TX_2_UL_HL", NULL, "SEC_TDM_TX_2"},
15983 {"SEC_TDM_TX_3_UL_HL", NULL, "SEC_TDM_TX_3"},
15984 {"SEC_TDM_RX_0", NULL, "SEC_TDM_RX_0_DL_HL"},
15985 {"SEC_TDM_RX_1", NULL, "SEC_TDM_RX_1_DL_HL"},
15986 {"SEC_TDM_RX_2", NULL, "SEC_TDM_RX_2_DL_HL"},
15987 {"SEC_TDM_RX_3", NULL, "SEC_TDM_RX_3_DL_HL"},
15988 {"TERT_TDM_TX_0_UL_HL", NULL, "TERT_TDM_TX_0"},
15989 {"TERT_TDM_TX_1_UL_HL", NULL, "TERT_TDM_TX_1"},
15990 {"TERT_TDM_TX_2_UL_HL", NULL, "TERT_TDM_TX_2"},
15991 {"TERT_TDM_TX_3_UL_HL", NULL, "TERT_TDM_TX_3"},
15992 {"TERT_TDM_RX_0", NULL, "TERT_TDM_RX_0_DL_HL"},
15993 {"TERT_TDM_RX_1", NULL, "TERT_TDM_RX_1_DL_HL"},
15994 {"TERT_TDM_RX_2", NULL, "TERT_TDM_RX_2_DL_HL"},
15995 {"TERT_TDM_RX_3", NULL, "TERT_TDM_RX_3_DL_HL"},
15996 {"QUAT_TDM_TX_0_UL_HL", NULL, "QUAT_TDM_TX_0"},
15997 {"QUAT_TDM_TX_1_UL_HL", NULL, "QUAT_TDM_TX_1"},
15998 {"QUAT_TDM_TX_2_UL_HL", NULL, "QUAT_TDM_TX_2"},
15999 {"QUAT_TDM_TX_3_UL_HL", NULL, "QUAT_TDM_TX_3"},
16000 {"QUAT_TDM_RX_0", NULL, "QUAT_TDM_RX_0_DL_HL"},
16001 {"QUAT_TDM_RX_1", NULL, "QUAT_TDM_RX_1_DL_HL"},
16002 {"QUAT_TDM_RX_2", NULL, "QUAT_TDM_RX_2_DL_HL"},
16003 {"QUAT_TDM_RX_3", NULL, "QUAT_TDM_RX_3_DL_HL"},
Rohit Kumara5077932017-09-10 22:05:05 +053016004 {"QUIN_TDM_TX_0_UL_HL", NULL, "QUIN_TDM_TX_0"},
16005 {"QUIN_TDM_TX_1_UL_HL", NULL, "QUIN_TDM_TX_1"},
16006 {"QUIN_TDM_TX_2_UL_HL", NULL, "QUIN_TDM_TX_2"},
16007 {"QUIN_TDM_TX_3_UL_HL", NULL, "QUIN_TDM_TX_3"},
16008 {"QUIN_TDM_RX_0", NULL, "QUIN_TDM_RX_0_DL_HL"},
16009 {"QUIN_TDM_RX_1", NULL, "QUIN_TDM_RX_1_DL_HL"},
16010 {"QUIN_TDM_RX_2", NULL, "QUIN_TDM_RX_2_DL_HL"},
16011 {"QUIN_TDM_RX_3", NULL, "QUIN_TDM_RX_3_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016012
16013 {"PRI_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16014 {"PRI_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16015 {"PRI_TDM_RX_0 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16016 {"PRI_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16017 {"PRI_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16018 {"PRI_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16019 {"PRI_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16020 {"PRI_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16021 {"PRI_TDM_RX_0 Port Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
16022 {"PRI_TDM_RX_0 Port Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
16023 {"PRI_TDM_RX_0 Port Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
16024 {"PRI_TDM_RX_0 Port Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
16025 {"PRI_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16026 {"PRI_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16027 {"PRI_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16028 {"PRI_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016029 {"PRI_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16030 {"PRI_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16031 {"PRI_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16032 {"PRI_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016033 {"PRI_TDM_RX_0", NULL, "PRI_TDM_RX_0 Port Mixer"},
16034
16035 {"PRI_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16036 {"PRI_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16037 {"PRI_TDM_RX_1 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16038 {"PRI_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16039 {"PRI_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16040 {"PRI_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16041 {"PRI_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16042 {"PRI_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16043 {"PRI_TDM_RX_1 Port Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
16044 {"PRI_TDM_RX_1 Port Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
16045 {"PRI_TDM_RX_1 Port Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
16046 {"PRI_TDM_RX_1 Port Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
16047 {"PRI_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16048 {"PRI_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16049 {"PRI_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16050 {"PRI_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016051 {"PRI_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16052 {"PRI_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16053 {"PRI_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16054 {"PRI_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016055 {"PRI_TDM_RX_1", NULL, "PRI_TDM_RX_1 Port Mixer"},
16056
16057 {"PRI_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16058 {"PRI_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16059 {"PRI_TDM_RX_2 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16060 {"PRI_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16061 {"PRI_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16062 {"PRI_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16063 {"PRI_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16064 {"PRI_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16065 {"PRI_TDM_RX_2 Port Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
16066 {"PRI_TDM_RX_2 Port Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
16067 {"PRI_TDM_RX_2 Port Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
16068 {"PRI_TDM_RX_2 Port Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
16069 {"PRI_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16070 {"PRI_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16071 {"PRI_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16072 {"PRI_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016073 {"PRI_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16074 {"PRI_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16075 {"PRI_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16076 {"PRI_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016077 {"PRI_TDM_RX_2", NULL, "PRI_TDM_RX_2 Port Mixer"},
16078
16079 {"PRI_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16080 {"PRI_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16081 {"PRI_TDM_RX_3 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16082 {"PRI_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16083 {"PRI_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16084 {"PRI_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16085 {"PRI_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16086 {"PRI_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16087 {"PRI_TDM_RX_3 Port Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
16088 {"PRI_TDM_RX_3 Port Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
16089 {"PRI_TDM_RX_3 Port Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
16090 {"PRI_TDM_RX_3 Port Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
16091 {"PRI_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16092 {"PRI_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16093 {"PRI_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16094 {"PRI_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016095 {"PRI_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16096 {"PRI_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16097 {"PRI_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16098 {"PRI_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016099 {"PRI_TDM_RX_3", NULL, "PRI_TDM_RX_3 Port Mixer"},
16100
16101 {"SEC_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16102 {"SEC_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16103 {"SEC_TDM_RX_0 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16104 {"SEC_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16105 {"SEC_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16106 {"SEC_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16107 {"SEC_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16108 {"SEC_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16109 {"SEC_TDM_RX_0 Port Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
16110 {"SEC_TDM_RX_0 Port Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
16111 {"SEC_TDM_RX_0 Port Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
16112 {"SEC_TDM_RX_0 Port Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
16113 {"SEC_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16114 {"SEC_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16115 {"SEC_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16116 {"SEC_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016117 {"SEC_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16118 {"SEC_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16119 {"SEC_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16120 {"SEC_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016121 {"SEC_TDM_RX_0", NULL, "SEC_TDM_RX_0 Port Mixer"},
16122
16123 {"SEC_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16124 {"SEC_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16125 {"SEC_TDM_RX_1 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16126 {"SEC_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16127 {"SEC_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16128 {"SEC_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16129 {"SEC_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16130 {"SEC_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16131 {"SEC_TDM_RX_1 Port Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
16132 {"SEC_TDM_RX_1 Port Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
16133 {"SEC_TDM_RX_1 Port Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
16134 {"SEC_TDM_RX_1 Port Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
16135 {"SEC_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16136 {"SEC_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16137 {"SEC_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16138 {"SEC_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016139 {"SEC_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16140 {"SEC_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16141 {"SEC_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16142 {"SEC_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016143 {"SEC_TDM_RX_1", NULL, "SEC_TDM_RX_1 Port Mixer"},
16144
16145 {"SEC_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16146 {"SEC_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16147 {"SEC_TDM_RX_2 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16148 {"SEC_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16149 {"SEC_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16150 {"SEC_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16151 {"SEC_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16152 {"SEC_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16153 {"SEC_TDM_RX_2 Port Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
16154 {"SEC_TDM_RX_2 Port Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
16155 {"SEC_TDM_RX_2 Port Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
16156 {"SEC_TDM_RX_2 Port Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
16157 {"SEC_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16158 {"SEC_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16159 {"SEC_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16160 {"SEC_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016161 {"SEC_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16162 {"SEC_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16163 {"SEC_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16164 {"SEC_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016165 {"SEC_TDM_RX_2", NULL, "SEC_TDM_RX_2 Port Mixer"},
16166
16167 {"SEC_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16168 {"SEC_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16169 {"SEC_TDM_RX_3 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16170 {"SEC_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16171 {"SEC_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16172 {"SEC_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16173 {"SEC_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16174 {"SEC_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16175 {"SEC_TDM_RX_3 Port Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
16176 {"SEC_TDM_RX_3 Port Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
16177 {"SEC_TDM_RX_3 Port Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
16178 {"SEC_TDM_RX_3 Port Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
16179 {"SEC_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16180 {"SEC_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16181 {"SEC_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16182 {"SEC_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016183 {"SEC_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16184 {"SEC_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16185 {"SEC_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16186 {"SEC_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016187 {"SEC_TDM_RX_3", NULL, "SEC_TDM_RX_3 Port Mixer"},
16188
16189 {"TERT_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16190 {"TERT_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16191 {"TERT_TDM_RX_0 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16192 {"TERT_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16193 {"TERT_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16194 {"TERT_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16195 {"TERT_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16196 {"TERT_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16197 {"TERT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16198 {"TERT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16199 {"TERT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16200 {"TERT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16201 {"TERT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16202 {"TERT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16203 {"TERT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16204 {"TERT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016205 {"TERT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16206 {"TERT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16207 {"TERT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16208 {"TERT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016209 {"TERT_TDM_RX_0", NULL, "TERT_TDM_RX_0 Port Mixer"},
16210
16211 {"TERT_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16212 {"TERT_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16213 {"TERT_TDM_RX_1 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16214 {"TERT_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16215 {"TERT_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16216 {"TERT_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16217 {"TERT_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16218 {"TERT_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16219 {"TERT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16220 {"TERT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16221 {"TERT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16222 {"TERT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16223 {"TERT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16224 {"TERT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16225 {"TERT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16226 {"TERT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016227 {"TERT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16228 {"TERT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16229 {"TERT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16230 {"TERT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016231 {"TERT_TDM_RX_1", NULL, "TERT_TDM_RX_1 Port Mixer"},
16232
16233 {"TERT_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16234 {"TERT_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16235 {"TERT_TDM_RX_2 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16236 {"TERT_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16237 {"TERT_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16238 {"TERT_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16239 {"TERT_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16240 {"TERT_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16241 {"TERT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16242 {"TERT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16243 {"TERT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16244 {"TERT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16245 {"TERT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16246 {"TERT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16247 {"TERT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16248 {"TERT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016249 {"TERT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16250 {"TERT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16251 {"TERT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16252 {"TERT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016253 {"TERT_TDM_RX_2", NULL, "TERT_TDM_RX_2 Port Mixer"},
16254
16255 {"TERT_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16256 {"TERT_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16257 {"TERT_TDM_RX_3 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16258 {"TERT_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16259 {"TERT_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16260 {"TERT_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16261 {"TERT_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16262 {"TERT_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16263 {"TERT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16264 {"TERT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16265 {"TERT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16266 {"TERT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16267 {"TERT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16268 {"TERT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16269 {"TERT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16270 {"TERT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016271 {"TERT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16272 {"TERT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16273 {"TERT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16274 {"TERT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016275 {"TERT_TDM_RX_3", NULL, "TERT_TDM_RX_3 Port Mixer"},
16276
16277 {"QUAT_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16278 {"QUAT_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16279 {"QUAT_TDM_RX_0 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16280 {"QUAT_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16281 {"QUAT_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16282 {"QUAT_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16283 {"QUAT_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16284 {"QUAT_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16285 {"QUAT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16286 {"QUAT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16287 {"QUAT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16288 {"QUAT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16289 {"QUAT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16290 {"QUAT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16291 {"QUAT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16292 {"QUAT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016293 {"QUAT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16294 {"QUAT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16295 {"QUAT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16296 {"QUAT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016297 {"QUAT_TDM_RX_0", NULL, "QUAT_TDM_RX_0 Port Mixer"},
16298
16299 {"QUAT_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16300 {"QUAT_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16301 {"QUAT_TDM_RX_1 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16302 {"QUAT_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16303 {"QUAT_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16304 {"QUAT_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16305 {"QUAT_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16306 {"QUAT_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16307 {"QUAT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16308 {"QUAT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16309 {"QUAT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16310 {"QUAT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16311 {"QUAT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16312 {"QUAT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16313 {"QUAT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16314 {"QUAT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016315 {"QUAT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16316 {"QUAT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16317 {"QUAT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16318 {"QUAT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016319 {"QUAT_TDM_RX_1", NULL, "QUAT_TDM_RX_1 Port Mixer"},
16320
16321 {"QUAT_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16322 {"QUAT_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16323 {"QUAT_TDM_RX_2 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16324 {"QUAT_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16325 {"QUAT_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16326 {"QUAT_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16327 {"QUAT_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16328 {"QUAT_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16329 {"QUAT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16330 {"QUAT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16331 {"QUAT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16332 {"QUAT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16333 {"QUAT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16334 {"QUAT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16335 {"QUAT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16336 {"QUAT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016337 {"QUAT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16338 {"QUAT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16339 {"QUAT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16340 {"QUAT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016341 {"QUAT_TDM_RX_2", NULL, "QUAT_TDM_RX_2 Port Mixer"},
16342
16343 {"QUAT_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16344 {"QUAT_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16345 {"QUAT_TDM_RX_3 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16346 {"QUAT_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16347 {"QUAT_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16348 {"QUAT_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16349 {"QUAT_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16350 {"QUAT_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16351 {"QUAT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16352 {"QUAT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16353 {"QUAT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16354 {"QUAT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16355 {"QUAT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16356 {"QUAT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16357 {"QUAT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16358 {"QUAT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016359 {"QUAT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16360 {"QUAT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16361 {"QUAT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16362 {"QUAT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016363 {"QUAT_TDM_RX_3", NULL, "QUAT_TDM_RX_3 Port Mixer"},
16364
Rohit Kumara5077932017-09-10 22:05:05 +053016365 {"QUIN_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16366 {"QUIN_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16367 {"QUIN_TDM_RX_0 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16368 {"QUIN_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16369 {"QUIN_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16370 {"QUIN_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16371 {"QUIN_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16372 {"QUIN_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16373 {"QUIN_TDM_RX_0 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16374 {"QUIN_TDM_RX_0 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16375 {"QUIN_TDM_RX_0 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16376 {"QUIN_TDM_RX_0 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16377 {"QUIN_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16378 {"QUIN_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16379 {"QUIN_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16380 {"QUIN_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
16381 {"QUIN_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16382 {"QUIN_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16383 {"QUIN_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16384 {"QUIN_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Rohit Kumarc08b14f2017-10-06 10:52:17 +053016385 {"QUIN_TDM_RX_0", NULL, "QUIN_TDM_RX_0 Port Mixer"},
Rohit Kumara5077932017-09-10 22:05:05 +053016386
16387 {"QUIN_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16388 {"QUIN_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16389 {"QUIN_TDM_RX_1 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16390 {"QUIN_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16391 {"QUIN_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16392 {"QUIN_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16393 {"QUIN_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16394 {"QUIN_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16395 {"QUIN_TDM_RX_1 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16396 {"QUIN_TDM_RX_1 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16397 {"QUIN_TDM_RX_1 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16398 {"QUIN_TDM_RX_1 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16399 {"QUIN_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16400 {"QUIN_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16401 {"QUIN_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16402 {"QUIN_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
16403 {"QUIN_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16404 {"QUIN_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16405 {"QUIN_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16406 {"QUIN_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Rohit Kumarc08b14f2017-10-06 10:52:17 +053016407 {"QUIN_TDM_RX_1", NULL, "QUIN_TDM_RX_1 Port Mixer"},
Rohit Kumara5077932017-09-10 22:05:05 +053016408
16409 {"QUIN_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16410 {"QUIN_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16411 {"QUIN_TDM_RX_2 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16412 {"QUIN_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16413 {"QUIN_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16414 {"QUIN_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16415 {"QUIN_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16416 {"QUIN_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16417 {"QUIN_TDM_RX_2 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16418 {"QUIN_TDM_RX_2 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16419 {"QUIN_TDM_RX_2 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16420 {"QUIN_TDM_RX_2 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16421 {"QUIN_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16422 {"QUIN_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16423 {"QUIN_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16424 {"QUIN_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
16425 {"QUIN_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16426 {"QUIN_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16427 {"QUIN_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16428 {"QUIN_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Rohit Kumarc08b14f2017-10-06 10:52:17 +053016429 {"QUIN_TDM_RX_2", NULL, "QUIN_TDM_RX_2 Port Mixer"},
Rohit Kumara5077932017-09-10 22:05:05 +053016430
16431 {"QUIN_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16432 {"QUIN_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16433 {"QUIN_TDM_RX_3 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16434 {"QUIN_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16435 {"QUIN_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16436 {"QUIN_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16437 {"QUIN_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16438 {"QUIN_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16439 {"QUIN_TDM_RX_3 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16440 {"QUIN_TDM_RX_3 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16441 {"QUIN_TDM_RX_3 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16442 {"QUIN_TDM_RX_3 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16443 {"QUIN_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16444 {"QUIN_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16445 {"QUIN_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16446 {"QUIN_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
16447 {"QUIN_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16448 {"QUIN_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16449 {"QUIN_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16450 {"QUIN_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Rohit Kumarc08b14f2017-10-06 10:52:17 +053016451 {"QUIN_TDM_RX_3", NULL, "QUIN_TDM_RX_3 Port Mixer"},
Rohit Kumara5077932017-09-10 22:05:05 +053016452
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016453 {"INT0_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16454 {"INT0_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16455 {"INT0_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16456 {"INT0_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016457 {"INT0_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016458 {"INT0_MI2S_RX Port Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
16459 {"INT0_MI2S_RX Port Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16460 {"INT0_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16461 {"INT0_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16462 {"INT0_MI2S_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16463 {"INT0_MI2S_RX", NULL, "INT0_MI2S_RX Port Mixer"},
16464
16465 {"INT4_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16466 {"INT4_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16467 {"INT4_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16468 {"INT4_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016469 {"INT4_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016470 {"INT4_MI2S_RX Port Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
16471 {"INT4_MI2S_RX Port Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16472 {"INT4_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16473 {"INT4_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16474 {"INT4_MI2S_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16475 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX Port Mixer"},
16476
16477 {"SLIMBUS_0_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16478 {"SLIMBUS_0_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16479 {"SLIMBUS_0_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16480 {"SLIMBUS_0_RX Port Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16481 {"SLIMBUS_0_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16482 {"SLIMBUS_0_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16483 {"SLIMBUS_0_RX Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16484 {"SLIMBUS_0_RX Port Mixer", "TERT_AUXPCM_UL_TX", "TERT_AUX_PCM_TX"},
16485 {"SLIMBUS_0_RX Port Mixer", "QUAT_AUXPCM_UL_TX", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016486 {"SLIMBUS_0_RX Port Mixer", "QUIN_AUXPCM_UL_TX", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016487 {"SLIMBUS_0_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16488 {"SLIMBUS_0_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16489 {"SLIMBUS_0_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16490 {"SLIMBUS_0_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16491 {"SLIMBUS_0_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016492 {"SLIMBUS_0_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016493 {"SLIMBUS_0_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16494 {"SLIMBUS_0_RX", NULL, "SLIMBUS_0_RX Port Mixer"},
16495 {"AFE_PCM_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16496 {"AFE_PCM_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16497 {"PCM_RX", NULL, "AFE_PCM_RX Port Mixer"},
16498 {"USB_AUDIO_RX Port Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
16499 {"USB_AUDIO_RX", NULL, "USB_AUDIO_RX Port Mixer"},
16500 {"USB_DL_HL", "Switch", "USBAUDIO_DL_HL"},
16501 {"USB_AUDIO_RX", NULL, "USB_DL_HL"},
16502 {"USBAUDIO_UL_HL", NULL, "USB_AUDIO_TX"},
16503
16504
16505 {"AUX_PCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16506 {"AUX_PCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16507 {"AUX_PCM_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16508 {"AUX_PCM_RX Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16509 {"AUX_PCM_RX Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -080016510 {"AUX_PCM_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016511 {"AUX_PCM_RX", NULL, "AUX_PCM_RX Port Mixer"},
16512
16513 {"SEC_AUXPCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16514 {"SEC_AUXPCM_RX Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16515 {"SEC_AUXPCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -080016516 {"SEC_AUXPCM_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016517 {"SEC_AUX_PCM_RX", NULL, "SEC_AUXPCM_RX Port Mixer"},
16518
16519 {"TERT_AUXPCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16520 {"TERT_AUXPCM_RX Port Mixer", "TERT_AUXPCM_UL_TX", "TERT_AUX_PCM_TX"},
16521 {"TERT_AUXPCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16522 {"TERT_AUX_PCM_RX", NULL, "TERT_AUXPCM_RX Port Mixer"},
16523
16524 {"QUAT_AUXPCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16525 {"QUAT_AUXPCM_RX Port Mixer", "QUAT_AUXPCM_UL_TX", "QUAT_AUX_PCM_TX"},
16526 {"QUAT_AUXPCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16527 {"QUAT_AUX_PCM_RX", NULL, "QUAT_AUXPCM_RX Port Mixer"},
16528
Rohit Kumara5077932017-09-10 22:05:05 +053016529 {"QUIN_AUXPCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16530 {"QUIN_AUXPCM_RX Port Mixer", "QUIN_AUXPCM_UL_TX", "QUIN_AUX_PCM_TX"},
16531 {"QUIN_AUXPCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16532 {"QUIN_AUX_PCM_RX", NULL, "QUIN_AUXPCM_RX Port Mixer"},
16533
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016534 {"Voice Stub Tx Mixer", "STUB_TX_HL", "STUB_TX"},
16535 {"Voice Stub Tx Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16536 {"Voice Stub Tx Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16537 {"Voice Stub Tx Mixer", "STUB_1_TX_HL", "STUB_1_TX"},
16538 {"Voice Stub Tx Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16539 {"Voice Stub Tx Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16540 {"Voice Stub Tx Mixer", "TERT_AUXPCM_UL_TX", "TERT_AUX_PCM_TX"},
16541 {"Voice Stub Tx Mixer", "QUAT_AUXPCM_UL_TX", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016542 {"Voice Stub Tx Mixer", "QUIN_AUXPCM_UL_TX", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016543 {"Voice Stub Tx Mixer", "MI2S_TX", "MI2S_TX"},
16544 {"Voice Stub Tx Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16545 {"Voice Stub Tx Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16546 {"Voice Stub Tx Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
16547 {"Voice Stub Tx Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16548 {"Voice Stub Tx Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16549 {"Voice Stub Tx Mixer", "SLIM_3_TX", "SLIMBUS_3_TX"},
16550 {"Voice Stub Tx Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16551 {"Voice Stub Tx Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16552 {"Voice Stub Tx Mixer", "AFE_PCM_TX", "PCM_TX"},
16553 {"VOICE_STUB_UL", NULL, "Voice Stub Tx Mixer"},
16554
16555 {"VoLTE Stub Tx Mixer", "STUB_TX_HL", "STUB_TX"},
16556 {"VoLTE Stub Tx Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16557 {"VoLTE Stub Tx Mixer", "STUB_1_TX_HL", "STUB_1_TX"},
16558 {"VoLTE Stub Tx Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16559 {"VoLTE Stub Tx Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16560 {"VoLTE Stub Tx Mixer", "SLIM_3_TX", "SLIMBUS_3_TX"},
16561 {"VoLTE Stub Tx Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16562 {"VoLTE Stub Tx Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16563 {"VoLTE Stub Tx Mixer", "AFE_PCM_TX", "PCM_TX"},
16564 {"VoLTE Stub Tx Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16565 {"VoLTE Stub Tx Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16566 {"VOLTE_STUB_UL", NULL, "VoLTE Stub Tx Mixer"},
16567
16568 {"Voice2 Stub Tx Mixer", "STUB_TX_HL", "STUB_TX"},
16569 {"Voice2 Stub Tx Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16570 {"Voice2 Stub Tx Mixer", "STUB_1_TX_HL", "STUB_1_TX"},
16571 {"Voice2 Stub Tx Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16572 {"Voice2 Stub Tx Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16573 {"Voice2 Stub Tx Mixer", "SLIM_3_TX", "SLIMBUS_3_TX"},
16574 {"Voice2 Stub Tx Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16575 {"Voice2 Stub Tx Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16576 {"Voice2 Stub Tx Mixer", "AFE_PCM_TX", "PCM_TX"},
16577 {"Voice2 Stub Tx Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16578 {"Voice2 Stub Tx Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16579 {"VOICE2_STUB_UL", NULL, "Voice2 Stub Tx Mixer"},
16580
kunleizdf5a00a2017-11-27 15:27:36 +080016581 {"STUB_RX Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
16582 {"STUB_RX Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016583 {"STUB_RX", NULL, "STUB_RX Mixer"},
kunleizdf5a00a2017-11-27 15:27:36 +080016584
16585 {"SLIMBUS_1_RX Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
16586 {"SLIMBUS_1_RX Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016587 {"SLIMBUS_1_RX", NULL, "SLIMBUS_1_RX Mixer"},
kunleizdf5a00a2017-11-27 15:27:36 +080016588
16589 {"SLIMBUS_3_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
16590 {"SLIMBUS_3_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016591 {"SLIMBUS_3_RX", NULL, "SLIMBUS_3_RX_Voice Mixer"},
16592
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016593 {"SLIM_7_RX_Voice Mixer", "Voip", "VOIP_DL"},
16594 {"SLIM_7_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016595 {"SLIM_7_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
16596 {"SLIM_7_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
16597 {"SLIM_7_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
16598 {"SLIMBUS_7_RX", NULL, "SLIM_7_RX_Voice Mixer"},
16599
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016600 {"SLIM_8_RX_Voice Mixer", "Voip", "VOIP_DL"},
16601 {"SLIM_8_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016602 {"SLIM_8_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
16603 {"SLIM_8_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
16604 {"SLIM_8_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
16605 {"SLIMBUS_8_RX", NULL, "SLIM_8_RX_Voice Mixer"},
16606
16607 {"SLIMBUS_1_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16608 {"SLIMBUS_1_RX Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16609 {"SLIMBUS_1_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16610 {"SLIMBUS_1_RX", NULL, "SLIMBUS_1_RX Port Mixer"},
16611 {"INTERNAL_BT_SCO_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16612 {"INTERNAL_BT_SCO_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16613 {"INT_BT_SCO_RX", NULL, "INTERNAL_BT_SCO_RX Port Mixer"},
16614 {"SLIMBUS_3_RX Port Mixer", "INTERNAL_BT_SCO_RX", "INT_BT_SCO_RX"},
16615 {"SLIMBUS_3_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16616 {"SLIMBUS_3_RX Port Mixer", "AFE_PCM_RX", "PCM_RX"},
16617 {"SLIMBUS_3_RX Port Mixer", "AUX_PCM_RX", "AUX_PCM_RX"},
16618 {"SLIMBUS_3_RX Port Mixer", "SLIM_0_RX", "SLIMBUS_0_RX"},
16619 {"SLIMBUS_3_RX", NULL, "SLIMBUS_3_RX Port Mixer"},
16620
16621 {"SLIMBUS_6_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16622 {"SLIMBUS_6_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16623 {"SLIMBUS_6_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16624 {"SLIMBUS_6_RX Port Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16625 {"SLIMBUS_6_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16626 {"SLIMBUS_6_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16627 {"SLIMBUS_6_RX Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16628 {"SLIMBUS_6_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16629 {"SLIMBUS_6_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16630 {"SLIMBUS_6_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16631 {"SLIMBUS_6_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16632 {"SLIMBUS_6_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16633 {"SLIMBUS_6_RX", NULL, "SLIMBUS_6_RX Port Mixer"},
16634
16635 {"HDMI_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16636 {"HDMI", NULL, "HDMI_RX Port Mixer"},
16637
16638 {"DISPLAY_PORT_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16639 {"DISPLAY_PORT", NULL, "DISPLAY_PORT_RX Port Mixer"},
16640
16641 {"SEC_I2S_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16642 {"SEC_I2S_RX", NULL, "SEC_I2S_RX Port Mixer"},
16643
16644 {"MI2S_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16645 {"MI2S_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16646 {"MI2S_RX", NULL, "MI2S_RX Port Mixer"},
16647
16648 {"PRI_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16649 {"PRI_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16650 {"PRI_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16651 {"PRI_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016652 {"PRI_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016653 {"PRI_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16654 {"PRI_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16655 {"PRI_MI2S_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16656 {"PRI_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -080016657 {"PRI_MI2S_RX Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016658 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX Port Mixer"},
16659
16660 {"SEC_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16661 {"SEC_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16662 {"SEC_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16663 {"SEC_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016664 {"SEC_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016665 {"SEC_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16666 {"SEC_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16667 {"SEC_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -080016668 {"SEC_MI2S_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016669 {"SEC_MI2S_RX", NULL, "SEC_MI2S_RX Port Mixer"},
16670
16671 {"TERT_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16672 {"TERT_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16673 {"TERT_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16674 {"TERT_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016675 {"TERT_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016676 {"TERT_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16677 {"TERT_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16678 {"TERT_MI2S_RX", NULL, "TERT_MI2S_RX Port Mixer"},
16679
16680 {"QUAT_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16681 {"QUAT_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16682 {"QUAT_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16683 {"QUAT_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016684 {"QUAT_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016685 {"QUAT_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16686 {"QUAT_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16687 {"QUAT_MI2S_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16688 {"QUAT_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16689 {"QUAT_MI2S_RX", NULL, "QUAT_MI2S_RX Port Mixer"},
16690
Rohit Kumara5077932017-09-10 22:05:05 +053016691 {"QUIN_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16692 {"QUIN_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16693 {"QUIN_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16694 {"QUIN_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16695 {"QUIN_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
16696 {"QUIN_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16697 {"QUIN_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16698 {"QUIN_MI2S_RX", NULL, "QUIN_MI2S_RX Port Mixer"},
16699
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016700 /* Backend Enablement */
16701
16702 {"BE_OUT", NULL, "PRI_I2S_RX"},
16703 {"BE_OUT", NULL, "SEC_I2S_RX"},
16704 {"BE_OUT", NULL, "SLIMBUS_0_RX"},
16705 {"BE_OUT", NULL, "SLIMBUS_1_RX"},
16706 {"BE_OUT", NULL, "SLIMBUS_2_RX"},
16707 {"BE_OUT", NULL, "SLIMBUS_3_RX"},
16708 {"BE_OUT", NULL, "SLIMBUS_4_RX"},
16709 {"BE_OUT", NULL, "SLIMBUS_5_RX"},
16710 {"BE_OUT", NULL, "SLIMBUS_6_RX"},
16711 {"BE_OUT", NULL, "SLIMBUS_7_RX"},
16712 {"BE_OUT", NULL, "SLIMBUS_8_RX"},
16713 {"BE_OUT", NULL, "USB_AUDIO_RX"},
16714 {"BE_OUT", NULL, "HDMI"},
16715 {"BE_OUT", NULL, "DISPLAY_PORT"},
16716 {"BE_OUT", NULL, "SPDIF_RX"},
16717 {"BE_OUT", NULL, "MI2S_RX"},
16718 {"BE_OUT", NULL, "QUAT_MI2S_RX"},
16719 {"BE_OUT", NULL, "QUIN_MI2S_RX"},
16720 {"BE_OUT", NULL, "TERT_MI2S_RX"},
16721 {"BE_OUT", NULL, "SEC_MI2S_RX"},
16722 {"BE_OUT", NULL, "SEC_MI2S_RX_SD1"},
16723 {"BE_OUT", NULL, "PRI_MI2S_RX"},
16724 {"BE_OUT", NULL, "INT0_MI2S_RX"},
16725 {"BE_OUT", NULL, "INT4_MI2S_RX"},
Laxminath Kasam52697fe2017-11-29 15:44:14 +053016726 {"BE_OUT", NULL, "INT2_MI2S_RX"},
16727 {"BE_OUT", NULL, "INT3_MI2S_RX"},
16728 {"BE_OUT", NULL, "INT5_MI2S_RX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016729 {"BE_OUT", NULL, "INT_BT_SCO_RX"},
16730 {"BE_OUT", NULL, "INT_BT_A2DP_RX"},
16731 {"BE_OUT", NULL, "INT_FM_RX"},
16732 {"BE_OUT", NULL, "PCM_RX"},
16733 {"BE_OUT", NULL, "SLIMBUS_3_RX"},
16734 {"BE_OUT", NULL, "AUX_PCM_RX"},
16735 {"BE_OUT", NULL, "SEC_AUX_PCM_RX"},
16736 {"BE_OUT", NULL, "TERT_AUX_PCM_RX"},
16737 {"BE_OUT", NULL, "QUAT_AUX_PCM_RX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016738 {"BE_OUT", NULL, "QUIN_AUX_PCM_RX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016739 {"BE_OUT", NULL, "INT_BT_SCO_RX"},
16740 {"BE_OUT", NULL, "INT_FM_RX"},
16741 {"BE_OUT", NULL, "PCM_RX"},
16742 {"BE_OUT", NULL, "SLIMBUS_3_RX"},
16743 {"BE_OUT", NULL, "VOICE_PLAYBACK_TX"},
16744 {"BE_OUT", NULL, "VOICE2_PLAYBACK_TX"},
16745 {"BE_OUT", NULL, "PRI_TDM_RX_0"},
16746 {"BE_OUT", NULL, "PRI_TDM_RX_1"},
16747 {"BE_OUT", NULL, "PRI_TDM_RX_2"},
16748 {"BE_OUT", NULL, "PRI_TDM_RX_3"},
16749 {"BE_OUT", NULL, "SEC_TDM_RX_0"},
16750 {"BE_OUT", NULL, "SEC_TDM_RX_1"},
16751 {"BE_OUT", NULL, "SEC_TDM_RX_2"},
16752 {"BE_OUT", NULL, "SEC_TDM_RX_3"},
16753 {"BE_OUT", NULL, "TERT_TDM_RX_0"},
16754 {"BE_OUT", NULL, "TERT_TDM_RX_1"},
16755 {"BE_OUT", NULL, "TERT_TDM_RX_2"},
16756 {"BE_OUT", NULL, "TERT_TDM_RX_3"},
16757 {"BE_OUT", NULL, "TERT_TDM_RX_4"},
16758 {"BE_OUT", NULL, "QUAT_TDM_RX_0"},
16759 {"BE_OUT", NULL, "QUAT_TDM_RX_1"},
16760 {"BE_OUT", NULL, "QUAT_TDM_RX_2"},
16761 {"BE_OUT", NULL, "QUAT_TDM_RX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016762 {"BE_OUT", NULL, "QUIN_TDM_RX_0"},
16763 {"BE_OUT", NULL, "QUIN_TDM_RX_1"},
16764 {"BE_OUT", NULL, "QUIN_TDM_RX_2"},
16765 {"BE_OUT", NULL, "QUIN_TDM_RX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016766
16767 {"PRI_I2S_TX", NULL, "BE_IN"},
16768 {"MI2S_TX", NULL, "BE_IN"},
16769 {"QUAT_MI2S_TX", NULL, "BE_IN"},
16770 {"QUIN_MI2S_TX", NULL, "BE_IN"},
16771 {"PRI_MI2S_TX", NULL, "BE_IN"},
16772 {"TERT_MI2S_TX", NULL, "BE_IN"},
Laxminath Kasam52697fe2017-11-29 15:44:14 +053016773 {"INT0_MI2S_TX", NULL, "BE_IN"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016774 {"INT2_MI2S_TX", NULL, "BE_IN"},
16775 {"INT3_MI2S_TX", NULL, "BE_IN"},
Laxminath Kasam52697fe2017-11-29 15:44:14 +053016776 {"INT4_MI2S_TX", NULL, "BE_IN"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016777 {"INT5_MI2S_TX", NULL, "BE_IN"},
16778 {"SEC_MI2S_TX", NULL, "BE_IN"},
16779 {"SENARY_MI2S_TX", NULL, "BE_IN" },
16780 {"SLIMBUS_0_TX", NULL, "BE_IN" },
16781 {"SLIMBUS_1_TX", NULL, "BE_IN" },
16782 {"SLIMBUS_3_TX", NULL, "BE_IN" },
16783 {"SLIMBUS_4_TX", NULL, "BE_IN" },
16784 {"SLIMBUS_5_TX", NULL, "BE_IN" },
16785 {"SLIMBUS_6_TX", NULL, "BE_IN" },
16786 {"SLIMBUS_7_TX", NULL, "BE_IN" },
16787 {"SLIMBUS_8_TX", NULL, "BE_IN" },
16788 {"USB_AUDIO_TX", NULL, "BE_IN" },
16789 {"INT_BT_SCO_TX", NULL, "BE_IN"},
16790 {"INT_FM_TX", NULL, "BE_IN"},
16791 {"PCM_TX", NULL, "BE_IN"},
16792 {"BE_OUT", NULL, "SLIMBUS_3_RX"},
16793 {"BE_OUT", NULL, "STUB_RX"},
16794 {"STUB_TX", NULL, "BE_IN"},
16795 {"STUB_1_TX", NULL, "BE_IN"},
16796 {"BE_OUT", NULL, "AUX_PCM_RX"},
16797 {"AUX_PCM_TX", NULL, "BE_IN"},
16798 {"SEC_AUX_PCM_TX", NULL, "BE_IN"},
16799 {"TERT_AUX_PCM_TX", NULL, "BE_IN"},
16800 {"QUAT_AUX_PCM_TX", NULL, "BE_IN"},
Rohit Kumara5077932017-09-10 22:05:05 +053016801 {"QUIN_AUX_PCM_TX", NULL, "BE_IN"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016802 {"INCALL_RECORD_TX", NULL, "BE_IN"},
16803 {"INCALL_RECORD_RX", NULL, "BE_IN"},
16804 {"SLIM0_RX_VI_FB_LCH_MUX", "SLIM4_TX", "SLIMBUS_4_TX"},
16805 {"SLIM0_RX_VI_FB_RCH_MUX", "SLIM4_TX", "SLIMBUS_4_TX"},
16806 {"PRI_MI2S_RX_VI_FB_MUX", "SENARY_TX", "SENARY_TX"},
16807 {"INT4_MI2S_RX_VI_FB_MONO_CH_MUX", "INT5_MI2S_TX", "INT5_MI2S_TX"},
16808 {"INT4_MI2S_RX_VI_FB_STEREO_CH_MUX", "INT5_MI2S_TX", "INT5_MI2S_TX"},
16809 {"SLIMBUS_0_RX", NULL, "SLIM0_RX_VI_FB_LCH_MUX"},
16810 {"SLIMBUS_0_RX", NULL, "SLIM0_RX_VI_FB_RCH_MUX"},
16811 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX_VI_FB_MUX"},
16812 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX_VI_FB_MONO_CH_MUX"},
16813 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX_VI_FB_STEREO_CH_MUX"},
16814 {"PRI_TDM_TX_0", NULL, "BE_IN"},
16815 {"PRI_TDM_TX_1", NULL, "BE_IN"},
16816 {"PRI_TDM_TX_2", NULL, "BE_IN"},
16817 {"PRI_TDM_TX_3", NULL, "BE_IN"},
16818 {"SEC_TDM_TX_0", NULL, "BE_IN"},
16819 {"SEC_TDM_TX_1", NULL, "BE_IN"},
16820 {"SEC_TDM_TX_2", NULL, "BE_IN"},
16821 {"SEC_TDM_TX_3", NULL, "BE_IN"},
16822 {"TERT_TDM_TX_0", NULL, "BE_IN"},
16823 {"TERT_TDM_TX_1", NULL, "BE_IN"},
16824 {"TERT_TDM_TX_2", NULL, "BE_IN"},
16825 {"TERT_TDM_TX_3", NULL, "BE_IN"},
16826 {"QUAT_TDM_TX_0", NULL, "BE_IN"},
16827 {"QUAT_TDM_TX_1", NULL, "BE_IN"},
16828 {"QUAT_TDM_TX_2", NULL, "BE_IN"},
16829 {"QUAT_TDM_TX_3", NULL, "BE_IN"},
Raja Mallik425e1d32018-05-20 19:21:10 +053016830 {"AFE_LOOPBACK_TX", NULL, "BE_IN"},
Rohit Kumara5077932017-09-10 22:05:05 +053016831 {"QUIN_TDM_TX_0", NULL, "BE_IN"},
16832 {"QUIN_TDM_TX_1", NULL, "BE_IN"},
16833 {"QUIN_TDM_TX_2", NULL, "BE_IN"},
16834 {"QUIN_TDM_TX_3", NULL, "BE_IN"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016835};
16836
16837static int msm_pcm_routing_hw_params(struct snd_pcm_substream *substream,
16838 struct snd_pcm_hw_params *params)
16839{
16840 struct snd_soc_pcm_runtime *rtd = substream->private_data;
16841 unsigned int be_id = rtd->dai_link->id;
16842
16843 if (be_id >= MSM_BACKEND_DAI_MAX) {
16844 pr_err("%s: unexpected BE id %d\n", __func__, be_id);
16845 return -EINVAL;
16846 }
16847
16848 mutex_lock(&routing_lock);
16849 msm_bedais[be_id].sample_rate = params_rate(params);
16850 msm_bedais[be_id].channel = params_channels(params);
16851 msm_bedais[be_id].format = params_format(params);
16852 pr_debug("%s: BE Sample Rate (%d) format (%d) BE id %d\n",
16853 __func__, msm_bedais[be_id].sample_rate,
16854 msm_bedais[be_id].format, be_id);
16855 mutex_unlock(&routing_lock);
16856 return 0;
16857}
16858
16859static int msm_pcm_routing_close(struct snd_pcm_substream *substream)
16860{
16861 struct snd_soc_pcm_runtime *rtd = substream->private_data;
16862 unsigned int be_id = rtd->dai_link->id;
16863 int i, session_type, path_type, topology;
16864 struct msm_pcm_routing_bdai_data *bedai;
16865 struct msm_pcm_routing_fdai_data *fdai;
16866
16867 pr_debug("%s: substream->pcm->id:%s\n",
16868 __func__, substream->pcm->id);
16869
16870 if (be_id >= MSM_BACKEND_DAI_MAX) {
16871 pr_err("%s: unexpected BE id %d\n", __func__, be_id);
16872 return -EINVAL;
16873 }
16874
16875 bedai = &msm_bedais[be_id];
16876 session_type = (substream->stream == SNDRV_PCM_STREAM_PLAYBACK ?
16877 0 : 1);
16878 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
16879 path_type = ADM_PATH_PLAYBACK;
16880 else
16881 path_type = ADM_PATH_LIVE_REC;
16882
16883 mutex_lock(&routing_lock);
16884 for_each_set_bit(i, &bedai->fe_sessions[0], MSM_FRONTEND_DAI_MAX) {
16885 if (!is_mm_lsm_fe_id(i))
16886 continue;
16887 fdai = &fe_dai_map[i][session_type];
16888 if (fdai->strm_id != INVALID_SESSION) {
16889 int idx;
16890 int port_id;
16891 unsigned long copp =
16892 session_copp_map[i][session_type][be_id];
16893 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++)
16894 if (test_bit(idx, &copp))
16895 break;
16896 fdai->be_srate = bedai->sample_rate;
16897 port_id = bedai->port_id;
16898 topology = adm_get_topology_for_port_copp_idx(port_id,
16899 idx);
16900 adm_close(bedai->port_id, fdai->perf_mode, idx);
16901 pr_debug("%s: copp:%ld,idx bit fe:%d, type:%d,be:%d topology=0x%x\n",
16902 __func__, copp, i, session_type, be_id,
16903 topology);
16904 clear_bit(idx,
16905 &session_copp_map[i][session_type][be_id]);
16906 if ((fdai->perf_mode == LEGACY_PCM_MODE) &&
16907 (bedai->passthr_mode[i] == LEGACY_PCM))
16908 msm_pcm_routing_deinit_pp(bedai->port_id,
16909 topology);
16910 }
16911 }
16912
16913 bedai->active = 0;
16914 bedai->sample_rate = 0;
16915 bedai->channel = 0;
16916 for (i = 0; i < MSM_FRONTEND_DAI_MAX; i++) {
16917 if (bedai->passthr_mode[i] != LISTEN)
16918 bedai->passthr_mode[i] = LEGACY_PCM;
16919 }
16920 mutex_unlock(&routing_lock);
16921
16922 return 0;
16923}
16924
16925static int msm_pcm_routing_prepare(struct snd_pcm_substream *substream)
16926{
16927 struct snd_soc_pcm_runtime *rtd = substream->private_data;
16928 unsigned int be_id = rtd->dai_link->id;
16929 int i, path_type, topology;
16930 int session_type = INVALID_SESSION;
16931 struct msm_pcm_routing_bdai_data *bedai;
16932 u32 channels, sample_rate;
16933 uint16_t bits_per_sample = 16, voc_path_type;
16934 struct msm_pcm_routing_fdai_data *fdai;
16935 u32 session_id;
16936 struct media_format_info voc_be_media_format;
16937 bool is_lsm;
16938
16939 pr_debug("%s: substream->pcm->id:%s\n",
16940 __func__, substream->pcm->id);
16941
16942 if (be_id >= MSM_BACKEND_DAI_MAX) {
16943 pr_err("%s: unexpected BE id %d\n", __func__, be_id);
16944 return -EINVAL;
16945 }
16946
16947 bedai = &msm_bedais[be_id];
16948
16949 mutex_lock(&routing_lock);
16950 if (bedai->active == 1)
16951 goto done; /* Ignore prepare if back-end already active */
16952
16953 /* AFE port is not active at this point. However, still
16954 * go ahead setting active flag under the notion that
16955 * QDSP6 is able to handle ADM starting before AFE port
16956 * is started.
16957 */
16958 bedai->active = 1;
16959
16960 for_each_set_bit(i, &bedai->fe_sessions[0], MSM_FRONTEND_DAI_MAX) {
16961 if (!(is_mm_lsm_fe_id(i) &&
16962 route_check_fe_id_adm_support(i)))
16963 continue;
16964
16965 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
16966 if (bedai->passthr_mode[i] != LEGACY_PCM)
16967 path_type = ADM_PATH_COMPRESSED_RX;
16968 else
16969 path_type = ADM_PATH_PLAYBACK;
16970 session_type = SESSION_TYPE_RX;
16971 } else {
16972 path_type = ADM_PATH_LIVE_REC;
16973 session_type = SESSION_TYPE_TX;
16974 }
16975
16976 is_lsm = (i >= MSM_FRONTEND_DAI_LSM1) &&
16977 (i <= MSM_FRONTEND_DAI_LSM8);
16978 fdai = &fe_dai_map[i][session_type];
16979 if (fdai->strm_id != INVALID_SESSION) {
16980 int app_type, app_type_idx, copp_idx, acdb_dev_id;
16981
16982 if (session_type == SESSION_TYPE_TX &&
16983 fdai->be_srate &&
16984 (fdai->be_srate != bedai->sample_rate)) {
16985 pr_debug("%s: flush strm %d diff BE rates\n",
16986 __func__,
16987 fdai->strm_id);
16988
16989 if (fdai->event_info.event_func)
16990 fdai->event_info.event_func(
16991 MSM_PCM_RT_EVT_BUF_RECFG,
16992 fdai->event_info.priv_data);
16993 fdai->be_srate = 0; /* might not need it */
16994 }
16995 bits_per_sample = msm_routing_get_bit_width(
16996 bedai->format);
16997
16998 app_type =
16999 fe_dai_app_type_cfg[i][session_type][be_id].app_type;
17000 if (app_type && is_lsm) {
17001 app_type_idx =
17002 msm_pcm_routing_get_lsm_app_type_idx(app_type);
17003 sample_rate =
17004 fe_dai_app_type_cfg[i][session_type][be_id]
17005 .sample_rate;
17006 bits_per_sample =
17007 lsm_app_type_cfg[app_type_idx].bit_width;
17008 } else if (app_type) {
17009 app_type_idx =
17010 msm_pcm_routing_get_app_type_idx(app_type);
17011 sample_rate =
17012 fe_dai_app_type_cfg[i][session_type]
17013 [be_id].sample_rate;
17014 bits_per_sample =
17015 app_type_cfg[app_type_idx].bit_width;
17016 } else
17017 sample_rate = bedai->sample_rate;
17018 /*
17019 * check if ADM needs to be configured with different
17020 * channel mapping than backend
17021 */
17022 if (!bedai->adm_override_ch)
17023 channels = bedai->channel;
17024 else
17025 channels = bedai->adm_override_ch;
17026 acdb_dev_id =
17027 fe_dai_app_type_cfg[i][session_type][be_id].acdb_dev_id;
17028 topology = msm_routing_get_adm_topology(i, session_type,
17029 be_id);
17030 copp_idx = adm_open(bedai->port_id, path_type,
17031 sample_rate, channels, topology,
17032 fdai->perf_mode, bits_per_sample,
17033 app_type, acdb_dev_id);
17034 if ((copp_idx < 0) ||
17035 (copp_idx >= MAX_COPPS_PER_PORT)) {
17036 pr_err("%s: adm open failed\n", __func__);
17037 mutex_unlock(&routing_lock);
17038 return -EINVAL;
17039 }
17040 pr_debug("%s: setting idx bit of fe:%d, type: %d, be:%d\n",
17041 __func__, i, session_type, be_id);
17042 set_bit(copp_idx,
17043 &session_copp_map[i][session_type][be_id]);
17044
17045 if (msm_is_resample_needed(
17046 sample_rate,
17047 bedai->sample_rate))
17048 adm_copp_mfc_cfg(
17049 bedai->port_id, copp_idx,
17050 bedai->sample_rate);
17051
17052 msm_pcm_routing_build_matrix(i, session_type, path_type,
17053 fdai->perf_mode,
17054 bedai->passthr_mode[i]);
17055 if ((fdai->perf_mode == LEGACY_PCM_MODE) &&
17056 (bedai->passthr_mode[i] == LEGACY_PCM))
17057 msm_pcm_routing_cfg_pp(bedai->port_id, copp_idx,
17058 topology, channels);
17059 }
17060 }
17061
17062 for_each_set_bit(i, &bedai->fe_sessions[0], MSM_FRONTEND_DAI_MAX) {
17063 session_id = msm_pcm_routing_get_voc_sessionid(i);
17064 if (session_id) {
17065 pr_debug("%s voice session_id: 0x%x\n", __func__,
17066 session_id);
17067
17068 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
17069 voc_path_type = RX_PATH;
17070 else
17071 voc_path_type = TX_PATH;
17072
17073 voc_set_route_flag(session_id, voc_path_type, 1);
17074
17075 memset(&voc_be_media_format, 0,
17076 sizeof(struct media_format_info));
17077
17078 voc_be_media_format.port_id = bedai->port_id;
17079 voc_be_media_format.num_channels = bedai->channel;
17080 voc_be_media_format.sample_rate = bedai->sample_rate;
17081 voc_be_media_format.bits_per_sample = bedai->format;
17082 /* Defaulting this to 1 for voice call usecases */
17083 voc_be_media_format.channel_mapping[0] = 1;
17084
17085 voc_set_device_config(session_id, voc_path_type,
17086 &voc_be_media_format);
17087
17088 if (voc_get_route_flag(session_id, RX_PATH) &&
17089 voc_get_route_flag(session_id, TX_PATH))
17090 voc_enable_device(session_id);
17091 }
17092 }
17093
17094 /* Check if backend is an external ec ref port and set as needed */
17095 if (unlikely(bedai->port_id == voc_get_ext_ec_ref_port_id())) {
17096
17097 memset(&voc_be_media_format, 0,
17098 sizeof(struct media_format_info));
17099
17100 /* Get format info for ec ref port from msm_bedais[] */
17101 voc_be_media_format.port_id = bedai->port_id;
17102 voc_be_media_format.num_channels = bedai->channel;
17103 voc_be_media_format.bits_per_sample = bedai->format;
17104 voc_be_media_format.sample_rate = bedai->sample_rate;
17105 /* Defaulting this to 1 for voice call usecases */
17106 voc_be_media_format.channel_mapping[0] = 1;
17107 voc_set_ext_ec_ref_media_fmt_info(&voc_be_media_format);
17108 pr_debug("%s: EC Ref media format info set to port_id=%d, num_channels=%d, bits_per_sample=%d, sample_rate=%d\n",
17109 __func__, voc_be_media_format.port_id,
17110 voc_be_media_format.num_channels,
17111 voc_be_media_format.bits_per_sample,
17112 voc_be_media_format.sample_rate);
17113 }
17114
17115done:
17116 mutex_unlock(&routing_lock);
17117
17118 return 0;
17119}
17120
17121static int msm_routing_send_device_pp_params(int port_id, int copp_idx,
17122 int fe_id)
17123{
17124 int index, topo_id, be_idx;
17125 unsigned long pp_config = 0;
17126 bool mute_on;
17127 int latency;
17128 bool compr_passthr_mode = true;
17129
17130 pr_debug("%s: port_id %d, copp_idx %d\n", __func__, port_id, copp_idx);
17131
17132 if (port_id != HDMI_RX && port_id != DISPLAY_PORT_RX) {
17133 pr_err("%s: Device pp params on invalid port %d\n",
17134 __func__, port_id);
17135 return -EINVAL;
17136 }
17137
17138 for (be_idx = 0; be_idx < MSM_BACKEND_DAI_MAX; be_idx++) {
17139 if (port_id == msm_bedais[be_idx].port_id)
17140 break;
17141 }
17142
17143 if (be_idx >= MSM_BACKEND_DAI_MAX) {
17144 pr_debug("%s: Invalid be id %d\n", __func__, be_idx);
17145 return -EINVAL;
17146 }
17147
17148 for (index = 0; index < MSM_BACKEND_DAI_PP_PARAMS_REQ_MAX; index++) {
17149 if (msm_bedais_pp_params[index].port_id == port_id)
17150 break;
17151 }
17152 if (index >= MSM_BACKEND_DAI_PP_PARAMS_REQ_MAX) {
17153 pr_err("%s: Invalid backend pp params index %d\n",
17154 __func__, index);
17155 return -EINVAL;
17156 }
17157
17158 topo_id = adm_get_topology_for_port_copp_idx(port_id, copp_idx);
17159 if (topo_id != COMPRESSED_PASSTHROUGH_DEFAULT_TOPOLOGY) {
17160 pr_err("%s: Invalid passthrough topology 0x%x\n",
17161 __func__, topo_id);
17162 return -EINVAL;
17163 }
17164
17165 if ((msm_bedais[be_idx].passthr_mode[fe_id] == LEGACY_PCM) ||
17166 (msm_bedais[be_idx].passthr_mode[fe_id] == LISTEN))
17167 compr_passthr_mode = false;
17168
17169 pp_config = msm_bedais_pp_params[index].pp_params_config;
17170 if (test_bit(ADM_PP_PARAM_MUTE_BIT, &pp_config)) {
17171 pr_debug("%s: ADM_PP_PARAM_MUTE\n", __func__);
17172 clear_bit(ADM_PP_PARAM_MUTE_BIT, &pp_config);
17173 mute_on = msm_bedais_pp_params[index].mute_on;
17174 if ((msm_bedais[be_idx].active) && compr_passthr_mode)
17175 adm_send_compressed_device_mute(port_id,
17176 copp_idx,
17177 mute_on);
17178 }
17179 if (test_bit(ADM_PP_PARAM_LATENCY_BIT, &pp_config)) {
17180 pr_debug("%s: ADM_PP_PARAM_LATENCY\n", __func__);
17181 clear_bit(ADM_PP_PARAM_LATENCY_BIT,
17182 &pp_config);
17183 latency = msm_bedais_pp_params[index].latency;
17184 if ((msm_bedais[be_idx].active) && compr_passthr_mode)
17185 adm_send_compressed_device_latency(port_id,
17186 copp_idx,
17187 latency);
17188 }
17189 return 0;
17190}
17191
17192static int msm_routing_put_device_pp_params_mixer(struct snd_kcontrol *kcontrol,
17193 struct snd_ctl_elem_value *ucontrol)
17194{
17195 int pp_id = ucontrol->value.integer.value[0];
17196 int port_id = 0;
17197 int index, be_idx, i, topo_id, idx;
17198 bool mute;
17199 int latency;
17200 bool compr_passthr_mode = true;
17201
17202 pr_debug("%s: pp_id: 0x%x\n", __func__, pp_id);
17203
17204 for (be_idx = 0; be_idx < MSM_BACKEND_DAI_MAX; be_idx++) {
17205 port_id = msm_bedais[be_idx].port_id;
17206 if (port_id == HDMI_RX || port_id == DISPLAY_PORT_RX)
17207 break;
17208 }
17209
17210 if (be_idx >= MSM_BACKEND_DAI_MAX) {
17211 pr_debug("%s: Invalid be id %d\n", __func__, be_idx);
17212 return -EINVAL;
17213 }
17214
17215 for (index = 0; index < MSM_BACKEND_DAI_PP_PARAMS_REQ_MAX; index++) {
17216 if (msm_bedais_pp_params[index].port_id == port_id)
17217 break;
17218 }
17219 if (index >= MSM_BACKEND_DAI_PP_PARAMS_REQ_MAX) {
17220 pr_err("%s: Invalid pp params backend index %d\n",
17221 __func__, index);
17222 return -EINVAL;
17223 }
17224
17225 for_each_set_bit(i, &msm_bedais[be_idx].fe_sessions[0],
17226 MSM_FRONTEND_DAI_MM_SIZE) {
17227 if ((msm_bedais[be_idx].passthr_mode[i] == LEGACY_PCM) ||
17228 (msm_bedais[be_idx].passthr_mode[i] == LISTEN))
17229 compr_passthr_mode = false;
17230
17231 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++) {
17232 unsigned long copp =
17233 session_copp_map[i]
17234 [SESSION_TYPE_RX][be_idx];
17235 if (!test_bit(idx, &copp))
17236 continue;
17237 topo_id = adm_get_topology_for_port_copp_idx(port_id,
17238 idx);
17239 if (topo_id != COMPRESSED_PASSTHROUGH_DEFAULT_TOPOLOGY)
17240 continue;
17241 pr_debug("%s: port: 0x%x, copp %ld, be active: %d, passt: %d\n",
17242 __func__, port_id, copp, msm_bedais[be_idx].active,
17243 msm_bedais[be_idx].passthr_mode[i]);
17244 switch (pp_id) {
17245 case ADM_PP_PARAM_MUTE_ID:
17246 pr_debug("%s: ADM_PP_PARAM_MUTE\n", __func__);
17247 mute = ucontrol->value.integer.value[1] ? true : false;
17248 msm_bedais_pp_params[index].mute_on = mute;
17249 set_bit(ADM_PP_PARAM_MUTE_BIT,
17250 &msm_bedais_pp_params[index].pp_params_config);
17251 if ((msm_bedais[be_idx].active) && compr_passthr_mode)
17252 adm_send_compressed_device_mute(port_id,
17253 idx, mute);
17254 break;
17255 case ADM_PP_PARAM_LATENCY_ID:
17256 pr_debug("%s: ADM_PP_PARAM_LATENCY\n", __func__);
17257 msm_bedais_pp_params[index].latency =
17258 ucontrol->value.integer.value[1];
17259 set_bit(ADM_PP_PARAM_LATENCY_BIT,
17260 &msm_bedais_pp_params[index].pp_params_config);
17261 latency = msm_bedais_pp_params[index].latency =
17262 ucontrol->value.integer.value[1];
17263 if ((msm_bedais[be_idx].active) && compr_passthr_mode)
17264 adm_send_compressed_device_latency(port_id,
17265 idx, latency);
17266 break;
17267 default:
17268 pr_info("%s, device pp param %d not supported\n",
17269 __func__, pp_id);
17270 break;
17271 }
17272 }
17273 }
17274 return 0;
17275}
17276
17277static int msm_routing_get_device_pp_params_mixer(struct snd_kcontrol *kcontrol,
17278 struct snd_ctl_elem_value *ucontrol)
17279{
17280 pr_debug("%s:msm_routing_get_device_pp_params_mixer", __func__);
17281 return 0;
17282}
17283
17284static const struct snd_kcontrol_new device_pp_params_mixer_controls[] = {
17285 SOC_SINGLE_MULTI_EXT("Device PP Params", SND_SOC_NOPM, 0, 0xFFFFFFFF,
17286 0, 3, msm_routing_get_device_pp_params_mixer,
17287 msm_routing_put_device_pp_params_mixer),
17288};
17289
17290static int msm_aptx_dec_license_control_get(struct snd_kcontrol *kcontrol,
17291 struct snd_ctl_elem_value *ucontrol)
17292{
17293 ucontrol->value.integer.value[0] =
17294 core_get_license_status(ASM_MEDIA_FMT_APTX);
17295 pr_debug("%s: status %ld\n", __func__,
17296 ucontrol->value.integer.value[0]);
17297 return 0;
17298}
17299
17300static int msm_aptx_dec_license_control_put(struct snd_kcontrol *kcontrol,
17301 struct snd_ctl_elem_value *ucontrol)
17302{
17303 int32_t status = 0;
17304
17305 status = core_set_license(ucontrol->value.integer.value[0],
17306 APTX_CLASSIC_DEC_LICENSE_ID);
17307 pr_debug("%s: status %d\n", __func__, status);
17308 return status;
17309}
17310
17311static const struct snd_kcontrol_new aptx_dec_license_controls[] = {
17312 SOC_SINGLE_EXT("APTX Dec License", SND_SOC_NOPM, 0,
17313 0xFFFF, 0, msm_aptx_dec_license_control_get,
17314 msm_aptx_dec_license_control_put),
17315};
17316
17317static int msm_routing_be_dai_name_table_info(struct snd_kcontrol *kcontrol,
17318 struct snd_ctl_elem_info *uinfo)
17319{
17320 uinfo->type = SNDRV_CTL_ELEM_TYPE_BYTES;
17321 uinfo->count = sizeof(be_dai_name_table);
17322 return 0;
17323}
17324
17325static int msm_routing_be_dai_name_table_tlv_get(struct snd_kcontrol *kcontrol,
17326 unsigned int __user *bytes,
17327 unsigned int size)
17328{
17329 int i;
17330 int ret;
17331
17332 if (size < sizeof(be_dai_name_table)) {
17333 pr_err("%s: invalid size %d requested, returning\n",
17334 __func__, size);
17335 ret = -EINVAL;
17336 goto done;
17337 }
17338
17339 /*
17340 * Fill be_dai_name_table from msm_bedais table to reduce code changes
17341 * needed when adding new backends
17342 */
17343 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
17344 be_dai_name_table[i].be_id = i;
17345 strlcpy(be_dai_name_table[i].be_name,
17346 msm_bedais[i].name,
17347 LPASS_BE_NAME_MAX_LENGTH);
17348 }
17349
17350 ret = copy_to_user(bytes, &be_dai_name_table,
17351 sizeof(be_dai_name_table));
17352 if (ret) {
17353 pr_err("%s: failed to copy be_dai_name_table\n", __func__);
17354 ret = -EFAULT;
17355 }
17356
17357done:
17358 return ret;
17359}
17360
17361static const struct snd_kcontrol_new
17362 msm_routing_be_dai_name_table_mixer_controls[] = {
17363 {
17364 .access = SNDRV_CTL_ELEM_ACCESS_TLV_READ |
17365 SNDRV_CTL_ELEM_ACCESS_TLV_CALLBACK,
17366 .info = msm_routing_be_dai_name_table_info,
17367 .name = "Backend DAI Name Table",
17368 .tlv.c = snd_soc_bytes_tlv_callback,
17369 .private_value = (unsigned long) &(struct soc_bytes_ext) {
17370 .max = sizeof(be_dai_name_table),
17371 .get = msm_routing_be_dai_name_table_tlv_get,
17372 }
17373 },
17374};
17375
17376static int msm_routing_stereo_channel_reverse_control_get(
17377 struct snd_kcontrol *kcontrol,
17378 struct snd_ctl_elem_value *ucontrol)
17379{
17380 ucontrol->value.integer.value[0] = swap_ch;
17381 pr_debug("%s: Swap channel value: %ld\n", __func__,
17382 ucontrol->value.integer.value[0]);
17383 return 0;
17384}
17385
17386static int msm_routing_stereo_channel_reverse_control_put(
17387 struct snd_kcontrol *kcontrol,
17388 struct snd_ctl_elem_value *ucontrol)
17389{
17390 int i, idx, be_index, port_id;
17391 int ret = 0;
17392 unsigned long copp;
17393
17394 pr_debug("%s Swap channel value:%ld\n", __func__,
17395 ucontrol->value.integer.value[0]);
17396
17397 swap_ch = ucontrol->value.integer.value[0];
17398
17399 mutex_lock(&routing_lock);
17400 for (be_index = 0; be_index < MSM_BACKEND_DAI_MAX; be_index++) {
17401 port_id = msm_bedais[be_index].port_id;
17402 if (!msm_bedais[be_index].active)
17403 continue;
17404
17405 for_each_set_bit(i, &msm_bedais[be_index].fe_sessions[0],
17406 MSM_FRONTEND_DAI_MM_SIZE) {
17407 copp = session_copp_map[i][SESSION_TYPE_RX][be_index];
17408 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++) {
17409 if (!test_bit(idx, &copp))
17410 continue;
17411
17412 pr_debug("%s: swap channel control of portid:%d, coppid:%d\n",
17413 __func__, port_id, idx);
17414 ret = adm_swap_speaker_channels(
17415 port_id, idx,
17416 msm_bedais[be_index].sample_rate,
17417 swap_ch);
17418 if (ret) {
17419 pr_err("%s:Swap_channel failed, err=%d\n",
17420 __func__, ret);
17421 goto done;
17422 }
17423 }
17424 }
17425 }
17426done:
17427 mutex_unlock(&routing_lock);
17428 return ret;
17429}
17430
17431static const struct snd_kcontrol_new stereo_channel_reverse_control[] = {
17432 SOC_SINGLE_EXT("Swap channel", SND_SOC_NOPM, 0,
17433 1, 0, msm_routing_stereo_channel_reverse_control_get,
17434 msm_routing_stereo_channel_reverse_control_put),
17435};
17436
17437static const struct snd_pcm_ops msm_routing_pcm_ops = {
17438 .hw_params = msm_pcm_routing_hw_params,
17439 .close = msm_pcm_routing_close,
17440 .prepare = msm_pcm_routing_prepare,
17441};
17442
17443/* Not used but frame seems to require it */
17444static int msm_routing_probe(struct snd_soc_platform *platform)
17445{
17446 snd_soc_dapm_new_controls(&platform->component.dapm, msm_qdsp6_widgets,
17447 ARRAY_SIZE(msm_qdsp6_widgets));
17448 snd_soc_dapm_add_routes(&platform->component.dapm, intercon,
17449 ARRAY_SIZE(intercon));
17450
17451 snd_soc_dapm_new_widgets(platform->component.dapm.card);
17452
17453 snd_soc_add_platform_controls(platform, lsm_controls,
17454 ARRAY_SIZE(lsm_controls));
17455
17456 snd_soc_add_platform_controls(platform, aanc_slim_0_rx_mux,
17457 ARRAY_SIZE(aanc_slim_0_rx_mux));
17458
17459 snd_soc_add_platform_controls(platform, msm_voc_session_controls,
17460 ARRAY_SIZE(msm_voc_session_controls));
17461
17462 snd_soc_add_platform_controls(platform, app_type_cfg_controls,
17463 ARRAY_SIZE(app_type_cfg_controls));
17464
17465 snd_soc_add_platform_controls(platform, lsm_app_type_cfg_controls,
17466 ARRAY_SIZE(lsm_app_type_cfg_controls));
17467
Vikram Pandurangaee9c03a2017-09-07 15:06:17 -070017468 snd_soc_add_platform_controls(platform, module_cfg_controls,
17469 ARRAY_SIZE(module_cfg_controls));
17470
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017471 snd_soc_add_platform_controls(platform,
17472 stereo_to_custom_stereo_controls,
17473 ARRAY_SIZE(stereo_to_custom_stereo_controls));
17474
17475 snd_soc_add_platform_controls(platform, ec_ref_param_controls,
17476 ARRAY_SIZE(ec_ref_param_controls));
17477
17478 snd_soc_add_platform_controls(platform, channel_mixer_controls,
17479 ARRAY_SIZE(channel_mixer_controls));
17480
17481 msm_qti_pp_add_controls(platform);
17482
17483 msm_dts_srs_tm_add_controls(platform);
17484
17485 msm_dolby_dap_add_controls(platform);
17486
17487 snd_soc_add_platform_controls(platform,
17488 use_ds1_or_ds2_controls,
17489 ARRAY_SIZE(use_ds1_or_ds2_controls));
17490
17491 snd_soc_add_platform_controls(platform,
17492 device_pp_params_mixer_controls,
17493 ARRAY_SIZE(device_pp_params_mixer_controls));
17494
17495 snd_soc_add_platform_controls(platform,
17496 msm_routing_be_dai_name_table_mixer_controls,
17497 ARRAY_SIZE(msm_routing_be_dai_name_table_mixer_controls));
17498
17499 snd_soc_add_platform_controls(platform, msm_source_tracking_controls,
17500 ARRAY_SIZE(msm_source_tracking_controls));
17501 snd_soc_add_platform_controls(platform, adm_channel_config_controls,
17502 ARRAY_SIZE(adm_channel_config_controls));
17503
17504 snd_soc_add_platform_controls(platform, aptx_dec_license_controls,
17505 ARRAY_SIZE(aptx_dec_license_controls));
17506 snd_soc_add_platform_controls(platform, stereo_channel_reverse_control,
17507 ARRAY_SIZE(stereo_channel_reverse_control));
17508 return 0;
17509}
17510
17511int msm_routing_pcm_new(struct snd_soc_pcm_runtime *runtime)
17512{
17513 return msm_pcm_routing_hwdep_new(runtime, msm_bedais);
17514}
17515
17516void msm_routing_pcm_free(struct snd_pcm *pcm)
17517{
17518 msm_pcm_routing_hwdep_free(pcm);
17519}
17520
17521static struct snd_soc_platform_driver msm_soc_routing_platform = {
17522 .ops = &msm_routing_pcm_ops,
17523 .probe = msm_routing_probe,
17524 .pcm_new = msm_routing_pcm_new,
17525 .pcm_free = msm_routing_pcm_free,
17526};
17527
17528static int msm_routing_pcm_probe(struct platform_device *pdev)
17529{
17530
17531 dev_dbg(&pdev->dev, "dev name %s\n", dev_name(&pdev->dev));
17532 return snd_soc_register_platform(&pdev->dev,
17533 &msm_soc_routing_platform);
17534}
17535
17536static int msm_routing_pcm_remove(struct platform_device *pdev)
17537{
17538 snd_soc_unregister_platform(&pdev->dev);
17539 return 0;
17540}
17541
17542static const struct of_device_id msm_pcm_routing_dt_match[] = {
17543 {.compatible = "qcom,msm-pcm-routing"},
17544 {}
17545};
17546MODULE_DEVICE_TABLE(of, msm_pcm_routing_dt_match);
17547
17548static struct platform_driver msm_routing_pcm_driver = {
17549 .driver = {
17550 .name = "msm-pcm-routing",
17551 .owner = THIS_MODULE,
17552 .of_match_table = msm_pcm_routing_dt_match,
17553 },
17554 .probe = msm_routing_pcm_probe,
17555 .remove = msm_routing_pcm_remove,
17556};
17557
17558int msm_routing_check_backend_enabled(int fedai_id)
17559{
17560 int i;
17561
17562 if (fedai_id > MSM_FRONTEND_DAI_MM_MAX_ID) {
17563 /* bad ID assigned in machine driver */
17564 pr_err("%s: bad MM ID\n", __func__);
17565 return 0;
17566 }
17567 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
17568 if (test_bit(fedai_id, &msm_bedais[i].fe_sessions[0]))
17569 return msm_bedais[i].active;
17570 }
17571 return 0;
17572}
17573
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053017574static int get_cal_type_index(int32_t cal_type)
17575{
17576 int ret = -EINVAL;
17577
17578 switch (cal_type) {
17579 case ADM_TOPOLOGY_CAL_TYPE:
17580 ret = ADM_TOPOLOGY_CAL_TYPE_IDX;
17581 break;
17582 case ADM_LSM_TOPOLOGY_CAL_TYPE:
17583 ret = ADM_LSM_TOPOLOGY_CAL_TYPE_IDX;
17584 break;
17585 default:
17586 pr_err("%s: Invalid cal type %d\n", __func__, cal_type);
17587 }
17588 return ret;
17589}
17590
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017591static int msm_routing_set_cal(int32_t cal_type,
17592 size_t data_size, void *data)
17593{
17594 int ret = 0;
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053017595 int cal_index;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017596 pr_debug("%s\n", __func__);
17597
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053017598 cal_index = get_cal_type_index(cal_type);
17599 if (cal_index < 0) {
17600 pr_err("%s: Could not get cal index %d\n",
17601 __func__, cal_index);
17602 ret = -EINVAL;
17603 goto done;
17604 }
17605
17606 ret = cal_utils_set_cal(data_size, data, cal_data[cal_index], 0, NULL);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017607 if (ret < 0) {
17608 pr_err("%s: cal_utils_set_cal failed, ret = %d, cal type = %d!\n",
17609 __func__, ret, cal_type);
17610 ret = -EINVAL;
17611 goto done;
17612 }
17613done:
17614 return ret;
17615}
17616
17617static void msm_routing_delete_cal_data(void)
17618{
17619 pr_debug("%s\n", __func__);
17620
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053017621 cal_utils_destroy_cal_types(MAX_ROUTING_CAL_TYPES, &cal_data[0]);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017622}
17623
17624static int msm_routing_init_cal_data(void)
17625{
17626 int ret = 0;
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053017627 struct cal_type_info cal_type_info[] = {
17628 {{ADM_TOPOLOGY_CAL_TYPE,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017629 {NULL, NULL, NULL,
17630 msm_routing_set_cal, NULL, NULL} },
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053017631 {NULL, NULL, cal_utils_match_buf_num} },
17632
17633 {{ADM_LSM_TOPOLOGY_CAL_TYPE,
17634 {NULL, NULL, NULL,
17635 msm_routing_set_cal, NULL, NULL} },
17636 {NULL, NULL, cal_utils_match_buf_num} },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017637 };
17638 pr_debug("%s\n", __func__);
17639
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053017640 ret = cal_utils_create_cal_types(MAX_ROUTING_CAL_TYPES, &cal_data[0],
17641 &cal_type_info[0]);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017642 if (ret < 0) {
17643 pr_err("%s: could not create cal type!\n",
17644 __func__);
17645 ret = -EINVAL;
17646 goto err;
17647 }
17648
17649 return ret;
17650err:
17651 msm_routing_delete_cal_data();
17652 return ret;
17653}
17654
Laxminath Kasam8b1366a2017-10-05 01:44:16 +053017655int __init msm_soc_routing_platform_init(void)
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017656{
17657 mutex_init(&routing_lock);
17658 if (msm_routing_init_cal_data())
17659 pr_err("%s: could not init cal data!\n", __func__);
17660
17661 afe_set_routing_callback(
17662 (routing_cb)msm_pcm_get_dev_acdb_id_by_port_id);
17663
17664 memset(&be_dai_name_table, 0, sizeof(be_dai_name_table));
17665 memset(&last_be_id_configured, 0, sizeof(last_be_id_configured));
17666
17667 return platform_driver_register(&msm_routing_pcm_driver);
17668}
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017669
Asish Bhattacharya5faacb32017-12-04 17:23:15 +053017670void msm_soc_routing_platform_exit(void)
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017671{
17672 msm_routing_delete_cal_data();
17673 memset(&be_dai_name_table, 0, sizeof(be_dai_name_table));
17674 mutex_destroy(&routing_lock);
17675 platform_driver_unregister(&msm_routing_pcm_driver);
17676}
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017677
17678MODULE_DESCRIPTION("MSM routing platform driver");
17679MODULE_LICENSE("GPL v2");