blob: 417cbc06ce617707f2ec4b203019d416bdf480c6 [file] [log] [blame]
Rohit kumar4ea92b12019-02-01 18:05:33 +05301/* Copyright (c) 2012-2019, 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;
Aniket Kumar Lataf8664712018-02-22 14:46:09 -080064static int a2dp_switch_enable;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053065static int int0_mi2s_switch_enable;
66static int int4_mi2s_switch_enable;
67static int pri_mi2s_switch_enable;
68static int sec_mi2s_switch_enable;
69static int tert_mi2s_switch_enable;
70static int quat_mi2s_switch_enable;
Rohit Kumara5077932017-09-10 22:05:05 +053071static int quin_mi2s_switch_enable;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053072static int fm_pcmrx_switch_enable;
73static int usb_switch_enable;
74static int lsm_port_index;
75static int slim0_rx_aanc_fb_port;
76static int msm_route_ec_ref_rx;
77static int msm_ec_ref_ch = 4;
78static int msm_ec_ref_bit_format = SNDRV_PCM_FORMAT_S16_LE;
79static int msm_ec_ref_sampling_rate = 48000;
80static uint32_t voc_session_id = ALL_SESSION_VSID;
81static int msm_route_ext_ec_ref;
82static bool is_custom_stereo_on;
83static bool is_ds2_on;
84static bool swap_ch;
Sachin Mohan Gadag3c3c5812018-07-20 15:46:54 +053085static int msm_ec_ref_port_id;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053086
87#define WEIGHT_0_DB 0x4000
88/* all the FEs which can support channel mixer */
89static struct msm_pcm_channel_mixer channel_mixer[MSM_FRONTEND_DAI_MM_SIZE];
90/* input BE for each FE */
91static int channel_input[MSM_FRONTEND_DAI_MM_SIZE][ADM_MAX_CHANNELS];
92
93enum {
94 MADNONE,
95 MADAUDIO,
96 MADBEACON,
97 MADULTRASOUND,
98 MADSWAUDIO,
99};
100
101#define ADM_LSM_PORT_INDEX 9
102
103#define SLIMBUS_0_TX_TEXT "SLIMBUS_0_TX"
104#define SLIMBUS_1_TX_TEXT "SLIMBUS_1_TX"
105#define SLIMBUS_2_TX_TEXT "SLIMBUS_2_TX"
106#define SLIMBUS_3_TX_TEXT "SLIMBUS_3_TX"
107#define SLIMBUS_4_TX_TEXT "SLIMBUS_4_TX"
108#define SLIMBUS_5_TX_TEXT "SLIMBUS_5_TX"
109#define TERT_MI2S_TX_TEXT "TERT_MI2S_TX"
110#define QUAT_MI2S_TX_TEXT "QUAT_MI2S_TX"
Ashish Jain01b10322018-05-12 15:37:44 +0530111#define PRI_TDM_TX_3_TEXT "PRI_TDM_TX_3"
112#define PRI_TDM_TX_2_TEXT "PRI_TDM_TX_2"
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530113#define ADM_LSM_TX_TEXT "ADM_LSM_TX"
114#define INT3_MI2S_TX_TEXT "INT3_MI2S_TX"
115
116#define LSM_FUNCTION_TEXT "LSM Function"
117static const char * const lsm_port_text[] = {
118 "None",
119 SLIMBUS_0_TX_TEXT, SLIMBUS_1_TX_TEXT, SLIMBUS_2_TX_TEXT,
120 SLIMBUS_3_TX_TEXT, SLIMBUS_4_TX_TEXT, SLIMBUS_5_TX_TEXT,
121 TERT_MI2S_TX_TEXT, QUAT_MI2S_TX_TEXT, ADM_LSM_TX_TEXT,
Ashish Jain01b10322018-05-12 15:37:44 +0530122 INT3_MI2S_TX_TEXT, PRI_TDM_TX_2_TEXT, PRI_TDM_TX_3_TEXT,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530123};
124
125struct msm_pcm_route_bdai_pp_params {
126 u16 port_id; /* AFE port ID */
127 unsigned long pp_params_config;
128 bool mute_on;
129 int latency;
130};
131
132static struct msm_pcm_route_bdai_pp_params
133 msm_bedais_pp_params[MSM_BACKEND_DAI_PP_PARAMS_REQ_MAX] = {
134 {HDMI_RX, 0, 0, 0},
135 {DISPLAY_PORT_RX, 0, 0, 0},
136};
137
138/*
139 * The be_dai_name_table is passed to HAL so that it can specify the
140 * BE ID for the BE it wants to enable based on the name. Thus there
141 * is a matching table and structure in HAL that need to be updated
142 * if any changes to these are made.
143 */
144struct msm_pcm_route_bdai_name {
145 unsigned int be_id;
146 char be_name[LPASS_BE_NAME_MAX_LENGTH];
147};
148static struct msm_pcm_route_bdai_name be_dai_name_table[MSM_BACKEND_DAI_MAX];
149
150static int msm_routing_send_device_pp_params(int port_id, int copp_idx,
151 int fe_id);
152
153static int msm_routing_get_bit_width(unsigned int format)
154{
155 int bit_width;
156
157 switch (format) {
158 case SNDRV_PCM_FORMAT_S32_LE:
159 bit_width = 32;
160 break;
161 case SNDRV_PCM_FORMAT_S24_LE:
162 case SNDRV_PCM_FORMAT_S24_3LE:
163 bit_width = 24;
164 break;
165 case SNDRV_PCM_FORMAT_S16_LE:
166 default:
167 bit_width = 16;
168 }
169 return bit_width;
170}
171
172static bool msm_is_resample_needed(int input_sr, int output_sr)
173{
174 bool rc = false;
175
176 if (input_sr != output_sr)
177 rc = true;
178
179 pr_debug("perform resampling (%s) for copp rate (%d)afe rate (%d)",
180 (rc ? "oh yes" : "not really"),
181 input_sr, output_sr);
182
183 return rc;
184}
185
186static void msm_pcm_routing_cfg_pp(int port_id, int copp_idx, int topology,
187 int channels)
188{
189 int rc = 0;
190
191 switch (topology) {
192 case SRS_TRUMEDIA_TOPOLOGY_ID:
193 pr_debug("%s: SRS_TRUMEDIA_TOPOLOGY_ID\n", __func__);
194 msm_dts_srs_tm_init(port_id, copp_idx);
195 break;
196 case DS2_ADM_COPP_TOPOLOGY_ID:
197 pr_debug("%s: DS2_ADM_COPP_TOPOLOGY %d\n",
198 __func__, DS2_ADM_COPP_TOPOLOGY_ID);
199 rc = msm_ds2_dap_init(port_id, copp_idx, channels,
200 is_custom_stereo_on);
201 if (rc < 0)
202 pr_err("%s: DS2 topo_id 0x%x, port %d, CS %d rc %d\n",
203 __func__, topology, port_id,
204 is_custom_stereo_on, rc);
205 break;
206 case DOLBY_ADM_COPP_TOPOLOGY_ID:
207 if (is_ds2_on) {
208 pr_debug("%s: DS2_ADM_COPP_TOPOLOGY\n", __func__);
209 rc = msm_ds2_dap_init(port_id, copp_idx, channels,
210 is_custom_stereo_on);
211 if (rc < 0)
212 pr_err("%s:DS2 topo_id 0x%x, port %d, rc %d\n",
213 __func__, topology, port_id, rc);
214 } else {
215 pr_debug("%s: DOLBY_ADM_COPP_TOPOLOGY_ID\n", __func__);
216 rc = msm_dolby_dap_init(port_id, copp_idx, channels,
217 is_custom_stereo_on);
218 if (rc < 0)
219 pr_err("%s: DS1 topo_id 0x%x, port %d, rc %d\n",
220 __func__, topology, port_id, rc);
221 }
222 break;
223 case ADM_CMD_COPP_OPEN_TOPOLOGY_ID_AUDIOSPHERE:
224 pr_debug("%s: TOPOLOGY_ID_AUDIOSPHERE\n", __func__);
225 rc = msm_qti_pp_asphere_init(port_id, copp_idx);
226 if (rc < 0)
227 pr_err("%s: topo_id 0x%x, port %d, copp %d, rc %d\n",
228 __func__, topology, port_id, copp_idx, rc);
229 break;
230 default:
231 /* custom topology specific feature param handlers */
232 break;
233 }
234}
235
236static void msm_pcm_routing_deinit_pp(int port_id, int topology)
237{
238 switch (topology) {
239 case SRS_TRUMEDIA_TOPOLOGY_ID:
240 pr_debug("%s: SRS_TRUMEDIA_TOPOLOGY_ID\n", __func__);
241 msm_dts_srs_tm_deinit(port_id);
242 break;
243 case DS2_ADM_COPP_TOPOLOGY_ID:
244 pr_debug("%s: DS2_ADM_COPP_TOPOLOGY_ID %d\n",
245 __func__, DS2_ADM_COPP_TOPOLOGY_ID);
246 msm_ds2_dap_deinit(port_id);
247 break;
248 case DOLBY_ADM_COPP_TOPOLOGY_ID:
249 if (is_ds2_on) {
250 pr_debug("%s: DS2_ADM_COPP_TOPOLOGY_ID\n", __func__);
251 msm_ds2_dap_deinit(port_id);
252 } else {
253 pr_debug("%s: DOLBY_ADM_COPP_TOPOLOGY_ID\n", __func__);
254 msm_dolby_dap_deinit(port_id);
255 }
256 break;
257 case ADM_CMD_COPP_OPEN_TOPOLOGY_ID_AUDIOSPHERE:
258 pr_debug("%s: TOPOLOGY_ID_AUDIOSPHERE\n", __func__);
259 msm_qti_pp_asphere_deinit(port_id);
260 break;
261 default:
262 /* custom topology specific feature deinit handlers */
263 break;
264 }
265}
266
267static void msm_pcm_routng_cfg_matrix_map_pp(struct route_payload payload,
268 int path_type, int perf_mode)
269{
270 int itr = 0, rc = 0;
271
272 if ((path_type == ADM_PATH_PLAYBACK) &&
273 (perf_mode == LEGACY_PCM_MODE) &&
274 is_custom_stereo_on) {
275 for (itr = 0; itr < payload.num_copps; itr++) {
276 if ((payload.port_id[itr] != SLIMBUS_0_RX) &&
277 (payload.port_id[itr] != RT_PROXY_PORT_001_RX)) {
278 continue;
279 }
280
281 rc = msm_qti_pp_send_stereo_to_custom_stereo_cmd(
282 payload.port_id[itr],
283 payload.copp_idx[itr],
284 payload.session_id,
285 Q14_GAIN_ZERO_POINT_FIVE,
286 Q14_GAIN_ZERO_POINT_FIVE,
287 Q14_GAIN_ZERO_POINT_FIVE,
288 Q14_GAIN_ZERO_POINT_FIVE);
289 if (rc < 0)
290 pr_err("%s: err setting custom stereo\n",
291 __func__);
292 }
293 }
294}
295
296#define SLIMBUS_EXTPROC_RX AFE_PORT_INVALID
297struct msm_pcm_routing_bdai_data msm_bedais[MSM_BACKEND_DAI_MAX] = {
298 { PRIMARY_I2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_PRI_I2S_RX},
299 { PRIMARY_I2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_PRI_I2S_TX},
300 { SLIMBUS_0_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_0_RX},
301 { SLIMBUS_0_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_0_TX},
302 { HDMI_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_HDMI},
303 { INT_BT_SCO_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_INT_BT_SCO_RX},
304 { INT_BT_SCO_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_INT_BT_SCO_TX},
305 { INT_FM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_INT_FM_RX},
306 { INT_FM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_INT_FM_TX},
307 { RT_PROXY_PORT_001_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
308 LPASS_BE_AFE_PCM_RX},
309 { RT_PROXY_PORT_001_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
310 LPASS_BE_AFE_PCM_TX},
311 { AFE_PORT_ID_PRIMARY_PCM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
312 LPASS_BE_AUXPCM_RX},
313 { AFE_PORT_ID_PRIMARY_PCM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
314 LPASS_BE_AUXPCM_TX},
315 { VOICE_PLAYBACK_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
316 LPASS_BE_VOICE_PLAYBACK_TX},
317 { VOICE2_PLAYBACK_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
318 LPASS_BE_VOICE2_PLAYBACK_TX},
319 { VOICE_RECORD_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
320 LPASS_BE_INCALL_RECORD_RX},
321 { VOICE_RECORD_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
322 LPASS_BE_INCALL_RECORD_TX},
323 { MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_MI2S_RX},
324 { MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_MI2S_TX},
325 { SECONDARY_I2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SEC_I2S_RX},
326 { SLIMBUS_1_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_1_RX},
327 { SLIMBUS_1_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_1_TX},
328 { SLIMBUS_2_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_2_RX},
329 { SLIMBUS_2_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_2_TX},
330 { SLIMBUS_3_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_3_RX},
331 { SLIMBUS_3_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_3_TX},
332 { SLIMBUS_4_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_4_RX},
333 { SLIMBUS_4_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_4_TX},
334 { SLIMBUS_5_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_5_RX},
335 { SLIMBUS_5_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_5_TX},
336 { SLIMBUS_6_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_6_RX},
337 { SLIMBUS_6_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_6_TX},
338 { SLIMBUS_7_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_7_RX},
339 { SLIMBUS_7_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_7_TX},
340 { SLIMBUS_8_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_8_RX},
341 { SLIMBUS_8_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_8_TX},
342 { SLIMBUS_EXTPROC_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_STUB_RX},
343 { SLIMBUS_EXTPROC_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_STUB_TX},
344 { SLIMBUS_EXTPROC_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_STUB_1_TX},
345 { AFE_PORT_ID_QUATERNARY_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
346 LPASS_BE_QUAT_MI2S_RX},
347 { AFE_PORT_ID_QUATERNARY_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
348 LPASS_BE_QUAT_MI2S_TX},
349 { AFE_PORT_ID_SECONDARY_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
350 LPASS_BE_SEC_MI2S_RX},
351 { AFE_PORT_ID_SECONDARY_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
352 LPASS_BE_SEC_MI2S_TX},
353 { AFE_PORT_ID_PRIMARY_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
354 LPASS_BE_PRI_MI2S_RX},
355 { AFE_PORT_ID_PRIMARY_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
356 LPASS_BE_PRI_MI2S_TX},
357 { AFE_PORT_ID_TERTIARY_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
358 LPASS_BE_TERT_MI2S_RX},
359 { AFE_PORT_ID_TERTIARY_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
360 LPASS_BE_TERT_MI2S_TX},
361 { AUDIO_PORT_ID_I2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
362 LPASS_BE_AUDIO_I2S_RX},
363 { AFE_PORT_ID_SECONDARY_PCM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
364 LPASS_BE_SEC_AUXPCM_RX},
365 { AFE_PORT_ID_SECONDARY_PCM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
366 LPASS_BE_SEC_AUXPCM_TX},
367 { AFE_PORT_ID_SPDIF_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
368 LPASS_BE_SPDIF_RX},
369 { AFE_PORT_ID_SECONDARY_MI2S_RX_SD1, 0, {0}, {0}, 0, 0, 0, 0, {0},
370 LPASS_BE_SEC_MI2S_RX_SD1},
371 { AFE_PORT_ID_QUINARY_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
372 LPASS_BE_QUIN_MI2S_RX},
373 { AFE_PORT_ID_QUINARY_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
374 LPASS_BE_QUIN_MI2S_TX},
375 { AFE_PORT_ID_SENARY_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
376 LPASS_BE_SENARY_MI2S_TX},
377 { AFE_PORT_ID_PRIMARY_TDM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
378 LPASS_BE_PRI_TDM_RX_0},
379 { AFE_PORT_ID_PRIMARY_TDM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
380 LPASS_BE_PRI_TDM_TX_0},
381 { AFE_PORT_ID_PRIMARY_TDM_RX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
382 LPASS_BE_PRI_TDM_RX_1},
383 { AFE_PORT_ID_PRIMARY_TDM_TX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
384 LPASS_BE_PRI_TDM_TX_1},
385 { AFE_PORT_ID_PRIMARY_TDM_RX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
386 LPASS_BE_PRI_TDM_RX_2},
387 { AFE_PORT_ID_PRIMARY_TDM_TX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
388 LPASS_BE_PRI_TDM_TX_2},
389 { AFE_PORT_ID_PRIMARY_TDM_RX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
390 LPASS_BE_PRI_TDM_RX_3},
391 { AFE_PORT_ID_PRIMARY_TDM_TX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
392 LPASS_BE_PRI_TDM_TX_3},
393 { AFE_PORT_ID_PRIMARY_TDM_RX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
394 LPASS_BE_PRI_TDM_RX_4},
395 { AFE_PORT_ID_PRIMARY_TDM_TX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
396 LPASS_BE_PRI_TDM_TX_4},
397 { AFE_PORT_ID_PRIMARY_TDM_RX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
398 LPASS_BE_PRI_TDM_RX_5},
399 { AFE_PORT_ID_PRIMARY_TDM_TX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
400 LPASS_BE_PRI_TDM_TX_5},
401 { AFE_PORT_ID_PRIMARY_TDM_RX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
402 LPASS_BE_PRI_TDM_RX_6},
403 { AFE_PORT_ID_PRIMARY_TDM_TX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
404 LPASS_BE_PRI_TDM_TX_6},
405 { AFE_PORT_ID_PRIMARY_TDM_RX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
406 LPASS_BE_PRI_TDM_RX_7},
407 { AFE_PORT_ID_PRIMARY_TDM_TX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
408 LPASS_BE_PRI_TDM_TX_7},
409 { AFE_PORT_ID_SECONDARY_TDM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
410 LPASS_BE_SEC_TDM_RX_0},
411 { AFE_PORT_ID_SECONDARY_TDM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
412 LPASS_BE_SEC_TDM_TX_0},
413 { AFE_PORT_ID_SECONDARY_TDM_RX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
414 LPASS_BE_SEC_TDM_RX_1},
415 { AFE_PORT_ID_SECONDARY_TDM_TX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
416 LPASS_BE_SEC_TDM_TX_1},
417 { AFE_PORT_ID_SECONDARY_TDM_RX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
418 LPASS_BE_SEC_TDM_RX_2},
419 { AFE_PORT_ID_SECONDARY_TDM_TX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
420 LPASS_BE_SEC_TDM_TX_2},
421 { AFE_PORT_ID_SECONDARY_TDM_RX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
422 LPASS_BE_SEC_TDM_RX_3},
423 { AFE_PORT_ID_SECONDARY_TDM_TX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
424 LPASS_BE_SEC_TDM_TX_3},
425 { AFE_PORT_ID_SECONDARY_TDM_RX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
426 LPASS_BE_SEC_TDM_RX_4},
427 { AFE_PORT_ID_SECONDARY_TDM_TX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
428 LPASS_BE_SEC_TDM_TX_4},
429 { AFE_PORT_ID_SECONDARY_TDM_RX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
430 LPASS_BE_SEC_TDM_RX_5},
431 { AFE_PORT_ID_SECONDARY_TDM_TX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
432 LPASS_BE_SEC_TDM_TX_5},
433 { AFE_PORT_ID_SECONDARY_TDM_RX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
434 LPASS_BE_SEC_TDM_RX_6},
435 { AFE_PORT_ID_SECONDARY_TDM_TX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
436 LPASS_BE_SEC_TDM_TX_6},
437 { AFE_PORT_ID_SECONDARY_TDM_RX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
438 LPASS_BE_SEC_TDM_RX_7},
439 { AFE_PORT_ID_SECONDARY_TDM_TX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
440 LPASS_BE_SEC_TDM_TX_7},
441 { AFE_PORT_ID_TERTIARY_TDM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
442 LPASS_BE_TERT_TDM_RX_0},
443 { AFE_PORT_ID_TERTIARY_TDM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
444 LPASS_BE_TERT_TDM_TX_0},
445 { AFE_PORT_ID_TERTIARY_TDM_RX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
446 LPASS_BE_TERT_TDM_RX_1},
447 { AFE_PORT_ID_TERTIARY_TDM_TX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
448 LPASS_BE_TERT_TDM_TX_1},
449 { AFE_PORT_ID_TERTIARY_TDM_RX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
450 LPASS_BE_TERT_TDM_RX_2},
451 { AFE_PORT_ID_TERTIARY_TDM_TX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
452 LPASS_BE_TERT_TDM_TX_2},
453 { AFE_PORT_ID_TERTIARY_TDM_RX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
454 LPASS_BE_TERT_TDM_RX_3},
455 { AFE_PORT_ID_TERTIARY_TDM_TX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
456 LPASS_BE_TERT_TDM_TX_3},
457 { AFE_PORT_ID_TERTIARY_TDM_RX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
458 LPASS_BE_TERT_TDM_RX_4},
459 { AFE_PORT_ID_TERTIARY_TDM_TX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
460 LPASS_BE_TERT_TDM_TX_4},
461 { AFE_PORT_ID_TERTIARY_TDM_RX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
462 LPASS_BE_TERT_TDM_RX_5},
463 { AFE_PORT_ID_TERTIARY_TDM_TX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
464 LPASS_BE_TERT_TDM_TX_5},
465 { AFE_PORT_ID_TERTIARY_TDM_RX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
466 LPASS_BE_TERT_TDM_RX_6},
467 { AFE_PORT_ID_TERTIARY_TDM_TX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
468 LPASS_BE_TERT_TDM_TX_6},
469 { AFE_PORT_ID_TERTIARY_TDM_RX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
470 LPASS_BE_TERT_TDM_RX_7},
471 { AFE_PORT_ID_TERTIARY_TDM_TX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
472 LPASS_BE_TERT_TDM_TX_7},
473 { AFE_PORT_ID_QUATERNARY_TDM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
474 LPASS_BE_QUAT_TDM_RX_0},
475 { AFE_PORT_ID_QUATERNARY_TDM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
476 LPASS_BE_QUAT_TDM_TX_0},
477 { AFE_PORT_ID_QUATERNARY_TDM_RX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
478 LPASS_BE_QUAT_TDM_RX_1},
479 { AFE_PORT_ID_QUATERNARY_TDM_TX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
480 LPASS_BE_QUAT_TDM_TX_1},
481 { AFE_PORT_ID_QUATERNARY_TDM_RX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
482 LPASS_BE_QUAT_TDM_RX_2},
483 { AFE_PORT_ID_QUATERNARY_TDM_TX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
484 LPASS_BE_QUAT_TDM_TX_2},
485 { AFE_PORT_ID_QUATERNARY_TDM_RX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
486 LPASS_BE_QUAT_TDM_RX_3},
487 { AFE_PORT_ID_QUATERNARY_TDM_TX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
488 LPASS_BE_QUAT_TDM_TX_3},
489 { AFE_PORT_ID_QUATERNARY_TDM_RX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
490 LPASS_BE_QUAT_TDM_RX_4},
491 { AFE_PORT_ID_QUATERNARY_TDM_TX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
492 LPASS_BE_QUAT_TDM_TX_4},
493 { AFE_PORT_ID_QUATERNARY_TDM_RX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
494 LPASS_BE_QUAT_TDM_RX_5},
495 { AFE_PORT_ID_QUATERNARY_TDM_TX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
496 LPASS_BE_QUAT_TDM_TX_5},
497 { AFE_PORT_ID_QUATERNARY_TDM_RX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
498 LPASS_BE_QUAT_TDM_RX_6},
499 { AFE_PORT_ID_QUATERNARY_TDM_TX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
500 LPASS_BE_QUAT_TDM_TX_6},
501 { AFE_PORT_ID_QUATERNARY_TDM_RX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
502 LPASS_BE_QUAT_TDM_RX_7},
503 { AFE_PORT_ID_QUATERNARY_TDM_TX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
504 LPASS_BE_QUAT_TDM_TX_7},
Rohit Kumara5077932017-09-10 22:05:05 +0530505 { AFE_PORT_ID_QUINARY_TDM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
506 LPASS_BE_QUIN_TDM_RX_0},
507 { AFE_PORT_ID_QUINARY_TDM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
508 LPASS_BE_QUIN_TDM_TX_0},
509 { AFE_PORT_ID_QUINARY_TDM_RX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
510 LPASS_BE_QUIN_TDM_RX_1},
511 { AFE_PORT_ID_QUINARY_TDM_TX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
512 LPASS_BE_QUIN_TDM_TX_1},
513 { AFE_PORT_ID_QUINARY_TDM_RX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
514 LPASS_BE_QUIN_TDM_RX_2},
515 { AFE_PORT_ID_QUINARY_TDM_TX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
516 LPASS_BE_QUIN_TDM_TX_2},
517 { AFE_PORT_ID_QUINARY_TDM_RX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
518 LPASS_BE_QUIN_TDM_RX_3},
519 { AFE_PORT_ID_QUINARY_TDM_TX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
520 LPASS_BE_QUIN_TDM_TX_3},
521 { AFE_PORT_ID_QUINARY_TDM_RX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
522 LPASS_BE_QUIN_TDM_RX_4},
523 { AFE_PORT_ID_QUINARY_TDM_TX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
524 LPASS_BE_QUIN_TDM_TX_4},
525 { AFE_PORT_ID_QUINARY_TDM_RX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
526 LPASS_BE_QUIN_TDM_RX_5},
527 { AFE_PORT_ID_QUINARY_TDM_TX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
528 LPASS_BE_QUIN_TDM_TX_5},
529 { AFE_PORT_ID_QUINARY_TDM_RX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
530 LPASS_BE_QUIN_TDM_RX_6},
531 { AFE_PORT_ID_QUINARY_TDM_TX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
532 LPASS_BE_QUIN_TDM_TX_6},
533 { AFE_PORT_ID_QUINARY_TDM_RX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
534 LPASS_BE_QUIN_TDM_RX_7},
535 { AFE_PORT_ID_QUINARY_TDM_TX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
536 LPASS_BE_QUIN_TDM_TX_7},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530537 { INT_BT_A2DP_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
538 LPASS_BE_INT_BT_A2DP_RX},
539 { AFE_PORT_ID_USB_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
540 LPASS_BE_USB_AUDIO_RX},
541 { AFE_PORT_ID_USB_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
542 LPASS_BE_USB_AUDIO_TX},
543 { DISPLAY_PORT_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
544 LPASS_BE_DISPLAY_PORT},
545 { AFE_PORT_ID_TERTIARY_PCM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
546 LPASS_BE_TERT_AUXPCM_RX},
547 { AFE_PORT_ID_TERTIARY_PCM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
548 LPASS_BE_TERT_AUXPCM_TX},
549 { AFE_PORT_ID_QUATERNARY_PCM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
550 LPASS_BE_QUAT_AUXPCM_RX},
551 { AFE_PORT_ID_QUATERNARY_PCM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
552 LPASS_BE_QUAT_AUXPCM_TX},
Rohit Kumara5077932017-09-10 22:05:05 +0530553 { AFE_PORT_ID_QUINARY_PCM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
554 LPASS_BE_QUIN_AUXPCM_RX},
555 { AFE_PORT_ID_QUINARY_PCM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
556 LPASS_BE_QUIN_AUXPCM_TX},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530557 { AFE_PORT_ID_INT0_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
558 LPASS_BE_INT0_MI2S_RX},
559 { AFE_PORT_ID_INT0_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
560 LPASS_BE_INT0_MI2S_TX},
561 { AFE_PORT_ID_INT1_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
562 LPASS_BE_INT1_MI2S_RX},
563 { AFE_PORT_ID_INT1_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
564 LPASS_BE_INT1_MI2S_TX},
565 { AFE_PORT_ID_INT2_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
566 LPASS_BE_INT2_MI2S_RX},
567 { AFE_PORT_ID_INT2_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
568 LPASS_BE_INT2_MI2S_TX},
569 { AFE_PORT_ID_INT3_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
570 LPASS_BE_INT3_MI2S_RX},
571 { AFE_PORT_ID_INT3_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
572 LPASS_BE_INT3_MI2S_TX},
573 { AFE_PORT_ID_INT4_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
574 LPASS_BE_INT4_MI2S_RX},
575 { AFE_PORT_ID_INT4_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
576 LPASS_BE_INT4_MI2S_TX},
577 { AFE_PORT_ID_INT5_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
578 LPASS_BE_INT5_MI2S_RX},
579 { AFE_PORT_ID_INT5_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
580 LPASS_BE_INT5_MI2S_TX},
581 { AFE_PORT_ID_INT6_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
582 LPASS_BE_INT6_MI2S_RX},
583 { AFE_PORT_ID_INT6_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
584 LPASS_BE_INT6_MI2S_TX},
Raja Mallik425e1d32018-05-20 19:21:10 +0530585 { AFE_LOOPBACK_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_AFE_LOOPBACK_TX},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530586};
587
588/* Track ASM playback & capture sessions of DAI
589 * Track LSM listen sessions
590 */
591static struct msm_pcm_routing_fdai_data
592 fe_dai_map[MSM_FRONTEND_DAI_MAX][2] = {
593 /* MULTIMEDIA1 */
594 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
595 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
596 /* MULTIMEDIA2 */
597 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
598 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
599 /* MULTIMEDIA3 */
600 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
601 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
602 /* MULTIMEDIA4 */
603 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
604 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
605 /* MULTIMEDIA5 */
606 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
607 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
608 /* MULTIMEDIA6 */
609 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
610 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
611 /* MULTIMEDIA7*/
612 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
613 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
614 /* MULTIMEDIA8 */
615 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
616 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
617 /* MULTIMEDIA9 */
618 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
619 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
620 /* MULTIMEDIA10 */
621 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
622 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
623 /* MULTIMEDIA11 */
624 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
625 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
626 /* MULTIMEDIA12 */
627 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
628 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
629 /* MULTIMEDIA13 */
630 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
631 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
632 /* MULTIMEDIA14 */
633 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
634 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
635 /* MULTIMEDIA15 */
636 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
637 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
638 /* MULTIMEDIA16 */
639 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
640 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
641 /* MULTIMEDIA17 */
642 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
643 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
644 /* MULTIMEDIA18 */
645 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
646 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
647 /* MULTIMEDIA19 */
648 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
649 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
650 /* MULTIMEDIA20 */
651 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
652 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +0530653 /* MULTIMEDIA28 */
654 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
655 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
656 /* MULTIMEDIA29 */
657 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
658 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530659 /* VOIP */
660 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
661 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
662 /* AFE_RX */
663 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
664 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
665 /* AFE_TX */
666 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
667 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
668 /* VOICE_STUB */
669 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
670 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530671 /* DTMF_RX */
672 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
673 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530674 /* QCHAT */
675 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
676 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
677 /* VOLTE_STUB */
678 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
679 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
680 /* LSM1 */
681 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
682 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
683 /* LSM2 */
684 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
685 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
686 /* LSM3 */
687 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
688 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
689 /* LSM4 */
690 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
691 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
692 /* LSM5 */
693 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
694 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
695 /* LSM6 */
696 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
697 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
698 /* LSM7 */
699 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
700 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
701 /* LSM8 */
702 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
703 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
704 /* VOICE2_STUB */
705 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
706 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530707 /* VOICEMMODE1 */
708 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
709 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
710 /* VOICEMMODE2 */
711 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
712 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
713};
714
715static unsigned long session_copp_map[MSM_FRONTEND_DAI_MAX][2]
716 [MSM_BACKEND_DAI_MAX];
717static struct msm_pcm_routing_app_type_data app_type_cfg[MAX_APP_TYPES];
718static struct msm_pcm_routing_app_type_data lsm_app_type_cfg[MAX_APP_TYPES];
719static struct msm_pcm_stream_app_type_cfg
720 fe_dai_app_type_cfg[MSM_FRONTEND_DAI_MAX][2][MSM_BACKEND_DAI_MAX];
721
722static int last_be_id_configured[MSM_FRONTEND_DAI_MAX][MAX_SESSION_TYPES];
723
724/* The caller of this should aqcuire routing lock */
725void msm_pcm_routing_get_bedai_info(int be_idx,
726 struct msm_pcm_routing_bdai_data *be_dai)
727{
728 if (be_idx >= 0 && be_idx < MSM_BACKEND_DAI_MAX)
729 memcpy(be_dai, &msm_bedais[be_idx],
730 sizeof(struct msm_pcm_routing_bdai_data));
731}
732
733/* The caller of this should aqcuire routing lock */
734void msm_pcm_routing_get_fedai_info(int fe_idx, int sess_type,
735 struct msm_pcm_routing_fdai_data *fe_dai)
736{
737 if ((sess_type == SESSION_TYPE_TX) || (sess_type == SESSION_TYPE_RX))
738 memcpy(fe_dai, &fe_dai_map[fe_idx][sess_type],
739 sizeof(struct msm_pcm_routing_fdai_data));
740}
741
742void msm_pcm_routing_acquire_lock(void)
743{
744 mutex_lock(&routing_lock);
745}
746
747void msm_pcm_routing_release_lock(void)
748{
749 mutex_unlock(&routing_lock);
750}
751
752static int msm_pcm_routing_get_app_type_idx(int app_type)
753{
754 int idx;
755
756 pr_debug("%s: app_type: %d\n", __func__, app_type);
757 for (idx = 0; idx < MAX_APP_TYPES; idx++) {
758 if (app_type_cfg[idx].app_type == app_type)
759 return idx;
760 }
761 pr_info("%s: App type not available, fallback to default\n", __func__);
762 return 0;
763}
764
765static int msm_pcm_routing_get_lsm_app_type_idx(int app_type)
766{
767 int idx;
768
769 pr_debug("%s: app_type: %d\n", __func__, app_type);
770 for (idx = 0; idx < MAX_APP_TYPES; idx++) {
771 if (lsm_app_type_cfg[idx].app_type == app_type)
772 return idx;
773 }
774 pr_debug("%s: App type not available, fallback to default\n", __func__);
775 return 0;
776}
777
Sachin Mohan Gadag3c3c5812018-07-20 15:46:54 +0530778static int get_port_id(int port_id)
779{
780 return (port_id == AFE_LOOPBACK_TX ? msm_ec_ref_port_id : port_id);
781}
782
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530783static bool is_mm_lsm_fe_id(int fe_id)
784{
785 bool rc = true;
786
787 if (fe_id > MSM_FRONTEND_DAI_MM_MAX_ID &&
788 ((fe_id < MSM_FRONTEND_DAI_LSM1) ||
789 (fe_id > MSM_FRONTEND_DAI_LSM8))) {
790 rc = false;
791 }
792 return rc;
793}
794
Dhanalakshmi Siddani040e0262018-11-26 23:01:26 +0530795/*
796 * msm_pcm_routing_send_chmix_cfg
797 *
798 * Receives fe_id, ip_channel_cnt, op_channel_cnt, channel weight, session_type
799 * use_default_chmap and channel map to map in channel mixer and send to
800 * adm programmable matrix.
801 *
802 * fe_id - Passed value, frontend id which is wanted
803 * ip_channel_cnt - Passed value, number of input channels
804 * op_channel_cnt - Passed value, number of output channels
805 * ch_wght_coeff - Passed reference, weights for each output channel
806 * session_type - Passed value, session_type for RX or TX
807 * use_default_chmap - true if default channel map to be used
808 * ch_map - input/output channel map for playback/capture session respectively
809 */
810
811int msm_pcm_routing_send_chmix_cfg(int fe_id, int ip_channel_cnt,
812 int op_channel_cnt, int *ch_wght_coeff,
813 int session_type, bool use_default_chmap,
814 char *channel_map)
815{
816 int rc = 0, idx = 0, i, j;
817 int be_index = 0, port_id, index = 0;
818 unsigned int session_id = 0;
819
820 pr_debug("%s: fe_id[%d] ip_ch[%d] op_ch[%d] sess_type [%d]\n",
821 __func__, fe_id, ip_channel_cnt, op_channel_cnt, session_type);
822
823 if (!use_default_chmap && (channel_map == NULL)) {
824 pr_err("%s: No valid chan map and can't use default\n",
825 __func__);
826 return -EINVAL;
827 }
828
829 if ((ch_wght_coeff == NULL) || (op_channel_cnt > ADM_MAX_CHANNELS) ||
830 (ip_channel_cnt > ADM_MAX_CHANNELS)) {
831 pr_err("%s: Invalid channels or null coefficients\n", __func__);
832 return -EINVAL;
833 }
834
835 for (be_index = 0; be_index < MSM_BACKEND_DAI_MAX; be_index++) {
836 port_id = msm_bedais[be_index].port_id;
837 if (!msm_bedais[be_index].active ||
838 !test_bit(fe_id, &msm_bedais[be_index].fe_sessions[0]))
839 continue;
840
841 session_id = fe_dai_map[fe_id][session_type].strm_id;
842 channel_mixer[fe_id].input_channels[0] = ip_channel_cnt;
843 channel_mixer[fe_id].output_channel = op_channel_cnt;
844 channel_mixer[fe_id].rule = 0;
845
846 for (j = 0; j < op_channel_cnt; j++) {
847 for (i = 0; i < ip_channel_cnt; i++)
848 channel_mixer[fe_id].channel_weight[j][i] =
849 ch_wght_coeff[index++];
850 }
851 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++) {
852 unsigned long copp =
853 session_copp_map[fe_id][session_type][be_index];
854 if (!test_bit(idx, &copp))
855 continue;
856 rc = adm_programable_channel_mixer(port_id,
857 idx, session_id, session_type,
858 channel_mixer + fe_id, 0,
859 use_default_chmap, channel_map);
860 if (rc < 0)
861 pr_err("%s: err setting channel mix config\n",
862 __func__);
863 }
864 }
865 return 0;
866}
867
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530868int msm_pcm_routing_reg_stream_app_type_cfg(
869 int fedai_id, int session_type, int be_id,
870 struct msm_pcm_stream_app_type_cfg *cfg_data)
871{
872 int ret = 0;
873
874 if (cfg_data == NULL) {
875 pr_err("%s: Received NULL pointer for cfg_data\n", __func__);
876 ret = -EINVAL;
877 goto done;
878 }
879
880 pr_debug("%s: fedai_id %d, session_type %d, be_id %d, app_type %d, acdb_dev_id %d, sample_rate %d\n",
881 __func__, fedai_id, session_type, be_id,
882 cfg_data->app_type, cfg_data->acdb_dev_id,
883 cfg_data->sample_rate);
884
885 if (!is_mm_lsm_fe_id(fedai_id)) {
886 pr_err("%s: Invalid machine driver ID %d\n",
887 __func__, fedai_id);
888 ret = -EINVAL;
889 goto done;
890 }
891 if (session_type != SESSION_TYPE_RX &&
892 session_type != SESSION_TYPE_TX) {
893 pr_err("%s: Invalid session type %d\n",
894 __func__, session_type);
895 ret = -EINVAL;
896 goto done;
897 }
898 if (be_id < 0 || be_id >= MSM_BACKEND_DAI_MAX) {
899 pr_err("%s: Received out of bounds be_id %d\n",
900 __func__, be_id);
901 ret = -EINVAL;
902 goto done;
903 }
904
905 fe_dai_app_type_cfg[fedai_id][session_type][be_id] = *cfg_data;
906
907 /*
908 * Store the BE ID of the configuration information set as the latest so
909 * the get mixer control knows what to return.
910 */
911 last_be_id_configured[fedai_id][session_type] = be_id;
912
913done:
914 return ret;
915}
916EXPORT_SYMBOL(msm_pcm_routing_reg_stream_app_type_cfg);
917
918/**
919 * msm_pcm_routing_get_stream_app_type_cfg
920 *
921 * Receives fedai_id, session_type, be_id, and populates app_type,
922 * acdb_dev_id, & sample rate. Returns 0 on success. On failure returns
923 * -EINVAL and does not alter passed values.
924 *
925 * fedai_id - Passed value, front end ID for which app type config is wanted
926 * session_type - Passed value, session type for which app type config
927 * is wanted
928 * be_id - Returned value, back end device id the app type config data is for
929 * cfg_data - Returned value, configuration data used by app type config
930 */
931int msm_pcm_routing_get_stream_app_type_cfg(
932 int fedai_id, int session_type, int *bedai_id,
933 struct msm_pcm_stream_app_type_cfg *cfg_data)
934{
935 int be_id;
936 int ret = 0;
937
938 if (bedai_id == NULL) {
939 pr_err("%s: Received NULL pointer for backend ID\n", __func__);
940 ret = -EINVAL;
941 goto done;
942 } else if (cfg_data == NULL) {
943 pr_err("%s: NULL pointer sent for cfg_data\n", __func__);
944 ret = -EINVAL;
945 goto done;
946 } else if (!is_mm_lsm_fe_id(fedai_id)) {
947 pr_err("%s: Invalid FE ID %d\n", __func__, fedai_id);
948 ret = -EINVAL;
949 goto done;
950 } else if (session_type != SESSION_TYPE_RX &&
951 session_type != SESSION_TYPE_TX) {
952 pr_err("%s: Invalid session type %d\n", __func__, session_type);
953 ret = -EINVAL;
954 goto done;
955 }
956
957 be_id = last_be_id_configured[fedai_id][session_type];
958 if (be_id < 0 || be_id >= MSM_BACKEND_DAI_MAX) {
959 pr_err("%s: Invalid BE ID %d\n", __func__, be_id);
960 ret = -EINVAL;
961 goto done;
962 }
963
964 *bedai_id = be_id;
965 *cfg_data = fe_dai_app_type_cfg[fedai_id][session_type][be_id];
966 pr_debug("%s: fedai_id %d, session_type %d, be_id %d, app_type %d, acdb_dev_id %d, sample_rate %d\n",
967 __func__, fedai_id, session_type, *bedai_id,
968 cfg_data->app_type, cfg_data->acdb_dev_id,
969 cfg_data->sample_rate);
970done:
971 return ret;
972}
973EXPORT_SYMBOL(msm_pcm_routing_get_stream_app_type_cfg);
974
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530975static struct cal_block_data *msm_routing_find_topology_by_path(int path,
976 int cal_index)
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530977{
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530978 struct list_head *ptr, *next;
979 struct cal_block_data *cal_block = NULL;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530980 pr_debug("%s\n", __func__);
981
982 list_for_each_safe(ptr, next,
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530983 &cal_data[cal_index]->cal_blocks) {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530984
985 cal_block = list_entry(ptr,
986 struct cal_block_data, list);
987
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530988 if (((struct audio_cal_info_adm_top *)cal_block
989 ->cal_info)->path == path) {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530990 return cal_block;
991 }
992 }
993 pr_debug("%s: Can't find topology for path %d\n", __func__, path);
994 return NULL;
995}
996
997static struct cal_block_data *msm_routing_find_topology(int path,
998 int app_type,
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530999 int acdb_id,
Haynes Mathew Georged3af1eb2018-06-08 17:26:24 -07001000 int cal_index,
1001 bool exact)
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301002{
1003 struct list_head *ptr, *next;
1004 struct cal_block_data *cal_block = NULL;
1005 struct audio_cal_info_adm_top *cal_info;
1006
1007 pr_debug("%s\n", __func__);
1008
1009 list_for_each_safe(ptr, next,
Aditya Bavanari2a627ae2017-11-21 20:24:53 +05301010 &cal_data[cal_index]->cal_blocks) {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301011
1012 cal_block = list_entry(ptr,
1013 struct cal_block_data, list);
1014
1015 cal_info = (struct audio_cal_info_adm_top *)
1016 cal_block->cal_info;
1017 if ((cal_info->path == path) &&
1018 (cal_info->app_type == app_type) &&
1019 (cal_info->acdb_id == acdb_id)) {
1020 return cal_block;
1021 }
1022 }
Haynes Mathew Georged3af1eb2018-06-08 17:26:24 -07001023 pr_debug("%s: Can't find topology for path %d, app %d, "
1024 "acdb_id %d %s\n", __func__, path, app_type, acdb_id,
1025 exact ? "fail" : "defaulting to search by path");
1026 return exact ? NULL : msm_routing_find_topology_by_path(path,
1027 cal_index);
1028}
1029
1030static int msm_routing_find_topology_on_index(int session_type, int app_type,
1031 int acdb_dev_id, int idx,
1032 bool exact)
1033{
1034 int topology = -EINVAL;
1035 struct cal_block_data *cal_block = NULL;
1036
1037 mutex_lock(&cal_data[idx]->lock);
1038 cal_block = msm_routing_find_topology(session_type, app_type,
1039 acdb_dev_id, idx, exact);
1040 if (cal_block != NULL) {
1041 topology = ((struct audio_cal_info_adm_top *)
1042 cal_block->cal_info)->topology;
1043 }
1044 mutex_unlock(&cal_data[idx]->lock);
1045 return topology;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301046}
1047
1048static int msm_routing_get_adm_topology(int fedai_id, int session_type,
1049 int be_id)
1050{
1051 int topology = NULL_COPP_TOPOLOGY;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301052 int app_type = 0, acdb_dev_id = 0;
1053
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301054 pr_debug("%s: fedai_id %d, session_type %d, be_id %d\n",
1055 __func__, fedai_id, session_type, be_id);
1056
1057 if (cal_data == NULL)
1058 goto done;
1059
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301060 app_type = fe_dai_app_type_cfg[fedai_id][session_type][be_id].app_type;
1061 acdb_dev_id =
1062 fe_dai_app_type_cfg[fedai_id][session_type][be_id].acdb_dev_id;
Haynes Mathew Georged3af1eb2018-06-08 17:26:24 -07001063 pr_debug("%s: Check for exact LSM topology\n", __func__);
1064 topology = msm_routing_find_topology_on_index(session_type,
1065 app_type,
1066 acdb_dev_id,
1067 ADM_LSM_TOPOLOGY_CAL_TYPE_IDX,
1068 true /*exact*/);
1069 if (topology < 0) {
1070 pr_debug("%s: Check for compatible topology\n", __func__);
1071 topology = msm_routing_find_topology_on_index(session_type,
1072 app_type,
1073 acdb_dev_id,
1074 ADM_TOPOLOGY_CAL_TYPE_IDX,
1075 false /*exact*/);
1076 if (topology < 0)
1077 topology = NULL_COPP_TOPOLOGY;
Aditya Bavanari2a627ae2017-11-21 20:24:53 +05301078 }
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301079done:
1080 pr_debug("%s: Using topology %d\n", __func__, topology);
1081 return topology;
1082}
1083
1084static uint8_t is_be_dai_extproc(int be_dai)
1085{
1086 if (be_dai == MSM_BACKEND_DAI_EXTPROC_RX ||
1087 be_dai == MSM_BACKEND_DAI_EXTPROC_TX ||
1088 be_dai == MSM_BACKEND_DAI_EXTPROC_EC_TX)
1089 return 1;
1090 else
1091 return 0;
1092}
1093
1094static void msm_pcm_routing_build_matrix(int fedai_id, int sess_type,
1095 int path_type, int perf_mode,
1096 uint32_t passthr_mode)
1097{
1098 int i, port_type, j, num_copps = 0;
1099 struct route_payload payload;
1100
1101 port_type = ((path_type == ADM_PATH_PLAYBACK ||
1102 path_type == ADM_PATH_COMPRESSED_RX) ?
1103 MSM_AFE_PORT_TYPE_RX : MSM_AFE_PORT_TYPE_TX);
1104
1105 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
1106 if (!is_be_dai_extproc(i) &&
1107 (afe_get_port_type(msm_bedais[i].port_id) == port_type) &&
1108 (msm_bedais[i].active) &&
1109 (test_bit(fedai_id, &msm_bedais[i].fe_sessions[0]))) {
Sachin Mohan Gadag3c3c5812018-07-20 15:46:54 +05301110 int port_id = get_port_id(msm_bedais[i].port_id);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301111 for (j = 0; j < MAX_COPPS_PER_PORT; j++) {
1112 unsigned long copp =
1113 session_copp_map[fedai_id][sess_type][i];
1114 if (test_bit(j, &copp)) {
Sachin Mohan Gadag3c3c5812018-07-20 15:46:54 +05301115 payload.port_id[num_copps] = port_id;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301116 payload.copp_idx[num_copps] = j;
1117 payload.app_type[num_copps] =
1118 fe_dai_app_type_cfg
1119 [fedai_id][sess_type][i]
1120 .app_type;
1121 payload.acdb_dev_id[num_copps] =
1122 fe_dai_app_type_cfg
1123 [fedai_id][sess_type][i]
1124 .acdb_dev_id;
1125 payload.sample_rate[num_copps] =
1126 fe_dai_app_type_cfg
1127 [fedai_id][sess_type][i]
1128 .sample_rate;
1129 num_copps++;
1130 }
1131 }
1132 }
1133 }
1134
1135 if (num_copps) {
1136 payload.num_copps = num_copps;
1137 payload.session_id = fe_dai_map[fedai_id][sess_type].strm_id;
1138 adm_matrix_map(path_type, payload, perf_mode, passthr_mode);
1139 msm_pcm_routng_cfg_matrix_map_pp(payload, path_type, perf_mode);
1140 }
1141}
1142
1143void msm_pcm_routing_reg_psthr_stream(int fedai_id, int dspst_id,
1144 int stream_type)
1145{
1146 int i, session_type, path_type, port_type;
1147 u32 mode = 0;
1148
1149 if (fedai_id > MSM_FRONTEND_DAI_MM_MAX_ID) {
1150 /* bad ID assigned in machine driver */
1151 pr_err("%s: bad MM ID\n", __func__);
1152 return;
1153 }
1154
1155 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK) {
1156 session_type = SESSION_TYPE_RX;
1157 path_type = ADM_PATH_PLAYBACK;
1158 port_type = MSM_AFE_PORT_TYPE_RX;
1159 } else {
1160 session_type = SESSION_TYPE_TX;
1161 path_type = ADM_PATH_LIVE_REC;
1162 port_type = MSM_AFE_PORT_TYPE_TX;
1163 }
1164
1165 mutex_lock(&routing_lock);
1166
1167 fe_dai_map[fedai_id][session_type].strm_id = dspst_id;
1168 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
1169 if (!is_be_dai_extproc(i) &&
1170 (afe_get_port_type(msm_bedais[i].port_id) == port_type) &&
1171 (msm_bedais[i].active) &&
1172 (test_bit(fedai_id, &msm_bedais[i].fe_sessions[0]))) {
1173 mode = afe_get_port_type(msm_bedais[i].port_id);
1174 adm_connect_afe_port(mode, dspst_id,
1175 msm_bedais[i].port_id);
1176 break;
1177 }
1178 }
1179 mutex_unlock(&routing_lock);
1180}
1181
1182static bool route_check_fe_id_adm_support(int fe_id)
1183{
1184 bool rc = true;
1185
1186 if ((fe_id >= MSM_FRONTEND_DAI_LSM1) &&
1187 (fe_id <= MSM_FRONTEND_DAI_LSM8)) {
1188 /* fe id is listen while port is set to afe */
1189 if (lsm_port_index != ADM_LSM_PORT_INDEX) {
1190 pr_debug("%s: fe_id %d, lsm mux slim port %d\n",
1191 __func__, fe_id, lsm_port_index);
1192 rc = false;
1193 }
1194 }
1195
1196 return rc;
1197}
1198
1199int msm_pcm_routing_reg_phy_compr_stream(int fe_id, int perf_mode,
1200 int dspst_id, int stream_type,
1201 uint32_t passthr_mode)
1202{
1203 int i, j, session_type, path_type, port_type, topology;
1204 int num_copps = 0;
1205 struct route_payload payload;
1206 u32 channels, sample_rate;
1207 u16 bit_width = 16;
1208 bool is_lsm;
1209
1210 pr_debug("%s:fe_id[%d] perf_mode[%d] id[%d] stream_type[%d] passt[%d]",
1211 __func__, fe_id, perf_mode, dspst_id,
1212 stream_type, passthr_mode);
1213 if (!is_mm_lsm_fe_id(fe_id)) {
1214 /* bad ID assigned in machine driver */
1215 pr_err("%s: bad MM ID %d\n", __func__, fe_id);
1216 return -EINVAL;
1217 }
1218
1219 if (!route_check_fe_id_adm_support(fe_id)) {
1220 /* ignore adm open if not supported for fe_id */
1221 pr_debug("%s: No ADM support for fe id %d\n", __func__, fe_id);
1222 return 0;
1223 }
1224
1225 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK) {
1226 session_type = SESSION_TYPE_RX;
1227 if (passthr_mode != LEGACY_PCM)
1228 path_type = ADM_PATH_COMPRESSED_RX;
1229 else
1230 path_type = ADM_PATH_PLAYBACK;
1231 port_type = MSM_AFE_PORT_TYPE_RX;
1232 } else if (stream_type == SNDRV_PCM_STREAM_CAPTURE) {
1233 session_type = SESSION_TYPE_TX;
Laxminath Kasam38070be2017-08-17 18:21:59 +05301234 if ((passthr_mode != LEGACY_PCM) && (passthr_mode != LISTEN))
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301235 path_type = ADM_PATH_COMPRESSED_TX;
1236 else
1237 path_type = ADM_PATH_LIVE_REC;
1238 port_type = MSM_AFE_PORT_TYPE_TX;
1239 } else {
1240 pr_err("%s: invalid stream type %d\n", __func__, stream_type);
1241 return -EINVAL;
1242 }
1243
1244 is_lsm = (fe_id >= MSM_FRONTEND_DAI_LSM1) &&
1245 (fe_id <= MSM_FRONTEND_DAI_LSM8);
1246 mutex_lock(&routing_lock);
1247
1248 payload.num_copps = 0; /* only RX needs to use payload */
1249 fe_dai_map[fe_id][session_type].strm_id = dspst_id;
1250 /* re-enable EQ if active */
1251 msm_qti_pp_send_eq_values(fe_id);
1252 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
1253 if (test_bit(fe_id, &msm_bedais[i].fe_sessions[0]))
1254 msm_bedais[i].passthr_mode[fe_id] = passthr_mode;
1255
1256 if (!is_be_dai_extproc(i) &&
1257 (afe_get_port_type(msm_bedais[i].port_id) ==
1258 port_type) &&
1259 (msm_bedais[i].active) &&
1260 (test_bit(fe_id, &msm_bedais[i].fe_sessions[0]))) {
1261 int app_type, app_type_idx, copp_idx, acdb_dev_id;
Sachin Mohan Gadag3c3c5812018-07-20 15:46:54 +05301262 int port_id = get_port_id(msm_bedais[i].port_id);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301263
1264 /*
1265 * check if ADM needs to be configured with different
1266 * channel mapping than backend
1267 */
1268 if (!msm_bedais[i].adm_override_ch)
1269 channels = msm_bedais[i].channel;
1270 else
1271 channels = msm_bedais[i].adm_override_ch;
1272
1273 bit_width = msm_routing_get_bit_width(
1274 msm_bedais[i].format);
1275 app_type =
1276 fe_dai_app_type_cfg[fe_id][session_type][i].app_type;
1277 if (app_type && is_lsm) {
1278 app_type_idx =
1279 msm_pcm_routing_get_lsm_app_type_idx(app_type);
1280 sample_rate =
1281 fe_dai_app_type_cfg[fe_id][session_type][i]
1282 .sample_rate;
1283 bit_width =
1284 lsm_app_type_cfg[app_type_idx].bit_width;
1285 } else if (app_type) {
1286 app_type_idx =
1287 msm_pcm_routing_get_app_type_idx(
1288 app_type);
1289 sample_rate =
1290 fe_dai_app_type_cfg[fe_id][session_type][i].sample_rate;
1291 bit_width =
1292 app_type_cfg[app_type_idx].bit_width;
1293 } else {
1294 sample_rate = msm_bedais[i].sample_rate;
1295 }
1296 acdb_dev_id =
1297 fe_dai_app_type_cfg[fe_id][session_type][i].acdb_dev_id;
1298 topology = msm_routing_get_adm_topology(fe_id,
1299 session_type,
1300 i);
1301 if ((passthr_mode == COMPRESSED_PASSTHROUGH_DSD)
1302 || (passthr_mode ==
1303 COMPRESSED_PASSTHROUGH_GEN))
1304 topology = COMPRESSED_PASSTHROUGH_NONE_TOPOLOGY;
1305 pr_debug("%s: Before adm open topology %d\n", __func__,
1306 topology);
1307
1308 copp_idx =
Sachin Mohan Gadag3c3c5812018-07-20 15:46:54 +05301309 adm_open(port_id, path_type, sample_rate,
1310 channels, topology, perf_mode,
1311 bit_width, app_type, acdb_dev_id,
1312 session_type);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301313 if ((copp_idx < 0) ||
1314 (copp_idx >= MAX_COPPS_PER_PORT)) {
1315 pr_err("%s:adm open failed coppid:%d\n",
1316 __func__, copp_idx);
1317 mutex_unlock(&routing_lock);
1318 return -EINVAL;
1319 }
1320 pr_debug("%s: set idx bit of fe:%d, type: %d, be:%d\n",
1321 __func__, fe_id, session_type, i);
1322 set_bit(copp_idx,
1323 &session_copp_map[fe_id][session_type][i]);
1324
1325 if (msm_is_resample_needed(
1326 sample_rate,
1327 msm_bedais[i].sample_rate))
Sachin Mohan Gadag3c3c5812018-07-20 15:46:54 +05301328 adm_copp_mfc_cfg(port_id, copp_idx,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301329 msm_bedais[i].sample_rate);
1330
1331 for (j = 0; j < MAX_COPPS_PER_PORT; j++) {
1332 unsigned long copp =
1333 session_copp_map[fe_id][session_type][i];
1334 if (test_bit(j, &copp)) {
Sachin Mohan Gadag3c3c5812018-07-20 15:46:54 +05301335 payload.port_id[num_copps] = port_id;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301336 payload.copp_idx[num_copps] = j;
1337 payload.app_type[num_copps] =
1338 fe_dai_app_type_cfg
1339 [fe_id][session_type][i]
1340 .app_type;
1341 payload.acdb_dev_id[num_copps] =
1342 fe_dai_app_type_cfg
1343 [fe_id][session_type][i]
1344 .acdb_dev_id;
1345 payload.sample_rate[num_copps] =
1346 fe_dai_app_type_cfg
1347 [fe_id][session_type][i]
1348 .sample_rate;
1349 num_copps++;
1350 }
1351 }
1352 if (passthr_mode != COMPRESSED_PASSTHROUGH_DSD
1353 && passthr_mode !=
1354 COMPRESSED_PASSTHROUGH_GEN) {
Sachin Mohan Gadag3c3c5812018-07-20 15:46:54 +05301355 msm_routing_send_device_pp_params(port_id,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301356 copp_idx, fe_id);
1357 }
1358 }
1359 }
1360 if (num_copps) {
1361 payload.num_copps = num_copps;
1362 payload.session_id = fe_dai_map[fe_id][session_type].strm_id;
1363 adm_matrix_map(path_type, payload, perf_mode, passthr_mode);
1364 msm_pcm_routng_cfg_matrix_map_pp(payload, path_type, perf_mode);
1365 }
1366 mutex_unlock(&routing_lock);
1367 return 0;
1368}
1369
1370static u32 msm_pcm_routing_get_voc_sessionid(u16 val)
1371{
1372 u32 session_id;
1373
1374 switch (val) {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301375 case MSM_FRONTEND_DAI_QCHAT:
1376 session_id = voc_get_session_id(QCHAT_SESSION_NAME);
1377 break;
1378 case MSM_FRONTEND_DAI_VOIP:
1379 session_id = voc_get_session_id(VOIP_SESSION_NAME);
1380 break;
1381 case MSM_FRONTEND_DAI_VOICEMMODE1:
1382 session_id = voc_get_session_id(VOICEMMODE1_NAME);
1383 break;
1384 case MSM_FRONTEND_DAI_VOICEMMODE2:
1385 session_id = voc_get_session_id(VOICEMMODE2_NAME);
1386 break;
1387 default:
1388 session_id = 0;
1389 }
1390
1391 pr_debug("%s session_id 0x%x", __func__, session_id);
1392 return session_id;
1393}
1394
1395static int msm_pcm_routing_channel_mixer(int fe_id, bool perf_mode,
1396 int dspst_id, int stream_type)
1397{
1398 int copp_idx = 0;
1399 int sess_type = 0;
1400 int i = 0, j = 0, be_id;
1401 int ret = 0;
Dhanalakshmi Siddani040e0262018-11-26 23:01:26 +05301402 bool use_default_chmap = true;
1403 char *ch_map = NULL;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301404
1405 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
1406 pr_err("%s: invalid FE %d\n", __func__, fe_id);
1407 return 0;
1408 }
1409
1410 if (!(channel_mixer[fe_id].enable)) {
1411 pr_debug("%s: channel mixer not enabled for FE %d\n",
1412 __func__, fe_id);
1413 return 0;
1414 }
1415
1416 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK)
1417 sess_type = SESSION_TYPE_RX;
1418 else
1419 sess_type = SESSION_TYPE_TX;
1420
1421 for (i = 0; i < ADM_MAX_CHANNELS && channel_input[fe_id][i] > 0;
1422 ++i) {
1423 be_id = channel_input[fe_id][i] - 1;
1424 channel_mixer[fe_id].input_channels[i] =
1425 msm_bedais[be_id].channel;
1426
1427 if ((msm_bedais[be_id].active) &&
1428 test_bit(fe_id,
1429 &msm_bedais[be_id].fe_sessions[0])) {
1430 unsigned long copp =
1431 session_copp_map[fe_id][sess_type][be_id];
1432 for (j = 0; j < MAX_COPPS_PER_PORT; j++) {
1433 if (test_bit(j, &copp)) {
1434 copp_idx = j;
1435 break;
1436 }
1437 }
1438
1439 pr_debug("%s: fe %d, be %d, channel %d, copp %d\n",
1440 __func__,
1441 fe_id, be_id, msm_bedais[be_id].channel,
1442 copp_idx);
1443 ret = adm_programable_channel_mixer(
1444 msm_bedais[be_id].port_id,
1445 copp_idx, dspst_id, sess_type,
Dhanalakshmi Siddani040e0262018-11-26 23:01:26 +05301446 channel_mixer + fe_id, i,
1447 use_default_chmap, ch_map);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301448 }
1449 }
1450
1451 return ret;
1452}
1453
1454int msm_pcm_routing_reg_phy_stream(int fedai_id, int perf_mode,
1455 int dspst_id, int stream_type)
1456{
1457 int i, j, session_type, path_type, port_type, topology, num_copps = 0;
1458 struct route_payload payload;
1459 u32 channels, sample_rate;
1460 uint16_t bits_per_sample = 16;
1461 uint32_t passthr_mode = LEGACY_PCM;
1462 int ret = 0;
1463
1464 if (fedai_id > MSM_FRONTEND_DAI_MM_MAX_ID) {
1465 /* bad ID assigned in machine driver */
1466 pr_err("%s: bad MM ID %d\n", __func__, fedai_id);
1467 return -EINVAL;
1468 }
1469
1470 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK) {
1471 session_type = SESSION_TYPE_RX;
1472 path_type = ADM_PATH_PLAYBACK;
1473 port_type = MSM_AFE_PORT_TYPE_RX;
1474 } else {
1475 session_type = SESSION_TYPE_TX;
1476 path_type = ADM_PATH_LIVE_REC;
1477 port_type = MSM_AFE_PORT_TYPE_TX;
1478 }
1479
1480 mutex_lock(&routing_lock);
1481
1482 payload.num_copps = 0; /* only RX needs to use payload */
1483 fe_dai_map[fedai_id][session_type].strm_id = dspst_id;
1484 fe_dai_map[fedai_id][session_type].perf_mode = perf_mode;
1485
1486 /* re-enable EQ if active */
1487 msm_qti_pp_send_eq_values(fedai_id);
1488 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
1489 if (!is_be_dai_extproc(i) &&
1490 (afe_get_port_type(msm_bedais[i].port_id) == port_type) &&
1491 (msm_bedais[i].active) &&
1492 (test_bit(fedai_id, &msm_bedais[i].fe_sessions[0]))) {
1493 int app_type, app_type_idx, copp_idx, acdb_dev_id;
Sachin Mohan Gadag3c3c5812018-07-20 15:46:54 +05301494 int port_id = get_port_id(msm_bedais[i].port_id);
1495
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301496 /*
1497 * check if ADM needs to be configured with different
1498 * channel mapping than backend
1499 */
1500 if (!msm_bedais[i].adm_override_ch)
1501 channels = msm_bedais[i].channel;
1502 else
1503 channels = msm_bedais[i].adm_override_ch;
1504 msm_bedais[i].passthr_mode[fedai_id] =
1505 LEGACY_PCM;
1506
1507 bits_per_sample = msm_routing_get_bit_width(
1508 msm_bedais[i].format);
1509
1510 app_type =
1511 fe_dai_app_type_cfg[fedai_id][session_type][i].app_type;
1512 if (app_type) {
1513 app_type_idx =
1514 msm_pcm_routing_get_app_type_idx(app_type);
1515 sample_rate =
1516 fe_dai_app_type_cfg[fedai_id][session_type][i]
1517 .sample_rate;
1518 bits_per_sample =
1519 app_type_cfg[app_type_idx].bit_width;
1520 } else
1521 sample_rate = msm_bedais[i].sample_rate;
1522
1523 acdb_dev_id =
1524 fe_dai_app_type_cfg[fedai_id][session_type][i]
1525 .acdb_dev_id;
1526 topology = msm_routing_get_adm_topology(fedai_id,
1527 session_type,
1528 i);
Sachin Mohan Gadag3c3c5812018-07-20 15:46:54 +05301529 copp_idx = adm_open(port_id, path_type,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301530 sample_rate, channels, topology,
1531 perf_mode, bits_per_sample,
Sachin Mohan Gadag3c3c5812018-07-20 15:46:54 +05301532 app_type, acdb_dev_id,
1533 session_type);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301534 if ((copp_idx < 0) ||
1535 (copp_idx >= MAX_COPPS_PER_PORT)) {
1536 pr_err("%s: adm open failed copp_idx:%d\n",
1537 __func__, copp_idx);
1538 mutex_unlock(&routing_lock);
1539 return -EINVAL;
1540 }
1541 pr_debug("%s: setting idx bit of fe:%d, type: %d, be:%d\n",
1542 __func__, fedai_id, session_type, i);
1543 set_bit(copp_idx,
1544 &session_copp_map[fedai_id][session_type][i]);
1545
1546 if (msm_is_resample_needed(
1547 sample_rate,
1548 msm_bedais[i].sample_rate))
Sachin Mohan Gadag3c3c5812018-07-20 15:46:54 +05301549 adm_copp_mfc_cfg(port_id, copp_idx,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301550 msm_bedais[i].sample_rate);
1551
1552 for (j = 0; j < MAX_COPPS_PER_PORT; j++) {
1553 unsigned long copp =
1554 session_copp_map[fedai_id][session_type][i];
1555 if (test_bit(j, &copp)) {
Sachin Mohan Gadag3c3c5812018-07-20 15:46:54 +05301556 payload.port_id[num_copps] = port_id;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301557 payload.copp_idx[num_copps] = j;
1558 payload.app_type[num_copps] =
1559 fe_dai_app_type_cfg
1560 [fedai_id][session_type]
1561 [i].app_type;
1562 payload.acdb_dev_id[num_copps] =
1563 fe_dai_app_type_cfg
1564 [fedai_id][session_type]
1565 [i].acdb_dev_id;
1566 payload.sample_rate[num_copps] =
1567 fe_dai_app_type_cfg
1568 [fedai_id][session_type]
1569 [i].sample_rate;
1570 num_copps++;
1571 }
1572 }
1573 if ((perf_mode == LEGACY_PCM_MODE) &&
1574 (msm_bedais[i].passthr_mode[fedai_id] ==
1575 LEGACY_PCM))
Sachin Mohan Gadag3c3c5812018-07-20 15:46:54 +05301576 msm_pcm_routing_cfg_pp(port_id, copp_idx,
1577 topology, channels);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301578 }
1579 }
1580 if (num_copps) {
1581 payload.num_copps = num_copps;
1582 payload.session_id = fe_dai_map[fedai_id][session_type].strm_id;
1583 adm_matrix_map(path_type, payload, perf_mode, passthr_mode);
1584 msm_pcm_routng_cfg_matrix_map_pp(payload, path_type, perf_mode);
1585 }
1586
1587 ret = msm_pcm_routing_channel_mixer(fedai_id, perf_mode,
1588 dspst_id, stream_type);
1589 mutex_unlock(&routing_lock);
1590 return ret;
1591}
1592
1593int msm_pcm_routing_reg_phy_stream_v2(int fedai_id, int perf_mode,
1594 int dspst_id, int stream_type,
1595 struct msm_pcm_routing_evt event_info)
1596{
1597 if (msm_pcm_routing_reg_phy_stream(fedai_id, perf_mode, dspst_id,
1598 stream_type)) {
1599 pr_err("%s: failed to reg phy stream\n", __func__);
1600 return -EINVAL;
1601 }
1602
1603 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK)
1604 fe_dai_map[fedai_id][SESSION_TYPE_RX].event_info = event_info;
1605 else
1606 fe_dai_map[fedai_id][SESSION_TYPE_TX].event_info = event_info;
1607 return 0;
1608}
1609
1610void msm_pcm_routing_dereg_phy_stream(int fedai_id, int stream_type)
1611{
Sachin Mohan Gadag3c3c5812018-07-20 15:46:54 +05301612 int i, port_type, session_type, path_type, topology, port_id;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301613 struct msm_pcm_routing_fdai_data *fdai;
1614
1615 if (!is_mm_lsm_fe_id(fedai_id)) {
1616 /* bad ID assigned in machine driver */
1617 pr_err("%s: bad MM ID\n", __func__);
1618 return;
1619 }
1620
1621 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK) {
1622 port_type = MSM_AFE_PORT_TYPE_RX;
1623 session_type = SESSION_TYPE_RX;
1624 path_type = ADM_PATH_PLAYBACK;
1625 } else {
1626 port_type = MSM_AFE_PORT_TYPE_TX;
1627 session_type = SESSION_TYPE_TX;
1628 path_type = ADM_PATH_LIVE_REC;
1629 }
1630
1631 mutex_lock(&routing_lock);
1632 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
1633 if (!is_be_dai_extproc(i) &&
1634 (afe_get_port_type(msm_bedais[i].port_id) == port_type) &&
1635 (msm_bedais[i].active) &&
1636 (test_bit(fedai_id, &msm_bedais[i].fe_sessions[0]))) {
1637 int idx;
1638 unsigned long copp =
1639 session_copp_map[fedai_id][session_type][i];
1640 fdai = &fe_dai_map[fedai_id][session_type];
1641
1642 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++)
1643 if (test_bit(idx, &copp))
1644 break;
1645
1646 if (idx >= MAX_COPPS_PER_PORT || idx < 0) {
1647 pr_debug("%s: copp idx is invalid, exiting\n",
1648 __func__);
1649 continue;
1650 }
Sachin Mohan Gadag3c3c5812018-07-20 15:46:54 +05301651 port_id = get_port_id(msm_bedais[i].port_id);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301652 topology = adm_get_topology_for_port_copp_idx(
Sachin Mohan Gadag3c3c5812018-07-20 15:46:54 +05301653 port_id, idx);
1654 adm_close(port_id, fdai->perf_mode, idx);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301655 pr_debug("%s:copp:%ld,idx bit fe:%d,type:%d,be:%d\n",
1656 __func__, copp, fedai_id, session_type, i);
1657 clear_bit(idx,
1658 &session_copp_map[fedai_id][session_type][i]);
1659 if ((topology == DOLBY_ADM_COPP_TOPOLOGY_ID ||
1660 topology == DS2_ADM_COPP_TOPOLOGY_ID) &&
1661 (fdai->perf_mode == LEGACY_PCM_MODE) &&
1662 (msm_bedais[i].passthr_mode[fedai_id] ==
1663 LEGACY_PCM))
Sachin Mohan Gadag3c3c5812018-07-20 15:46:54 +05301664 msm_pcm_routing_deinit_pp(port_id, topology);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301665 }
1666 }
1667
1668 fe_dai_map[fedai_id][session_type].strm_id = INVALID_SESSION;
1669 fe_dai_map[fedai_id][session_type].be_srate = 0;
1670 mutex_unlock(&routing_lock);
1671}
1672
1673/* Check if FE/BE route is set */
1674static bool msm_pcm_routing_route_is_set(u16 be_id, u16 fe_id)
1675{
1676 bool rc = false;
1677
1678 if (!is_mm_lsm_fe_id(fe_id)) {
1679 /* recheck FE ID in the mixer control defined in this file */
1680 pr_err("%s: bad MM ID\n", __func__);
1681 return rc;
1682 }
1683
1684 if (test_bit(fe_id, &msm_bedais[be_id].fe_sessions[0]))
1685 rc = true;
1686
1687 return rc;
1688}
1689
1690static void msm_pcm_routing_process_audio(u16 reg, u16 val, int set)
1691{
1692 int session_type, path_type, topology;
1693 u32 channels, sample_rate;
1694 uint16_t bits_per_sample = 16;
1695 struct msm_pcm_routing_fdai_data *fdai;
1696 uint32_t passthr_mode;
1697 bool is_lsm;
1698
1699 pr_debug("%s: reg %x val %x set %x\n", __func__, reg, val, set);
1700
1701 if (!is_mm_lsm_fe_id(val)) {
1702 /* recheck FE ID in the mixer control defined in this file */
1703 pr_err("%s: bad MM ID\n", __func__);
1704 return;
1705 }
1706
1707 if (!route_check_fe_id_adm_support(val)) {
1708 /* ignore adm open if not supported for fe_id */
1709 pr_debug("%s: No ADM support for fe id %d\n", __func__, val);
1710 return;
1711 }
1712
1713 passthr_mode = msm_bedais[reg].passthr_mode[val];
1714 if (afe_get_port_type(msm_bedais[reg].port_id) ==
1715 MSM_AFE_PORT_TYPE_RX) {
1716 session_type = SESSION_TYPE_RX;
1717 if (passthr_mode != LEGACY_PCM)
1718 path_type = ADM_PATH_COMPRESSED_RX;
1719 else
1720 path_type = ADM_PATH_PLAYBACK;
1721 } else {
1722 session_type = SESSION_TYPE_TX;
Haynes Mathew George9a277722018-01-29 17:34:49 -08001723 if ((passthr_mode != LEGACY_PCM) && (passthr_mode != LISTEN))
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301724 path_type = ADM_PATH_COMPRESSED_TX;
1725 else
1726 path_type = ADM_PATH_LIVE_REC;
1727 }
1728 is_lsm = (val >= MSM_FRONTEND_DAI_LSM1) &&
1729 (val <= MSM_FRONTEND_DAI_LSM8);
1730
1731 mutex_lock(&routing_lock);
1732 if (set) {
1733 if (!test_bit(val, &msm_bedais[reg].fe_sessions[0]) &&
1734 ((msm_bedais[reg].port_id == VOICE_PLAYBACK_TX) ||
1735 (msm_bedais[reg].port_id == VOICE2_PLAYBACK_TX)))
1736 voc_start_playback(set, msm_bedais[reg].port_id);
1737
1738 set_bit(val, &msm_bedais[reg].fe_sessions[0]);
1739 fdai = &fe_dai_map[val][session_type];
1740 if (msm_bedais[reg].active && fdai->strm_id !=
1741 INVALID_SESSION) {
1742 int app_type, app_type_idx, copp_idx, acdb_dev_id;
Sachin Mohan Gadag3c3c5812018-07-20 15:46:54 +05301743 int port_id = get_port_id(msm_bedais[reg].port_id);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301744 /*
1745 * check if ADM needs to be configured with different
1746 * channel mapping than backend
1747 */
1748 if (!msm_bedais[reg].adm_override_ch)
1749 channels = msm_bedais[reg].channel;
1750 else
1751 channels = msm_bedais[reg].adm_override_ch;
1752 if (session_type == SESSION_TYPE_TX &&
1753 fdai->be_srate &&
1754 (fdai->be_srate != msm_bedais[reg].sample_rate)) {
1755 pr_debug("%s: flush strm %d diff BE rates\n",
1756 __func__, fdai->strm_id);
1757
1758 if (fdai->event_info.event_func)
1759 fdai->event_info.event_func(
1760 MSM_PCM_RT_EVT_BUF_RECFG,
1761 fdai->event_info.priv_data);
1762 fdai->be_srate = 0; /* might not need it */
1763 }
1764
1765 bits_per_sample = msm_routing_get_bit_width(
1766 msm_bedais[reg].format);
1767
1768 app_type =
1769 fe_dai_app_type_cfg[val][session_type][reg].app_type;
1770 if (app_type && is_lsm) {
1771 app_type_idx =
1772 msm_pcm_routing_get_lsm_app_type_idx(app_type);
1773 sample_rate =
1774 fe_dai_app_type_cfg[val][session_type][reg]
1775 .sample_rate;
1776 bits_per_sample =
1777 lsm_app_type_cfg[app_type_idx].bit_width;
1778 } else if (app_type) {
1779 app_type_idx =
1780 msm_pcm_routing_get_app_type_idx(app_type);
1781 sample_rate =
1782 fe_dai_app_type_cfg[val][session_type][reg]
1783 .sample_rate;
1784 bits_per_sample =
1785 app_type_cfg[app_type_idx].bit_width;
1786 } else
1787 sample_rate = msm_bedais[reg].sample_rate;
1788
1789 topology = msm_routing_get_adm_topology(val,
1790 session_type,
1791 reg);
1792 acdb_dev_id =
1793 fe_dai_app_type_cfg[val][session_type][reg].acdb_dev_id;
Sachin Mohan Gadag3c3c5812018-07-20 15:46:54 +05301794 copp_idx = adm_open(port_id, path_type,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301795 sample_rate, channels, topology,
1796 fdai->perf_mode, bits_per_sample,
Sachin Mohan Gadag3c3c5812018-07-20 15:46:54 +05301797 app_type, acdb_dev_id,
1798 session_type);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301799 if ((copp_idx < 0) ||
1800 (copp_idx >= MAX_COPPS_PER_PORT)) {
1801 pr_err("%s: adm open failed\n", __func__);
1802 mutex_unlock(&routing_lock);
1803 return;
1804 }
1805 pr_debug("%s: setting idx bit of fe:%d, type: %d, be:%d\n",
1806 __func__, val, session_type, reg);
1807 set_bit(copp_idx,
1808 &session_copp_map[val][session_type][reg]);
1809
1810 if (msm_is_resample_needed(
1811 sample_rate,
1812 msm_bedais[reg].sample_rate))
Sachin Mohan Gadag3c3c5812018-07-20 15:46:54 +05301813 adm_copp_mfc_cfg(port_id, copp_idx,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301814 msm_bedais[reg].sample_rate);
1815
1816 if (session_type == SESSION_TYPE_RX &&
1817 fdai->event_info.event_func)
1818 fdai->event_info.event_func(
1819 MSM_PCM_RT_EVT_DEVSWITCH,
1820 fdai->event_info.priv_data);
1821
1822 msm_pcm_routing_build_matrix(val, session_type,
1823 path_type,
1824 fdai->perf_mode,
1825 passthr_mode);
1826 if ((fdai->perf_mode == LEGACY_PCM_MODE) &&
1827 (passthr_mode == LEGACY_PCM))
Sachin Mohan Gadag3c3c5812018-07-20 15:46:54 +05301828 msm_pcm_routing_cfg_pp(port_id, copp_idx,
1829 topology, channels);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301830 }
1831 } else {
1832 if (test_bit(val, &msm_bedais[reg].fe_sessions[0]) &&
1833 ((msm_bedais[reg].port_id == VOICE_PLAYBACK_TX) ||
1834 (msm_bedais[reg].port_id == VOICE2_PLAYBACK_TX)))
1835 voc_start_playback(set, msm_bedais[reg].port_id);
1836 clear_bit(val, &msm_bedais[reg].fe_sessions[0]);
1837 fdai = &fe_dai_map[val][session_type];
1838 if (msm_bedais[reg].active && fdai->strm_id !=
1839 INVALID_SESSION) {
1840 int idx;
1841 int port_id;
1842 unsigned long copp =
1843 session_copp_map[val][session_type][reg];
1844 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++)
1845 if (test_bit(idx, &copp))
1846 break;
1847
Sachin Mohan Gadag3c3c5812018-07-20 15:46:54 +05301848 port_id = get_port_id(msm_bedais[reg].port_id);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301849 topology = adm_get_topology_for_port_copp_idx(port_id,
1850 idx);
Sachin Mohan Gadag3c3c5812018-07-20 15:46:54 +05301851 adm_close(port_id, fdai->perf_mode, idx);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301852 pr_debug("%s: copp: %ld, reset idx bit fe:%d, type: %d, be:%d topology=0x%x\n",
1853 __func__, copp, val, session_type, reg,
1854 topology);
1855 clear_bit(idx,
1856 &session_copp_map[val][session_type][reg]);
1857 if ((topology == DOLBY_ADM_COPP_TOPOLOGY_ID ||
1858 topology == DS2_ADM_COPP_TOPOLOGY_ID) &&
1859 (fdai->perf_mode == LEGACY_PCM_MODE) &&
1860 (passthr_mode == LEGACY_PCM))
Sachin Mohan Gadag3c3c5812018-07-20 15:46:54 +05301861 msm_pcm_routing_deinit_pp(port_id, topology);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301862 msm_pcm_routing_build_matrix(val, session_type,
1863 path_type,
1864 fdai->perf_mode,
1865 passthr_mode);
1866 }
1867 }
1868 if ((msm_bedais[reg].port_id == VOICE_RECORD_RX)
1869 || (msm_bedais[reg].port_id == VOICE_RECORD_TX))
1870 voc_start_record(msm_bedais[reg].port_id, set, voc_session_id);
1871
1872 mutex_unlock(&routing_lock);
1873}
1874
1875static int msm_routing_get_audio_mixer(struct snd_kcontrol *kcontrol,
1876 struct snd_ctl_elem_value *ucontrol)
1877{
1878 struct soc_mixer_control *mc =
1879 (struct soc_mixer_control *)kcontrol->private_value;
1880
1881 if (test_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]))
1882 ucontrol->value.integer.value[0] = 1;
1883 else
1884 ucontrol->value.integer.value[0] = 0;
1885
1886 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
1887 ucontrol->value.integer.value[0]);
1888
1889 return 0;
1890}
1891
1892static int msm_routing_put_audio_mixer(struct snd_kcontrol *kcontrol,
1893 struct snd_ctl_elem_value *ucontrol)
1894{
Asish Bhattacharya34504582017-08-08 12:55:01 +05301895 struct snd_soc_dapm_widget *widget =
1896 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301897 struct soc_mixer_control *mc =
1898 (struct soc_mixer_control *)kcontrol->private_value;
1899 struct snd_soc_dapm_update *update = NULL;
1900
1901 if (ucontrol->value.integer.value[0] &&
1902 msm_pcm_routing_route_is_set(mc->reg, mc->shift) == false) {
1903 msm_pcm_routing_process_audio(mc->reg, mc->shift, 1);
1904 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
1905 update);
1906 } else if (!ucontrol->value.integer.value[0] &&
1907 msm_pcm_routing_route_is_set(mc->reg, mc->shift) == true) {
1908 msm_pcm_routing_process_audio(mc->reg, mc->shift, 0);
1909 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
1910 update);
1911 }
1912
1913 return 1;
1914}
1915
1916static int msm_routing_get_listen_mixer(struct snd_kcontrol *kcontrol,
1917 struct snd_ctl_elem_value *ucontrol)
1918{
1919 struct soc_mixer_control *mc =
1920 (struct soc_mixer_control *)kcontrol->private_value;
1921
1922 if (test_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]))
1923 ucontrol->value.integer.value[0] = 1;
1924 else
1925 ucontrol->value.integer.value[0] = 0;
1926
1927 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
1928 ucontrol->value.integer.value[0]);
1929
1930 return 0;
1931}
1932
1933static int msm_routing_put_listen_mixer(struct snd_kcontrol *kcontrol,
1934 struct snd_ctl_elem_value *ucontrol)
1935{
Asish Bhattacharya34504582017-08-08 12:55:01 +05301936 struct snd_soc_dapm_widget *widget =
1937 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301938 struct soc_mixer_control *mc =
1939 (struct soc_mixer_control *)kcontrol->private_value;
1940 struct snd_soc_dapm_update *update = NULL;
1941
1942 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
1943 ucontrol->value.integer.value[0]);
1944
1945 if (ucontrol->value.integer.value[0]) {
1946 if (msm_pcm_routing_route_is_set(mc->reg, mc->shift) == false)
1947 msm_pcm_routing_process_audio(mc->reg, mc->shift, 1);
1948 snd_soc_dapm_mixer_update_power(widget->dapm,
1949 kcontrol, 1, update);
1950 } else if (!ucontrol->value.integer.value[0]) {
1951 if (msm_pcm_routing_route_is_set(mc->reg, mc->shift) == true)
1952 msm_pcm_routing_process_audio(mc->reg, mc->shift, 0);
1953 snd_soc_dapm_mixer_update_power(widget->dapm,
1954 kcontrol, 0, update);
1955 }
1956
1957 return 1;
1958}
1959
1960static void msm_pcm_routing_process_voice(u16 reg, u16 val, int set)
1961{
1962 u32 session_id = 0;
1963 u16 path_type;
1964 struct media_format_info voc_be_media_format;
1965
1966 pr_debug("%s: reg %x val %x set %x\n", __func__, reg, val, set);
1967
1968 session_id = msm_pcm_routing_get_voc_sessionid(val);
1969
1970 pr_debug("%s: FE DAI 0x%x session_id 0x%x\n",
1971 __func__, val, session_id);
1972
1973 mutex_lock(&routing_lock);
1974
1975 if (set)
1976 set_bit(val, &msm_bedais[reg].fe_sessions[0]);
1977 else
1978 clear_bit(val, &msm_bedais[reg].fe_sessions[0]);
1979
1980 if (val == MSM_FRONTEND_DAI_DTMF_RX &&
1981 afe_get_port_type(msm_bedais[reg].port_id) ==
1982 MSM_AFE_PORT_TYPE_RX) {
1983 pr_debug("%s(): set=%d port id=0x%x for dtmf generation\n",
1984 __func__, set, msm_bedais[reg].port_id);
1985 afe_set_dtmf_gen_rx_portid(msm_bedais[reg].port_id, set);
1986 }
1987
1988 if (afe_get_port_type(msm_bedais[reg].port_id) ==
1989 MSM_AFE_PORT_TYPE_RX)
1990 path_type = RX_PATH;
1991 else
1992 path_type = TX_PATH;
1993
1994 if (set) {
1995 if (msm_bedais[reg].active) {
1996 voc_set_route_flag(session_id, path_type, 1);
1997
1998 memset(&voc_be_media_format, 0,
1999 sizeof(struct media_format_info));
2000
2001 voc_be_media_format.port_id = msm_bedais[reg].port_id;
2002 voc_be_media_format.num_channels =
2003 msm_bedais[reg].channel;
2004 voc_be_media_format.sample_rate =
2005 msm_bedais[reg].sample_rate;
2006 voc_be_media_format.bits_per_sample =
2007 msm_bedais[reg].format;
2008 /* Defaulting this to 1 for voice call usecases */
2009 voc_be_media_format.channel_mapping[0] = 1;
2010
2011 voc_set_device_config(session_id, path_type,
2012 &voc_be_media_format);
2013
2014 if (voc_get_route_flag(session_id, TX_PATH) &&
2015 voc_get_route_flag(session_id, RX_PATH))
2016 voc_enable_device(session_id);
2017 } else {
2018 pr_debug("%s BE is not active\n", __func__);
2019 }
2020 } else {
2021 voc_set_route_flag(session_id, path_type, 0);
2022 voc_disable_device(session_id);
2023 }
2024
2025 mutex_unlock(&routing_lock);
2026
2027}
2028
2029static int msm_routing_get_voice_mixer(struct snd_kcontrol *kcontrol,
2030 struct snd_ctl_elem_value *ucontrol)
2031{
2032 struct soc_mixer_control *mc =
2033 (struct soc_mixer_control *)kcontrol->private_value;
2034
2035 mutex_lock(&routing_lock);
2036
2037 if (test_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]))
2038 ucontrol->value.integer.value[0] = 1;
2039 else
2040 ucontrol->value.integer.value[0] = 0;
2041
2042 mutex_unlock(&routing_lock);
2043
2044 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
2045 ucontrol->value.integer.value[0]);
2046
2047 return 0;
2048}
2049
2050static int msm_routing_put_voice_mixer(struct snd_kcontrol *kcontrol,
2051 struct snd_ctl_elem_value *ucontrol)
2052{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302053 struct snd_soc_dapm_widget *widget =
2054 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302055 struct soc_mixer_control *mc =
2056 (struct soc_mixer_control *)kcontrol->private_value;
2057 struct snd_soc_dapm_update *update = NULL;
2058
2059 if (ucontrol->value.integer.value[0]) {
2060 msm_pcm_routing_process_voice(mc->reg, mc->shift, 1);
2061 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2062 update);
2063 } else {
2064 msm_pcm_routing_process_voice(mc->reg, mc->shift, 0);
2065 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2066 update);
2067 }
2068
2069 return 1;
2070}
2071
2072static int msm_routing_get_voice_stub_mixer(struct snd_kcontrol *kcontrol,
2073 struct snd_ctl_elem_value *ucontrol)
2074{
2075 struct soc_mixer_control *mc =
2076 (struct soc_mixer_control *)kcontrol->private_value;
2077
2078 mutex_lock(&routing_lock);
2079
2080 if (test_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]))
2081 ucontrol->value.integer.value[0] = 1;
2082 else
2083 ucontrol->value.integer.value[0] = 0;
2084
2085 mutex_unlock(&routing_lock);
2086
2087 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
2088 ucontrol->value.integer.value[0]);
2089
2090 return 0;
2091}
2092
2093static int msm_routing_put_voice_stub_mixer(struct snd_kcontrol *kcontrol,
2094 struct snd_ctl_elem_value *ucontrol)
2095{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302096 struct snd_soc_dapm_widget *widget =
2097 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302098 struct soc_mixer_control *mc =
2099 (struct soc_mixer_control *)kcontrol->private_value;
2100 struct snd_soc_dapm_update *update = NULL;
2101
2102 if (ucontrol->value.integer.value[0]) {
2103 mutex_lock(&routing_lock);
2104 set_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]);
2105 mutex_unlock(&routing_lock);
2106
2107 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2108 update);
2109 } else {
2110 mutex_lock(&routing_lock);
2111 clear_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]);
2112 mutex_unlock(&routing_lock);
2113
2114 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2115 update);
2116 }
2117
2118 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
2119 ucontrol->value.integer.value[0]);
2120
2121 return 1;
2122}
2123
2124/*
2125 * Return the mapping between port ID and backend ID to enable the AFE callback
2126 * to determine the acdb_dev_id from the port id
2127 */
2128int msm_pcm_get_be_id_from_port_id(int port_id)
2129{
2130 int i;
2131 int be_id = -EINVAL;
2132
2133 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
2134 if (msm_bedais[i].port_id == port_id) {
2135 be_id = i;
2136 break;
2137 }
2138 }
2139
2140 return be_id;
2141}
2142
2143/*
2144 * Return the registered dev_acdb_id given a port ID to enable identifying the
2145 * correct AFE calibration information by comparing the header information.
2146 */
2147static int msm_pcm_get_dev_acdb_id_by_port_id(int port_id)
2148{
2149 int acdb_id = -EINVAL;
2150 int i = 0;
2151 int session;
2152 int port_type = afe_get_port_type(port_id);
2153 int be_id = msm_pcm_get_be_id_from_port_id(port_id);
2154
2155 pr_debug("%s:port_id %d be_id %d, port_type 0x%x\n",
2156 __func__, port_id, be_id, port_type);
2157
2158 if (port_type == MSM_AFE_PORT_TYPE_TX) {
2159 session = SESSION_TYPE_TX;
2160 } else if (port_type == MSM_AFE_PORT_TYPE_RX) {
2161 session = SESSION_TYPE_RX;
2162 } else {
2163 pr_err("%s: Invalid port type %d\n", __func__, port_type);
2164 acdb_id = -EINVAL;
2165 goto exit;
2166 }
2167
2168 if (be_id < 0) {
2169 pr_err("%s: Error getting backend id %d\n", __func__, be_id);
2170 goto exit;
2171 }
2172
2173 mutex_lock(&routing_lock);
2174 i = find_first_bit(&msm_bedais[be_id].fe_sessions[0],
2175 MSM_FRONTEND_DAI_MAX);
2176 if (i < MSM_FRONTEND_DAI_MAX)
2177 acdb_id = fe_dai_app_type_cfg[i][session][be_id].acdb_dev_id;
2178
2179 pr_debug("%s: FE[%d] session[%d] BE[%d] acdb_id(%d)\n",
2180 __func__, i, session, be_id, acdb_id);
2181 mutex_unlock(&routing_lock);
2182exit:
2183 return acdb_id;
2184}
2185
2186static int msm_routing_get_switch_mixer(struct snd_kcontrol *kcontrol,
2187 struct snd_ctl_elem_value *ucontrol)
2188{
2189 ucontrol->value.integer.value[0] = fm_switch_enable;
2190 pr_debug("%s: FM Switch enable %ld\n", __func__,
2191 ucontrol->value.integer.value[0]);
2192 return 0;
2193}
2194
2195static int msm_routing_put_switch_mixer(struct snd_kcontrol *kcontrol,
2196 struct snd_ctl_elem_value *ucontrol)
2197{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302198 struct snd_soc_dapm_widget *widget =
2199 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302200 struct snd_soc_dapm_update *update = NULL;
2201
2202 pr_debug("%s: FM Switch enable %ld\n", __func__,
2203 ucontrol->value.integer.value[0]);
2204 if (ucontrol->value.integer.value[0])
2205 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2206 update);
2207 else
2208 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2209 update);
2210 fm_switch_enable = ucontrol->value.integer.value[0];
2211 return 1;
2212}
2213
2214static int msm_routing_get_hfp_switch_mixer(struct snd_kcontrol *kcontrol,
2215 struct snd_ctl_elem_value *ucontrol)
2216{
2217 ucontrol->value.integer.value[0] = hfp_switch_enable;
2218 pr_debug("%s: HFP Switch enable %ld\n", __func__,
2219 ucontrol->value.integer.value[0]);
2220 return 0;
2221}
2222
2223static int msm_routing_put_hfp_switch_mixer(struct snd_kcontrol *kcontrol,
2224 struct snd_ctl_elem_value *ucontrol)
2225{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302226 struct snd_soc_dapm_widget *widget =
2227 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302228 struct snd_soc_dapm_update *update = NULL;
2229
2230 pr_debug("%s: HFP Switch enable %ld\n", __func__,
2231 ucontrol->value.integer.value[0]);
2232 if (ucontrol->value.integer.value[0])
2233 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol,
2234 1, update);
2235 else
2236 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol,
2237 0, update);
2238 hfp_switch_enable = ucontrol->value.integer.value[0];
2239 return 1;
2240}
2241
Aniket Kumar Lataf8664712018-02-22 14:46:09 -08002242static int msm_routing_a2dp_switch_mixer_get(struct snd_kcontrol *kcontrol,
2243 struct snd_ctl_elem_value *ucontrol)
2244{
2245 ucontrol->value.integer.value[0] = a2dp_switch_enable;
2246 pr_debug("%s: A2DP Switch enable %ld\n", __func__,
2247 ucontrol->value.integer.value[0]);
2248 return 0;
2249}
2250
2251static int msm_routing_a2dp_switch_mixer_put(struct snd_kcontrol *kcontrol,
2252 struct snd_ctl_elem_value *ucontrol)
2253{
2254 struct snd_soc_dapm_widget *widget =
2255 snd_soc_dapm_kcontrol_widget(kcontrol);
2256 struct snd_soc_dapm_update *update = NULL;
2257
2258 pr_debug("%s: A2DP Switch enable %ld\n", __func__,
2259 ucontrol->value.integer.value[0]);
2260 a2dp_switch_enable = ucontrol->value.integer.value[0];
2261 if (a2dp_switch_enable)
2262 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol,
2263 1, update);
2264 else
2265 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol,
2266 0, update);
2267 return 1;
2268}
2269
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302270static int msm_routing_get_int0_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2271 struct snd_ctl_elem_value *ucontrol)
2272{
2273 ucontrol->value.integer.value[0] = int0_mi2s_switch_enable;
2274 pr_debug("%s: INT0 MI2S Switch enable %ld\n", __func__,
2275 ucontrol->value.integer.value[0]);
2276 return 0;
2277}
2278
2279static int msm_routing_put_int0_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2280 struct snd_ctl_elem_value *ucontrol)
2281{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302282 struct snd_soc_dapm_widget *widget =
2283 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302284 struct snd_soc_dapm_update *update = NULL;
2285
2286 pr_debug("%s: INT0 MI2S Switch enable %ld\n", __func__,
2287 ucontrol->value.integer.value[0]);
2288 if (ucontrol->value.integer.value[0])
2289 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2290 update);
2291 else
2292 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2293 update);
2294 int0_mi2s_switch_enable = ucontrol->value.integer.value[0];
2295 return 1;
2296}
2297
2298static int msm_routing_get_int4_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2299 struct snd_ctl_elem_value *ucontrol)
2300{
2301 ucontrol->value.integer.value[0] = int4_mi2s_switch_enable;
2302 pr_debug("%s: INT4 MI2S Switch enable %ld\n", __func__,
2303 ucontrol->value.integer.value[0]);
2304 return 0;
2305}
2306
2307static int msm_routing_put_int4_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2308 struct snd_ctl_elem_value *ucontrol)
2309{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302310 struct snd_soc_dapm_widget *widget =
2311 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302312 struct snd_soc_dapm_update *update = NULL;
2313
2314 pr_debug("%s: INT4 MI2S Switch enable %ld\n", __func__,
2315 ucontrol->value.integer.value[0]);
2316 if (ucontrol->value.integer.value[0])
2317 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2318 update);
2319 else
2320 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2321 update);
2322 int4_mi2s_switch_enable = ucontrol->value.integer.value[0];
2323 return 1;
2324}
2325
2326static int msm_routing_get_usb_switch_mixer(struct snd_kcontrol *kcontrol,
2327 struct snd_ctl_elem_value *ucontrol)
2328{
2329 ucontrol->value.integer.value[0] = usb_switch_enable;
2330 pr_debug("%s: HFP Switch enable %ld\n", __func__,
2331 ucontrol->value.integer.value[0]);
2332 return 0;
2333}
2334
2335static int msm_routing_put_usb_switch_mixer(struct snd_kcontrol *kcontrol,
2336 struct snd_ctl_elem_value *ucontrol)
2337{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302338 struct snd_soc_dapm_widget *widget =
2339 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302340 struct snd_soc_dapm_update *update = NULL;
2341
2342 pr_debug("%s: USB Switch enable %ld\n", __func__,
2343 ucontrol->value.integer.value[0]);
2344 if (ucontrol->value.integer.value[0])
2345 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol,
2346 1, update);
2347 else
2348 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol,
2349 0, update);
2350 usb_switch_enable = ucontrol->value.integer.value[0];
2351 return 1;
2352}
2353
2354static int msm_routing_get_pri_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2355 struct snd_ctl_elem_value *ucontrol)
2356{
2357 ucontrol->value.integer.value[0] = pri_mi2s_switch_enable;
2358 pr_debug("%s: PRI MI2S Switch enable %ld\n", __func__,
2359 ucontrol->value.integer.value[0]);
2360 return 0;
2361}
2362
2363static int msm_routing_put_pri_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2364 struct snd_ctl_elem_value *ucontrol)
2365{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302366 struct snd_soc_dapm_widget *widget =
2367 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302368 struct snd_soc_dapm_update *update = NULL;
2369
2370 pr_debug("%s: PRI MI2S Switch enable %ld\n", __func__,
2371 ucontrol->value.integer.value[0]);
2372 if (ucontrol->value.integer.value[0])
2373 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2374 update);
2375 else
2376 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2377 update);
2378 pri_mi2s_switch_enable = ucontrol->value.integer.value[0];
2379 return 1;
2380}
2381
2382static int msm_routing_get_sec_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2383 struct snd_ctl_elem_value *ucontrol)
2384{
2385 ucontrol->value.integer.value[0] = sec_mi2s_switch_enable;
2386 pr_debug("%s: SEC MI2S Switch enable %ld\n", __func__,
2387 ucontrol->value.integer.value[0]);
2388 return 0;
2389}
2390
2391static int msm_routing_put_sec_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2392 struct snd_ctl_elem_value *ucontrol)
2393{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302394 struct snd_soc_dapm_widget *widget =
2395 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302396 struct snd_soc_dapm_update *update = NULL;
2397
2398 pr_debug("%s: SEC MI2S Switch enable %ld\n", __func__,
2399 ucontrol->value.integer.value[0]);
2400 if (ucontrol->value.integer.value[0])
2401 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2402 update);
2403 else
2404 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2405 update);
2406 sec_mi2s_switch_enable = ucontrol->value.integer.value[0];
2407 return 1;
2408}
2409
2410static int msm_routing_get_tert_mi2s_switch_mixer(
2411 struct snd_kcontrol *kcontrol,
2412 struct snd_ctl_elem_value *ucontrol)
2413{
2414 ucontrol->value.integer.value[0] = tert_mi2s_switch_enable;
2415 pr_debug("%s: TERT MI2S Switch enable %ld\n", __func__,
2416 ucontrol->value.integer.value[0]);
2417 return 0;
2418}
2419
2420static int msm_routing_put_tert_mi2s_switch_mixer(
2421 struct snd_kcontrol *kcontrol,
2422 struct snd_ctl_elem_value *ucontrol)
2423{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302424 struct snd_soc_dapm_widget *widget =
2425 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302426 struct snd_soc_dapm_update *update = NULL;
2427
2428 pr_debug("%s: TERT MI2S Switch enable %ld\n", __func__,
2429 ucontrol->value.integer.value[0]);
2430 if (ucontrol->value.integer.value[0])
2431 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2432 update);
2433 else
2434 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2435 update);
2436 tert_mi2s_switch_enable = ucontrol->value.integer.value[0];
2437 return 1;
2438}
2439
2440static int msm_routing_get_quat_mi2s_switch_mixer(
2441 struct snd_kcontrol *kcontrol,
2442 struct snd_ctl_elem_value *ucontrol)
2443{
2444 ucontrol->value.integer.value[0] = quat_mi2s_switch_enable;
2445 pr_debug("%s: QUAT MI2S Switch enable %ld\n", __func__,
2446 ucontrol->value.integer.value[0]);
2447 return 0;
2448}
2449
2450static int msm_routing_put_quat_mi2s_switch_mixer(
2451 struct snd_kcontrol *kcontrol,
2452 struct snd_ctl_elem_value *ucontrol)
2453{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302454 struct snd_soc_dapm_widget *widget =
2455 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302456 struct snd_soc_dapm_update *update = NULL;
2457
2458 pr_debug("%s: QUAT MI2S Switch enable %ld\n", __func__,
2459 ucontrol->value.integer.value[0]);
2460 if (ucontrol->value.integer.value[0])
2461 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2462 update);
2463 else
2464 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2465 update);
2466 quat_mi2s_switch_enable = ucontrol->value.integer.value[0];
2467 return 1;
2468}
2469
Rohit Kumara5077932017-09-10 22:05:05 +05302470static int msm_routing_get_quin_mi2s_switch_mixer(
2471 struct snd_kcontrol *kcontrol,
2472 struct snd_ctl_elem_value *ucontrol)
2473{
2474 ucontrol->value.integer.value[0] = quin_mi2s_switch_enable;
2475 pr_debug("%s: QUIN MI2S Switch enable %ld\n", __func__,
2476 ucontrol->value.integer.value[0]);
2477 return 0;
2478}
2479
2480static int msm_routing_put_quin_mi2s_switch_mixer(
2481 struct snd_kcontrol *kcontrol,
2482 struct snd_ctl_elem_value *ucontrol)
2483{
2484 struct snd_soc_dapm_widget *widget =
2485 snd_soc_dapm_kcontrol_widget(kcontrol);
2486 struct snd_soc_dapm_update *update = NULL;
2487
2488 pr_debug("%s: QUIN MI2S Switch enable %ld\n", __func__,
2489 ucontrol->value.integer.value[0]);
2490 if (ucontrol->value.integer.value[0])
2491 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2492 update);
2493 else
2494 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2495 update);
2496 quin_mi2s_switch_enable = ucontrol->value.integer.value[0];
2497 return 1;
2498}
2499
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302500static int msm_routing_get_fm_pcmrx_switch_mixer(struct snd_kcontrol *kcontrol,
2501 struct snd_ctl_elem_value *ucontrol)
2502{
2503 ucontrol->value.integer.value[0] = fm_pcmrx_switch_enable;
2504 pr_debug("%s: FM Switch enable %ld\n", __func__,
2505 ucontrol->value.integer.value[0]);
2506 return 0;
2507}
2508
2509static int msm_routing_put_fm_pcmrx_switch_mixer(struct snd_kcontrol *kcontrol,
2510 struct snd_ctl_elem_value *ucontrol)
2511{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302512 struct snd_soc_dapm_widget *widget =
2513 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302514 struct snd_soc_dapm_update *update = NULL;
2515
2516 pr_debug("%s: FM Switch enable %ld\n", __func__,
2517 ucontrol->value.integer.value[0]);
2518 if (ucontrol->value.integer.value[0])
2519 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2520 update);
2521 else
2522 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2523 update);
2524 fm_pcmrx_switch_enable = ucontrol->value.integer.value[0];
2525 return 1;
2526}
2527
2528static int msm_routing_lsm_port_get(struct snd_kcontrol *kcontrol,
2529 struct snd_ctl_elem_value *ucontrol)
2530{
2531 ucontrol->value.integer.value[0] = lsm_port_index;
2532 return 0;
2533}
2534
2535static int msm_routing_lsm_port_put(struct snd_kcontrol *kcontrol,
2536 struct snd_ctl_elem_value *ucontrol)
2537{
2538 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
2539 int mux = ucontrol->value.enumerated.item[0];
2540 int lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_5_TX;
2541
2542 if (mux >= e->items) {
2543 pr_err("%s: Invalid mux value %d\n", __func__, mux);
2544 return -EINVAL;
2545 }
2546
2547 pr_debug("%s: LSM enable %ld\n", __func__,
2548 ucontrol->value.integer.value[0]);
2549 switch (ucontrol->value.integer.value[0]) {
2550 case 1:
2551 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_0_TX;
2552 break;
2553 case 2:
2554 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_1_TX;
2555 break;
2556 case 3:
2557 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_2_TX;
2558 break;
2559 case 4:
2560 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_3_TX;
2561 break;
2562 case 5:
2563 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_4_TX;
2564 break;
2565 case 6:
2566 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_5_TX;
2567 break;
2568 case 7:
2569 lsm_port = AFE_PORT_ID_TERTIARY_MI2S_TX;
2570 break;
2571 case 8:
2572 lsm_port = AFE_PORT_ID_QUATERNARY_MI2S_TX;
2573 break;
2574 case 9:
2575 lsm_port = ADM_LSM_PORT_ID;
2576 break;
2577 case 10:
Revathi Uddarajue990e322018-07-04 15:30:19 +05302578 lsm_port = AFE_PORT_ID_INT3_MI2S_TX;
Ashish Jain01b10322018-05-12 15:37:44 +05302579 break;
2580 case 11:
Revathi Uddarajue990e322018-07-04 15:30:19 +05302581 lsm_port = AFE_PORT_ID_PRIMARY_TDM_TX_2;
Ashish Jain01b10322018-05-12 15:37:44 +05302582 break;
2583 case 12:
Revathi Uddarajue990e322018-07-04 15:30:19 +05302584 lsm_port = AFE_PORT_ID_PRIMARY_TDM_TX_3;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302585 break;
2586 default:
2587 pr_err("Default lsm port");
2588 break;
2589 }
2590 set_lsm_port(lsm_port);
2591 lsm_port_index = ucontrol->value.integer.value[0];
2592
2593 return 0;
2594}
2595
2596static int msm_routing_lsm_func_get(struct snd_kcontrol *kcontrol,
2597 struct snd_ctl_elem_value *ucontrol)
2598{
2599 int i;
2600 u16 port_id;
2601 enum afe_mad_type mad_type;
2602
2603 pr_debug("%s: enter\n", __func__);
2604 for (i = 0; i < ARRAY_SIZE(lsm_port_text); i++)
2605 if (!strnstr(kcontrol->id.name, lsm_port_text[i],
2606 strlen(lsm_port_text[i])))
2607 break;
2608
2609 if (i-- == ARRAY_SIZE(lsm_port_text)) {
2610 WARN(1, "Invalid id name %s\n", kcontrol->id.name);
2611 return -EINVAL;
2612 }
2613
2614 port_id = i * 2 + 1 + SLIMBUS_0_RX;
2615
2616 /*Check for Tertiary/Quaternary/INT3 TX port*/
2617 if (strnstr(kcontrol->id.name, lsm_port_text[7],
2618 strlen(lsm_port_text[7])))
2619 port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
2620
2621 if (strnstr(kcontrol->id.name, lsm_port_text[8],
2622 strlen(lsm_port_text[8])))
2623 port_id = AFE_PORT_ID_QUATERNARY_MI2S_TX;
2624
2625 if (strnstr(kcontrol->id.name, lsm_port_text[10],
2626 strlen(lsm_port_text[10])))
2627 port_id = AFE_PORT_ID_INT3_MI2S_TX;
2628
2629 mad_type = afe_port_get_mad_type(port_id);
2630 pr_debug("%s: port_id 0x%x, mad_type %d\n", __func__, port_id,
2631 mad_type);
2632 switch (mad_type) {
2633 case MAD_HW_NONE:
2634 ucontrol->value.integer.value[0] = MADNONE;
2635 break;
2636 case MAD_HW_AUDIO:
2637 ucontrol->value.integer.value[0] = MADAUDIO;
2638 break;
2639 case MAD_HW_BEACON:
2640 ucontrol->value.integer.value[0] = MADBEACON;
2641 break;
2642 case MAD_HW_ULTRASOUND:
2643 ucontrol->value.integer.value[0] = MADULTRASOUND;
2644 break;
2645 case MAD_SW_AUDIO:
2646 ucontrol->value.integer.value[0] = MADSWAUDIO;
2647 break;
2648 default:
2649 WARN(1, "Unknown\n");
2650 return -EINVAL;
2651 }
2652 return 0;
2653}
2654
2655static int msm_routing_lsm_func_put(struct snd_kcontrol *kcontrol,
2656 struct snd_ctl_elem_value *ucontrol)
2657{
2658 int i;
2659 u16 port_id;
2660 enum afe_mad_type mad_type;
2661
2662 pr_debug("%s: enter\n", __func__);
2663 for (i = 0; i < ARRAY_SIZE(lsm_port_text); i++)
2664 if (strnstr(kcontrol->id.name, lsm_port_text[i],
2665 strlen(lsm_port_text[i])))
2666 break;
2667
2668 if (i-- == ARRAY_SIZE(lsm_port_text)) {
2669 WARN(1, "Invalid id name %s\n", kcontrol->id.name);
2670 return -EINVAL;
2671 }
2672
2673 port_id = i * 2 + 1 + SLIMBUS_0_RX;
2674 switch (ucontrol->value.integer.value[0]) {
2675 case MADNONE:
2676 mad_type = MAD_HW_NONE;
2677 break;
2678 case MADAUDIO:
2679 mad_type = MAD_HW_AUDIO;
2680 break;
2681 case MADBEACON:
2682 mad_type = MAD_HW_BEACON;
2683 break;
2684 case MADULTRASOUND:
2685 mad_type = MAD_HW_ULTRASOUND;
2686 break;
2687 case MADSWAUDIO:
2688 mad_type = MAD_SW_AUDIO;
2689 break;
2690 default:
2691 WARN(1, "Unknown\n");
2692 return -EINVAL;
2693 }
2694
2695 /*Check for Tertiary/Quaternary/INT3 TX port*/
2696 if (strnstr(kcontrol->id.name, lsm_port_text[7],
2697 strlen(lsm_port_text[7])))
2698 port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
2699
2700 if (strnstr(kcontrol->id.name, lsm_port_text[8],
2701 strlen(lsm_port_text[8])))
2702 port_id = AFE_PORT_ID_QUATERNARY_MI2S_TX;
2703
2704 if (strnstr(kcontrol->id.name, lsm_port_text[10],
2705 strlen(lsm_port_text[10])))
2706 port_id = AFE_PORT_ID_INT3_MI2S_TX;
2707
2708 pr_debug("%s: port_id 0x%x, mad_type %d\n", __func__, port_id,
2709 mad_type);
2710 return afe_port_set_mad_type(port_id, mad_type);
2711}
2712
2713static const char *const adm_override_chs_text[] = {"Zero", "One", "Two"};
2714
2715static SOC_ENUM_SINGLE_EXT_DECL(slim_7_rx_adm_override_chs,
2716 adm_override_chs_text);
2717
2718static int msm_routing_adm_get_backend_idx(struct snd_kcontrol *kcontrol)
2719{
2720 int backend_id;
2721
2722 if (strnstr(kcontrol->id.name, "SLIM7_RX", sizeof("SLIM7_RX"))) {
2723 backend_id = MSM_BACKEND_DAI_SLIMBUS_7_RX;
2724 } else {
2725 pr_err("%s: unsupported backend id: %s",
2726 __func__, kcontrol->id.name);
2727 return -EINVAL;
2728 }
2729
2730 return backend_id;
2731}
2732static int msm_routing_adm_channel_config_get(
2733 struct snd_kcontrol *kcontrol,
2734 struct snd_ctl_elem_value *ucontrol)
2735{
2736 int backend_id = msm_routing_adm_get_backend_idx(kcontrol);
2737
2738 if (backend_id >= 0) {
2739 mutex_lock(&routing_lock);
2740 ucontrol->value.integer.value[0] =
2741 msm_bedais[backend_id].adm_override_ch;
2742 pr_debug("%s: adm channel count %ld for BE:%d\n", __func__,
2743 ucontrol->value.integer.value[0], backend_id);
2744 mutex_unlock(&routing_lock);
2745 }
2746
2747 return 0;
2748}
2749
2750static int msm_routing_adm_channel_config_put(
2751 struct snd_kcontrol *kcontrol,
2752 struct snd_ctl_elem_value *ucontrol)
2753{
2754 int backend_id = msm_routing_adm_get_backend_idx(kcontrol);
2755
2756 if (backend_id >= 0) {
2757 mutex_lock(&routing_lock);
2758 msm_bedais[backend_id].adm_override_ch =
2759 ucontrol->value.integer.value[0];
2760 pr_debug("%s:updating BE :%d adm channels: %d\n",
2761 __func__, backend_id,
2762 msm_bedais[backend_id].adm_override_ch);
2763 mutex_unlock(&routing_lock);
2764 }
2765
2766 return 0;
2767}
2768
2769static const struct snd_kcontrol_new adm_channel_config_controls[] = {
2770 SOC_ENUM_EXT("SLIM7_RX ADM Channels", slim_7_rx_adm_override_chs,
2771 msm_routing_adm_channel_config_get,
2772 msm_routing_adm_channel_config_put),
2773};
2774
2775static int msm_routing_slim_0_rx_aanc_mux_get(struct snd_kcontrol *kcontrol,
2776 struct snd_ctl_elem_value *ucontrol)
2777{
2778
2779 mutex_lock(&routing_lock);
2780 ucontrol->value.integer.value[0] = slim0_rx_aanc_fb_port;
2781 mutex_unlock(&routing_lock);
2782 pr_debug("%s: AANC Mux Port %ld\n", __func__,
2783 ucontrol->value.integer.value[0]);
2784 return 0;
2785};
2786
2787static int msm_routing_slim_0_rx_aanc_mux_put(struct snd_kcontrol *kcontrol,
2788 struct snd_ctl_elem_value *ucontrol)
2789{
2790 struct aanc_data aanc_info;
2791
2792 mutex_lock(&routing_lock);
2793 memset(&aanc_info, 0x00, sizeof(aanc_info));
2794 pr_debug("%s: AANC Mux Port %ld\n", __func__,
2795 ucontrol->value.integer.value[0]);
2796 slim0_rx_aanc_fb_port = ucontrol->value.integer.value[0];
2797 if (ucontrol->value.integer.value[0] == 0) {
2798 aanc_info.aanc_active = false;
2799 aanc_info.aanc_tx_port = 0;
2800 aanc_info.aanc_rx_port = 0;
2801 } else {
2802 aanc_info.aanc_active = true;
2803 aanc_info.aanc_rx_port = SLIMBUS_0_RX;
2804 aanc_info.aanc_tx_port =
2805 (SLIMBUS_0_RX - 1 + (slim0_rx_aanc_fb_port * 2));
2806 }
2807 afe_set_aanc_info(&aanc_info);
2808 mutex_unlock(&routing_lock);
2809 return 0;
2810};
2811static int msm_routing_get_port_mixer(struct snd_kcontrol *kcontrol,
2812 struct snd_ctl_elem_value *ucontrol)
2813{
2814 int idx = 0, shift = 0;
2815 struct soc_mixer_control *mc =
2816 (struct soc_mixer_control *)kcontrol->private_value;
2817
2818 idx = mc->shift/(sizeof(msm_bedais[mc->reg].port_sessions[0]) * 8);
2819 shift = mc->shift%(sizeof(msm_bedais[mc->reg].port_sessions[0]) * 8);
2820
2821 if (idx >= BE_DAI_PORT_SESSIONS_IDX_MAX) {
2822 pr_err("%s: Invalid idx = %d\n", __func__, idx);
2823 return -EINVAL;
2824 }
2825
2826 if (test_bit(shift,
2827 (unsigned long *)&msm_bedais[mc->reg].port_sessions[idx]))
2828 ucontrol->value.integer.value[0] = 1;
2829 else
2830 ucontrol->value.integer.value[0] = 0;
2831
2832 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
2833 ucontrol->value.integer.value[0]);
2834
2835 return 0;
2836}
2837
2838static int msm_routing_put_port_mixer(struct snd_kcontrol *kcontrol,
2839 struct snd_ctl_elem_value *ucontrol)
2840{
2841 int idx = 0, shift = 0;
2842 struct soc_mixer_control *mc =
2843 (struct soc_mixer_control *)kcontrol->private_value;
2844
2845 idx = mc->shift/(sizeof(msm_bedais[mc->reg].port_sessions[0]) * 8);
2846 shift = mc->shift%(sizeof(msm_bedais[mc->reg].port_sessions[0]) * 8);
2847
2848 if (idx >= BE_DAI_PORT_SESSIONS_IDX_MAX) {
2849 pr_err("%s: Invalid idx = %d\n", __func__, idx);
2850 return -EINVAL;
2851 }
2852
2853 pr_debug("%s: reg 0x%x shift 0x%x val %ld idx %d reminder shift %d\n",
2854 __func__, mc->reg, mc->shift,
2855 ucontrol->value.integer.value[0], idx, shift);
2856
2857 if (ucontrol->value.integer.value[0]) {
2858 afe_loopback(1, msm_bedais[mc->reg].port_id,
2859 msm_bedais[mc->shift].port_id);
2860 set_bit(shift,
2861 (unsigned long *)&msm_bedais[mc->reg].port_sessions[idx]);
2862 } else {
2863 afe_loopback(0, msm_bedais[mc->reg].port_id,
2864 msm_bedais[mc->shift].port_id);
2865 clear_bit(shift,
2866 (unsigned long *)&msm_bedais[mc->reg].port_sessions[idx]);
2867 }
2868
2869 return 1;
2870}
2871
2872static int msm_pcm_get_channel_rule_index(struct snd_kcontrol *kcontrol,
2873 struct snd_ctl_elem_value *ucontrol)
2874{
2875 u16 fe_id = 0;
2876
2877 fe_id = ((struct soc_mixer_control *)
2878 kcontrol->private_value)->shift;
2879 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2880 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2881 return -EINVAL;
2882 }
2883
2884 ucontrol->value.integer.value[0] = channel_mixer[fe_id].rule;
2885
2886 return 0;
2887}
2888
2889static int msm_pcm_put_channel_rule_index(struct snd_kcontrol *kcontrol,
2890 struct snd_ctl_elem_value *ucontrol)
2891{
2892 u16 fe_id = 0;
2893
2894 fe_id = ((struct soc_mixer_control *)
2895 kcontrol->private_value)->shift;
2896 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2897 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2898 return -EINVAL;
2899 }
2900
2901 channel_mixer[fe_id].rule = ucontrol->value.integer.value[0];
2902
2903 return 1;
2904}
2905
2906static int msm_pcm_get_out_chs(struct snd_kcontrol *kcontrol,
2907 struct snd_ctl_elem_value *ucontrol)
2908{
2909 u16 fe_id = 0;
2910
2911 fe_id = ((struct soc_multi_mixer_control *)
2912 kcontrol->private_value)->shift;
2913 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2914 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2915 return -EINVAL;
2916 }
2917
2918 ucontrol->value.integer.value[0] =
2919 channel_mixer[fe_id].output_channel;
2920 return 0;
2921}
2922
2923static int msm_pcm_put_out_chs(struct snd_kcontrol *kcontrol,
2924 struct snd_ctl_elem_value *ucontrol)
2925{
2926 u16 fe_id = 0;
2927
2928 fe_id = ((struct soc_multi_mixer_control *)
2929 kcontrol->private_value)->shift;
2930 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2931 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2932 return -EINVAL;
2933 }
2934
2935 pr_debug("%s: fe_id is %d, output channels = %d\n", __func__,
2936 fe_id,
2937 (unsigned int)(ucontrol->value.integer.value[0]));
2938 channel_mixer[fe_id].output_channel =
2939 (unsigned int)(ucontrol->value.integer.value[0]);
2940
2941 return 1;
2942}
2943
2944static const char *const ch_mixer[] = {"Disable", "Enable"};
2945
2946/* If new backend is added, need update this array */
2947static const char *const be_name[] = {
2948"ZERO", "PRI_I2S_RX", "PRI_I2S_TX", "SLIM_0_RX",
2949"SLIM_0_TX", "HDMI_RX", "INT_BT_SCO_RX", "INT_BT_SCO_TX",
2950"INT_FM_RX", "INT_FM_TX", "AFE_PCM_RX", "AFE_PCM_TX",
2951"AUXPCM_RX", "AUXPCM_TX", "VOICE_PLAYBACK_TX", "VOICE2_PLAYBACK_TX",
2952"INCALL_RECORD_RX", "INCALL_RECORD_TX", "MI2S_RX", "MI2S_TX",
2953"SEC_I2S_RX", "SLIM_1_RX", "SLIM_1_TX", "SLIM_2_RX",
2954"SLIM_2_TX", "SLIM_3_RX", "SLIM_3_TX", "SLIM_4_RX",
2955"SLIM_4_TX", "SLIM_5_RX", "SLIM_5_TX", "SLIM_6_RX",
2956"SLIM_6_TX", "SLIM_7_RX", "SLIM_7_TX", "SLIM_8_RX",
2957"SLIM_8_TX", "EXTPROC_RX", "EXTPROC_TX", "EXPROC_EC_TX",
2958"QUAT_MI2S_RX", "QUAT_MI2S_TX", "SECOND_MI2S_RX", "SECOND_MI2S_TX",
2959"PRI_MI2S_RX", "PRI_MI2S_TX", "TERT_MI2S_RX", "TERT_MI2S_TX",
2960"AUDIO_I2S_RX", "SEC_AUXPCM_RX", "SEC_AUXPCM_TX", "SPDIF_RX",
2961"SECOND_MI2S_RX_SD1", "QUIN_MI2S_RX", "QUIN_MI2S_TX", "SENARY_MI2S_TX",
2962"PRI_TDM_RX_0", "PRI_TDM_TX_0", "PRI_TDM_RX_1", "PRI_TDM_TX_1",
2963"PRI_TDM_RX_2", "PRI_TDM_TX_2", "PRI_TDM_RX_3", "PRI_TDM_TX_3",
2964"PRI_TDM_RX_4", "PRI_TDM_TX_4", "PRI_TDM_RX_5", "PRI_TDM_TX_5",
2965"PRI_TDM_RX_6", "PRI_TDM_TX_6", "PRI_TDM_RX_7", "PRI_TDM_TX_7",
2966"SEC_TDM_RX_0", "SEC_TDM_TX_0", "SEC_TDM_RX_1", "SEC_TDM_TX_1",
2967"SEC_TDM_RX_2", "SEC_TDM_TX_2", "SEC_TDM_RX_3", "SEC_TDM_TX_3",
2968"SEC_TDM_RX_4", "SEC_TDM_TX_4", "SEC_TDM_RX_5", "SEC_TDM_TX_5",
2969"SEC_TDM_RX_6", "SEC_TDM_TX_6", "SEC_TDM_RX_7", "SEC_TDM_TX_7",
2970"TERT_TDM_RX_0", "TERT_TDM_TX_0", "TERT_TDM_RX_1", "TERT_TDM_TX_1",
2971"TERT_TDM_RX_2", "TERT_TDM_TX_2", "TERT_TDM_RX_3", "TERT_TDM_TX_3",
2972"TERT_TDM_RX_4", "TERT_TDM_TX_4", "TERT_TDM_RX_5", "TERT_TDM_TX_5",
2973"TERT_TDM_RX_6", "TERT_TDM_TX_6", "TERT_TDM_RX_7", "TERT_TDM_TX_7",
2974"QUAT_TDM_RX_0", "QUAT_TDM_TX_0", "QUAT_TDM_RX_1", "QUAT_TDM_TX_1",
2975"QUAT_TDM_RX_2", "QUAT_TDM_TX_2", "QUAT_TDM_RX_3", "QUAT_TDM_TX_3",
2976"QUAT_TDM_RX_4", "QUAT_TDM_TX_4", "QUAT_TDM_RX_5", "QUAT_TDM_TX_5",
2977"QUAT_TDM_RX_6", "QUAT_TDM_TX_6", "QUAT_TDM_RX_7", "QUAT_TDM_TX_7",
Rohit Kumara5077932017-09-10 22:05:05 +05302978"QUIN_TDM_RX_0", "QUIN_TDM_TX_0", "QUIN_TDM_RX_1", "QUIN_TDM_TX_1",
2979"QUIN_TDM_RX_2", "QUIN_TDM_TX_2", "QUIN_TDM_RX_3", "QUIN_TDM_TX_3",
2980"QUIN_TDM_RX_4", "QUIN_TDM_TX_4", "QUIN_TDM_RX_5", "QUIN_TDM_TX_5",
2981"QUIN_TDM_RX_6", "QUIN_TDM_TX_6", "QUIN_TDM_RX_7", "QUIN_TDM_TX_7",
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302982"INT_BT_A2DP_RX", "USB_RX", "USB_TX", "DISPLAY_PORT_RX",
2983"TERT_AUXPCM_RX", "TERT_AUXPCM_TX", "QUAT_AUXPCM_RX", "QUAT_AUXPCM_TX",
Rohit Kumara5077932017-09-10 22:05:05 +05302984"QUIN_AUXPCM_RX", "QUIN_AUXPCM_TX",
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302985"INT0_MI2S_RX", "INT0_MI2S_TX", "INT1_MI2S_RX", "INT1_MI2S_TX",
2986"INT2_MI2S_RX", "INT2_MI2S_TX", "INT3_MI2S_RX", "INT3_MI2S_TX",
2987"INT4_MI2S_RX", "INT4_MI2S_TX", "INT5_MI2S_RX", "INT5_MI2S_TX",
2988"INT6_MI2S_RX", "INT6_MI2S_TX"
2989};
2990
2991static SOC_ENUM_SINGLE_DECL(mm1_channel_mux,
2992 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, ch_mixer);
2993static SOC_ENUM_SINGLE_DECL(mm2_channel_mux,
2994 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA2, ch_mixer);
2995static SOC_ENUM_SINGLE_DECL(mm3_channel_mux,
2996 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA3, ch_mixer);
2997static SOC_ENUM_SINGLE_DECL(mm4_channel_mux,
2998 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA4, ch_mixer);
2999
3000static SOC_ENUM_DOUBLE_DECL(mm1_ch1_enum,
3001 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 0, be_name);
3002static SOC_ENUM_DOUBLE_DECL(mm1_ch2_enum,
3003 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 1, be_name);
3004static SOC_ENUM_DOUBLE_DECL(mm1_ch3_enum,
3005 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 2, be_name);
3006static SOC_ENUM_DOUBLE_DECL(mm1_ch4_enum,
3007 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 3, be_name);
3008static SOC_ENUM_DOUBLE_DECL(mm1_ch5_enum,
3009 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 4, be_name);
3010static SOC_ENUM_DOUBLE_DECL(mm1_ch6_enum,
3011 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 5, be_name);
3012static SOC_ENUM_DOUBLE_DECL(mm1_ch7_enum,
3013 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 6, be_name);
3014static SOC_ENUM_DOUBLE_DECL(mm1_ch8_enum,
3015 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 7, be_name);
3016
3017static int msm_pcm_get_ctl_enum_info(struct snd_ctl_elem_info *uinfo,
3018 unsigned int channels,
3019 unsigned int items, const char *const names[])
3020{
3021 if (uinfo->value.enumerated.item >= items)
3022 uinfo->value.enumerated.item = items - 1;
3023
3024 WARN(strlen(names[uinfo->value.enumerated.item]) >=
3025 sizeof(uinfo->value.enumerated.name),
3026 "ALSA: too long item name '%s'\n",
3027 names[uinfo->value.enumerated.item]);
3028 strlcpy(uinfo->value.enumerated.name,
3029 names[uinfo->value.enumerated.item],
3030 sizeof(uinfo->value.enumerated.name));
3031 return 0;
3032}
3033
3034static int msm_pcm_channel_mixer_info(struct snd_kcontrol *kcontrol,
3035 struct snd_ctl_elem_info *uinfo)
3036{
3037 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
3038
3039 uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED;
3040 uinfo->count = 1;
3041
3042 uinfo->value.enumerated.items = ARRAY_SIZE(ch_mixer);
3043 msm_pcm_get_ctl_enum_info(uinfo, 1, e->items, e->texts);
3044
3045 return 0;
3046}
3047static int msm_pcm_channel_mixer_get(struct snd_kcontrol *kcontrol,
3048 struct snd_ctl_elem_value *ucontrol)
3049{
3050 u16 fe_id = 0;
3051
3052 fe_id = ((struct soc_enum *)
3053 kcontrol->private_value)->shift_l;
3054 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
3055 pr_err("%s: invalid FE %d\n", __func__, fe_id);
3056 return -EINVAL;
3057 }
3058
3059 pr_debug("%s: FE %d %s\n", __func__,
3060 fe_id,
3061 channel_mixer[fe_id].enable ? "Enabled" : "Disabled");
3062 ucontrol->value.enumerated.item[0] = channel_mixer[fe_id].enable;
3063 return 0;
3064}
3065
3066static int msm_pcm_channel_mixer_put(struct snd_kcontrol *kcontrol,
3067 struct snd_ctl_elem_value *ucontrol)
3068{
3069 u16 fe_id = 0;
3070
3071 fe_id = ((struct soc_enum *)
3072 kcontrol->private_value)->shift_l;
3073 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
3074 pr_err("%s: invalid FE %d\n", __func__, fe_id);
3075 return -EINVAL;
3076 }
3077
3078 channel_mixer[fe_id].enable = ucontrol->value.enumerated.item[0];
3079 pr_debug("%s: %s FE %d\n", __func__,
3080 channel_mixer[fe_id].enable ? "Enable" : "Disable",
3081 fe_id);
3082 return 0;
3083}
3084
3085static int msm_pcm_channel_input_be_info(struct snd_kcontrol *kcontrol,
3086 struct snd_ctl_elem_info *uinfo)
3087{
3088 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
3089
3090 uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED;
3091 uinfo->count = 1;
3092
3093 uinfo->value.enumerated.items = ARRAY_SIZE(be_name);
3094 msm_pcm_get_ctl_enum_info(uinfo, 1, e->items, e->texts);
3095
3096 return 0;
3097}
3098
3099static int msm_pcm_channel_input_be_put(struct snd_kcontrol *kcontrol,
3100 struct snd_ctl_elem_value *ucontrol)
3101{
3102 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
3103 u16 fe_id = 0, in_ch = 0;
3104
3105 fe_id = e->shift_l;
3106 in_ch = e->shift_r;
3107 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
3108 pr_err("%s: invalid FE %d\n", __func__, fe_id);
3109 return -EINVAL;
3110 }
3111 if (in_ch >= ADM_MAX_CHANNELS) {
3112 pr_err("%s: invalid input channel %d\n", __func__, in_ch);
3113 return -EINVAL;
3114 }
3115
3116 channel_input[fe_id][in_ch] = ucontrol->value.enumerated.item[0];
3117 return 1;
3118}
3119
3120static int msm_pcm_channel_input_be_get(struct snd_kcontrol *kcontrol,
3121 struct snd_ctl_elem_value *ucontrol)
3122{
3123 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
3124 u16 fe_id = 0, in_ch = 0;
3125
3126 fe_id = e->shift_l;
3127 in_ch = e->shift_r;
3128 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
3129 pr_err("%s: invalid FE %d\n", __func__, fe_id);
3130 return -EINVAL;
3131 }
3132 if (in_ch >= ADM_MAX_CHANNELS) {
3133 pr_err("%s: invalid input channel %d\n", __func__, in_ch);
3134 return -EINVAL;
3135 }
3136
3137 ucontrol->value.enumerated.item[0] = channel_input[fe_id][in_ch];
3138 return 1;
3139}
3140
3141
3142static int msm_pcm_channel_weight_info(struct snd_kcontrol *kcontrol,
3143 struct snd_ctl_elem_info *uinfo)
3144{
3145 uinfo->type = SNDRV_CTL_ELEM_TYPE_INTEGER;
3146 uinfo->count = ADM_MAX_CHANNELS;
3147 uinfo->value.integer.min = 0;
3148 uinfo->value.integer.max = WEIGHT_0_DB;
3149
3150 return 0;
3151}
3152
3153static int msm_pcm_channel_weight_put(struct snd_kcontrol *kcontrol,
3154 struct snd_ctl_elem_value *ucontrol)
3155{
3156 u16 fe_id = 0, out_ch = 0;
3157 int i, weight;
3158
3159 fe_id = ((struct soc_multi_mixer_control *)
3160 kcontrol->private_value)->shift;
3161 out_ch = ((struct soc_multi_mixer_control *)
3162 kcontrol->private_value)->rshift;
3163 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
3164 pr_err("%s: invalid FE %d\n", __func__, fe_id);
3165 return -EINVAL;
3166 }
3167 if (out_ch >= ADM_MAX_CHANNELS) {
3168 pr_err("%s: invalid input channel %d\n", __func__, out_ch);
3169 return -EINVAL;
3170 }
3171
3172 pr_debug("%s: FE_ID: %d, channel weight %ld, %ld, %ld, %ld, %ld, %ld, %ld, %ld\n",
3173 __func__, fe_id,
3174 ucontrol->value.integer.value[0],
3175 ucontrol->value.integer.value[1],
3176 ucontrol->value.integer.value[2],
3177 ucontrol->value.integer.value[3],
3178 ucontrol->value.integer.value[4],
3179 ucontrol->value.integer.value[5],
3180 ucontrol->value.integer.value[6],
3181 ucontrol->value.integer.value[7]);
3182
3183 for (i = 0; i < ADM_MAX_CHANNELS; ++i) {
3184 weight = ucontrol->value.integer.value[i];
3185 channel_mixer[fe_id].channel_weight[out_ch][i] = weight;
3186 pr_debug("%s: FE_ID %d, output %d input %d weight %d\n",
3187 __func__, fe_id, out_ch, i,
3188 channel_mixer[fe_id].channel_weight[out_ch][i]);
3189 }
3190
3191 return 0;
3192}
3193
3194static int msm_pcm_channel_weight_get(struct snd_kcontrol *kcontrol,
3195 struct snd_ctl_elem_value *ucontrol)
3196{
3197 u16 fe_id = 0, out_ch = 0;
3198 int i;
3199
3200 fe_id = ((struct soc_multi_mixer_control *)
3201 kcontrol->private_value)->shift;
3202 out_ch = ((struct soc_multi_mixer_control *)
3203 kcontrol->private_value)->rshift;
3204 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
3205 pr_err("%s: invalid FE %d\n", __func__, fe_id);
3206 return -EINVAL;
3207 }
3208 if (out_ch >= ADM_MAX_CHANNELS) {
3209 pr_err("%s: invalid input channel %d\n", __func__, out_ch);
3210 return -EINVAL;
3211 }
3212
3213 for (i = 0; i < ADM_MAX_CHANNELS; ++i)
3214 ucontrol->value.integer.value[i] =
3215 channel_mixer[fe_id].channel_weight[out_ch][i];
3216
3217 pr_debug("%s: FE_ID: %d, weight %ld, %ld, %ld, %ld, %ld, %ld, %ld, %ld",
3218 __func__, fe_id,
3219 ucontrol->value.integer.value[0],
3220 ucontrol->value.integer.value[1],
3221 ucontrol->value.integer.value[2],
3222 ucontrol->value.integer.value[3],
3223 ucontrol->value.integer.value[4],
3224 ucontrol->value.integer.value[5],
3225 ucontrol->value.integer.value[6],
3226 ucontrol->value.integer.value[7]);
3227
3228 return 0;
3229}
3230
3231static const struct snd_kcontrol_new channel_mixer_controls[] = {
3232 SOC_SINGLE_EXT("MultiMedia1 Channel Rule", SND_SOC_NOPM,
3233 MSM_FRONTEND_DAI_MULTIMEDIA1, 8, 0,
3234 msm_pcm_get_channel_rule_index,
3235 msm_pcm_put_channel_rule_index),
3236 SOC_SINGLE_EXT("MultiMedia2 Channel Rule", SND_SOC_NOPM,
3237 MSM_FRONTEND_DAI_MULTIMEDIA2, 8, 0,
3238 msm_pcm_get_channel_rule_index,
3239 msm_pcm_put_channel_rule_index),
3240 SOC_SINGLE_EXT("MultiMedia3 Channel Rule", SND_SOC_NOPM,
3241 MSM_FRONTEND_DAI_MULTIMEDIA3, 8, 0,
3242 msm_pcm_get_channel_rule_index,
3243 msm_pcm_put_channel_rule_index),
3244 SOC_SINGLE_EXT("MultiMedia4 Channel Rule", SND_SOC_NOPM,
3245 MSM_FRONTEND_DAI_MULTIMEDIA4, 8, 0,
3246 msm_pcm_get_channel_rule_index,
3247 msm_pcm_put_channel_rule_index),
3248 SOC_SINGLE_EXT("MultiMedia5 Channel Rule", SND_SOC_NOPM,
3249 MSM_FRONTEND_DAI_MULTIMEDIA5, 8, 0,
3250 msm_pcm_get_channel_rule_index,
3251 msm_pcm_put_channel_rule_index),
3252 SOC_SINGLE_EXT("MultiMedia6 Channel Rule", SND_SOC_NOPM,
3253 MSM_FRONTEND_DAI_MULTIMEDIA6, 8, 0,
3254 msm_pcm_get_channel_rule_index,
3255 msm_pcm_put_channel_rule_index),
3256
3257 SOC_SINGLE_EXT("MultiMedia1 Channels", SND_SOC_NOPM,
3258 MSM_FRONTEND_DAI_MULTIMEDIA1, 8, 0,
3259 msm_pcm_get_out_chs,
3260 msm_pcm_put_out_chs),
3261 SOC_SINGLE_EXT("MultiMedia2 Channels", SND_SOC_NOPM,
3262 MSM_FRONTEND_DAI_MULTIMEDIA2, 8, 0,
3263 msm_pcm_get_out_chs,
3264 msm_pcm_put_out_chs),
3265 SOC_SINGLE_EXT("MultiMedia3 Channels", SND_SOC_NOPM,
3266 MSM_FRONTEND_DAI_MULTIMEDIA3, 8, 0,
3267 msm_pcm_get_out_chs,
3268 msm_pcm_put_out_chs),
3269 SOC_SINGLE_EXT("MultiMedia4 Channels", SND_SOC_NOPM,
3270 MSM_FRONTEND_DAI_MULTIMEDIA4, 8, 0,
3271 msm_pcm_get_out_chs,
3272 msm_pcm_put_out_chs),
3273 SOC_SINGLE_EXT("MultiMedia5 Channels", SND_SOC_NOPM,
3274 MSM_FRONTEND_DAI_MULTIMEDIA5, 8, 0,
3275 msm_pcm_get_out_chs,
3276 msm_pcm_put_out_chs),
3277 SOC_SINGLE_EXT("MultiMedia6 Channels", SND_SOC_NOPM,
3278 MSM_FRONTEND_DAI_MULTIMEDIA6, 8, 0,
3279 msm_pcm_get_out_chs,
3280 msm_pcm_put_out_chs),
3281 {
3282 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3283 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3284 .name = "MultiMedia1 Channel Mixer",
3285 .info = msm_pcm_channel_mixer_info,
3286 .get = msm_pcm_channel_mixer_get,
3287 .put = msm_pcm_channel_mixer_put,
3288 .private_value = (unsigned long)&(mm1_channel_mux)
3289 },
3290 {
3291 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3292 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3293 .name = "MultiMedia2 Channel Mixer",
3294 .info = msm_pcm_channel_mixer_info,
3295 .get = msm_pcm_channel_mixer_get,
3296 .put = msm_pcm_channel_mixer_put,
3297 .private_value = (unsigned long)&(mm2_channel_mux)
3298 },
3299 {
3300 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3301 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3302 .name = "MultiMedia3 Channel Mixer",
3303 .info = msm_pcm_channel_mixer_info,
3304 .get = msm_pcm_channel_mixer_get,
3305 .put = msm_pcm_channel_mixer_put,
3306 .private_value = (unsigned long)&(mm3_channel_mux)
3307 },
3308 {
3309 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3310 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3311 .name = "MultiMedia4 Channel Mixer",
3312 .info = msm_pcm_channel_mixer_info,
3313 .get = msm_pcm_channel_mixer_get,
3314 .put = msm_pcm_channel_mixer_put,
3315 .private_value = (unsigned long)&(mm4_channel_mux)
3316 },
3317 {
3318 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3319 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3320 .name = "MultiMedia1 Output Channel1",
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_MULTIMEDIA1, .rshift = 0,}
3326 },
3327 {
3328 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3329 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3330 .name = "MultiMedia1 Output Channel2",
3331 .info = msm_pcm_channel_weight_info,
3332 .get = msm_pcm_channel_weight_get,
3333 .put = msm_pcm_channel_weight_put,
3334 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3335 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 1, }
3336 },
3337 {
3338 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3339 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3340 .name = "MultiMedia1 Output Channel3",
3341 .info = msm_pcm_channel_weight_info,
3342 .get = msm_pcm_channel_weight_get,
3343 .put = msm_pcm_channel_weight_put,
3344 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3345 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 2,}
3346 },
3347 {
3348 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3349 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3350 .name = "MultiMedia1 Output Channel4",
3351 .info = msm_pcm_channel_weight_info,
3352 .get = msm_pcm_channel_weight_get,
3353 .put = msm_pcm_channel_weight_put,
3354 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3355 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 3,}
3356 },
3357 {
3358 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3359 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3360 .name = "MultiMedia1 Output Channel5",
3361 .info = msm_pcm_channel_weight_info,
3362 .get = msm_pcm_channel_weight_get,
3363 .put = msm_pcm_channel_weight_put,
3364 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3365 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 4,}
3366 },
3367 {
3368 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3369 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3370 .name = "MultiMedia1 Output Channel6",
3371 .info = msm_pcm_channel_weight_info,
3372 .get = msm_pcm_channel_weight_get,
3373 .put = msm_pcm_channel_weight_put,
3374 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3375 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 5,}
3376 },
3377 {
3378 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3379 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3380 .name = "MultiMedia1 Output Channel7",
3381 .info = msm_pcm_channel_weight_info,
3382 .get = msm_pcm_channel_weight_get,
3383 .put = msm_pcm_channel_weight_put,
3384 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3385 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 6,}
3386 },
3387 {
3388 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3389 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3390 .name = "MultiMedia1 Output Channel8",
3391 .info = msm_pcm_channel_weight_info,
3392 .get = msm_pcm_channel_weight_get,
3393 .put = msm_pcm_channel_weight_put,
3394 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3395 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 7,}
3396 },
3397 {
3398 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3399 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3400 .name = "MultiMedia2 Output Channel1",
3401 .info = msm_pcm_channel_weight_info,
3402 .get = msm_pcm_channel_weight_get,
3403 .put = msm_pcm_channel_weight_put,
3404 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3405 {.shift = MSM_FRONTEND_DAI_MULTIMEDIA2, .rshift = 0,}
3406 },
3407 {
3408 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3409 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3410 .name = "MultiMedia2 Output Channel2",
3411 .info = msm_pcm_channel_weight_info,
3412 .get = msm_pcm_channel_weight_get,
3413 .put = msm_pcm_channel_weight_put,
3414 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3415 {.shift = MSM_FRONTEND_DAI_MULTIMEDIA2, .rshift = 1,}
3416 },
3417 {
3418 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3419 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3420 .name = "MultiMedia2 Output Channel3",
3421 .info = msm_pcm_channel_weight_info,
3422 .get = msm_pcm_channel_weight_get,
3423 .put = msm_pcm_channel_weight_put,
3424 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3425 {.shift = MSM_FRONTEND_DAI_MULTIMEDIA2, .rshift = 2,}
3426 },
3427 {
3428 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3429 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3430 .name = "MultiMedia3 Output Channel1",
3431 .info = msm_pcm_channel_weight_info,
3432 .get = msm_pcm_channel_weight_get,
3433 .put = msm_pcm_channel_weight_put,
3434 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3435 {.shift = MSM_FRONTEND_DAI_MULTIMEDIA3, .rshift = 0,}
3436 },
3437 {
3438 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3439 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3440 .name = "MultiMedia3 Output Channel2",
3441 .info = msm_pcm_channel_weight_info,
3442 .get = msm_pcm_channel_weight_get,
3443 .put = msm_pcm_channel_weight_put,
3444 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3445 {.shift = MSM_FRONTEND_DAI_MULTIMEDIA3, .rshift = 1,}
3446 },
3447 {
3448 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3449 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3450 .name = "MultiMedia1 Channel1",
3451 .info = msm_pcm_channel_input_be_info,
3452 .get = msm_pcm_channel_input_be_get,
3453 .put = msm_pcm_channel_input_be_put,
3454 .private_value = (unsigned long)&(mm1_ch1_enum)
3455 },
3456 {
3457 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3458 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3459 .name = "MultiMedia1 Channel2",
3460 .info = msm_pcm_channel_input_be_info,
3461 .get = msm_pcm_channel_input_be_get,
3462 .put = msm_pcm_channel_input_be_put,
3463 .private_value = (unsigned long)&(mm1_ch2_enum)
3464 },
3465 {
3466 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3467 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3468 .name = "MultiMedia1 Channel3",
3469 .info = msm_pcm_channel_input_be_info,
3470 .get = msm_pcm_channel_input_be_get,
3471 .put = msm_pcm_channel_input_be_put,
3472 .private_value = (unsigned long)&(mm1_ch3_enum)
3473 },
3474 {
3475 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3476 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3477 .name = "MultiMedia1 Channel4",
3478 .info = msm_pcm_channel_input_be_info,
3479 .get = msm_pcm_channel_input_be_get,
3480 .put = msm_pcm_channel_input_be_put,
3481 .private_value = (unsigned long)&(mm1_ch4_enum)
3482 },
3483 {
3484 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3485 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3486 .name = "MultiMedia1 Channel5",
3487 .info = msm_pcm_channel_input_be_info,
3488 .get = msm_pcm_channel_input_be_get,
3489 .put = msm_pcm_channel_input_be_put,
3490 .private_value = (unsigned long)&(mm1_ch5_enum)
3491 },
3492 {
3493 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3494 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3495 .name = "MultiMedia1 Channel6",
3496 .info = msm_pcm_channel_input_be_info,
3497 .get = msm_pcm_channel_input_be_get,
3498 .put = msm_pcm_channel_input_be_put,
3499 .private_value = (unsigned long)&(mm1_ch6_enum)
3500 },
3501 {
3502 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3503 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3504 .name = "MultiMedia1 Channel7",
3505 .info = msm_pcm_channel_input_be_info,
3506 .get = msm_pcm_channel_input_be_get,
3507 .put = msm_pcm_channel_input_be_put,
3508 .private_value = (unsigned long)&(mm1_ch7_enum)
3509 },
3510 {
3511 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3512 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3513 .name = "MultiMedia1 Channel8",
3514 .info = msm_pcm_channel_input_be_info,
3515 .get = msm_pcm_channel_input_be_get,
3516 .put = msm_pcm_channel_input_be_put,
3517 .private_value = (unsigned long)&(mm1_ch8_enum)
3518 },
3519};
3520static int msm_ec_ref_ch_get(struct snd_kcontrol *kcontrol,
3521 struct snd_ctl_elem_value *ucontrol)
3522{
3523 ucontrol->value.integer.value[0] = msm_ec_ref_ch;
3524 pr_debug("%s: msm_ec_ref_ch = %ld\n", __func__,
3525 ucontrol->value.integer.value[0]);
3526 return 0;
3527}
3528
3529static int msm_ec_ref_ch_put(struct snd_kcontrol *kcontrol,
3530 struct snd_ctl_elem_value *ucontrol)
3531{
3532 msm_ec_ref_ch = ucontrol->value.integer.value[0];
3533 pr_debug("%s: msm_ec_ref_ch = %d\n", __func__, msm_ec_ref_ch);
3534 adm_num_ec_ref_rx_chans(msm_ec_ref_ch);
3535 return 0;
3536}
3537
3538static const char *const ec_ref_ch_text[] = {"Zero", "One", "Two", "Three",
3539 "Four", "Five", "Six", "Seven", "Eight"};
3540
3541static int msm_ec_ref_bit_format_get(struct snd_kcontrol *kcontrol,
3542 struct snd_ctl_elem_value *ucontrol)
3543{
3544 switch (msm_ec_ref_bit_format) {
3545 case SNDRV_PCM_FORMAT_S24_LE:
3546 ucontrol->value.integer.value[0] = 2;
3547 break;
3548 case SNDRV_PCM_FORMAT_S16_LE:
3549 ucontrol->value.integer.value[0] = 1;
3550 break;
3551 default:
3552 ucontrol->value.integer.value[0] = 0;
3553 break;
3554 }
3555 pr_debug("%s: msm_ec_ref_bit_format = %ld\n",
3556 __func__, ucontrol->value.integer.value[0]);
3557 return 0;
3558}
3559
3560static int msm_ec_ref_bit_format_put(struct snd_kcontrol *kcontrol,
3561 struct snd_ctl_elem_value *ucontrol)
3562{
3563 u16 bit_width = 0;
3564
3565 switch (ucontrol->value.integer.value[0]) {
3566 case 2:
3567 msm_ec_ref_bit_format = SNDRV_PCM_FORMAT_S24_LE;
3568 break;
3569 case 1:
3570 msm_ec_ref_bit_format = SNDRV_PCM_FORMAT_S16_LE;
3571 break;
3572 default:
3573 msm_ec_ref_bit_format = 0;
3574 break;
3575 }
3576
3577 if (msm_ec_ref_bit_format == SNDRV_PCM_FORMAT_S16_LE)
3578 bit_width = 16;
3579 else if (msm_ec_ref_bit_format == SNDRV_PCM_FORMAT_S24_LE)
3580 bit_width = 24;
3581
3582 pr_debug("%s: msm_ec_ref_bit_format = %d\n",
3583 __func__, msm_ec_ref_bit_format);
3584 adm_ec_ref_rx_bit_width(bit_width);
3585 return 0;
3586}
3587
3588static char const *ec_ref_bit_format_text[] = {"0", "S16_LE", "S24_LE"};
3589
3590static int msm_ec_ref_rate_get(struct snd_kcontrol *kcontrol,
3591 struct snd_ctl_elem_value *ucontrol)
3592{
3593 ucontrol->value.integer.value[0] = msm_ec_ref_sampling_rate;
3594 pr_debug("%s: msm_ec_ref_sampling_rate = %ld\n",
3595 __func__, ucontrol->value.integer.value[0]);
3596 return 0;
3597}
3598
3599static int msm_ec_ref_rate_put(struct snd_kcontrol *kcontrol,
3600 struct snd_ctl_elem_value *ucontrol)
3601{
3602 switch (ucontrol->value.integer.value[0]) {
3603 case 0:
3604 msm_ec_ref_sampling_rate = 0;
3605 break;
3606 case 1:
3607 msm_ec_ref_sampling_rate = 8000;
3608 break;
3609 case 2:
3610 msm_ec_ref_sampling_rate = 16000;
3611 break;
3612 case 3:
3613 msm_ec_ref_sampling_rate = 32000;
3614 break;
3615 case 4:
3616 msm_ec_ref_sampling_rate = 44100;
3617 break;
3618 case 5:
3619 msm_ec_ref_sampling_rate = 48000;
3620 break;
3621 case 6:
3622 msm_ec_ref_sampling_rate = 96000;
3623 break;
3624 case 7:
3625 msm_ec_ref_sampling_rate = 192000;
3626 break;
3627 case 8:
3628 msm_ec_ref_sampling_rate = 384000;
3629 break;
3630 default:
3631 msm_ec_ref_sampling_rate = 48000;
3632 break;
3633 }
3634 pr_debug("%s: msm_ec_ref_sampling_rate = %d\n",
3635 __func__, msm_ec_ref_sampling_rate);
3636 adm_ec_ref_rx_sampling_rate(msm_ec_ref_sampling_rate);
3637 return 0;
3638}
3639
3640static const char *const ec_ref_rate_text[] = {"0", "8000", "16000",
3641 "32000", "44100", "48000", "96000", "192000", "384000"};
3642
3643static const struct soc_enum msm_route_ec_ref_params_enum[] = {
3644 SOC_ENUM_SINGLE_EXT(9, ec_ref_ch_text),
3645 SOC_ENUM_SINGLE_EXT(3, ec_ref_bit_format_text),
3646 SOC_ENUM_SINGLE_EXT(9, ec_ref_rate_text),
3647};
3648
3649static const struct snd_kcontrol_new ec_ref_param_controls[] = {
3650 SOC_ENUM_EXT("EC Reference Channels", msm_route_ec_ref_params_enum[0],
3651 msm_ec_ref_ch_get, msm_ec_ref_ch_put),
3652 SOC_ENUM_EXT("EC Reference Bit Format", msm_route_ec_ref_params_enum[1],
3653 msm_ec_ref_bit_format_get, msm_ec_ref_bit_format_put),
3654 SOC_ENUM_EXT("EC Reference SampleRate", msm_route_ec_ref_params_enum[2],
3655 msm_ec_ref_rate_get, msm_ec_ref_rate_put),
3656};
3657
3658static int msm_routing_ec_ref_rx_get(struct snd_kcontrol *kcontrol,
3659 struct snd_ctl_elem_value *ucontrol)
3660{
3661 pr_debug("%s: ec_ref_rx = %d", __func__, msm_route_ec_ref_rx);
3662 mutex_lock(&routing_lock);
3663 ucontrol->value.integer.value[0] = msm_route_ec_ref_rx;
3664 mutex_unlock(&routing_lock);
3665 return 0;
3666}
3667
3668static int msm_routing_ec_ref_rx_put(struct snd_kcontrol *kcontrol,
3669 struct snd_ctl_elem_value *ucontrol)
3670{
3671 int ec_ref_port_id;
Asish Bhattacharya34504582017-08-08 12:55:01 +05303672 struct snd_soc_dapm_widget *widget =
3673 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303674 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
3675 struct snd_soc_dapm_update *update = NULL;
3676
3677
3678 mutex_lock(&routing_lock);
3679 switch (ucontrol->value.integer.value[0]) {
3680 case 0:
3681 msm_route_ec_ref_rx = 0;
3682 ec_ref_port_id = AFE_PORT_INVALID;
3683 break;
3684 case 1:
3685 msm_route_ec_ref_rx = 1;
3686 ec_ref_port_id = SLIMBUS_0_RX;
3687 break;
3688 case 2:
3689 msm_route_ec_ref_rx = 2;
3690 ec_ref_port_id = AFE_PORT_ID_PRIMARY_MI2S_RX;
3691 break;
3692 case 3:
3693 msm_route_ec_ref_rx = 3;
3694 ec_ref_port_id = AFE_PORT_ID_PRIMARY_MI2S_TX;
3695 break;
3696 case 4:
3697 msm_route_ec_ref_rx = 4;
3698 ec_ref_port_id = AFE_PORT_ID_SECONDARY_MI2S_TX;
3699 break;
3700 case 5:
3701 msm_route_ec_ref_rx = 5;
3702 ec_ref_port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
3703 break;
3704 case 6:
3705 msm_route_ec_ref_rx = 6;
3706 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_MI2S_TX;
3707 break;
3708 case 7:
3709 msm_route_ec_ref_rx = 7;
3710 ec_ref_port_id = AFE_PORT_ID_SECONDARY_MI2S_RX;
3711 break;
3712 case 9:
3713 msm_route_ec_ref_rx = 9;
3714 ec_ref_port_id = SLIMBUS_5_RX;
3715 break;
3716 case 10:
3717 msm_route_ec_ref_rx = 10;
3718 ec_ref_port_id = SLIMBUS_1_TX;
3719 break;
3720 case 11:
3721 msm_route_ec_ref_rx = 11;
3722 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_TDM_TX_1;
3723 break;
3724 case 12:
3725 msm_route_ec_ref_rx = 12;
3726 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_TDM_RX;
3727 break;
3728 case 13:
3729 msm_route_ec_ref_rx = 13;
3730 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_TDM_RX_1;
3731 break;
3732 case 14:
3733 msm_route_ec_ref_rx = 14;
3734 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_TDM_RX_2;
3735 break;
3736 case 15:
3737 msm_route_ec_ref_rx = 15;
3738 ec_ref_port_id = SLIMBUS_6_RX;
3739 break;
3740 case 16:
3741 msm_route_ec_ref_rx = 16;
3742 ec_ref_port_id = AFE_PORT_ID_TERTIARY_MI2S_RX;
3743 break;
3744 case 17:
3745 msm_route_ec_ref_rx = 17;
3746 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_MI2S_RX;
3747 break;
3748 case 18:
3749 msm_route_ec_ref_rx = 18;
3750 ec_ref_port_id = AFE_PORT_ID_TERTIARY_TDM_TX;
3751 break;
3752 case 19:
3753 msm_route_ec_ref_rx = 19;
3754 ec_ref_port_id = AFE_PORT_ID_USB_RX;
3755 break;
3756 case 20:
3757 msm_route_ec_ref_rx = 20;
3758 ec_ref_port_id = AFE_PORT_ID_INT0_MI2S_RX;
3759 break;
3760 case 21:
3761 msm_route_ec_ref_rx = 21;
3762 ec_ref_port_id = AFE_PORT_ID_INT4_MI2S_RX;
3763 break;
3764 case 22:
3765 msm_route_ec_ref_rx = 22;
3766 ec_ref_port_id = AFE_PORT_ID_INT3_MI2S_TX;
3767 break;
Aalique Grahamee4fd7d52017-11-28 13:24:13 -08003768 case 23:
3769 msm_route_ec_ref_rx = 23;
3770 ec_ref_port_id = AFE_PORT_ID_HDMI_OVER_DP_RX;
3771 break;
Bala Kishore Pati1a044712018-10-03 12:12:36 +05303772 case 24:
3773 msm_route_ec_ref_rx = 24;
3774 ec_ref_port_id = AFE_PORT_ID_PRIMARY_TDM_RX_1;
3775 break;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303776 default:
3777 msm_route_ec_ref_rx = 0; /* NONE */
3778 pr_err("%s EC ref rx %ld not valid\n",
3779 __func__, ucontrol->value.integer.value[0]);
3780 ec_ref_port_id = AFE_PORT_INVALID;
3781 break;
3782 }
Sachin Mohan Gadag3c3c5812018-07-20 15:46:54 +05303783 msm_ec_ref_port_id = ec_ref_port_id;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303784 adm_ec_ref_rx_id(ec_ref_port_id);
3785 pr_debug("%s: msm_route_ec_ref_rx = %d\n",
3786 __func__, msm_route_ec_ref_rx);
3787 mutex_unlock(&routing_lock);
3788 snd_soc_dapm_mux_update_power(widget->dapm, kcontrol,
3789 msm_route_ec_ref_rx, e, update);
3790 return 0;
3791}
3792
3793static const char *const ec_ref_rx[] = { "None", "SLIM_RX", "I2S_RX",
3794 "PRI_MI2S_TX", "SEC_MI2S_TX",
3795 "TERT_MI2S_TX", "QUAT_MI2S_TX", "SEC_I2S_RX", "PROXY_RX",
3796 "SLIM_5_RX", "SLIM_1_TX", "QUAT_TDM_TX_1",
3797 "QUAT_TDM_RX_0", "QUAT_TDM_RX_1", "QUAT_TDM_RX_2", "SLIM_6_RX",
3798 "TERT_MI2S_RX", "QUAT_MI2S_RX", "TERT_TDM_TX_0", "USB_AUDIO_RX",
Bala Kishore Pati1a044712018-10-03 12:12:36 +05303799 "INT0_MI2S_RX", "INT4_MI2S_RX", "INT3_MI2S_TX", "DISPLAY_PORT",
3800 "PRI_TDM_RX_1"};
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303801
3802static const struct soc_enum msm_route_ec_ref_rx_enum[] = {
3803 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(ec_ref_rx), ec_ref_rx),
3804};
3805
3806static const struct snd_kcontrol_new ext_ec_ref_mux_ul1 =
3807 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL1 MUX Mux",
3808 msm_route_ec_ref_rx_enum[0],
3809 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3810
3811static const struct snd_kcontrol_new ext_ec_ref_mux_ul2 =
3812 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL2 MUX Mux",
3813 msm_route_ec_ref_rx_enum[0],
3814 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3815
3816static const struct snd_kcontrol_new ext_ec_ref_mux_ul3 =
3817 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL3 MUX Mux",
3818 msm_route_ec_ref_rx_enum[0],
3819 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3820
3821static const struct snd_kcontrol_new ext_ec_ref_mux_ul4 =
3822 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL4 MUX Mux",
3823 msm_route_ec_ref_rx_enum[0],
3824 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3825
3826static const struct snd_kcontrol_new ext_ec_ref_mux_ul5 =
3827 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL5 MUX Mux",
3828 msm_route_ec_ref_rx_enum[0],
3829 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3830
3831static const struct snd_kcontrol_new ext_ec_ref_mux_ul6 =
3832 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL6 MUX Mux",
3833 msm_route_ec_ref_rx_enum[0],
3834 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3835
3836static const struct snd_kcontrol_new ext_ec_ref_mux_ul8 =
3837 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL8 MUX Mux",
3838 msm_route_ec_ref_rx_enum[0],
3839 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3840
3841static const struct snd_kcontrol_new ext_ec_ref_mux_ul9 =
3842 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL9 MUX Mux",
3843 msm_route_ec_ref_rx_enum[0],
3844 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3845
Asish Bhattacharya34504582017-08-08 12:55:01 +05303846static const struct snd_kcontrol_new ext_ec_ref_mux_ul16 =
3847 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL16 MUX Mux",
3848 msm_route_ec_ref_rx_enum[0],
3849 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3850
Laxminath Kasam38070be2017-08-17 18:21:59 +05303851static const struct snd_kcontrol_new ext_ec_ref_mux_ul10 =
3852 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL10 MUX Mux",
3853 msm_route_ec_ref_rx_enum[0],
3854 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3855
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303856static const struct snd_kcontrol_new ext_ec_ref_mux_ul17 =
3857 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL17 MUX Mux",
3858 msm_route_ec_ref_rx_enum[0],
3859 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3860
3861static const struct snd_kcontrol_new ext_ec_ref_mux_ul18 =
3862 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL18 MUX Mux",
3863 msm_route_ec_ref_rx_enum[0],
3864 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3865
3866static const struct snd_kcontrol_new ext_ec_ref_mux_ul19 =
3867 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL19 MUX Mux",
3868 msm_route_ec_ref_rx_enum[0],
3869 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3870
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05303871static const struct snd_kcontrol_new ext_ec_ref_mux_ul28 =
3872 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL28 MUX Mux",
3873 msm_route_ec_ref_rx_enum[0],
3874 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3875
3876static const struct snd_kcontrol_new ext_ec_ref_mux_ul29 =
3877 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL29 MUX Mux",
3878 msm_route_ec_ref_rx_enum[0],
3879 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3880
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303881static int msm_routing_ext_ec_get(struct snd_kcontrol *kcontrol,
3882 struct snd_ctl_elem_value *ucontrol)
3883{
3884 pr_debug("%s: ext_ec_ref_rx = %x\n", __func__, msm_route_ext_ec_ref);
3885
3886 mutex_lock(&routing_lock);
3887 ucontrol->value.integer.value[0] = msm_route_ext_ec_ref;
3888 mutex_unlock(&routing_lock);
3889 return 0;
3890}
3891
3892static int msm_routing_ext_ec_put(struct snd_kcontrol *kcontrol,
3893 struct snd_ctl_elem_value *ucontrol)
3894{
Asish Bhattacharya34504582017-08-08 12:55:01 +05303895 struct snd_soc_dapm_widget *widget =
3896 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303897 int mux = ucontrol->value.enumerated.item[0];
3898 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
3899 int ret = 1;
3900 bool state = true;
3901 uint16_t ext_ec_ref_port_id;
3902 struct snd_soc_dapm_update *update = NULL;
3903
3904 if (mux >= e->items) {
3905 pr_err("%s: Invalid mux value %d\n", __func__, mux);
3906 return -EINVAL;
3907 }
3908
3909 mutex_lock(&routing_lock);
3910 msm_route_ext_ec_ref = ucontrol->value.integer.value[0];
3911
3912 switch (msm_route_ext_ec_ref) {
3913 case EXT_EC_REF_PRI_MI2S_TX:
3914 ext_ec_ref_port_id = AFE_PORT_ID_PRIMARY_MI2S_TX;
3915 break;
3916 case EXT_EC_REF_SEC_MI2S_TX:
3917 ext_ec_ref_port_id = AFE_PORT_ID_SECONDARY_MI2S_TX;
3918 break;
3919 case EXT_EC_REF_TERT_MI2S_TX:
3920 ext_ec_ref_port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
3921 break;
3922 case EXT_EC_REF_QUAT_MI2S_TX:
3923 ext_ec_ref_port_id = AFE_PORT_ID_QUATERNARY_MI2S_TX;
3924 break;
3925 case EXT_EC_REF_QUIN_MI2S_TX:
3926 ext_ec_ref_port_id = AFE_PORT_ID_QUINARY_MI2S_TX;
3927 break;
3928 case EXT_EC_REF_SLIM_1_TX:
3929 ext_ec_ref_port_id = SLIMBUS_1_TX;
3930 break;
3931 case EXT_EC_REF_NONE:
3932 default:
3933 ext_ec_ref_port_id = AFE_PORT_INVALID;
3934 state = false;
3935 break;
3936 }
3937
3938 pr_debug("%s: val = %d ext_ec_ref_port_id = 0x%0x state = %d\n",
3939 __func__, msm_route_ext_ec_ref, ext_ec_ref_port_id, state);
3940
3941 if (!voc_set_ext_ec_ref_port_id(ext_ec_ref_port_id, state)) {
3942 mutex_unlock(&routing_lock);
3943 snd_soc_dapm_mux_update_power(widget->dapm, kcontrol, mux, e,
3944 update);
3945 } else {
3946 ret = -EINVAL;
3947 mutex_unlock(&routing_lock);
3948 }
3949 return ret;
3950}
3951
3952static const char * const ext_ec_ref_rx[] = {"NONE", "PRI_MI2S_TX",
3953 "SEC_MI2S_TX", "TERT_MI2S_TX",
3954 "QUAT_MI2S_TX", "QUIN_MI2S_TX",
3955 "SLIM_1_TX"};
3956
3957static const struct soc_enum msm_route_ext_ec_ref_rx_enum[] = {
3958 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(ext_ec_ref_rx), ext_ec_ref_rx),
3959};
3960
3961static const struct snd_kcontrol_new voc_ext_ec_mux =
3962 SOC_DAPM_ENUM_EXT("VOC_EXT_EC MUX Mux", msm_route_ext_ec_ref_rx_enum[0],
3963 msm_routing_ext_ec_get, msm_routing_ext_ec_put);
3964
3965
3966static const struct snd_kcontrol_new pri_i2s_rx_mixer_controls[] = {
3967 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_I2S_RX,
3968 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
3969 msm_routing_put_audio_mixer),
3970 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_I2S_RX,
3971 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
3972 msm_routing_put_audio_mixer),
3973 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_I2S_RX,
3974 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
3975 msm_routing_put_audio_mixer),
3976 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_I2S_RX,
3977 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
3978 msm_routing_put_audio_mixer),
3979 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_I2S_RX,
3980 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
3981 msm_routing_put_audio_mixer),
3982 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_I2S_RX,
3983 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
3984 msm_routing_put_audio_mixer),
3985 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_I2S_RX,
3986 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
3987 msm_routing_put_audio_mixer),
3988 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_I2S_RX,
3989 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
3990 msm_routing_put_audio_mixer),
3991 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_I2S_RX,
3992 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
3993 msm_routing_put_audio_mixer),
3994 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_I2S_RX,
3995 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
3996 msm_routing_put_audio_mixer),
3997 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_I2S_RX,
3998 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
3999 msm_routing_put_audio_mixer),
4000 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_I2S_RX,
4001 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4002 msm_routing_put_audio_mixer),
4003 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_I2S_RX,
4004 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4005 msm_routing_put_audio_mixer),
4006 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_I2S_RX,
4007 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4008 msm_routing_put_audio_mixer),
4009 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_I2S_RX,
4010 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4011 msm_routing_put_audio_mixer),
4012 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_I2S_RX,
4013 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4014 msm_routing_put_audio_mixer),
4015 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_PRI_I2S_RX,
4016 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4017 msm_routing_put_audio_mixer),
4018 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_PRI_I2S_RX,
4019 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4020 msm_routing_put_audio_mixer),
4021 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_PRI_I2S_RX,
4022 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4023 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304024 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_PRI_I2S_RX,
4025 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4026 msm_routing_put_audio_mixer),
4027 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_PRI_I2S_RX,
4028 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4029 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304030};
4031
4032static const struct snd_kcontrol_new sec_i2s_rx_mixer_controls[] = {
4033 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_I2S_RX,
4034 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4035 msm_routing_put_audio_mixer),
4036 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_I2S_RX,
4037 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4038 msm_routing_put_audio_mixer),
4039 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_I2S_RX,
4040 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4041 msm_routing_put_audio_mixer),
4042 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_I2S_RX,
4043 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4044 msm_routing_put_audio_mixer),
4045 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_I2S_RX,
4046 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4047 msm_routing_put_audio_mixer),
4048 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_I2S_RX,
4049 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4050 msm_routing_put_audio_mixer),
4051 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_I2S_RX,
4052 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4053 msm_routing_put_audio_mixer),
4054 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_I2S_RX,
4055 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4056 msm_routing_put_audio_mixer),
4057 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_I2S_RX,
4058 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4059 msm_routing_put_audio_mixer),
4060 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_I2S_RX,
4061 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4062 msm_routing_put_audio_mixer),
4063 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_I2S_RX,
4064 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4065 msm_routing_put_audio_mixer),
4066 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_I2S_RX,
4067 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4068 msm_routing_put_audio_mixer),
4069 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_I2S_RX,
4070 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4071 msm_routing_put_audio_mixer),
4072 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_I2S_RX,
4073 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4074 msm_routing_put_audio_mixer),
4075 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_I2S_RX,
4076 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4077 msm_routing_put_audio_mixer),
4078 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_I2S_RX,
4079 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4080 msm_routing_put_audio_mixer),
4081 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SEC_I2S_RX,
4082 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4083 msm_routing_put_audio_mixer),
4084 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SEC_I2S_RX,
4085 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4086 msm_routing_put_audio_mixer),
4087 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SEC_I2S_RX,
4088 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4089 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304090 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_SEC_I2S_RX,
4091 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4092 msm_routing_put_audio_mixer),
4093 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_SEC_I2S_RX,
4094 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4095 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304096};
4097
4098static const struct snd_kcontrol_new spdif_rx_mixer_controls[] = {
4099 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SPDIF_RX,
4100 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4101 msm_routing_put_audio_mixer),
4102 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SPDIF_RX,
4103 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4104 msm_routing_put_audio_mixer),
4105 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SPDIF_RX,
4106 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4107 msm_routing_put_audio_mixer),
4108 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SPDIF_RX,
4109 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4110 msm_routing_put_audio_mixer),
4111 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SPDIF_RX,
4112 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4113 msm_routing_put_audio_mixer),
4114 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SPDIF_RX,
4115 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4116 msm_routing_put_audio_mixer),
4117 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SPDIF_RX,
4118 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4119 msm_routing_put_audio_mixer),
4120 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SPDIF_RX,
4121 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4122 msm_routing_put_audio_mixer),
4123 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SPDIF_RX,
4124 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4125 msm_routing_put_audio_mixer),
4126 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SPDIF_RX,
4127 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4128 msm_routing_put_audio_mixer),
4129 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SPDIF_RX,
4130 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4131 msm_routing_put_audio_mixer),
4132 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SPDIF_RX,
4133 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4134 msm_routing_put_audio_mixer),
4135 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SPDIF_RX,
4136 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4137 msm_routing_put_audio_mixer),
4138 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SPDIF_RX,
4139 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4140 msm_routing_put_audio_mixer),
4141 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SPDIF_RX,
4142 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4143 msm_routing_put_audio_mixer),
4144 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SPDIF_RX,
4145 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4146 msm_routing_put_audio_mixer),
4147 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SPDIF_RX,
4148 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4149 msm_routing_put_audio_mixer),
4150 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SPDIF_RX,
4151 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4152 msm_routing_put_audio_mixer),
4153 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SPDIF_RX,
4154 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4155 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304156 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_SPDIF_RX,
4157 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4158 msm_routing_put_audio_mixer),
4159 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_SPDIF_RX,
4160 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4161 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304162};
4163
4164static const struct snd_kcontrol_new slimbus_2_rx_mixer_controls[] = {
4165 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4166 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4167 msm_routing_put_audio_mixer),
4168 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4169 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4170 msm_routing_put_audio_mixer),
4171 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4172 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4173 msm_routing_put_audio_mixer),
4174 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4175 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4176 msm_routing_put_audio_mixer),
4177 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4178 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4179 msm_routing_put_audio_mixer),
4180 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4181 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4182 msm_routing_put_audio_mixer),
4183 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4184 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4185 msm_routing_put_audio_mixer),
4186 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4187 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4188 msm_routing_put_audio_mixer),
4189 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4190 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4191 msm_routing_put_audio_mixer),
4192 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4193 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4194 msm_routing_put_audio_mixer),
4195 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4196 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4197 msm_routing_put_audio_mixer),
4198 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4199 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4200 msm_routing_put_audio_mixer),
4201 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4202 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4203 msm_routing_put_audio_mixer),
4204 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4205 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4206 msm_routing_put_audio_mixer),
4207 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4208 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4209 msm_routing_put_audio_mixer),
4210 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4211 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4212 msm_routing_put_audio_mixer),
4213};
4214
4215static const struct snd_kcontrol_new slimbus_5_rx_mixer_controls[] = {
4216 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4217 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4218 msm_routing_put_audio_mixer),
4219 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4220 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4221 msm_routing_put_audio_mixer),
4222 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4223 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4224 msm_routing_put_audio_mixer),
4225 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4226 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4227 msm_routing_put_audio_mixer),
4228 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4229 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4230 msm_routing_put_audio_mixer),
4231 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4232 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4233 msm_routing_put_audio_mixer),
4234 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4235 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4236 msm_routing_put_audio_mixer),
4237 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4238 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4239 msm_routing_put_audio_mixer),
4240 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4241 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4242 msm_routing_put_audio_mixer),
4243 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4244 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4245 msm_routing_put_audio_mixer),
4246 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4247 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4248 msm_routing_put_audio_mixer),
4249 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4250 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4251 msm_routing_put_audio_mixer),
4252 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4253 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4254 msm_routing_put_audio_mixer),
4255 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4256 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4257 msm_routing_put_audio_mixer),
4258 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4259 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4260 msm_routing_put_audio_mixer),
4261 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4262 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4263 msm_routing_put_audio_mixer),
4264 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4265 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4266 msm_routing_put_audio_mixer),
4267 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4268 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4269 msm_routing_put_audio_mixer),
4270 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4271 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4272 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304273 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4274 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4275 msm_routing_put_audio_mixer),
4276 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4277 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4278 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304279};
4280
4281static const struct snd_kcontrol_new slimbus_rx_mixer_controls[] = {
4282 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4283 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4284 msm_routing_put_audio_mixer),
4285 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4286 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4287 msm_routing_put_audio_mixer),
4288 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4289 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4290 msm_routing_put_audio_mixer),
4291 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4292 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4293 msm_routing_put_audio_mixer),
4294 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4295 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4296 msm_routing_put_audio_mixer),
4297 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4298 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4299 msm_routing_put_audio_mixer),
4300 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4301 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4302 msm_routing_put_audio_mixer),
4303 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4304 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4305 msm_routing_put_audio_mixer),
4306 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4307 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4308 msm_routing_put_audio_mixer),
4309 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4310 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4311 msm_routing_put_audio_mixer),
4312 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4313 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4314 msm_routing_put_audio_mixer),
4315 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4316 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4317 msm_routing_put_audio_mixer),
4318 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4319 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4320 msm_routing_put_audio_mixer),
4321 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4322 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4323 msm_routing_put_audio_mixer),
4324 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4325 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4326 msm_routing_put_audio_mixer),
4327 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4328 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4329 msm_routing_put_audio_mixer),
4330 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4331 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4332 msm_routing_put_audio_mixer),
4333 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4334 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4335 msm_routing_put_audio_mixer),
4336 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4337 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4338 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304339 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4340 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4341 msm_routing_put_audio_mixer),
4342 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4343 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4344 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304345};
4346
4347static const struct snd_kcontrol_new mi2s_rx_mixer_controls[] = {
4348 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_MI2S_RX,
4349 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4350 msm_routing_put_audio_mixer),
4351 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_MI2S_RX,
4352 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4353 msm_routing_put_audio_mixer),
4354 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_MI2S_RX,
4355 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4356 msm_routing_put_audio_mixer),
4357 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_MI2S_RX,
4358 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4359 msm_routing_put_audio_mixer),
4360 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_MI2S_RX,
4361 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4362 msm_routing_put_audio_mixer),
4363 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_MI2S_RX,
4364 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4365 msm_routing_put_audio_mixer),
4366 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_MI2S_RX,
4367 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4368 msm_routing_put_audio_mixer),
4369 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_MI2S_RX,
4370 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4371 msm_routing_put_audio_mixer),
4372 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_MI2S_RX,
4373 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4374 msm_routing_put_audio_mixer),
4375 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_MI2S_RX,
4376 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4377 msm_routing_put_audio_mixer),
4378 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_MI2S_RX,
4379 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4380 msm_routing_put_audio_mixer),
4381 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_MI2S_RX,
4382 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4383 msm_routing_put_audio_mixer),
4384 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_MI2S_RX,
4385 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4386 msm_routing_put_audio_mixer),
4387 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_MI2S_RX,
4388 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4389 msm_routing_put_audio_mixer),
4390 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_MI2S_RX,
4391 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4392 msm_routing_put_audio_mixer),
4393 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_MI2S_RX,
4394 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4395 msm_routing_put_audio_mixer),
4396 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_MI2S_RX,
4397 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4398 msm_routing_put_audio_mixer),
4399 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_MI2S_RX,
4400 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4401 msm_routing_put_audio_mixer),
4402 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_MI2S_RX,
4403 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4404 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304405 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_MI2S_RX,
4406 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4407 msm_routing_put_audio_mixer),
4408 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_MI2S_RX,
4409 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4410 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304411};
4412
4413static const struct snd_kcontrol_new quaternary_mi2s_rx_mixer_controls[] = {
4414 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4415 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4416 msm_routing_put_audio_mixer),
4417 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4418 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4419 msm_routing_put_audio_mixer),
4420 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4421 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4422 msm_routing_put_audio_mixer),
4423 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4424 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4425 msm_routing_put_audio_mixer),
4426 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4427 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4428 msm_routing_put_audio_mixer),
4429 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4430 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4431 msm_routing_put_audio_mixer),
4432 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4433 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4434 msm_routing_put_audio_mixer),
4435 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4436 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4437 msm_routing_put_audio_mixer),
4438 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4439 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4440 msm_routing_put_audio_mixer),
4441 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4442 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4443 msm_routing_put_audio_mixer),
4444 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4445 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4446 msm_routing_put_audio_mixer),
4447 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4448 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4449 msm_routing_put_audio_mixer),
4450 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4451 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4452 msm_routing_put_audio_mixer),
4453 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4454 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4455 msm_routing_put_audio_mixer),
4456 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4457 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4458 msm_routing_put_audio_mixer),
4459 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4460 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4461 msm_routing_put_audio_mixer),
4462 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4463 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4464 msm_routing_put_audio_mixer),
4465 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4466 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4467 msm_routing_put_audio_mixer),
4468 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4469 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4470 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304471 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4472 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4473 msm_routing_put_audio_mixer),
4474 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4475 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4476 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304477};
4478
4479static const struct snd_kcontrol_new quinary_mi2s_rx_mixer_controls[] = {
4480 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4481 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4482 msm_routing_put_audio_mixer),
4483 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4484 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4485 msm_routing_put_audio_mixer),
4486 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4487 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4488 msm_routing_put_audio_mixer),
4489 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4490 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4491 msm_routing_put_audio_mixer),
4492 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4493 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4494 msm_routing_put_audio_mixer),
4495 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4496 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4497 msm_routing_put_audio_mixer),
4498 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4499 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4500 msm_routing_put_audio_mixer),
4501 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4502 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4503 msm_routing_put_audio_mixer),
4504 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4505 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4506 msm_routing_put_audio_mixer),
4507 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4508 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4509 msm_routing_put_audio_mixer),
4510 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4511 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4512 msm_routing_put_audio_mixer),
4513 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4514 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4515 msm_routing_put_audio_mixer),
4516 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4517 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4518 msm_routing_put_audio_mixer),
4519 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4520 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4521 msm_routing_put_audio_mixer),
4522 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4523 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4524 msm_routing_put_audio_mixer),
4525 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4526 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4527 msm_routing_put_audio_mixer),
4528 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4529 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4530 msm_routing_put_audio_mixer),
4531 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4532 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4533 msm_routing_put_audio_mixer),
4534 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4535 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4536 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304537 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4538 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4539 msm_routing_put_audio_mixer),
4540 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4541 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4542 msm_routing_put_audio_mixer),
4543
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304544};
4545
4546static const struct snd_kcontrol_new tertiary_mi2s_rx_mixer_controls[] = {
4547 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4548 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4549 msm_routing_put_audio_mixer),
4550 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4551 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4552 msm_routing_put_audio_mixer),
4553 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4554 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4555 msm_routing_put_audio_mixer),
4556 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4557 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4558 msm_routing_put_audio_mixer),
4559 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4560 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4561 msm_routing_put_audio_mixer),
4562 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4563 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4564 msm_routing_put_audio_mixer),
4565 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4566 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4567 msm_routing_put_audio_mixer),
4568 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4569 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4570 msm_routing_put_audio_mixer),
4571 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4572 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4573 msm_routing_put_audio_mixer),
4574 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4575 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4576 msm_routing_put_audio_mixer),
4577 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4578 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4579 msm_routing_put_audio_mixer),
4580 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4581 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4582 msm_routing_put_audio_mixer),
4583 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4584 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4585 msm_routing_put_audio_mixer),
4586 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4587 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4588 msm_routing_put_audio_mixer),
4589 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4590 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4591 msm_routing_put_audio_mixer),
4592 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4593 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4594 msm_routing_put_audio_mixer),
4595 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4596 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4597 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304598 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4599 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4600 msm_routing_put_audio_mixer),
4601 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4602 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4603 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304604};
4605
4606static const struct snd_kcontrol_new secondary_mi2s_rx2_mixer_controls[] = {
4607 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SECONDARY_MI2S_RX_SD1,
4608 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4609 msm_routing_put_audio_mixer),
4610};
4611
4612static const struct snd_kcontrol_new secondary_mi2s_rx_mixer_controls[] = {
4613 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4614 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4615 msm_routing_put_audio_mixer),
4616 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4617 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4618 msm_routing_put_audio_mixer),
4619 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4620 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4621 msm_routing_put_audio_mixer),
4622 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4623 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4624 msm_routing_put_audio_mixer),
4625 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4626 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4627 msm_routing_put_audio_mixer),
4628 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4629 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4630 msm_routing_put_audio_mixer),
4631 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4632 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4633 msm_routing_put_audio_mixer),
4634 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4635 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4636 msm_routing_put_audio_mixer),
4637 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4638 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4639 msm_routing_put_audio_mixer),
4640 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4641 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4642 msm_routing_put_audio_mixer),
4643 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4644 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4645 msm_routing_put_audio_mixer),
4646 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4647 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4648 msm_routing_put_audio_mixer),
4649 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4650 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4651 msm_routing_put_audio_mixer),
4652 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4653 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4654 msm_routing_put_audio_mixer),
4655 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4656 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4657 msm_routing_put_audio_mixer),
4658 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4659 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4660 msm_routing_put_audio_mixer),
4661 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4662 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4663 msm_routing_put_audio_mixer),
4664 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4665 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4666 msm_routing_put_audio_mixer),
4667 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4668 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4669 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304670 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4671 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4672 msm_routing_put_audio_mixer),
4673 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4674 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4675 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304676};
4677
4678static const struct snd_kcontrol_new primary_mi2s_rx_mixer_controls[] = {
4679 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_MI2S_RX,
4680 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4681 msm_routing_put_audio_mixer),
4682 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_MI2S_RX,
4683 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4684 msm_routing_put_audio_mixer),
4685 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_MI2S_RX,
4686 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4687 msm_routing_put_audio_mixer),
4688 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_MI2S_RX,
4689 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4690 msm_routing_put_audio_mixer),
4691 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_MI2S_RX,
4692 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4693 msm_routing_put_audio_mixer),
4694 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_MI2S_RX,
4695 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4696 msm_routing_put_audio_mixer),
4697 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_MI2S_RX,
4698 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4699 msm_routing_put_audio_mixer),
4700 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_MI2S_RX,
4701 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4702 msm_routing_put_audio_mixer),
4703 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_MI2S_RX,
4704 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4705 msm_routing_put_audio_mixer),
4706 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_MI2S_RX,
4707 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4708 msm_routing_put_audio_mixer),
4709 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_MI2S_RX,
4710 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4711 msm_routing_put_audio_mixer),
4712 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_MI2S_RX,
4713 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4714 msm_routing_put_audio_mixer),
4715 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_MI2S_RX,
4716 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4717 msm_routing_put_audio_mixer),
4718 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_MI2S_RX,
4719 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4720 msm_routing_put_audio_mixer),
4721 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_MI2S_RX,
4722 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4723 msm_routing_put_audio_mixer),
4724 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_MI2S_RX,
4725 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4726 msm_routing_put_audio_mixer),
4727 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_PRI_MI2S_RX,
4728 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4729 msm_routing_put_audio_mixer),
4730 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_PRI_MI2S_RX,
4731 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4732 msm_routing_put_audio_mixer),
4733 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_PRI_MI2S_RX,
4734 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4735 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304736 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_PRI_MI2S_RX,
4737 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4738 msm_routing_put_audio_mixer),
4739 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_PRI_MI2S_RX,
4740 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4741 msm_routing_put_audio_mixer),
4742
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304743};
4744
4745static const struct snd_kcontrol_new int0_mi2s_rx_mixer_controls[] = {
4746 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_INT0_MI2S_RX,
4747 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4748 msm_routing_put_audio_mixer),
4749 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_INT0_MI2S_RX,
4750 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4751 msm_routing_put_audio_mixer),
4752 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_INT0_MI2S_RX,
4753 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4754 msm_routing_put_audio_mixer),
4755 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_INT0_MI2S_RX,
4756 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4757 msm_routing_put_audio_mixer),
4758 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_INT0_MI2S_RX,
4759 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4760 msm_routing_put_audio_mixer),
4761 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_INT0_MI2S_RX,
4762 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4763 msm_routing_put_audio_mixer),
4764 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_INT0_MI2S_RX,
4765 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4766 msm_routing_put_audio_mixer),
4767 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_INT0_MI2S_RX,
4768 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4769 msm_routing_put_audio_mixer),
4770 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_INT0_MI2S_RX,
4771 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4772 msm_routing_put_audio_mixer),
4773 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_INT0_MI2S_RX,
4774 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4775 msm_routing_put_audio_mixer),
4776 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_INT0_MI2S_RX,
4777 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4778 msm_routing_put_audio_mixer),
4779 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_INT0_MI2S_RX,
4780 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4781 msm_routing_put_audio_mixer),
4782 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_INT0_MI2S_RX,
4783 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4784 msm_routing_put_audio_mixer),
4785 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_INT0_MI2S_RX,
4786 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4787 msm_routing_put_audio_mixer),
4788 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_INT0_MI2S_RX,
4789 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4790 msm_routing_put_audio_mixer),
4791 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_INT0_MI2S_RX,
4792 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4793 msm_routing_put_audio_mixer),
4794};
4795
4796static const struct snd_kcontrol_new int4_mi2s_rx_mixer_controls[] = {
4797 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_INT4_MI2S_RX,
4798 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4799 msm_routing_put_audio_mixer),
4800 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_INT4_MI2S_RX,
4801 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4802 msm_routing_put_audio_mixer),
4803 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_INT4_MI2S_RX,
4804 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4805 msm_routing_put_audio_mixer),
4806 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_INT4_MI2S_RX,
4807 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4808 msm_routing_put_audio_mixer),
4809 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_INT4_MI2S_RX,
4810 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4811 msm_routing_put_audio_mixer),
4812 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_INT4_MI2S_RX,
4813 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4814 msm_routing_put_audio_mixer),
4815 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_INT4_MI2S_RX,
4816 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4817 msm_routing_put_audio_mixer),
4818 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_INT4_MI2S_RX,
4819 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4820 msm_routing_put_audio_mixer),
4821 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_INT4_MI2S_RX,
4822 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4823 msm_routing_put_audio_mixer),
4824 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_INT4_MI2S_RX,
4825 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4826 msm_routing_put_audio_mixer),
4827 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_INT4_MI2S_RX,
4828 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4829 msm_routing_put_audio_mixer),
4830 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_INT4_MI2S_RX,
4831 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4832 msm_routing_put_audio_mixer),
4833 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_INT4_MI2S_RX,
4834 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4835 msm_routing_put_audio_mixer),
4836 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_INT4_MI2S_RX,
4837 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4838 msm_routing_put_audio_mixer),
4839 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_INT4_MI2S_RX,
4840 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4841 msm_routing_put_audio_mixer),
4842 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_INT4_MI2S_RX,
4843 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4844 msm_routing_put_audio_mixer),
4845};
4846
4847static const struct snd_kcontrol_new hdmi_mixer_controls[] = {
4848 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_HDMI_RX,
4849 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4850 msm_routing_put_audio_mixer),
4851 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_HDMI_RX,
4852 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4853 msm_routing_put_audio_mixer),
4854 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_HDMI_RX,
4855 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4856 msm_routing_put_audio_mixer),
4857 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_HDMI_RX,
4858 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4859 msm_routing_put_audio_mixer),
4860 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_HDMI_RX,
4861 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4862 msm_routing_put_audio_mixer),
4863 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_HDMI_RX,
4864 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4865 msm_routing_put_audio_mixer),
4866 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_HDMI_RX,
4867 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4868 msm_routing_put_audio_mixer),
4869 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_HDMI_RX,
4870 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4871 msm_routing_put_audio_mixer),
4872 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_HDMI_RX,
4873 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4874 msm_routing_put_audio_mixer),
4875 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_HDMI_RX,
4876 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4877 msm_routing_put_audio_mixer),
4878 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_HDMI_RX,
4879 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4880 msm_routing_put_audio_mixer),
4881 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_HDMI_RX,
4882 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4883 msm_routing_put_audio_mixer),
4884 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_HDMI_RX,
4885 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4886 msm_routing_put_audio_mixer),
4887 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_HDMI_RX,
4888 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4889 msm_routing_put_audio_mixer),
4890 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_HDMI_RX,
4891 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4892 msm_routing_put_audio_mixer),
4893 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_HDMI_RX,
4894 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4895 msm_routing_put_audio_mixer),
4896 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_HDMI_RX,
4897 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4898 msm_routing_put_audio_mixer),
4899 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_HDMI_RX,
4900 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4901 msm_routing_put_audio_mixer),
4902 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_HDMI_RX,
4903 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4904 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304905 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_HDMI_RX,
4906 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4907 msm_routing_put_audio_mixer),
4908 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_HDMI_RX,
4909 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4910 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304911};
4912
4913static const struct snd_kcontrol_new display_port_mixer_controls[] = {
4914 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4915 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4916 msm_routing_put_audio_mixer),
4917 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4918 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4919 msm_routing_put_audio_mixer),
4920 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4921 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4922 msm_routing_put_audio_mixer),
4923 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4924 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4925 msm_routing_put_audio_mixer),
4926 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4927 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4928 msm_routing_put_audio_mixer),
4929 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4930 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4931 msm_routing_put_audio_mixer),
4932 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4933 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4934 msm_routing_put_audio_mixer),
4935 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4936 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4937 msm_routing_put_audio_mixer),
4938 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4939 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4940 msm_routing_put_audio_mixer),
4941 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4942 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4943 msm_routing_put_audio_mixer),
4944 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4945 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4946 msm_routing_put_audio_mixer),
4947 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4948 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4949 msm_routing_put_audio_mixer),
4950 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4951 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4952 msm_routing_put_audio_mixer),
4953 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4954 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4955 msm_routing_put_audio_mixer),
4956 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4957 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4958 msm_routing_put_audio_mixer),
4959 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4960 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4961 msm_routing_put_audio_mixer),
4962};
4963
4964 /* incall music delivery mixer */
4965static const struct snd_kcontrol_new incall_music_delivery_mixer_controls[] = {
4966 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_VOICE_PLAYBACK_TX,
4967 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4968 msm_routing_put_audio_mixer),
4969 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_VOICE_PLAYBACK_TX,
4970 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4971 msm_routing_put_audio_mixer),
4972 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_VOICE_PLAYBACK_TX,
4973 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4974 msm_routing_put_audio_mixer),
4975 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_VOICE_PLAYBACK_TX,
4976 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4977 msm_routing_put_audio_mixer),
4978};
4979
4980static const struct snd_kcontrol_new incall_music2_delivery_mixer_controls[] = {
4981 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_VOICE2_PLAYBACK_TX,
4982 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4983 msm_routing_put_audio_mixer),
4984 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_VOICE2_PLAYBACK_TX,
4985 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4986 msm_routing_put_audio_mixer),
4987 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_VOICE2_PLAYBACK_TX,
4988 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4989 msm_routing_put_audio_mixer),
4990 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_VOICE2_PLAYBACK_TX,
4991 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4992 msm_routing_put_audio_mixer),
4993};
4994
4995static const struct snd_kcontrol_new slimbus_4_rx_mixer_controls[] = {
4996 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_4_RX,
4997 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4998 msm_routing_put_audio_mixer),
4999 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_4_RX,
5000 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5001 msm_routing_put_audio_mixer),
5002 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_4_RX,
5003 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5004 msm_routing_put_audio_mixer),
5005 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_4_RX,
5006 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5007 msm_routing_put_audio_mixer),
5008};
5009
5010static const struct snd_kcontrol_new slimbus_6_rx_mixer_controls[] = {
5011 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_6_RX,
5012 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5013 msm_routing_put_audio_mixer),
5014 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_6_RX,
5015 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5016 msm_routing_put_audio_mixer),
5017 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SLIMBUS_6_RX,
5018 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5019 msm_routing_put_audio_mixer),
5020 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SLIMBUS_6_RX,
5021 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5022 msm_routing_put_audio_mixer),
5023 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_6_RX,
5024 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5025 msm_routing_put_audio_mixer),
5026 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SLIMBUS_6_RX,
5027 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5028 msm_routing_put_audio_mixer),
5029 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SLIMBUS_6_RX,
5030 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5031 msm_routing_put_audio_mixer),
5032 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SLIMBUS_6_RX,
5033 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5034 msm_routing_put_audio_mixer),
5035 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_6_RX,
5036 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5037 msm_routing_put_audio_mixer),
5038 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SLIMBUS_6_RX,
5039 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5040 msm_routing_put_audio_mixer),
5041 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SLIMBUS_6_RX,
5042 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5043 msm_routing_put_audio_mixer),
5044 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SLIMBUS_6_RX,
5045 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5046 msm_routing_put_audio_mixer),
5047 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SLIMBUS_6_RX,
5048 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5049 msm_routing_put_audio_mixer),
5050 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SLIMBUS_6_RX,
5051 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5052 msm_routing_put_audio_mixer),
5053 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SLIMBUS_6_RX,
5054 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5055 msm_routing_put_audio_mixer),
5056 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SLIMBUS_6_RX,
5057 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5058 msm_routing_put_audio_mixer),
5059};
5060
5061static const struct snd_kcontrol_new slimbus_7_rx_mixer_controls[] = {
5062 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_7_RX,
5063 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5064 msm_routing_put_audio_mixer),
5065 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_7_RX,
5066 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5067 msm_routing_put_audio_mixer),
5068 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SLIMBUS_7_RX,
5069 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5070 msm_routing_put_audio_mixer),
5071 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SLIMBUS_7_RX,
5072 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5073 msm_routing_put_audio_mixer),
5074 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_7_RX,
5075 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5076 msm_routing_put_audio_mixer),
5077 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SLIMBUS_7_RX,
5078 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5079 msm_routing_put_audio_mixer),
5080 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SLIMBUS_7_RX,
5081 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5082 msm_routing_put_audio_mixer),
5083 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SLIMBUS_7_RX,
5084 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5085 msm_routing_put_audio_mixer),
5086 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_7_RX,
5087 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5088 msm_routing_put_audio_mixer),
5089 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SLIMBUS_7_RX,
5090 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5091 msm_routing_put_audio_mixer),
5092 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SLIMBUS_7_RX,
5093 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5094 msm_routing_put_audio_mixer),
5095 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SLIMBUS_7_RX,
5096 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5097 msm_routing_put_audio_mixer),
5098 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SLIMBUS_7_RX,
5099 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5100 msm_routing_put_audio_mixer),
5101 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SLIMBUS_7_RX,
5102 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5103 msm_routing_put_audio_mixer),
5104 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SLIMBUS_7_RX,
5105 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5106 msm_routing_put_audio_mixer),
5107 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SLIMBUS_7_RX,
5108 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5109 msm_routing_put_audio_mixer),
5110};
5111
5112static const struct snd_kcontrol_new usb_audio_rx_mixer_controls[] = {
5113 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_USB_RX,
5114 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5115 msm_routing_put_audio_mixer),
5116 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_USB_RX,
5117 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5118 msm_routing_put_audio_mixer),
5119 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_USB_RX,
5120 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5121 msm_routing_put_audio_mixer),
5122 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_USB_RX,
5123 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5124 msm_routing_put_audio_mixer),
5125 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_USB_RX,
5126 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5127 msm_routing_put_audio_mixer),
5128 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_USB_RX,
5129 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5130 msm_routing_put_audio_mixer),
5131 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_USB_RX,
5132 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5133 msm_routing_put_audio_mixer),
5134 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_USB_RX,
5135 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5136 msm_routing_put_audio_mixer),
5137 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_USB_RX,
5138 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5139 msm_routing_put_audio_mixer),
5140 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_USB_RX,
5141 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5142 msm_routing_put_audio_mixer),
5143 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_USB_RX,
5144 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5145 msm_routing_put_audio_mixer),
5146 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_USB_RX,
5147 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5148 msm_routing_put_audio_mixer),
5149 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_USB_RX,
5150 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5151 msm_routing_put_audio_mixer),
5152 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_USB_RX,
5153 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5154 msm_routing_put_audio_mixer),
5155 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_USB_RX,
5156 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5157 msm_routing_put_audio_mixer),
5158 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_USB_RX,
5159 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5160 msm_routing_put_audio_mixer),
5161};
5162
5163static const struct snd_kcontrol_new int_bt_sco_rx_mixer_controls[] = {
5164 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5165 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5166 msm_routing_put_audio_mixer),
5167 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5168 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5169 msm_routing_put_audio_mixer),
5170 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5171 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5172 msm_routing_put_audio_mixer),
5173 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5174 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5175 msm_routing_put_audio_mixer),
5176 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5177 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5178 msm_routing_put_audio_mixer),
5179 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5180 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5181 msm_routing_put_audio_mixer),
5182 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5183 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5184 msm_routing_put_audio_mixer),
5185 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5186 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5187 msm_routing_put_audio_mixer),
5188 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5189 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5190 msm_routing_put_audio_mixer),
5191 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5192 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5193 msm_routing_put_audio_mixer),
5194 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5195 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5196 msm_routing_put_audio_mixer),
5197 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5198 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5199 msm_routing_put_audio_mixer),
5200 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5201 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5202 msm_routing_put_audio_mixer),
5203 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5204 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5205 msm_routing_put_audio_mixer),
5206 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5207 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5208 msm_routing_put_audio_mixer),
5209 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5210 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5211 msm_routing_put_audio_mixer),
5212 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5213 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
5214 msm_routing_put_audio_mixer),
5215 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5216 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
5217 msm_routing_put_audio_mixer),
5218 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5219 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
5220 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05305221 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5222 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
5223 msm_routing_put_audio_mixer),
5224 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5225 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
5226 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305227};
5228
5229static const struct snd_kcontrol_new int_bt_a2dp_rx_mixer_controls[] = {
5230 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5231 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5232 msm_routing_put_audio_mixer),
5233 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5234 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5235 msm_routing_put_audio_mixer),
5236 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5237 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5238 msm_routing_put_audio_mixer),
5239 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5240 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5241 msm_routing_put_audio_mixer),
5242 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5243 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5244 msm_routing_put_audio_mixer),
5245 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5246 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5247 msm_routing_put_audio_mixer),
5248 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5249 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5250 msm_routing_put_audio_mixer),
5251 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5252 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5253 msm_routing_put_audio_mixer),
5254 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5255 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5256 msm_routing_put_audio_mixer),
5257 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5258 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5259 msm_routing_put_audio_mixer),
5260 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5261 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5262 msm_routing_put_audio_mixer),
5263 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5264 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5265 msm_routing_put_audio_mixer),
5266 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5267 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5268 msm_routing_put_audio_mixer),
5269 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5270 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5271 msm_routing_put_audio_mixer),
5272 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5273 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5274 msm_routing_put_audio_mixer),
5275 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5276 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5277 msm_routing_put_audio_mixer),
5278};
5279
5280static const struct snd_kcontrol_new int_fm_rx_mixer_controls[] = {
5281 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_INT_FM_RX,
5282 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5283 msm_routing_put_audio_mixer),
5284 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_INT_FM_RX,
5285 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5286 msm_routing_put_audio_mixer),
5287 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_INT_FM_RX,
5288 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5289 msm_routing_put_audio_mixer),
5290 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_INT_FM_RX,
5291 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5292 msm_routing_put_audio_mixer),
5293 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_INT_FM_RX,
5294 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5295 msm_routing_put_audio_mixer),
5296 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_INT_FM_RX,
5297 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5298 msm_routing_put_audio_mixer),
5299 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_INT_FM_RX,
5300 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5301 msm_routing_put_audio_mixer),
5302 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_INT_FM_RX,
5303 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5304 msm_routing_put_audio_mixer),
5305 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_INT_FM_RX,
5306 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5307 msm_routing_put_audio_mixer),
5308 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_INT_FM_RX,
5309 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5310 msm_routing_put_audio_mixer),
5311 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_INT_FM_RX,
5312 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5313 msm_routing_put_audio_mixer),
5314 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_INT_FM_RX,
5315 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5316 msm_routing_put_audio_mixer),
5317 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_INT_FM_RX,
5318 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5319 msm_routing_put_audio_mixer),
5320 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_INT_FM_RX,
5321 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5322 msm_routing_put_audio_mixer),
5323 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_INT_FM_RX,
5324 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5325 msm_routing_put_audio_mixer),
5326 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_INT_FM_RX,
5327 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5328 msm_routing_put_audio_mixer),
5329 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_INT_FM_RX,
5330 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
5331 msm_routing_put_audio_mixer),
5332 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_INT_FM_RX,
5333 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
5334 msm_routing_put_audio_mixer),
5335 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_INT_FM_RX,
5336 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
5337 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05305338 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_INT_FM_RX,
5339 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
5340 msm_routing_put_audio_mixer),
5341 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_INT_FM_RX,
5342 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
5343 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305344};
5345
5346static const struct snd_kcontrol_new afe_pcm_rx_mixer_controls[] = {
5347 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_AFE_PCM_RX,
5348 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5349 msm_routing_put_audio_mixer),
5350 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_AFE_PCM_RX,
5351 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5352 msm_routing_put_audio_mixer),
5353 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_AFE_PCM_RX,
5354 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5355 msm_routing_put_audio_mixer),
5356 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_AFE_PCM_RX,
5357 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5358 msm_routing_put_audio_mixer),
5359 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_AFE_PCM_RX,
5360 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5361 msm_routing_put_audio_mixer),
5362 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_AFE_PCM_RX,
5363 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5364 msm_routing_put_audio_mixer),
5365 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_AFE_PCM_RX,
5366 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5367 msm_routing_put_audio_mixer),
5368 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_AFE_PCM_RX,
5369 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5370 msm_routing_put_audio_mixer),
5371 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_AFE_PCM_RX,
5372 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5373 msm_routing_put_audio_mixer),
5374 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_AFE_PCM_RX,
5375 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5376 msm_routing_put_audio_mixer),
5377 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_AFE_PCM_RX,
5378 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5379 msm_routing_put_audio_mixer),
5380 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_AFE_PCM_RX,
5381 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5382 msm_routing_put_audio_mixer),
5383 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_AFE_PCM_RX,
5384 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5385 msm_routing_put_audio_mixer),
5386 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_AFE_PCM_RX,
5387 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5388 msm_routing_put_audio_mixer),
5389 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_AFE_PCM_RX,
5390 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5391 msm_routing_put_audio_mixer),
5392 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_AFE_PCM_RX,
5393 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5394 msm_routing_put_audio_mixer),
5395 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_AFE_PCM_RX,
5396 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
5397 msm_routing_put_audio_mixer),
5398 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_AFE_PCM_RX,
5399 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
5400 msm_routing_put_audio_mixer),
5401 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_AFE_PCM_RX,
5402 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
5403 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05305404 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_AFE_PCM_RX,
5405 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
5406 msm_routing_put_audio_mixer),
5407 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_AFE_PCM_RX,
5408 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
5409 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305410};
5411
5412static const struct snd_kcontrol_new auxpcm_rx_mixer_controls[] = {
5413 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_AUXPCM_RX,
5414 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5415 msm_routing_put_audio_mixer),
5416 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_AUXPCM_RX,
5417 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5418 msm_routing_put_audio_mixer),
5419 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_AUXPCM_RX,
5420 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5421 msm_routing_put_audio_mixer),
5422 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_AUXPCM_RX,
5423 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5424 msm_routing_put_audio_mixer),
5425 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_AUXPCM_RX,
5426 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5427 msm_routing_put_audio_mixer),
5428 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_AUXPCM_RX,
5429 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5430 msm_routing_put_audio_mixer),
5431 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_AUXPCM_RX,
5432 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5433 msm_routing_put_audio_mixer),
5434 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_AUXPCM_RX,
5435 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5436 msm_routing_put_audio_mixer),
5437 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_AUXPCM_RX,
5438 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5439 msm_routing_put_audio_mixer),
5440 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_AUXPCM_RX,
5441 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5442 msm_routing_put_audio_mixer),
5443 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_AUXPCM_RX,
5444 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5445 msm_routing_put_audio_mixer),
5446 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_AUXPCM_RX,
5447 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5448 msm_routing_put_audio_mixer),
5449 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_AUXPCM_RX,
5450 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5451 msm_routing_put_audio_mixer),
5452 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_AUXPCM_RX,
5453 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5454 msm_routing_put_audio_mixer),
5455 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_AUXPCM_RX,
5456 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5457 msm_routing_put_audio_mixer),
5458 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_AUXPCM_RX,
5459 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5460 msm_routing_put_audio_mixer),
5461 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_AUXPCM_RX,
5462 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
5463 msm_routing_put_audio_mixer),
5464 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_AUXPCM_RX,
5465 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
5466 msm_routing_put_audio_mixer),
5467 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_AUXPCM_RX,
5468 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
5469 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05305470 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_AUXPCM_RX,
5471 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
5472 msm_routing_put_audio_mixer),
5473 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_AUXPCM_RX,
5474 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
5475 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305476};
5477
5478static const struct snd_kcontrol_new sec_auxpcm_rx_mixer_controls[] = {
5479 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5480 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5481 msm_routing_put_audio_mixer),
5482 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5483 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5484 msm_routing_put_audio_mixer),
5485 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5486 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5487 msm_routing_put_audio_mixer),
5488 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5489 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5490 msm_routing_put_audio_mixer),
5491 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5492 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5493 msm_routing_put_audio_mixer),
5494 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5495 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5496 msm_routing_put_audio_mixer),
5497 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5498 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5499 msm_routing_put_audio_mixer),
5500 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5501 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5502 msm_routing_put_audio_mixer),
5503 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5504 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5505 msm_routing_put_audio_mixer),
5506 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5507 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5508 msm_routing_put_audio_mixer),
5509 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5510 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5511 msm_routing_put_audio_mixer),
5512 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5513 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5514 msm_routing_put_audio_mixer),
5515 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5516 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5517 msm_routing_put_audio_mixer),
5518 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5519 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5520 msm_routing_put_audio_mixer),
5521 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5522 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5523 msm_routing_put_audio_mixer),
5524 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5525 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5526 msm_routing_put_audio_mixer),
5527 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5528 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
5529 msm_routing_put_audio_mixer),
5530 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5531 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
5532 msm_routing_put_audio_mixer),
5533 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5534 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
5535 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05305536 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5537 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
5538 msm_routing_put_audio_mixer),
5539 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5540 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
5541 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305542};
5543
5544static const struct snd_kcontrol_new tert_auxpcm_rx_mixer_controls[] = {
5545 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5546 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5547 msm_routing_put_audio_mixer),
5548 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5549 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5550 msm_routing_put_audio_mixer),
5551 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5552 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5553 msm_routing_put_audio_mixer),
5554 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5555 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5556 msm_routing_put_audio_mixer),
5557 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5558 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5559 msm_routing_put_audio_mixer),
5560 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5561 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5562 msm_routing_put_audio_mixer),
5563 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5564 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5565 msm_routing_put_audio_mixer),
5566 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5567 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5568 msm_routing_put_audio_mixer),
5569 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5570 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5571 msm_routing_put_audio_mixer),
5572 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5573 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5574 msm_routing_put_audio_mixer),
5575 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5576 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5577 msm_routing_put_audio_mixer),
5578 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5579 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5580 msm_routing_put_audio_mixer),
5581 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5582 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5583 msm_routing_put_audio_mixer),
5584 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5585 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5586 msm_routing_put_audio_mixer),
5587 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5588 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5589 msm_routing_put_audio_mixer),
5590 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5591 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5592 msm_routing_put_audio_mixer),
5593};
5594
5595static const struct snd_kcontrol_new quat_auxpcm_rx_mixer_controls[] = {
5596 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5597 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5598 msm_routing_put_audio_mixer),
5599 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5600 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5601 msm_routing_put_audio_mixer),
5602 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5603 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5604 msm_routing_put_audio_mixer),
5605 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5606 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5607 msm_routing_put_audio_mixer),
5608 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5609 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5610 msm_routing_put_audio_mixer),
5611 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5612 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5613 msm_routing_put_audio_mixer),
5614 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5615 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5616 msm_routing_put_audio_mixer),
5617 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5618 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5619 msm_routing_put_audio_mixer),
5620 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5621 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5622 msm_routing_put_audio_mixer),
5623 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5624 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5625 msm_routing_put_audio_mixer),
5626 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5627 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5628 msm_routing_put_audio_mixer),
5629 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5630 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5631 msm_routing_put_audio_mixer),
5632 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5633 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5634 msm_routing_put_audio_mixer),
5635 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5636 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5637 msm_routing_put_audio_mixer),
5638 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5639 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5640 msm_routing_put_audio_mixer),
5641 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5642 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5643 msm_routing_put_audio_mixer),
5644};
5645
Rohit Kumara5077932017-09-10 22:05:05 +05305646static const struct snd_kcontrol_new quin_auxpcm_rx_mixer_controls[] = {
5647 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5648 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5649 msm_routing_put_audio_mixer),
5650 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5651 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5652 msm_routing_put_audio_mixer),
5653 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5654 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5655 msm_routing_put_audio_mixer),
5656 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5657 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5658 msm_routing_put_audio_mixer),
5659 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5660 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5661 msm_routing_put_audio_mixer),
5662 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5663 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5664 msm_routing_put_audio_mixer),
5665 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5666 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5667 msm_routing_put_audio_mixer),
5668 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5669 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5670 msm_routing_put_audio_mixer),
5671 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5672 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5673 msm_routing_put_audio_mixer),
5674 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5675 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5676 msm_routing_put_audio_mixer),
5677 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5678 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5679 msm_routing_put_audio_mixer),
5680 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5681 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5682 msm_routing_put_audio_mixer),
5683 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5684 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5685 msm_routing_put_audio_mixer),
5686 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5687 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5688 msm_routing_put_audio_mixer),
5689 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5690 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5691 msm_routing_put_audio_mixer),
5692 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5693 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5694 msm_routing_put_audio_mixer),
5695};
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305696static const struct snd_kcontrol_new pri_tdm_rx_0_mixer_controls[] = {
5697 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5698 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5699 msm_routing_put_audio_mixer),
5700 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5701 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5702 msm_routing_put_audio_mixer),
5703 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5704 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5705 msm_routing_put_audio_mixer),
5706 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5707 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5708 msm_routing_put_audio_mixer),
5709 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5710 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5711 msm_routing_put_audio_mixer),
5712 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5713 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5714 msm_routing_put_audio_mixer),
5715 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5716 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5717 msm_routing_put_audio_mixer),
5718 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5719 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5720 msm_routing_put_audio_mixer),
5721 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5722 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5723 msm_routing_put_audio_mixer),
5724 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5725 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5726 msm_routing_put_audio_mixer),
5727 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5728 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5729 msm_routing_put_audio_mixer),
5730 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5731 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5732 msm_routing_put_audio_mixer),
5733 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5734 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5735 msm_routing_put_audio_mixer),
5736 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5737 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5738 msm_routing_put_audio_mixer),
5739 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5740 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5741 msm_routing_put_audio_mixer),
5742 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5743 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5744 msm_routing_put_audio_mixer),
5745};
5746
5747static const struct snd_kcontrol_new pri_tdm_rx_1_mixer_controls[] = {
5748 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5749 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5750 msm_routing_put_audio_mixer),
5751 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5752 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5753 msm_routing_put_audio_mixer),
5754 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5755 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5756 msm_routing_put_audio_mixer),
5757 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5758 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5759 msm_routing_put_audio_mixer),
5760 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5761 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5762 msm_routing_put_audio_mixer),
5763 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5764 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5765 msm_routing_put_audio_mixer),
5766 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5767 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5768 msm_routing_put_audio_mixer),
5769 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5770 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5771 msm_routing_put_audio_mixer),
5772 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5773 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5774 msm_routing_put_audio_mixer),
5775 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5776 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5777 msm_routing_put_audio_mixer),
5778 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5779 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5780 msm_routing_put_audio_mixer),
5781 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5782 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5783 msm_routing_put_audio_mixer),
5784 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5785 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5786 msm_routing_put_audio_mixer),
5787 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5788 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5789 msm_routing_put_audio_mixer),
5790 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5791 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5792 msm_routing_put_audio_mixer),
5793 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5794 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5795 msm_routing_put_audio_mixer),
5796};
5797
5798static const struct snd_kcontrol_new pri_tdm_rx_2_mixer_controls[] = {
5799 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5800 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5801 msm_routing_put_audio_mixer),
5802 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5803 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5804 msm_routing_put_audio_mixer),
5805 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5806 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5807 msm_routing_put_audio_mixer),
5808 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5809 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5810 msm_routing_put_audio_mixer),
5811 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5812 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5813 msm_routing_put_audio_mixer),
5814 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5815 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5816 msm_routing_put_audio_mixer),
5817 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5818 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5819 msm_routing_put_audio_mixer),
5820 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5821 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5822 msm_routing_put_audio_mixer),
5823 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5824 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5825 msm_routing_put_audio_mixer),
5826 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5827 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5828 msm_routing_put_audio_mixer),
5829 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5830 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5831 msm_routing_put_audio_mixer),
5832 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5833 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5834 msm_routing_put_audio_mixer),
5835 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5836 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5837 msm_routing_put_audio_mixer),
5838 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5839 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5840 msm_routing_put_audio_mixer),
5841 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5842 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5843 msm_routing_put_audio_mixer),
5844 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5845 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5846 msm_routing_put_audio_mixer),
5847};
5848
5849static const struct snd_kcontrol_new pri_tdm_rx_3_mixer_controls[] = {
5850 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5851 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5852 msm_routing_put_audio_mixer),
5853 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5854 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5855 msm_routing_put_audio_mixer),
5856 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5857 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5858 msm_routing_put_audio_mixer),
5859 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5860 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5861 msm_routing_put_audio_mixer),
5862 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5863 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5864 msm_routing_put_audio_mixer),
5865 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5866 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5867 msm_routing_put_audio_mixer),
5868 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5869 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5870 msm_routing_put_audio_mixer),
5871 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5872 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5873 msm_routing_put_audio_mixer),
5874 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5875 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5876 msm_routing_put_audio_mixer),
5877 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5878 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5879 msm_routing_put_audio_mixer),
5880 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5881 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5882 msm_routing_put_audio_mixer),
5883 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5884 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5885 msm_routing_put_audio_mixer),
5886 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5887 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5888 msm_routing_put_audio_mixer),
5889 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5890 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5891 msm_routing_put_audio_mixer),
5892 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5893 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5894 msm_routing_put_audio_mixer),
5895 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5896 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5897 msm_routing_put_audio_mixer),
5898};
5899
5900static const struct snd_kcontrol_new pri_tdm_tx_0_mixer_controls[] = {
5901 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5902 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5903 msm_routing_put_audio_mixer),
5904 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5905 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5906 msm_routing_put_audio_mixer),
5907 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5908 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5909 msm_routing_put_audio_mixer),
5910 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5911 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5912 msm_routing_put_audio_mixer),
5913 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5914 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5915 msm_routing_put_audio_mixer),
5916 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5917 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5918 msm_routing_put_audio_mixer),
5919 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5920 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5921 msm_routing_put_audio_mixer),
5922 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5923 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5924 msm_routing_put_audio_mixer),
5925 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5926 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5927 msm_routing_put_audio_mixer),
5928 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5929 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5930 msm_routing_put_audio_mixer),
5931 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5932 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5933 msm_routing_put_audio_mixer),
5934 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5935 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5936 msm_routing_put_audio_mixer),
5937 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5938 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5939 msm_routing_put_audio_mixer),
5940 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5941 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5942 msm_routing_put_audio_mixer),
5943 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5944 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5945 msm_routing_put_audio_mixer),
5946 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5947 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5948 msm_routing_put_audio_mixer),
5949};
5950
5951static const struct snd_kcontrol_new sec_tdm_rx_0_mixer_controls[] = {
5952 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5953 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5954 msm_routing_put_audio_mixer),
5955 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5956 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5957 msm_routing_put_audio_mixer),
5958 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5959 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5960 msm_routing_put_audio_mixer),
5961 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5962 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5963 msm_routing_put_audio_mixer),
5964 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5965 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5966 msm_routing_put_audio_mixer),
5967 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5968 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5969 msm_routing_put_audio_mixer),
5970 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5971 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5972 msm_routing_put_audio_mixer),
5973 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5974 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5975 msm_routing_put_audio_mixer),
5976 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5977 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5978 msm_routing_put_audio_mixer),
5979 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5980 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5981 msm_routing_put_audio_mixer),
5982 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5983 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5984 msm_routing_put_audio_mixer),
5985 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5986 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5987 msm_routing_put_audio_mixer),
5988 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5989 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5990 msm_routing_put_audio_mixer),
5991 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5992 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5993 msm_routing_put_audio_mixer),
5994 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5995 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5996 msm_routing_put_audio_mixer),
5997 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5998 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5999 msm_routing_put_audio_mixer),
6000};
6001
6002static const struct snd_kcontrol_new sec_tdm_rx_1_mixer_controls[] = {
6003 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_TDM_RX_1,
6004 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6005 msm_routing_put_audio_mixer),
6006 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_TDM_RX_1,
6007 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6008 msm_routing_put_audio_mixer),
6009 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_TDM_RX_1,
6010 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6011 msm_routing_put_audio_mixer),
6012 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_TDM_RX_1,
6013 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6014 msm_routing_put_audio_mixer),
6015 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_TDM_RX_1,
6016 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6017 msm_routing_put_audio_mixer),
6018 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_TDM_RX_1,
6019 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6020 msm_routing_put_audio_mixer),
6021 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_TDM_RX_1,
6022 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6023 msm_routing_put_audio_mixer),
6024 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_TDM_RX_1,
6025 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6026 msm_routing_put_audio_mixer),
6027 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_TDM_RX_1,
6028 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6029 msm_routing_put_audio_mixer),
6030 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_TDM_RX_1,
6031 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6032 msm_routing_put_audio_mixer),
6033 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_TDM_RX_1,
6034 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6035 msm_routing_put_audio_mixer),
6036 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_TDM_RX_1,
6037 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6038 msm_routing_put_audio_mixer),
6039 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_TDM_RX_1,
6040 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6041 msm_routing_put_audio_mixer),
6042 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_TDM_RX_1,
6043 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6044 msm_routing_put_audio_mixer),
6045 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_TDM_RX_1,
6046 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6047 msm_routing_put_audio_mixer),
6048 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_TDM_RX_1,
6049 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6050 msm_routing_put_audio_mixer),
6051};
6052
6053static const struct snd_kcontrol_new sec_tdm_rx_2_mixer_controls[] = {
6054 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_TDM_RX_2,
6055 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6056 msm_routing_put_audio_mixer),
6057 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_TDM_RX_2,
6058 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6059 msm_routing_put_audio_mixer),
6060 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_TDM_RX_2,
6061 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6062 msm_routing_put_audio_mixer),
6063 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_TDM_RX_2,
6064 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6065 msm_routing_put_audio_mixer),
6066 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_TDM_RX_2,
6067 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6068 msm_routing_put_audio_mixer),
6069 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_TDM_RX_2,
6070 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6071 msm_routing_put_audio_mixer),
6072 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_TDM_RX_2,
6073 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6074 msm_routing_put_audio_mixer),
6075 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_TDM_RX_2,
6076 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6077 msm_routing_put_audio_mixer),
6078 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_TDM_RX_2,
6079 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6080 msm_routing_put_audio_mixer),
6081 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_TDM_RX_2,
6082 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6083 msm_routing_put_audio_mixer),
6084 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_TDM_RX_2,
6085 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6086 msm_routing_put_audio_mixer),
6087 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_TDM_RX_2,
6088 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6089 msm_routing_put_audio_mixer),
6090 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_TDM_RX_2,
6091 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6092 msm_routing_put_audio_mixer),
6093 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_TDM_RX_2,
6094 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6095 msm_routing_put_audio_mixer),
6096 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_TDM_RX_2,
6097 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6098 msm_routing_put_audio_mixer),
6099 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_TDM_RX_2,
6100 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6101 msm_routing_put_audio_mixer),
6102};
6103
6104static const struct snd_kcontrol_new sec_tdm_rx_3_mixer_controls[] = {
6105 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6106 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6107 msm_routing_put_audio_mixer),
6108 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6109 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6110 msm_routing_put_audio_mixer),
6111 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6112 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6113 msm_routing_put_audio_mixer),
6114 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6115 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6116 msm_routing_put_audio_mixer),
6117 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6118 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6119 msm_routing_put_audio_mixer),
6120 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6121 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6122 msm_routing_put_audio_mixer),
6123 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6124 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6125 msm_routing_put_audio_mixer),
6126 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6127 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6128 msm_routing_put_audio_mixer),
6129 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6130 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6131 msm_routing_put_audio_mixer),
6132 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6133 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6134 msm_routing_put_audio_mixer),
6135 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6136 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6137 msm_routing_put_audio_mixer),
6138 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6139 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6140 msm_routing_put_audio_mixer),
6141 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6142 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6143 msm_routing_put_audio_mixer),
6144 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6145 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6146 msm_routing_put_audio_mixer),
6147 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6148 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6149 msm_routing_put_audio_mixer),
6150 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6151 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6152 msm_routing_put_audio_mixer),
6153};
6154
6155static const struct snd_kcontrol_new sec_tdm_tx_0_mixer_controls[] = {
6156 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6157 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6158 msm_routing_put_audio_mixer),
6159 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6160 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6161 msm_routing_put_audio_mixer),
6162 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6163 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6164 msm_routing_put_audio_mixer),
6165 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6166 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6167 msm_routing_put_audio_mixer),
6168 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6169 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6170 msm_routing_put_audio_mixer),
6171 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6172 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6173 msm_routing_put_audio_mixer),
6174 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6175 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6176 msm_routing_put_audio_mixer),
6177 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6178 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6179 msm_routing_put_audio_mixer),
6180 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6181 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6182 msm_routing_put_audio_mixer),
6183 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6184 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6185 msm_routing_put_audio_mixer),
6186 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6187 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6188 msm_routing_put_audio_mixer),
6189 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6190 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6191 msm_routing_put_audio_mixer),
6192 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6193 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6194 msm_routing_put_audio_mixer),
6195 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6196 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6197 msm_routing_put_audio_mixer),
6198 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6199 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6200 msm_routing_put_audio_mixer),
6201 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6202 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6203 msm_routing_put_audio_mixer),
6204};
6205
6206static const struct snd_kcontrol_new tert_tdm_rx_0_mixer_controls[] = {
6207 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6208 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6209 msm_routing_put_audio_mixer),
6210 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6211 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6212 msm_routing_put_audio_mixer),
6213 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6214 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6215 msm_routing_put_audio_mixer),
6216 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6217 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6218 msm_routing_put_audio_mixer),
6219 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6220 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6221 msm_routing_put_audio_mixer),
6222 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6223 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6224 msm_routing_put_audio_mixer),
6225 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6226 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6227 msm_routing_put_audio_mixer),
6228 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6229 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6230 msm_routing_put_audio_mixer),
6231 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6232 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6233 msm_routing_put_audio_mixer),
6234 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6235 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6236 msm_routing_put_audio_mixer),
6237 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6238 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6239 msm_routing_put_audio_mixer),
6240 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6241 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6242 msm_routing_put_audio_mixer),
6243 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6244 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6245 msm_routing_put_audio_mixer),
6246 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6247 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6248 msm_routing_put_audio_mixer),
6249 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6250 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6251 msm_routing_put_audio_mixer),
6252 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6253 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6254 msm_routing_put_audio_mixer),
6255};
6256
6257static const struct snd_kcontrol_new tert_tdm_tx_0_mixer_controls[] = {
6258 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6259 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6260 msm_routing_put_audio_mixer),
6261 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6262 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6263 msm_routing_put_audio_mixer),
6264 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6265 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6266 msm_routing_put_audio_mixer),
6267 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6268 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6269 msm_routing_put_audio_mixer),
6270 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6271 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6272 msm_routing_put_audio_mixer),
6273 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6274 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6275 msm_routing_put_audio_mixer),
6276 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6277 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6278 msm_routing_put_audio_mixer),
6279 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6280 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6281 msm_routing_put_audio_mixer),
6282 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6283 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6284 msm_routing_put_audio_mixer),
6285 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6286 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6287 msm_routing_put_audio_mixer),
6288 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6289 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6290 msm_routing_put_audio_mixer),
6291 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6292 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6293 msm_routing_put_audio_mixer),
6294 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6295 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6296 msm_routing_put_audio_mixer),
6297 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6298 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6299 msm_routing_put_audio_mixer),
6300 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6301 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6302 msm_routing_put_audio_mixer),
6303 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6304 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6305 msm_routing_put_audio_mixer),
6306};
6307
6308static const struct snd_kcontrol_new tert_tdm_rx_1_mixer_controls[] = {
6309 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6310 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6311 msm_routing_put_audio_mixer),
6312 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6313 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6314 msm_routing_put_audio_mixer),
6315 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6316 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6317 msm_routing_put_audio_mixer),
6318 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6319 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6320 msm_routing_put_audio_mixer),
6321 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6322 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6323 msm_routing_put_audio_mixer),
6324 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6325 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6326 msm_routing_put_audio_mixer),
6327 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6328 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6329 msm_routing_put_audio_mixer),
6330 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6331 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6332 msm_routing_put_audio_mixer),
6333 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6334 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6335 msm_routing_put_audio_mixer),
6336 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6337 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6338 msm_routing_put_audio_mixer),
6339 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6340 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6341 msm_routing_put_audio_mixer),
6342 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6343 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6344 msm_routing_put_audio_mixer),
6345 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6346 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6347 msm_routing_put_audio_mixer),
6348 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6349 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6350 msm_routing_put_audio_mixer),
6351 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6352 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6353 msm_routing_put_audio_mixer),
6354 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6355 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6356 msm_routing_put_audio_mixer),
6357};
6358
6359static const struct snd_kcontrol_new tert_tdm_rx_2_mixer_controls[] = {
6360 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6361 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6362 msm_routing_put_audio_mixer),
6363 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6364 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6365 msm_routing_put_audio_mixer),
6366 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6367 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6368 msm_routing_put_audio_mixer),
6369 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6370 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6371 msm_routing_put_audio_mixer),
6372 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6373 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6374 msm_routing_put_audio_mixer),
6375 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6376 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6377 msm_routing_put_audio_mixer),
6378 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6379 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6380 msm_routing_put_audio_mixer),
6381 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6382 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6383 msm_routing_put_audio_mixer),
6384 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6385 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6386 msm_routing_put_audio_mixer),
6387 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6388 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6389 msm_routing_put_audio_mixer),
6390 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6391 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6392 msm_routing_put_audio_mixer),
6393 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6394 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6395 msm_routing_put_audio_mixer),
6396 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6397 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6398 msm_routing_put_audio_mixer),
6399 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6400 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6401 msm_routing_put_audio_mixer),
6402 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6403 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6404 msm_routing_put_audio_mixer),
6405 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6406 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6407 msm_routing_put_audio_mixer),
6408};
6409
6410static const struct snd_kcontrol_new tert_tdm_rx_3_mixer_controls[] = {
6411 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6412 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6413 msm_routing_put_audio_mixer),
6414 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6415 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6416 msm_routing_put_audio_mixer),
6417 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6418 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6419 msm_routing_put_audio_mixer),
6420 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6421 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6422 msm_routing_put_audio_mixer),
6423 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6424 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6425 msm_routing_put_audio_mixer),
6426 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6427 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6428 msm_routing_put_audio_mixer),
6429 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6430 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6431 msm_routing_put_audio_mixer),
6432 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6433 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6434 msm_routing_put_audio_mixer),
6435 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6436 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6437 msm_routing_put_audio_mixer),
6438 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6439 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6440 msm_routing_put_audio_mixer),
6441 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6442 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6443 msm_routing_put_audio_mixer),
6444 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6445 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6446 msm_routing_put_audio_mixer),
6447 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6448 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6449 msm_routing_put_audio_mixer),
6450 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6451 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6452 msm_routing_put_audio_mixer),
6453 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6454 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6455 msm_routing_put_audio_mixer),
6456 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6457 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6458 msm_routing_put_audio_mixer),
6459};
6460
6461static const struct snd_kcontrol_new tert_tdm_rx_4_mixer_controls[] = {
6462 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6463 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6464 msm_routing_put_audio_mixer),
6465 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6466 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6467 msm_routing_put_audio_mixer),
6468 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6469 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6470 msm_routing_put_audio_mixer),
6471 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6472 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6473 msm_routing_put_audio_mixer),
6474 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6475 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6476 msm_routing_put_audio_mixer),
6477 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6478 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6479 msm_routing_put_audio_mixer),
6480 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6481 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6482 msm_routing_put_audio_mixer),
6483 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6484 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6485 msm_routing_put_audio_mixer),
6486 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6487 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6488 msm_routing_put_audio_mixer),
6489 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6490 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6491 msm_routing_put_audio_mixer),
6492 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6493 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6494 msm_routing_put_audio_mixer),
6495 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6496 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6497 msm_routing_put_audio_mixer),
6498 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6499 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6500 msm_routing_put_audio_mixer),
6501 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6502 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6503 msm_routing_put_audio_mixer),
6504 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6505 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6506 msm_routing_put_audio_mixer),
6507 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6508 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6509 msm_routing_put_audio_mixer),
6510};
6511
6512static const struct snd_kcontrol_new quat_tdm_rx_0_mixer_controls[] = {
6513 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6514 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6515 msm_routing_put_audio_mixer),
6516 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6517 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6518 msm_routing_put_audio_mixer),
6519 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6520 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6521 msm_routing_put_audio_mixer),
6522 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6523 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6524 msm_routing_put_audio_mixer),
6525 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6526 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6527 msm_routing_put_audio_mixer),
6528 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6529 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6530 msm_routing_put_audio_mixer),
6531 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6532 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6533 msm_routing_put_audio_mixer),
6534 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6535 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6536 msm_routing_put_audio_mixer),
6537 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6538 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6539 msm_routing_put_audio_mixer),
6540 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6541 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6542 msm_routing_put_audio_mixer),
6543 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6544 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6545 msm_routing_put_audio_mixer),
6546 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6547 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6548 msm_routing_put_audio_mixer),
6549 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6550 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6551 msm_routing_put_audio_mixer),
6552 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6553 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6554 msm_routing_put_audio_mixer),
6555 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6556 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6557 msm_routing_put_audio_mixer),
6558 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6559 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6560 msm_routing_put_audio_mixer),
6561 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6562 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6563 msm_routing_put_audio_mixer),
6564};
6565
6566static const struct snd_kcontrol_new quat_tdm_tx_0_mixer_controls[] = {
6567 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6568 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6569 msm_routing_put_audio_mixer),
6570 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6571 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6572 msm_routing_put_audio_mixer),
6573 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6574 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6575 msm_routing_put_audio_mixer),
6576 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6577 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6578 msm_routing_put_audio_mixer),
6579 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6580 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6581 msm_routing_put_audio_mixer),
6582 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6583 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6584 msm_routing_put_audio_mixer),
6585 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6586 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6587 msm_routing_put_audio_mixer),
6588 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6589 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6590 msm_routing_put_audio_mixer),
6591 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6592 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6593 msm_routing_put_audio_mixer),
6594 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6595 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6596 msm_routing_put_audio_mixer),
6597 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6598 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6599 msm_routing_put_audio_mixer),
6600 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6601 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6602 msm_routing_put_audio_mixer),
6603 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6604 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6605 msm_routing_put_audio_mixer),
6606 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6607 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6608 msm_routing_put_audio_mixer),
6609 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6610 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6611 msm_routing_put_audio_mixer),
6612 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6613 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6614 msm_routing_put_audio_mixer),
6615};
6616
6617static const struct snd_kcontrol_new quat_tdm_rx_1_mixer_controls[] = {
6618 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6619 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6620 msm_routing_put_audio_mixer),
6621 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6622 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6623 msm_routing_put_audio_mixer),
6624 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6625 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6626 msm_routing_put_audio_mixer),
6627 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6628 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6629 msm_routing_put_audio_mixer),
6630 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6631 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6632 msm_routing_put_audio_mixer),
6633 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6634 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6635 msm_routing_put_audio_mixer),
6636 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6637 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6638 msm_routing_put_audio_mixer),
6639 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6640 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6641 msm_routing_put_audio_mixer),
6642 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6643 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6644 msm_routing_put_audio_mixer),
6645 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6646 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6647 msm_routing_put_audio_mixer),
6648 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6649 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6650 msm_routing_put_audio_mixer),
6651 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6652 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6653 msm_routing_put_audio_mixer),
6654 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6655 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6656 msm_routing_put_audio_mixer),
6657 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6658 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6659 msm_routing_put_audio_mixer),
6660 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6661 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6662 msm_routing_put_audio_mixer),
6663 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6664 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6665 msm_routing_put_audio_mixer),
6666 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6667 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6668 msm_routing_put_audio_mixer),
6669};
6670
6671static const struct snd_kcontrol_new quat_tdm_rx_2_mixer_controls[] = {
6672 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6673 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6674 msm_routing_put_audio_mixer),
6675 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6676 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6677 msm_routing_put_audio_mixer),
6678 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6679 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6680 msm_routing_put_audio_mixer),
6681 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6682 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6683 msm_routing_put_audio_mixer),
6684 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6685 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6686 msm_routing_put_audio_mixer),
6687 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6688 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6689 msm_routing_put_audio_mixer),
6690 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6691 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6692 msm_routing_put_audio_mixer),
6693 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6694 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6695 msm_routing_put_audio_mixer),
6696 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6697 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6698 msm_routing_put_audio_mixer),
6699 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6700 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6701 msm_routing_put_audio_mixer),
6702 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6703 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6704 msm_routing_put_audio_mixer),
6705 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6706 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6707 msm_routing_put_audio_mixer),
6708 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6709 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6710 msm_routing_put_audio_mixer),
6711 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6712 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6713 msm_routing_put_audio_mixer),
6714 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6715 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6716 msm_routing_put_audio_mixer),
6717 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6718 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6719 msm_routing_put_audio_mixer),
6720 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6721 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6722 msm_routing_put_audio_mixer),
6723};
6724
6725static const struct snd_kcontrol_new quat_tdm_rx_3_mixer_controls[] = {
6726 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6727 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6728 msm_routing_put_audio_mixer),
6729 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6730 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6731 msm_routing_put_audio_mixer),
6732 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6733 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6734 msm_routing_put_audio_mixer),
6735 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6736 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6737 msm_routing_put_audio_mixer),
6738 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6739 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6740 msm_routing_put_audio_mixer),
6741 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6742 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6743 msm_routing_put_audio_mixer),
6744 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6745 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6746 msm_routing_put_audio_mixer),
6747 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6748 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6749 msm_routing_put_audio_mixer),
6750 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6751 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6752 msm_routing_put_audio_mixer),
6753 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6754 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6755 msm_routing_put_audio_mixer),
6756 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6757 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6758 msm_routing_put_audio_mixer),
6759 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6760 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6761 msm_routing_put_audio_mixer),
6762 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6763 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6764 msm_routing_put_audio_mixer),
6765 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6766 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6767 msm_routing_put_audio_mixer),
6768 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6769 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6770 msm_routing_put_audio_mixer),
6771 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6772 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6773 msm_routing_put_audio_mixer),
6774 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6775 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6776 msm_routing_put_audio_mixer),
6777};
6778
Rohit Kumara5077932017-09-10 22:05:05 +05306779static const struct snd_kcontrol_new quin_tdm_rx_0_mixer_controls[] = {
6780 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6781 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6782 msm_routing_put_audio_mixer),
6783 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6784 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6785 msm_routing_put_audio_mixer),
6786 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6787 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6788 msm_routing_put_audio_mixer),
6789 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6790 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6791 msm_routing_put_audio_mixer),
6792 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6793 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6794 msm_routing_put_audio_mixer),
6795 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6796 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6797 msm_routing_put_audio_mixer),
6798 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6799 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6800 msm_routing_put_audio_mixer),
6801 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6802 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6803 msm_routing_put_audio_mixer),
6804 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6805 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6806 msm_routing_put_audio_mixer),
6807 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6808 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6809 msm_routing_put_audio_mixer),
6810 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6811 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6812 msm_routing_put_audio_mixer),
6813 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6814 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6815 msm_routing_put_audio_mixer),
6816 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6817 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6818 msm_routing_put_audio_mixer),
6819 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6820 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6821 msm_routing_put_audio_mixer),
6822 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6823 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6824 msm_routing_put_audio_mixer),
6825 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6826 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6827 msm_routing_put_audio_mixer),
6828 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6829 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6830 msm_routing_put_audio_mixer),
6831};
6832
6833static const struct snd_kcontrol_new quin_tdm_tx_0_mixer_controls[] = {
6834 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6835 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6836 msm_routing_put_audio_mixer),
6837 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6838 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6839 msm_routing_put_audio_mixer),
6840 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6841 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6842 msm_routing_put_audio_mixer),
6843 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6844 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6845 msm_routing_put_audio_mixer),
6846 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6847 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6848 msm_routing_put_audio_mixer),
6849 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6850 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6851 msm_routing_put_audio_mixer),
6852 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6853 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6854 msm_routing_put_audio_mixer),
6855 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6856 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6857 msm_routing_put_audio_mixer),
6858 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6859 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6860 msm_routing_put_audio_mixer),
6861 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6862 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6863 msm_routing_put_audio_mixer),
6864 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6865 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6866 msm_routing_put_audio_mixer),
6867 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6868 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6869 msm_routing_put_audio_mixer),
6870 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6871 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6872 msm_routing_put_audio_mixer),
6873 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6874 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6875 msm_routing_put_audio_mixer),
6876 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6877 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6878 msm_routing_put_audio_mixer),
6879 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6880 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6881 msm_routing_put_audio_mixer),
6882};
6883
6884static const struct snd_kcontrol_new quin_tdm_rx_1_mixer_controls[] = {
6885 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6886 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6887 msm_routing_put_audio_mixer),
6888 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6889 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6890 msm_routing_put_audio_mixer),
6891 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6892 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6893 msm_routing_put_audio_mixer),
6894 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6895 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6896 msm_routing_put_audio_mixer),
6897 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6898 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6899 msm_routing_put_audio_mixer),
6900 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6901 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6902 msm_routing_put_audio_mixer),
6903 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6904 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6905 msm_routing_put_audio_mixer),
6906 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6907 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6908 msm_routing_put_audio_mixer),
6909 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6910 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6911 msm_routing_put_audio_mixer),
6912 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6913 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6914 msm_routing_put_audio_mixer),
6915 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6916 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6917 msm_routing_put_audio_mixer),
6918 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6919 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6920 msm_routing_put_audio_mixer),
6921 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6922 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6923 msm_routing_put_audio_mixer),
6924 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6925 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6926 msm_routing_put_audio_mixer),
6927 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6928 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6929 msm_routing_put_audio_mixer),
6930 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6931 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6932 msm_routing_put_audio_mixer),
6933 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6934 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6935 msm_routing_put_audio_mixer),
6936};
6937
6938static const struct snd_kcontrol_new quin_tdm_rx_2_mixer_controls[] = {
6939 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6940 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6941 msm_routing_put_audio_mixer),
6942 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6943 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6944 msm_routing_put_audio_mixer),
6945 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6946 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6947 msm_routing_put_audio_mixer),
6948 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6949 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6950 msm_routing_put_audio_mixer),
6951 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6952 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6953 msm_routing_put_audio_mixer),
6954 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6955 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6956 msm_routing_put_audio_mixer),
6957 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6958 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6959 msm_routing_put_audio_mixer),
6960 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6961 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6962 msm_routing_put_audio_mixer),
6963 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6964 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6965 msm_routing_put_audio_mixer),
6966 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6967 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6968 msm_routing_put_audio_mixer),
6969 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6970 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6971 msm_routing_put_audio_mixer),
6972 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6973 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6974 msm_routing_put_audio_mixer),
6975 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6976 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6977 msm_routing_put_audio_mixer),
6978 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6979 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6980 msm_routing_put_audio_mixer),
6981 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6982 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6983 msm_routing_put_audio_mixer),
6984 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6985 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6986 msm_routing_put_audio_mixer),
6987 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6988 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6989 msm_routing_put_audio_mixer),
6990};
6991
6992static const struct snd_kcontrol_new quin_tdm_rx_3_mixer_controls[] = {
6993 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6994 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6995 msm_routing_put_audio_mixer),
6996 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6997 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6998 msm_routing_put_audio_mixer),
6999 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
7000 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7001 msm_routing_put_audio_mixer),
7002 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
7003 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7004 msm_routing_put_audio_mixer),
7005 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
7006 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7007 msm_routing_put_audio_mixer),
7008 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
7009 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7010 msm_routing_put_audio_mixer),
7011 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
7012 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
7013 msm_routing_put_audio_mixer),
7014 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
7015 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7016 msm_routing_put_audio_mixer),
7017 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
7018 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7019 msm_routing_put_audio_mixer),
7020 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
7021 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7022 msm_routing_put_audio_mixer),
7023 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
7024 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
7025 msm_routing_put_audio_mixer),
7026 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
7027 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
7028 msm_routing_put_audio_mixer),
7029 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
7030 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
7031 msm_routing_put_audio_mixer),
7032 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
7033 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
7034 msm_routing_put_audio_mixer),
7035 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
7036 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
7037 msm_routing_put_audio_mixer),
7038 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
7039 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7040 msm_routing_put_audio_mixer),
7041 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
7042 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7043 msm_routing_put_audio_mixer),
7044};
7045
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307046static const struct snd_kcontrol_new mmul1_mixer_controls[] = {
7047 SOC_SINGLE_EXT("PRI_TX", MSM_BACKEND_DAI_PRI_I2S_TX,
7048 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7049 msm_routing_put_audio_mixer),
7050 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
7051 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7052 msm_routing_put_audio_mixer),
7053 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7054 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7055 msm_routing_put_audio_mixer),
7056 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7057 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7058 msm_routing_put_audio_mixer),
7059 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7060 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7061 msm_routing_put_audio_mixer),
7062 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7063 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7064 msm_routing_put_audio_mixer),
7065 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7066 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7067 msm_routing_put_audio_mixer),
7068 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7069 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7070 msm_routing_put_audio_mixer),
7071 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7072 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7073 msm_routing_put_audio_mixer),
7074 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
7075 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7076 msm_routing_put_audio_mixer),
7077 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
7078 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7079 msm_routing_put_audio_mixer),
7080 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
7081 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7082 msm_routing_put_audio_mixer),
7083 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
7084 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7085 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307086 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
7087 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7088 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307089 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7090 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7091 msm_routing_put_audio_mixer),
7092 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7093 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7094 msm_routing_put_audio_mixer),
7095 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7096 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7097 msm_routing_put_audio_mixer),
7098 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7099 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7100 msm_routing_put_audio_mixer),
7101 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7102 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7103 msm_routing_put_audio_mixer),
7104 SOC_SINGLE_EXT("SLIM_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
7105 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7106 msm_routing_put_audio_mixer),
7107 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
7108 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7109 msm_routing_put_audio_mixer),
7110 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_TX,
7111 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7112 msm_routing_put_audio_mixer),
7113 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7114 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7115 msm_routing_put_audio_mixer),
7116 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7117 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7118 msm_routing_put_audio_mixer),
7119 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7120 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7121 msm_routing_put_audio_mixer),
7122 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7123 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7124 msm_routing_put_audio_mixer),
7125 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7126 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7127 msm_routing_put_audio_mixer),
7128 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7129 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7130 msm_routing_put_audio_mixer),
7131 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7132 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7133 msm_routing_put_audio_mixer),
7134 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7135 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7136 msm_routing_put_audio_mixer),
7137 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7138 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7139 msm_routing_put_audio_mixer),
7140 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7141 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7142 msm_routing_put_audio_mixer),
7143 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7144 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7145 msm_routing_put_audio_mixer),
7146 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7147 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7148 msm_routing_put_audio_mixer),
7149 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7150 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7151 msm_routing_put_audio_mixer),
7152 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7153 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7154 msm_routing_put_audio_mixer),
7155 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7156 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7157 msm_routing_put_audio_mixer),
7158 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7159 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7160 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307161 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7162 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7163 msm_routing_put_audio_mixer),
7164 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7165 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7166 msm_routing_put_audio_mixer),
7167 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7168 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7169 msm_routing_put_audio_mixer),
7170 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7171 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7172 msm_routing_put_audio_mixer),
Raja Mallik425e1d32018-05-20 19:21:10 +05307173 SOC_SINGLE_EXT("AFE_LOOPBACK_TX", MSM_BACKEND_DAI_AFE_LOOPBACK_TX,
7174 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7175 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307176 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
7177 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7178 msm_routing_put_audio_mixer),
7179 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
7180 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7181 msm_routing_put_audio_mixer),
7182 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7183 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7184 msm_routing_put_audio_mixer),
7185};
7186
7187static const struct snd_kcontrol_new mmul2_mixer_controls[] = {
7188 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7189 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7190 msm_routing_put_audio_mixer),
7191 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
7192 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7193 msm_routing_put_audio_mixer),
7194 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7195 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7196 msm_routing_put_audio_mixer),
7197 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7198 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7199 msm_routing_put_audio_mixer),
7200 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7201 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7202 msm_routing_put_audio_mixer),
7203 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7204 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7205 msm_routing_put_audio_mixer),
7206 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7207 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7208 msm_routing_put_audio_mixer),
7209 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7210 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7211 msm_routing_put_audio_mixer),
7212 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7213 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7214 msm_routing_put_audio_mixer),
7215 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
7216 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7217 msm_routing_put_audio_mixer),
7218 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
7219 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7220 msm_routing_put_audio_mixer),
7221 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_TX,
7222 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7223 msm_routing_put_audio_mixer),
7224 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7225 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7226 msm_routing_put_audio_mixer),
7227 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7228 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7229 msm_routing_put_audio_mixer),
7230 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7231 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7232 msm_routing_put_audio_mixer),
7233 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7234 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7235 msm_routing_put_audio_mixer),
7236 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7237 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7238 msm_routing_put_audio_mixer),
7239 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7240 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7241 msm_routing_put_audio_mixer),
7242 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7243 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7244 msm_routing_put_audio_mixer),
7245 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7246 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7247 msm_routing_put_audio_mixer),
7248 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7249 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7250 msm_routing_put_audio_mixer),
7251 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7252 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7253 msm_routing_put_audio_mixer),
7254 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7255 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7256 msm_routing_put_audio_mixer),
7257 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7258 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7259 msm_routing_put_audio_mixer),
7260 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7261 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7262 msm_routing_put_audio_mixer),
7263 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7264 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7265 msm_routing_put_audio_mixer),
7266 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7267 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7268 msm_routing_put_audio_mixer),
7269 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7270 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7271 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307272 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7273 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7274 msm_routing_put_audio_mixer),
Raja Mallik425e1d32018-05-20 19:21:10 +05307275 SOC_SINGLE_EXT("AFE_LOOPBACK_TX", MSM_BACKEND_DAI_AFE_LOOPBACK_TX,
7276 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7277 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307278 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7279 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7280 msm_routing_put_audio_mixer),
7281 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7282 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7283 msm_routing_put_audio_mixer),
7284 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7285 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7286 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307287 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
7288 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7289 msm_routing_put_audio_mixer),
7290 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7291 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7292 msm_routing_put_audio_mixer),
7293};
7294
7295static const struct snd_kcontrol_new mmul3_mixer_controls[] = {
7296 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7297 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7298 msm_routing_put_audio_mixer),
7299 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7300 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7301 msm_routing_put_audio_mixer),
7302 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
7303 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7304 msm_routing_put_audio_mixer),
7305 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7306 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7307 msm_routing_put_audio_mixer),
7308 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7309 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7310 msm_routing_put_audio_mixer),
7311 SOC_SINGLE_EXT("AUX_PCM_TX", MSM_BACKEND_DAI_AUXPCM_TX,
7312 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7313 msm_routing_put_audio_mixer),
7314 SOC_SINGLE_EXT("SEC_AUX_PCM_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
7315 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7316 msm_routing_put_audio_mixer),
7317 SOC_SINGLE_EXT("TERT_AUX_PCM_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
7318 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7319 msm_routing_put_audio_mixer),
7320 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
7321 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7322 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307323 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
7324 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7325 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307326 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7327 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7328 msm_routing_put_audio_mixer),
7329 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7330 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7331 msm_routing_put_audio_mixer),
7332 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7333 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7334 msm_routing_put_audio_mixer),
7335 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7336 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7337 msm_routing_put_audio_mixer),
7338 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7339 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7340 msm_routing_put_audio_mixer),
7341 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7342 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7343 msm_routing_put_audio_mixer),
7344 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7345 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7346 msm_routing_put_audio_mixer),
7347 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7348 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7349 msm_routing_put_audio_mixer),
7350 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7351 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7352 msm_routing_put_audio_mixer),
7353 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7354 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7355 msm_routing_put_audio_mixer),
7356 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7357 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7358 msm_routing_put_audio_mixer),
7359 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7360 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7361 msm_routing_put_audio_mixer),
7362 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7363 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7364 msm_routing_put_audio_mixer),
7365 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7366 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7367 msm_routing_put_audio_mixer),
7368 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7369 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7370 msm_routing_put_audio_mixer),
7371 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7372 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7373 msm_routing_put_audio_mixer),
7374 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7375 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7376 msm_routing_put_audio_mixer),
7377 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7378 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7379 msm_routing_put_audio_mixer),
7380 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7381 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7382 msm_routing_put_audio_mixer),
7383 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7384 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7385 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307386 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7387 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7388 msm_routing_put_audio_mixer),
7389 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7390 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7391 msm_routing_put_audio_mixer),
7392 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7393 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7394 msm_routing_put_audio_mixer),
7395 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7396 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7397 msm_routing_put_audio_mixer),
Raja Mallik425e1d32018-05-20 19:21:10 +05307398 SOC_SINGLE_EXT("AFE_LOOPBACK_TX", MSM_BACKEND_DAI_AFE_LOOPBACK_TX,
7399 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7400 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307401};
7402
7403static const struct snd_kcontrol_new mmul4_mixer_controls[] = {
7404 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7405 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7406 msm_routing_put_audio_mixer),
7407 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7408 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7409 msm_routing_put_audio_mixer),
7410 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7411 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7412 msm_routing_put_audio_mixer),
7413 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7414 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7415 msm_routing_put_audio_mixer),
7416 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7417 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7418 msm_routing_put_audio_mixer),
7419 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7420 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7421 msm_routing_put_audio_mixer),
7422 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7423 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7424 msm_routing_put_audio_mixer),
7425 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7426 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7427 msm_routing_put_audio_mixer),
7428 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7429 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7430 msm_routing_put_audio_mixer),
7431 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7432 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7433 msm_routing_put_audio_mixer),
7434 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7435 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7436 msm_routing_put_audio_mixer),
7437 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7438 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7439 msm_routing_put_audio_mixer),
7440 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7441 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7442 msm_routing_put_audio_mixer),
7443 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7444 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7445 msm_routing_put_audio_mixer),
7446 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7447 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7448 msm_routing_put_audio_mixer),
7449 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7450 MSM_FRONTEND_DAI_MULTIMEDIA4, 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_MULTIMEDIA4, 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_MULTIMEDIA4, 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_MULTIMEDIA4, 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_MULTIMEDIA4, 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_MULTIMEDIA4, 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_MULTIMEDIA4, 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_MULTIMEDIA4, 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_MULTIMEDIA4, 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_MULTIMEDIA4, 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_MULTIMEDIA4, 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_MULTIMEDIA4, 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_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7487 msm_routing_put_audio_mixer),
7488 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7489 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7490 msm_routing_put_audio_mixer),
7491 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7492 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7493 msm_routing_put_audio_mixer),
7494 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7495 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7496 msm_routing_put_audio_mixer),
7497 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7498 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7499 msm_routing_put_audio_mixer),
Raja Mallik425e1d32018-05-20 19:21:10 +05307500 SOC_SINGLE_EXT("AFE_LOOPBACK_TX", MSM_BACKEND_DAI_AFE_LOOPBACK_TX,
7501 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7502 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307503 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7504 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7505 msm_routing_put_audio_mixer),
7506};
7507
7508static const struct snd_kcontrol_new mmul5_mixer_controls[] = {
7509 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7510 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7511 msm_routing_put_audio_mixer),
7512 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7513 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7514 msm_routing_put_audio_mixer),
7515 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
7516 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7517 msm_routing_put_audio_mixer),
7518 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7519 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7520 msm_routing_put_audio_mixer),
7521 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7522 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7523 msm_routing_put_audio_mixer),
7524 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
7525 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7526 msm_routing_put_audio_mixer),
7527 SOC_SINGLE_EXT("SEC_AUX_PCM_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
7528 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7529 msm_routing_put_audio_mixer),
7530 SOC_SINGLE_EXT("TERT_AUX_PCM_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
7531 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7532 msm_routing_put_audio_mixer),
7533 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
7534 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7535 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307536 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
7537 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7538 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307539 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7540 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7541 msm_routing_put_audio_mixer),
7542 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7543 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7544 msm_routing_put_audio_mixer),
7545 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7546 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7547 msm_routing_put_audio_mixer),
7548 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7549 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7550 msm_routing_put_audio_mixer),
7551 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7552 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7553 msm_routing_put_audio_mixer),
7554 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7555 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7556 msm_routing_put_audio_mixer),
7557 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7558 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7559 msm_routing_put_audio_mixer),
7560 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7561 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7562 msm_routing_put_audio_mixer),
7563 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7564 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7565 msm_routing_put_audio_mixer),
7566 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7567 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7568 msm_routing_put_audio_mixer),
7569 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7570 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7571 msm_routing_put_audio_mixer),
7572 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7573 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7574 msm_routing_put_audio_mixer),
7575 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7576 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7577 msm_routing_put_audio_mixer),
7578 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7579 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7580 msm_routing_put_audio_mixer),
7581 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7582 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7583 msm_routing_put_audio_mixer),
7584 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7585 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7586 msm_routing_put_audio_mixer),
7587 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7588 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7589 msm_routing_put_audio_mixer),
7590 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7591 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7592 msm_routing_put_audio_mixer),
7593 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7594 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7595 msm_routing_put_audio_mixer),
7596 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7597 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7598 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307599 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7600 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7601 msm_routing_put_audio_mixer),
7602 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7603 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7604 msm_routing_put_audio_mixer),
7605 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7606 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7607 msm_routing_put_audio_mixer),
7608 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7609 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7610 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307611 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7612 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7613 msm_routing_put_audio_mixer),
7614 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7615 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7616 msm_routing_put_audio_mixer),
Raja Mallik425e1d32018-05-20 19:21:10 +05307617 SOC_SINGLE_EXT("AFE_LOOPBACK_TX", MSM_BACKEND_DAI_AFE_LOOPBACK_TX,
7618 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7619 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307620 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
7621 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7622 msm_routing_put_audio_mixer),
7623 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
7624 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7625 msm_routing_put_audio_mixer),
7626 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7627 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7628 msm_routing_put_audio_mixer),
7629};
7630
7631static const struct snd_kcontrol_new mmul6_mixer_controls[] = {
7632 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7633 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7634 msm_routing_put_audio_mixer),
7635 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7636 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7637 msm_routing_put_audio_mixer),
7638 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7639 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7640 msm_routing_put_audio_mixer),
7641 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7642 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7643 msm_routing_put_audio_mixer),
7644 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7645 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7646 msm_routing_put_audio_mixer),
7647 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7648 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7649 msm_routing_put_audio_mixer),
7650 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7651 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7652 msm_routing_put_audio_mixer),
7653 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7654 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7655 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307656 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_TX,
7657 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7658 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307659 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
7660 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7661 msm_routing_put_audio_mixer),
7662 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
7663 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7664 msm_routing_put_audio_mixer),
7665 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
7666 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7667 msm_routing_put_audio_mixer),
7668 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
7669 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7670 msm_routing_put_audio_mixer),
7671 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7672 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7673 msm_routing_put_audio_mixer),
7674 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7675 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7676 msm_routing_put_audio_mixer),
7677 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7678 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7679 msm_routing_put_audio_mixer),
7680 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7681 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7682 msm_routing_put_audio_mixer),
7683 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7684 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7685 msm_routing_put_audio_mixer),
7686 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7687 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7688 msm_routing_put_audio_mixer),
7689 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7690 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7691 msm_routing_put_audio_mixer),
7692 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7693 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7694 msm_routing_put_audio_mixer),
7695 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7696 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7697 msm_routing_put_audio_mixer),
7698 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7699 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7700 msm_routing_put_audio_mixer),
7701 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7702 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7703 msm_routing_put_audio_mixer),
7704 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7705 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7706 msm_routing_put_audio_mixer),
7707 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7708 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7709 msm_routing_put_audio_mixer),
7710 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7711 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7712 msm_routing_put_audio_mixer),
7713 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7714 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7715 msm_routing_put_audio_mixer),
7716 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7717 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7718 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307719 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7720 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7721 msm_routing_put_audio_mixer),
7722 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7723 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7724 msm_routing_put_audio_mixer),
7725 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7726 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7727 msm_routing_put_audio_mixer),
7728 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7729 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7730 msm_routing_put_audio_mixer),
Raja Mallik425e1d32018-05-20 19:21:10 +05307731 SOC_SINGLE_EXT("AFE_LOOPBACK_TX", MSM_BACKEND_DAI_AFE_LOOPBACK_TX,
7732 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7733 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307734 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7735 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7736 msm_routing_put_audio_mixer),
7737};
7738
7739static const struct snd_kcontrol_new mmul8_mixer_controls[] = {
7740 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7741 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7742 msm_routing_put_audio_mixer),
7743 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7744 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7745 msm_routing_put_audio_mixer),
7746 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7747 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7748 msm_routing_put_audio_mixer),
7749 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7750 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7751 msm_routing_put_audio_mixer),
7752 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7753 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7754 msm_routing_put_audio_mixer),
7755 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7756 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7757 msm_routing_put_audio_mixer),
7758 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7759 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7760 msm_routing_put_audio_mixer),
7761 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7762 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7763 msm_routing_put_audio_mixer),
7764 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7765 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7766 msm_routing_put_audio_mixer),
7767 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7768 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7769 msm_routing_put_audio_mixer),
7770 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7771 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7772 msm_routing_put_audio_mixer),
7773 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7774 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7775 msm_routing_put_audio_mixer),
7776 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
7777 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7778 msm_routing_put_audio_mixer),
7779 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7780 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7781 msm_routing_put_audio_mixer),
7782 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7783 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7784 msm_routing_put_audio_mixer),
7785 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7786 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7787 msm_routing_put_audio_mixer),
7788 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7789 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7790 msm_routing_put_audio_mixer),
7791 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7792 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7793 msm_routing_put_audio_mixer),
7794 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7795 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7796 msm_routing_put_audio_mixer),
7797 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7798 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7799 msm_routing_put_audio_mixer),
7800 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7801 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7802 msm_routing_put_audio_mixer),
7803 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7804 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7805 msm_routing_put_audio_mixer),
7806 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7807 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7808 msm_routing_put_audio_mixer),
7809 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7810 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7811 msm_routing_put_audio_mixer),
7812 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7813 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7814 msm_routing_put_audio_mixer),
7815 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7816 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7817 msm_routing_put_audio_mixer),
7818 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7819 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7820 msm_routing_put_audio_mixer),
7821 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7822 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7823 msm_routing_put_audio_mixer),
7824 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7825 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7826 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307827 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7828 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7829 msm_routing_put_audio_mixer),
7830 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7831 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7832 msm_routing_put_audio_mixer),
7833 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7834 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7835 msm_routing_put_audio_mixer),
7836 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7837 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7838 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307839 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
7840 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7841 msm_routing_put_audio_mixer),
7842 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7843 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7844 msm_routing_put_audio_mixer),
7845};
7846
Asish Bhattacharya34504582017-08-08 12:55:01 +05307847static const struct snd_kcontrol_new mmul16_mixer_controls[] = {
7848 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7849 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7850 msm_routing_put_audio_mixer),
7851 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7852 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7853 msm_routing_put_audio_mixer),
7854 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7855 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7856 msm_routing_put_audio_mixer),
7857 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7858 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7859 msm_routing_put_audio_mixer),
7860 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7861 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7862 msm_routing_put_audio_mixer),
7863 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7864 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7865 msm_routing_put_audio_mixer),
7866 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7867 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7868 msm_routing_put_audio_mixer),
7869 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7870 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7871 msm_routing_put_audio_mixer),
7872 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7873 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7874 msm_routing_put_audio_mixer),
7875 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7876 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7877 msm_routing_put_audio_mixer),
7878 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7879 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7880 msm_routing_put_audio_mixer),
7881 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7882 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7883 msm_routing_put_audio_mixer),
7884 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
7885 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7886 msm_routing_put_audio_mixer),
7887 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7888 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7889 msm_routing_put_audio_mixer),
7890 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7891 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7892 msm_routing_put_audio_mixer),
7893 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7894 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7895 msm_routing_put_audio_mixer),
7896 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7897 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7898 msm_routing_put_audio_mixer),
7899 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7900 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7901 msm_routing_put_audio_mixer),
7902 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7903 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7904 msm_routing_put_audio_mixer),
7905 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7906 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7907 msm_routing_put_audio_mixer),
7908 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7909 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7910 msm_routing_put_audio_mixer),
7911 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7912 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7913 msm_routing_put_audio_mixer),
7914 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7915 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7916 msm_routing_put_audio_mixer),
7917 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7918 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7919 msm_routing_put_audio_mixer),
7920 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7921 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7922 msm_routing_put_audio_mixer),
7923 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7924 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7925 msm_routing_put_audio_mixer),
7926 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7927 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7928 msm_routing_put_audio_mixer),
7929 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7930 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7931 msm_routing_put_audio_mixer),
7932 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7933 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7934 msm_routing_put_audio_mixer),
Raja Mallik425e1d32018-05-20 19:21:10 +05307935 SOC_SINGLE_EXT("AFE_LOOPBACK_TX", MSM_BACKEND_DAI_AFE_LOOPBACK_TX,
7936 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7937 msm_routing_put_audio_mixer),
Asish Bhattacharya34504582017-08-08 12:55:01 +05307938 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
7939 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7940 msm_routing_put_audio_mixer),
7941 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7942 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7943 msm_routing_put_audio_mixer),
7944 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
7945 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7946 msm_routing_put_audio_mixer),
7947 SOC_SINGLE_EXT("AUX_PCM_TX", MSM_BACKEND_DAI_AUXPCM_TX,
7948 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7949 msm_routing_put_audio_mixer),
7950 SOC_SINGLE_EXT("SEC_AUX_PCM_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
7951 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7952 msm_routing_put_audio_mixer),
7953 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
7954 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7955 msm_routing_put_audio_mixer),
7956};
7957
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307958static const struct snd_kcontrol_new mmul9_mixer_controls[] = {
7959 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7960 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7961 msm_routing_put_audio_mixer),
7962 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7963 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7964 msm_routing_put_audio_mixer),
7965 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7966 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7967 msm_routing_put_audio_mixer),
7968 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7969 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7970 msm_routing_put_audio_mixer),
7971 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7972 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7973 msm_routing_put_audio_mixer),
7974 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7975 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7976 msm_routing_put_audio_mixer),
7977 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7978 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7979 msm_routing_put_audio_mixer),
7980 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
7981 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7982 msm_routing_put_audio_mixer),
7983 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7984 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7985 msm_routing_put_audio_mixer),
7986 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7987 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7988 msm_routing_put_audio_mixer),
7989 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7990 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7991 msm_routing_put_audio_mixer),
7992 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7993 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7994 msm_routing_put_audio_mixer),
7995 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7996 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7997 msm_routing_put_audio_mixer),
7998 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7999 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
8000 msm_routing_put_audio_mixer),
8001 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
8002 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
8003 msm_routing_put_audio_mixer),
8004 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
8005 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
8006 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308007 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
8008 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
8009 msm_routing_put_audio_mixer),
8010 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
8011 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
8012 msm_routing_put_audio_mixer),
8013 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
8014 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
8015 msm_routing_put_audio_mixer),
8016 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
8017 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
8018 msm_routing_put_audio_mixer),
Sachin Mohan Gadagd1b8fbc2018-07-20 15:50:17 +05308019 SOC_SINGLE_EXT("AFE_LOOPBACK_TX", MSM_BACKEND_DAI_AFE_LOOPBACK_TX,
8020 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
8021 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308022};
8023
Laxminath Kasam38070be2017-08-17 18:21:59 +05308024static const struct snd_kcontrol_new mmul10_mixer_controls[] = {
8025 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8026 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
8027 msm_routing_put_audio_mixer),
8028 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
8029 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
8030 msm_routing_put_audio_mixer),
8031 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
8032 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
8033 msm_routing_put_audio_mixer),
8034 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
8035 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
8036 msm_routing_put_audio_mixer),
8037 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
8038 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
8039 msm_routing_put_audio_mixer),
8040 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
8041 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
8042 msm_routing_put_audio_mixer),
8043 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
8044 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
8045 msm_routing_put_audio_mixer),
8046 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
8047 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
8048 msm_routing_put_audio_mixer),
Vikram Panduranga72863152017-09-06 15:47:35 -07008049 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
8050 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
8051 msm_routing_put_audio_mixer),
Laxminath Kasam38070be2017-08-17 18:21:59 +05308052 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
8053 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
8054 msm_routing_put_audio_mixer),
8055 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
8056 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
8057 msm_routing_put_audio_mixer),
8058 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
8059 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
8060 msm_routing_put_audio_mixer),
8061 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
8062 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
8063 msm_routing_put_audio_mixer),
8064 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
8065 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
8066 msm_routing_put_audio_mixer),
8067 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
8068 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
8069 msm_routing_put_audio_mixer),
8070 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
8071 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
8072 msm_routing_put_audio_mixer),
8073 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
8074 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
8075 msm_routing_put_audio_mixer),
8076 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
8077 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
8078 msm_routing_put_audio_mixer),
Vikram Panduranga016c49f2017-09-11 15:15:56 -07008079 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
8080 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
8081 msm_routing_put_audio_mixer),
8082 SOC_SINGLE_EXT("AUX_PCM_TX", MSM_BACKEND_DAI_AUXPCM_TX,
Raja Mallik425e1d32018-05-20 19:21:10 +05308083 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
8084 msm_routing_put_audio_mixer),
8085 SOC_SINGLE_EXT("AFE_LOOPBACK_TX", MSM_BACKEND_DAI_AFE_LOOPBACK_TX,
Vikram Panduranga016c49f2017-09-11 15:15:56 -07008086 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
8087 msm_routing_put_audio_mixer),
8088 SOC_SINGLE_EXT("SEC_AUX_PCM_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
8089 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
8090 msm_routing_put_audio_mixer),
8091 SOC_SINGLE_EXT("TERT_AUX_PCM_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
8092 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
8093 msm_routing_put_audio_mixer),
8094 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
8095 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
8096 msm_routing_put_audio_mixer),
8097 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
8098 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
8099 msm_routing_put_audio_mixer),
8100 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
8101 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
8102 msm_routing_put_audio_mixer),
8103 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
8104 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
8105 msm_routing_put_audio_mixer),
Laxminath Kasam38070be2017-08-17 18:21:59 +05308106};
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308107static const struct snd_kcontrol_new mmul17_mixer_controls[] = {
8108 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8109 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
8110 msm_routing_put_audio_mixer),
8111 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
8112 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
8113 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05308114 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
8115 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
8116 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308117 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
8118 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
8119 msm_routing_put_audio_mixer),
8120 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
8121 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
8122 msm_routing_put_audio_mixer),
8123 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
8124 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
8125 msm_routing_put_audio_mixer),
8126 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
8127 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
8128 msm_routing_put_audio_mixer),
8129 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
8130 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
8131 msm_routing_put_audio_mixer),
Meng Wangbe8194e2018-04-25 10:40:01 +08008132 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
8133 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
8134 msm_routing_put_audio_mixer),
8135 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
8136 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
8137 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308138};
8139
8140static const struct snd_kcontrol_new mmul18_mixer_controls[] = {
8141 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8142 MSM_FRONTEND_DAI_MULTIMEDIA18, 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_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
8146 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05308147 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
8148 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
8149 msm_routing_put_audio_mixer),
Meng Wangbe8194e2018-04-25 10:40:01 +08008150 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
8151 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
8152 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308153 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
8154 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
8155 msm_routing_put_audio_mixer),
8156 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
8157 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
8158 msm_routing_put_audio_mixer),
8159 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
8160 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
8161 msm_routing_put_audio_mixer),
8162 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
8163 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
8164 msm_routing_put_audio_mixer),
8165 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
8166 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
8167 msm_routing_put_audio_mixer),
8168 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
8169 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
8170 msm_routing_put_audio_mixer),
8171};
8172
8173static const struct snd_kcontrol_new mmul19_mixer_controls[] = {
8174 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8175 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
8176 msm_routing_put_audio_mixer),
8177 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
8178 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
8179 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05308180 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
8181 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
8182 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308183 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
8184 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
8185 msm_routing_put_audio_mixer),
8186 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
8187 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
8188 msm_routing_put_audio_mixer),
8189 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
8190 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
8191 msm_routing_put_audio_mixer),
8192 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
8193 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
8194 msm_routing_put_audio_mixer),
8195 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
8196 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
8197 msm_routing_put_audio_mixer),
Meng Wangbe8194e2018-04-25 10:40:01 +08008198 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
8199 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
8200 msm_routing_put_audio_mixer),
8201 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
8202 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
8203 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308204};
8205
8206static const struct snd_kcontrol_new mmul20_mixer_controls[] = {
8207 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
8208 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8209 msm_routing_put_audio_mixer),
8210 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
8211 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8212 msm_routing_put_audio_mixer),
8213 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
8214 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8215 msm_routing_put_audio_mixer),
8216 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
8217 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8218 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308219 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_TX,
8220 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8221 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308222 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
8223 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8224 msm_routing_put_audio_mixer),
8225 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
8226 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8227 msm_routing_put_audio_mixer),
8228 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
8229 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8230 msm_routing_put_audio_mixer),
8231 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
8232 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8233 msm_routing_put_audio_mixer),
8234 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
8235 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8236 msm_routing_put_audio_mixer),
8237 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
8238 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8239 msm_routing_put_audio_mixer),
8240 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
8241 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8242 msm_routing_put_audio_mixer),
8243 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
8244 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8245 msm_routing_put_audio_mixer),
8246 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
8247 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8248 msm_routing_put_audio_mixer),
8249 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
8250 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8251 msm_routing_put_audio_mixer),
8252 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
8253 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8254 msm_routing_put_audio_mixer),
8255 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
8256 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8257 msm_routing_put_audio_mixer),
8258 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
8259 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8260 msm_routing_put_audio_mixer),
8261 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
8262 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8263 msm_routing_put_audio_mixer),
8264 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
8265 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8266 msm_routing_put_audio_mixer),
8267 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
8268 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8269 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308270 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
8271 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8272 msm_routing_put_audio_mixer),
8273 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
8274 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8275 msm_routing_put_audio_mixer),
8276 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
8277 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8278 msm_routing_put_audio_mixer),
8279 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
8280 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8281 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308282};
8283
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05308284static const struct snd_kcontrol_new mmul28_mixer_controls[] = {
8285 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8286 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
8287 msm_routing_put_audio_mixer),
8288 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
8289 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
8290 msm_routing_put_audio_mixer),
8291 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
8292 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
8293 msm_routing_put_audio_mixer),
8294 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
8295 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
8296 msm_routing_put_audio_mixer),
8297 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
8298 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
8299 msm_routing_put_audio_mixer),
8300 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
8301 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
8302 msm_routing_put_audio_mixer),
8303 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
8304 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
8305 msm_routing_put_audio_mixer),
8306 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
8307 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
8308 msm_routing_put_audio_mixer),
Meng Wangbe8194e2018-04-25 10:40:01 +08008309 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
8310 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
8311 msm_routing_put_audio_mixer),
8312 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
8313 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
8314 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05308315};
8316
8317static const struct snd_kcontrol_new mmul29_mixer_controls[] = {
8318 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8319 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
8320 msm_routing_put_audio_mixer),
8321 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
8322 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
8323 msm_routing_put_audio_mixer),
8324 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
8325 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
8326 msm_routing_put_audio_mixer),
8327 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
8328 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
8329 msm_routing_put_audio_mixer),
8330 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
8331 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
8332 msm_routing_put_audio_mixer),
8333 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
8334 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
8335 msm_routing_put_audio_mixer),
8336 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
8337 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
8338 msm_routing_put_audio_mixer),
8339 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
8340 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
8341 msm_routing_put_audio_mixer),
Meng Wangbe8194e2018-04-25 10:40:01 +08008342 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
8343 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
8344 msm_routing_put_audio_mixer),
8345 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
8346 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
8347 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05308348};
8349
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308350static const struct snd_kcontrol_new pri_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308351 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_PRI_I2S_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("VoiceMMode1", MSM_BACKEND_DAI_PRI_I2S_RX,
8355 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8356 msm_routing_put_voice_mixer),
8357 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_PRI_I2S_RX,
8358 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8359 msm_routing_put_voice_mixer),
8360 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_PRI_I2S_RX,
8361 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8362 msm_routing_put_voice_mixer),
8363 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_PRI_I2S_RX,
8364 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8365 msm_routing_put_voice_mixer),
8366};
8367
8368static const struct snd_kcontrol_new sec_i2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308369 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SEC_I2S_RX,
8370 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8371 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308372 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SEC_I2S_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_SEC_I2S_RX,
8376 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8377 msm_routing_put_voice_mixer),
8378};
8379
8380static const struct snd_kcontrol_new sec_mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308381 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
8382 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8383 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308384 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
8385 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8386 msm_routing_put_voice_mixer),
8387 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
8388 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8389 msm_routing_put_voice_mixer),
8390 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
8391 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8392 msm_routing_put_voice_mixer),
8393 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
8394 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8395 msm_routing_put_voice_mixer),
8396};
8397
8398static const struct snd_kcontrol_new slimbus_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308399 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8400 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8401 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308402 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8403 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8404 msm_routing_put_voice_mixer),
8405 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8406 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8407 msm_routing_put_voice_mixer),
8408 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8409 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8410 msm_routing_put_voice_mixer),
8411 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8412 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8413 msm_routing_put_voice_mixer),
8414};
8415
8416static const struct snd_kcontrol_new slimbus_6_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308417 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8418 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8419 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308420 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8421 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8422 msm_routing_put_voice_mixer),
8423 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8424 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8425 msm_routing_put_voice_mixer),
8426 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8427 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8428 msm_routing_put_voice_mixer),
8429 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8430 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8431 msm_routing_put_voice_mixer),
8432};
8433
8434static const struct snd_kcontrol_new usb_audio_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308435 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_USB_RX,
8436 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8437 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308438 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_USB_RX,
8439 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8440 msm_routing_put_voice_mixer),
8441 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_USB_RX,
8442 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8443 msm_routing_put_voice_mixer),
8444 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_USB_RX,
8445 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8446 msm_routing_put_voice_mixer),
8447 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_USB_RX,
8448 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8449 msm_routing_put_voice_mixer),
8450};
8451
Aalique Grahamee4fd7d52017-11-28 13:24:13 -08008452static const struct snd_kcontrol_new display_port_rx_voice_mixer_controls[] = {
8453 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
8454 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8455 msm_routing_put_voice_mixer),
Aalique Grahamee4fd7d52017-11-28 13:24:13 -08008456 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
8457 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8458 msm_routing_put_voice_mixer),
8459 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
8460 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8461 msm_routing_put_voice_mixer),
8462 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
8463 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8464 msm_routing_put_voice_mixer),
8465 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
8466 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8467 msm_routing_put_voice_mixer),
8468};
8469
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308470static const struct snd_kcontrol_new bt_sco_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308471 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8472 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8473 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308474 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8475 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8476 msm_routing_put_voice_mixer),
8477 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8478 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8479 msm_routing_put_voice_mixer),
8480 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8481 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8482 msm_routing_put_voice_mixer),
8483 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8484 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8485 msm_routing_put_voice_mixer),
8486};
8487
8488static const struct snd_kcontrol_new mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308489 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_MI2S_RX,
8490 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8491 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308492 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_MI2S_RX,
8493 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8494 msm_routing_put_voice_mixer),
8495 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_MI2S_RX,
8496 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8497 msm_routing_put_voice_mixer),
8498 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_MI2S_RX,
8499 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8500 msm_routing_put_voice_mixer),
8501 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_MI2S_RX,
8502 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8503 msm_routing_put_voice_mixer),
8504};
8505
8506static const struct snd_kcontrol_new pri_mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308507 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_PRI_MI2S_RX,
8508 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8509 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308510 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_PRI_MI2S_RX,
8511 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8512 msm_routing_put_voice_mixer),
8513 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_PRI_MI2S_RX,
8514 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8515 msm_routing_put_voice_mixer),
8516 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_PRI_MI2S_RX,
8517 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8518 msm_routing_put_voice_mixer),
8519 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_PRI_MI2S_RX,
8520 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8521 msm_routing_put_voice_mixer),
8522};
8523
8524static const struct snd_kcontrol_new int0_mi2s_rx_voice_mixer_controls[] = {
8525 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_INT0_MI2S_RX,
8526 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8527 msm_routing_put_voice_mixer),
8528 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_INT0_MI2S_RX,
8529 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8530 msm_routing_put_voice_mixer),
8531 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_INT0_MI2S_RX,
8532 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8533 msm_routing_put_voice_mixer),
8534 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_INT0_MI2S_RX,
8535 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8536 msm_routing_put_voice_mixer),
8537 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_INT0_MI2S_RX,
8538 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8539 msm_routing_put_voice_mixer),
8540};
8541
8542static const struct snd_kcontrol_new int4_mi2s_rx_voice_mixer_controls[] = {
8543 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_INT4_MI2S_RX,
8544 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8545 msm_routing_put_voice_mixer),
8546 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_INT4_MI2S_RX,
8547 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8548 msm_routing_put_voice_mixer),
8549 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_INT4_MI2S_RX,
8550 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8551 msm_routing_put_voice_mixer),
8552 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_INT4_MI2S_RX,
8553 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8554 msm_routing_put_voice_mixer),
8555 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_INT4_MI2S_RX,
8556 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8557 msm_routing_put_voice_mixer),
8558};
8559
8560static const struct snd_kcontrol_new tert_mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308561 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8562 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8563 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308564 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8565 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8566 msm_routing_put_voice_mixer),
8567 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8568 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8569 msm_routing_put_voice_mixer),
8570 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8571 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8572 msm_routing_put_voice_mixer),
8573 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8574 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8575 msm_routing_put_voice_mixer),
8576};
8577
8578static const struct snd_kcontrol_new quat_mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308579 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8580 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8581 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308582 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8583 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8584 msm_routing_put_voice_mixer),
8585 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8586 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8587 msm_routing_put_voice_mixer),
8588 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8589 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8590 msm_routing_put_voice_mixer),
8591 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8592 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8593 msm_routing_put_voice_mixer),
8594};
8595
8596static const struct snd_kcontrol_new quin_mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308597 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8598 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8599 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308600 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8601 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8602 msm_routing_put_voice_mixer),
8603 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8604 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8605 msm_routing_put_voice_mixer),
8606 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8607 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8608 msm_routing_put_voice_mixer),
8609 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8610 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8611 msm_routing_put_voice_mixer),
8612};
8613
8614static const struct snd_kcontrol_new afe_pcm_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308615 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_AFE_PCM_RX,
8616 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8617 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308618 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_AFE_PCM_RX,
8619 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8620 msm_routing_put_voice_mixer),
8621 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_AFE_PCM_RX,
8622 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8623 msm_routing_put_voice_mixer),
8624 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_AFE_PCM_RX,
8625 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8626 msm_routing_put_voice_mixer),
8627 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_AFE_PCM_RX,
8628 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8629 msm_routing_put_voice_mixer),
8630};
8631
8632static const struct snd_kcontrol_new aux_pcm_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308633 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_AUXPCM_RX,
8634 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8635 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308636 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_AUXPCM_RX,
8637 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8638 msm_routing_put_voice_mixer),
8639 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_AUXPCM_RX,
8640 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8641 msm_routing_put_voice_mixer),
8642 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_AUXPCM_RX,
8643 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8644 msm_routing_put_voice_mixer),
8645 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_AUXPCM_RX,
8646 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8647 msm_routing_put_voice_mixer),
8648};
8649
8650static const struct snd_kcontrol_new sec_aux_pcm_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308651 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8652 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8653 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308654 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8655 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8656 msm_routing_put_voice_mixer),
8657 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8658 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8659 msm_routing_put_voice_mixer),
8660 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8661 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8662 msm_routing_put_voice_mixer),
8663 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8664 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8665 msm_routing_put_voice_mixer),
8666};
8667
8668static const struct snd_kcontrol_new tert_aux_pcm_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308669 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8670 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8671 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308672 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8673 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8674 msm_routing_put_voice_mixer),
8675 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8676 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8677 msm_routing_put_voice_mixer),
8678 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8679 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8680 msm_routing_put_voice_mixer),
8681 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8682 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8683 msm_routing_put_voice_mixer),
8684};
8685
8686static const struct snd_kcontrol_new quat_aux_pcm_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308687 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8688 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8689 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308690 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8691 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8692 msm_routing_put_voice_mixer),
8693 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8694 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8695 msm_routing_put_voice_mixer),
8696 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8697 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8698 msm_routing_put_voice_mixer),
8699 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8700 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8701 msm_routing_put_voice_mixer),
8702};
8703
Rohit Kumara5077932017-09-10 22:05:05 +05308704static const struct snd_kcontrol_new quin_aux_pcm_rx_voice_mixer_controls[] = {
Rohit Kumara5077932017-09-10 22:05:05 +05308705 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
8706 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8707 msm_routing_put_voice_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308708 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
8709 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8710 msm_routing_put_voice_mixer),
8711 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
8712 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8713 msm_routing_put_voice_mixer),
8714 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
8715 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8716 msm_routing_put_voice_mixer),
8717 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
8718 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8719 msm_routing_put_voice_mixer),
8720};
8721
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308722static const struct snd_kcontrol_new hdmi_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308723 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_HDMI_RX,
8724 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8725 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308726 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_HDMI_RX,
8727 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8728 msm_routing_put_voice_mixer),
8729 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_HDMI_RX,
8730 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8731 msm_routing_put_voice_mixer),
8732 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_HDMI_RX,
8733 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8734 msm_routing_put_voice_mixer),
8735 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_HDMI_RX,
8736 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8737 msm_routing_put_voice_mixer),
8738};
8739
Raja Mallik321d5712018-05-04 17:22:11 +05308740static const struct snd_kcontrol_new pri_tdm_rx_0_voice_mixer_controls[] = {
8741 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_PRI_TDM_RX_0,
8742 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8743 msm_routing_put_voice_mixer),
8744 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_PRI_TDM_RX_0,
8745 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8746 msm_routing_put_voice_stub_mixer),
8747 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_PRI_TDM_RX_0,
8748 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8749 msm_routing_put_voice_stub_mixer),
8750 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_PRI_TDM_RX_0,
8751 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_mixer,
8752 msm_routing_put_voice_mixer),
8753 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_PRI_TDM_RX_0,
8754 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8755 msm_routing_put_voice_mixer),
8756 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_PRI_TDM_RX_0,
8757 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8758 msm_routing_put_voice_mixer),
8759 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_PRI_TDM_RX_0,
8760 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8761 msm_routing_put_voice_mixer),
8762 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_PRI_TDM_RX_0,
8763 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8764 msm_routing_put_voice_mixer),
8765};
8766
8767static const struct snd_kcontrol_new pri_tdm_rx_1_voice_mixer_controls[] = {
8768 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_PRI_TDM_RX_1,
8769 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8770 msm_routing_put_voice_mixer),
8771 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_PRI_TDM_RX_1,
8772 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8773 msm_routing_put_voice_stub_mixer),
8774 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_PRI_TDM_RX_1,
8775 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8776 msm_routing_put_voice_stub_mixer),
8777 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_PRI_TDM_RX_1,
8778 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_mixer,
8779 msm_routing_put_voice_mixer),
8780 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_PRI_TDM_RX_1,
8781 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8782 msm_routing_put_voice_mixer),
8783 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_PRI_TDM_RX_1,
8784 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8785 msm_routing_put_voice_mixer),
8786 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_PRI_TDM_RX_1,
8787 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8788 msm_routing_put_voice_mixer),
8789 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_PRI_TDM_RX_1,
8790 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8791 msm_routing_put_voice_mixer),
8792};
8793
8794static const struct snd_kcontrol_new pri_tdm_rx_2_voice_mixer_controls[] = {
8795 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_PRI_TDM_RX_2,
8796 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8797 msm_routing_put_voice_mixer),
8798 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_PRI_TDM_RX_2,
8799 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8800 msm_routing_put_voice_stub_mixer),
8801 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_PRI_TDM_RX_2,
8802 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8803 msm_routing_put_voice_stub_mixer),
8804 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_PRI_TDM_RX_2,
8805 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_mixer,
8806 msm_routing_put_voice_mixer),
8807 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_PRI_TDM_RX_2,
8808 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8809 msm_routing_put_voice_mixer),
8810 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_PRI_TDM_RX_2,
8811 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8812 msm_routing_put_voice_mixer),
8813 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_PRI_TDM_RX_2,
8814 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8815 msm_routing_put_voice_mixer),
8816 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_PRI_TDM_RX_2,
8817 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8818 msm_routing_put_voice_mixer),
8819};
8820
8821static const struct snd_kcontrol_new pri_tdm_rx_3_voice_mixer_controls[] = {
8822 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_PRI_TDM_RX_3,
8823 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8824 msm_routing_put_voice_mixer),
8825 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_PRI_TDM_RX_3,
8826 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8827 msm_routing_put_voice_stub_mixer),
8828 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_PRI_TDM_RX_3,
8829 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8830 msm_routing_put_voice_stub_mixer),
8831 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_PRI_TDM_RX_3,
8832 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_mixer,
8833 msm_routing_put_voice_mixer),
8834 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_PRI_TDM_RX_3,
8835 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8836 msm_routing_put_voice_mixer),
8837 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_PRI_TDM_RX_3,
8838 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8839 msm_routing_put_voice_mixer),
8840 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_PRI_TDM_RX_3,
8841 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8842 msm_routing_put_voice_mixer),
8843 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_PRI_TDM_RX_3,
8844 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8845 msm_routing_put_voice_mixer),
8846};
8847
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308848static const struct snd_kcontrol_new slimbus_7_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308849 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8850 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8851 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308852 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8853 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8854 msm_routing_put_voice_mixer),
8855 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8856 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8857 msm_routing_put_voice_mixer),
8858 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8859 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8860 msm_routing_put_voice_mixer),
8861 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8862 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8863 msm_routing_put_voice_mixer),
8864};
8865
8866static const struct snd_kcontrol_new slimbus_8_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308867 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8868 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8869 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308870 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8871 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8872 msm_routing_put_voice_mixer),
8873 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8874 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8875 msm_routing_put_voice_mixer),
8876 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8877 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8878 msm_routing_put_voice_mixer),
8879 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8880 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8881 msm_routing_put_voice_mixer),
8882};
8883
8884static const struct snd_kcontrol_new quat_tdm_rx_2_voice_mixer_controls[] = {
8885 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
8886 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8887 msm_routing_put_voice_mixer),
8888};
8889
8890static const struct snd_kcontrol_new stub_rx_mixer_controls[] = {
kunleizdf5a00a2017-11-27 15:27:36 +08008891 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_EXTPROC_RX,
8892 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8893 msm_routing_put_voice_mixer),
8894 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_EXTPROC_RX,
8895 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8896 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308897};
8898
8899static const struct snd_kcontrol_new slimbus_1_rx_mixer_controls[] = {
kunleizdf5a00a2017-11-27 15:27:36 +08008900 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_1_RX,
8901 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8902 msm_routing_put_voice_mixer),
8903 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_1_RX,
8904 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8905 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308906};
8907
8908static const struct snd_kcontrol_new slimbus_3_rx_mixer_controls[] = {
kunleizdf5a00a2017-11-27 15:27:36 +08008909 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_3_RX,
8910 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8911 msm_routing_put_voice_mixer),
8912 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_3_RX,
8913 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8914 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308915};
8916
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308917static const struct snd_kcontrol_new tx_voicemmode1_mixer_controls[] = {
8918 SOC_SINGLE_EXT("PRI_TX_MMode1", MSM_BACKEND_DAI_PRI_I2S_TX,
8919 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8920 msm_routing_put_voice_mixer),
8921 SOC_SINGLE_EXT("MI2S_TX_MMode1", MSM_BACKEND_DAI_MI2S_TX,
8922 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8923 msm_routing_put_voice_mixer),
8924 SOC_SINGLE_EXT("SLIM_0_TX_MMode1",
8925 MSM_BACKEND_DAI_SLIMBUS_0_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8926 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8927 SOC_SINGLE_EXT("INT_BT_SCO_TX_MMode1",
8928 MSM_BACKEND_DAI_INT_BT_SCO_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8929 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8930 SOC_SINGLE_EXT("AFE_PCM_TX_MMode1",
8931 MSM_BACKEND_DAI_AFE_PCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0,
8932 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8933 SOC_SINGLE_EXT("AUX_PCM_TX_MMode1",
8934 MSM_BACKEND_DAI_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0,
8935 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8936 SOC_SINGLE_EXT("SEC_AUX_PCM_TX_MMode1",
8937 MSM_BACKEND_DAI_SEC_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8938 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8939 SOC_SINGLE_EXT("TERT_AUX_PCM_TX_MMode1",
8940 MSM_BACKEND_DAI_TERT_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8941 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8942 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX_MMode1",
8943 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8944 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308945 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX_MMode1",
8946 MSM_BACKEND_DAI_QUIN_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8947 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308948 SOC_SINGLE_EXT("PRI_MI2S_TX_MMode1",
8949 MSM_BACKEND_DAI_PRI_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0,
8950 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8951 SOC_SINGLE_EXT("TERT_MI2S_TX_MMode1",
8952 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE1,
8953 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8954 SOC_SINGLE_EXT("INT3_MI2S_TX_MMode1",
8955 MSM_BACKEND_DAI_INT3_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE1,
8956 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8957 SOC_SINGLE_EXT("SLIM_7_TX_MMode1",
8958 MSM_BACKEND_DAI_SLIMBUS_7_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8959 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8960 SOC_SINGLE_EXT("SLIM_8_TX_MMode1",
8961 MSM_BACKEND_DAI_SLIMBUS_8_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8962 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8963 SOC_SINGLE_EXT("USB_AUDIO_TX_MMode1", MSM_BACKEND_DAI_USB_TX,
8964 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8965 msm_routing_put_voice_mixer),
8966 SOC_SINGLE_EXT("QUAT_TDM_TX_0_MMode1",
8967 MSM_BACKEND_DAI_QUAT_TDM_TX_0, MSM_FRONTEND_DAI_VOICEMMODE1,
8968 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Raja Mallik321d5712018-05-04 17:22:11 +05308969 SOC_SINGLE_EXT("PRI_TDM_TX_3_MMode1",
8970 MSM_BACKEND_DAI_PRI_TDM_TX_3, MSM_FRONTEND_DAI_VOICEMMODE1,
8971 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Aditya Bavanari769c3102018-02-23 16:34:40 +05308972 SOC_SINGLE_EXT("QUAT_MI2S_TX_MMode1",
8973 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0,
8974 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8975 SOC_SINGLE_EXT("QUIN_MI2S_TX_MMode1",
8976 MSM_BACKEND_DAI_QUINARY_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE1,
8977 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308978};
8979
8980static const struct snd_kcontrol_new tx_voicemmode2_mixer_controls[] = {
8981 SOC_SINGLE_EXT("PRI_TX_MMode2", MSM_BACKEND_DAI_PRI_I2S_TX,
8982 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8983 msm_routing_put_voice_mixer),
8984 SOC_SINGLE_EXT("MI2S_TX_MMode2", MSM_BACKEND_DAI_MI2S_TX,
8985 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8986 msm_routing_put_voice_mixer),
8987 SOC_SINGLE_EXT("SLIM_0_TX_MMode2",
8988 MSM_BACKEND_DAI_SLIMBUS_0_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8989 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8990 SOC_SINGLE_EXT("INT_BT_SCO_TX_MMode2",
8991 MSM_BACKEND_DAI_INT_BT_SCO_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8992 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8993 SOC_SINGLE_EXT("AFE_PCM_TX_MMode2",
8994 MSM_BACKEND_DAI_AFE_PCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0,
8995 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8996 SOC_SINGLE_EXT("AUX_PCM_TX_MMode2",
8997 MSM_BACKEND_DAI_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0,
8998 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8999 SOC_SINGLE_EXT("SEC_AUX_PCM_TX_MMode2",
9000 MSM_BACKEND_DAI_SEC_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
9001 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
9002 SOC_SINGLE_EXT("TERT_AUX_PCM_TX_MMode2",
9003 MSM_BACKEND_DAI_TERT_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
9004 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
9005 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX_MMode2",
9006 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
9007 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309008 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX_MMode2",
9009 MSM_BACKEND_DAI_QUIN_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
9010 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309011 SOC_SINGLE_EXT("PRI_MI2S_TX_MMode2",
9012 MSM_BACKEND_DAI_PRI_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0,
9013 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
9014 SOC_SINGLE_EXT("TERT_MI2S_TX_MMode2",
9015 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE2,
9016 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Raja Mallik321d5712018-05-04 17:22:11 +05309017 SOC_SINGLE_EXT("PRI_TDM_TX_3_MMode2",
9018 MSM_BACKEND_DAI_PRI_TDM_TX_3, MSM_FRONTEND_DAI_VOICEMMODE2,
9019 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309020 SOC_SINGLE_EXT("INT3_MI2S_TX_MMode2",
9021 MSM_BACKEND_DAI_INT3_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE2,
9022 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
9023 SOC_SINGLE_EXT("SLIM_7_TX_MMode2",
9024 MSM_BACKEND_DAI_SLIMBUS_7_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
9025 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
9026 SOC_SINGLE_EXT("SLIM_8_TX_MMode2",
9027 MSM_BACKEND_DAI_SLIMBUS_8_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
9028 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
9029 SOC_SINGLE_EXT("USB_AUDIO_TX_MMode2",
9030 MSM_BACKEND_DAI_USB_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
9031 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Aditya Bavanari769c3102018-02-23 16:34:40 +05309032 SOC_SINGLE_EXT("QUAT_MI2S_TX_MMode2",
9033 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0,
9034 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
9035 SOC_SINGLE_EXT("QUIN_MI2S_TX_MMode2",
9036 MSM_BACKEND_DAI_QUINARY_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE2,
9037 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309038};
9039
9040static const struct snd_kcontrol_new tx_voip_mixer_controls[] = {
9041 SOC_SINGLE_EXT("PRI_TX_Voip", MSM_BACKEND_DAI_PRI_I2S_TX,
9042 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
9043 msm_routing_put_voice_mixer),
9044 SOC_SINGLE_EXT("MI2S_TX_Voip", MSM_BACKEND_DAI_MI2S_TX,
9045 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
9046 msm_routing_put_voice_mixer),
9047 SOC_SINGLE_EXT("SLIM_0_TX_Voip", MSM_BACKEND_DAI_SLIMBUS_0_TX,
9048 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
9049 msm_routing_put_voice_mixer),
9050 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX_Voip", MSM_BACKEND_DAI_INT_BT_SCO_TX,
9051 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
9052 msm_routing_put_voice_mixer),
9053 SOC_SINGLE_EXT("AFE_PCM_TX_Voip", MSM_BACKEND_DAI_AFE_PCM_TX,
9054 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
9055 msm_routing_put_voice_mixer),
9056 SOC_SINGLE_EXT("AUX_PCM_TX_Voip", MSM_BACKEND_DAI_AUXPCM_TX,
9057 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
9058 msm_routing_put_voice_mixer),
9059 SOC_SINGLE_EXT("SEC_AUX_PCM_TX_Voip", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
9060 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
9061 msm_routing_put_voice_mixer),
9062 SOC_SINGLE_EXT("TERT_AUX_PCM_TX_Voip", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
9063 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
9064 msm_routing_put_voice_mixer),
9065 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX_Voip", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
9066 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
9067 msm_routing_put_voice_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309068 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX_Voip", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
9069 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
9070 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309071 SOC_SINGLE_EXT("PRI_MI2S_TX_Voip", MSM_BACKEND_DAI_PRI_MI2S_TX,
9072 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
9073 msm_routing_put_voice_mixer),
9074 SOC_SINGLE_EXT("TERT_MI2S_TX_Voip", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
9075 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
9076 msm_routing_put_voice_mixer),
9077 SOC_SINGLE_EXT("INT3_MI2S_TX_Voip", MSM_BACKEND_DAI_INT3_MI2S_TX,
9078 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
9079 msm_routing_put_voice_mixer),
9080 SOC_SINGLE_EXT("SLIM_7_TX_Voip", MSM_BACKEND_DAI_SLIMBUS_7_TX,
9081 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
9082 msm_routing_put_voice_mixer),
9083 SOC_SINGLE_EXT("SLIM_8_TX_Voip", MSM_BACKEND_DAI_SLIMBUS_8_TX,
9084 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
9085 msm_routing_put_voice_mixer),
9086 SOC_SINGLE_EXT("USB_AUDIO_TX_Voip", MSM_BACKEND_DAI_USB_TX,
9087 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
9088 msm_routing_put_voice_mixer),
Bala Kishore Pati38de3862018-06-15 17:38:40 +05309089 SOC_SINGLE_EXT("PRI_TDM_TX_3_Voip", MSM_BACKEND_DAI_PRI_TDM_TX_3,
9090 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
9091 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309092};
9093
9094static const struct snd_kcontrol_new tx_voice_stub_mixer_controls[] = {
9095 SOC_SINGLE_EXT("STUB_TX_HL", MSM_BACKEND_DAI_EXTPROC_TX,
9096 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9097 msm_routing_put_voice_stub_mixer),
9098 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
9099 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9100 msm_routing_put_voice_stub_mixer),
9101 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
9102 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9103 msm_routing_put_voice_stub_mixer),
9104 SOC_SINGLE_EXT("STUB_1_TX_HL", MSM_BACKEND_DAI_EXTPROC_EC_TX,
9105 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9106 msm_routing_put_voice_stub_mixer),
9107 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
9108 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9109 msm_routing_put_voice_stub_mixer),
9110 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
9111 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9112 msm_routing_put_voice_stub_mixer),
9113 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
9114 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9115 msm_routing_put_voice_stub_mixer),
9116 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
9117 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9118 msm_routing_put_voice_stub_mixer),
9119 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
9120 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9121 msm_routing_put_voice_stub_mixer),
9122 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
9123 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9124 msm_routing_put_voice_stub_mixer),
9125 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
9126 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9127 msm_routing_put_voice_stub_mixer),
9128 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
9129 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9130 msm_routing_put_voice_stub_mixer),
9131 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
9132 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9133 msm_routing_put_voice_stub_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309134 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
9135 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9136 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309137 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
9138 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9139 msm_routing_put_voice_stub_mixer),
9140 SOC_SINGLE_EXT("SLIM_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
9141 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9142 msm_routing_put_voice_stub_mixer),
9143 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
9144 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9145 msm_routing_put_voice_stub_mixer),
9146 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
9147 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9148 msm_routing_put_voice_stub_mixer),
9149 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
9150 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9151 msm_routing_put_voice_stub_mixer),
9152};
9153
9154static const struct snd_kcontrol_new tx_voice2_stub_mixer_controls[] = {
9155 SOC_SINGLE_EXT("STUB_TX_HL", MSM_BACKEND_DAI_EXTPROC_TX,
9156 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9157 msm_routing_put_voice_stub_mixer),
9158 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
9159 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9160 msm_routing_put_voice_stub_mixer),
9161 SOC_SINGLE_EXT("STUB_1_TX_HL", MSM_BACKEND_DAI_EXTPROC_EC_TX,
9162 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9163 msm_routing_put_voice_stub_mixer),
9164 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
9165 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9166 msm_routing_put_voice_stub_mixer),
9167 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
9168 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9169 msm_routing_put_voice_stub_mixer),
9170 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
9171 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9172 msm_routing_put_voice_stub_mixer),
9173 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
9174 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9175 msm_routing_put_voice_stub_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309176 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
9177 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9178 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309179 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
9180 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9181 msm_routing_put_voice_stub_mixer),
9182 SOC_SINGLE_EXT("SLIM_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
9183 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9184 msm_routing_put_voice_stub_mixer),
9185 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
9186 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9187 msm_routing_put_voice_stub_mixer),
9188 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
9189 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9190 msm_routing_put_voice_stub_mixer),
9191 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
9192 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9193 msm_routing_put_voice_stub_mixer),
9194 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
9195 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9196 msm_routing_put_voice_stub_mixer),
9197 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
9198 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9199 msm_routing_put_voice_stub_mixer),
9200};
9201
9202static const struct snd_kcontrol_new tx_volte_stub_mixer_controls[] = {
9203 SOC_SINGLE_EXT("STUB_TX_HL", MSM_BACKEND_DAI_EXTPROC_TX,
9204 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9205 msm_routing_put_voice_stub_mixer),
9206 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
9207 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9208 msm_routing_put_voice_stub_mixer),
9209 SOC_SINGLE_EXT("STUB_1_TX_HL", MSM_BACKEND_DAI_EXTPROC_EC_TX,
9210 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9211 msm_routing_put_voice_stub_mixer),
9212 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
9213 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9214 msm_routing_put_voice_stub_mixer),
9215 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
9216 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9217 msm_routing_put_voice_stub_mixer),
9218 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
9219 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9220 msm_routing_put_voice_stub_mixer),
9221 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
9222 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9223 msm_routing_put_voice_stub_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309224 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
9225 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9226 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309227 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
9228 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9229 msm_routing_put_voice_stub_mixer),
9230 SOC_SINGLE_EXT("SLIM_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
9231 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9232 msm_routing_put_voice_stub_mixer),
9233 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
9234 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9235 msm_routing_put_voice_stub_mixer),
9236 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
9237 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9238 msm_routing_put_voice_stub_mixer),
9239 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
9240 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9241 msm_routing_put_voice_stub_mixer),
9242 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
9243 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9244 msm_routing_put_voice_stub_mixer),
9245 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
9246 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
9247 msm_routing_put_voice_stub_mixer),
9248};
9249
9250static const struct snd_kcontrol_new tx_qchat_mixer_controls[] = {
9251 SOC_SINGLE_EXT("PRI_TX_QCHAT", MSM_BACKEND_DAI_PRI_I2S_TX,
9252 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9253 msm_routing_put_voice_mixer),
9254 SOC_SINGLE_EXT("SLIM_0_TX_QCHAT", MSM_BACKEND_DAI_SLIMBUS_0_TX,
9255 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9256 msm_routing_put_voice_mixer),
9257 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX_QCHAT",
9258 MSM_BACKEND_DAI_INT_BT_SCO_TX, MSM_FRONTEND_DAI_QCHAT, 1, 0,
9259 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
9260 SOC_SINGLE_EXT("AFE_PCM_TX_QCHAT", MSM_BACKEND_DAI_AFE_PCM_TX,
9261 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9262 msm_routing_put_voice_mixer),
9263 SOC_SINGLE_EXT("AUX_PCM_TX_QCHAT", MSM_BACKEND_DAI_AUXPCM_TX,
9264 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9265 msm_routing_put_voice_mixer),
9266 SOC_SINGLE_EXT("SEC_AUX_PCM_TX_QCHAT", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
9267 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9268 msm_routing_put_voice_mixer),
9269 SOC_SINGLE_EXT("TERT_AUX_PCM_TX_QCHAT", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
9270 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9271 msm_routing_put_voice_mixer),
9272 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX_QCHAT", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
9273 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9274 msm_routing_put_voice_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309275 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX_QCHAT", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
9276 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9277 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309278 SOC_SINGLE_EXT("MI2S_TX_QCHAT", MSM_BACKEND_DAI_MI2S_TX,
9279 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9280 msm_routing_put_voice_mixer),
9281 SOC_SINGLE_EXT("PRI_MI2S_TX_QCHAT", MSM_BACKEND_DAI_PRI_MI2S_TX,
9282 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9283 msm_routing_put_voice_mixer),
9284 SOC_SINGLE_EXT("TERT_MI2S_TX_QCHAT", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
9285 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9286 msm_routing_put_voice_mixer),
9287 SOC_SINGLE_EXT("INT3_MI2S_TX_QCHAT", MSM_BACKEND_DAI_INT3_MI2S_TX,
9288 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9289 msm_routing_put_voice_mixer),
9290 SOC_SINGLE_EXT("SLIM_7_TX_QCHAT", MSM_BACKEND_DAI_SLIMBUS_7_TX,
9291 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9292 msm_routing_put_voice_mixer),
9293 SOC_SINGLE_EXT("SLIM_8_TX_QCHAT", MSM_BACKEND_DAI_SLIMBUS_8_TX,
9294 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9295 msm_routing_put_voice_mixer),
9296 SOC_SINGLE_EXT("USB_AUDIO_TX_QCHAT", MSM_BACKEND_DAI_USB_TX,
9297 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
9298 msm_routing_put_voice_mixer),
9299};
9300
9301static const struct snd_kcontrol_new int0_mi2s_rx_port_mixer_controls[] = {
9302 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9303 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9304 msm_routing_put_port_mixer),
9305 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9306 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9307 msm_routing_put_port_mixer),
9308 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9309 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9310 msm_routing_put_port_mixer),
9311 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9312 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9313 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309314 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9315 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9316 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309317 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9318 MSM_BACKEND_DAI_INT3_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9319 msm_routing_put_port_mixer),
9320 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9321 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9322 msm_routing_put_port_mixer),
9323 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9324 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
9325 msm_routing_put_port_mixer),
9326 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9327 MSM_BACKEND_DAI_SLIMBUS_7_TX, 1, 0, msm_routing_get_port_mixer,
9328 msm_routing_put_port_mixer),
9329 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9330 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9331 msm_routing_put_port_mixer),
9332};
9333
9334static const struct snd_kcontrol_new int4_mi2s_rx_port_mixer_controls[] = {
9335 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9336 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9337 msm_routing_put_port_mixer),
9338 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9339 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9340 msm_routing_put_port_mixer),
9341 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9342 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9343 msm_routing_put_port_mixer),
9344 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9345 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9346 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309347 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9348 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9349 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309350 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9351 MSM_BACKEND_DAI_INT3_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9352 msm_routing_put_port_mixer),
9353 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9354 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9355 msm_routing_put_port_mixer),
9356 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9357 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
9358 msm_routing_put_port_mixer),
9359 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9360 MSM_BACKEND_DAI_SLIMBUS_7_TX, 1, 0, msm_routing_get_port_mixer,
9361 msm_routing_put_port_mixer),
9362 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9363 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9364 msm_routing_put_port_mixer),
9365};
9366
9367static const struct snd_kcontrol_new sbus_0_rx_port_mixer_controls[] = {
9368 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9369 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9370 msm_routing_put_port_mixer),
9371 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9372 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9373 msm_routing_put_port_mixer),
9374 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9375 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9376 msm_routing_put_port_mixer),
9377 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9378 MSM_BACKEND_DAI_SLIMBUS_7_TX, 1, 0, msm_routing_get_port_mixer,
9379 msm_routing_put_port_mixer),
9380 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9381 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9382 msm_routing_put_port_mixer),
9383 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9384 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9385 msm_routing_put_port_mixer),
9386 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9387 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9388 msm_routing_put_port_mixer),
9389 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9390 MSM_BACKEND_DAI_TERT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9391 msm_routing_put_port_mixer),
9392 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9393 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9394 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309395 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9396 MSM_BACKEND_DAI_QUIN_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9397 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309398 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9399 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9400 msm_routing_put_port_mixer),
9401 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9402 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9403 msm_routing_put_port_mixer),
9404 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9405 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9406 msm_routing_put_port_mixer),
9407 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9408 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9409 msm_routing_put_port_mixer),
9410 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9411 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9412 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309413 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9414 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9415 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309416 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9417 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
9418 msm_routing_put_port_mixer),
9419 SOC_SINGLE_EXT("PRI_MI2S_RX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9420 MSM_BACKEND_DAI_PRI_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
9421 msm_routing_put_port_mixer),
9422 SOC_SINGLE_EXT("SEC_MI2S_RX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9423 MSM_BACKEND_DAI_SECONDARY_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
9424 msm_routing_put_port_mixer),
9425 SOC_SINGLE_EXT("TERT_MI2S_RX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9426 MSM_BACKEND_DAI_TERTIARY_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
9427 msm_routing_put_port_mixer),
9428 SOC_SINGLE_EXT("QUAT_MI2S_RX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9429 MSM_BACKEND_DAI_QUATERNARY_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
9430 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309431 SOC_SINGLE_EXT("QUIN_MI2S_RX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9432 MSM_BACKEND_DAI_QUINARY_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
9433 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309434};
9435
9436static const struct snd_kcontrol_new aux_pcm_rx_port_mixer_controls[] = {
9437 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_RX,
9438 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9439 msm_routing_put_port_mixer),
9440 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_AUXPCM_RX,
9441 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9442 msm_routing_put_port_mixer),
9443 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_AUXPCM_RX,
9444 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9445 msm_routing_put_port_mixer),
9446 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_RX,
9447 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9448 msm_routing_put_port_mixer),
9449 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_AUXPCM_RX,
9450 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0, msm_routing_get_port_mixer,
9451 msm_routing_put_port_mixer),
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -08009452 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_AUXPCM_RX,
9453 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9454 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309455};
9456
9457static const struct snd_kcontrol_new sec_auxpcm_rx_port_mixer_controls[] = {
9458 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
9459 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9460 msm_routing_put_port_mixer),
9461 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
9462 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9463 msm_routing_put_port_mixer),
9464 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
9465 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9466 msm_routing_put_port_mixer),
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -08009467 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
9468 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9469 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309470};
9471
9472static const struct snd_kcontrol_new tert_auxpcm_rx_port_mixer_controls[] = {
9473 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
9474 MSM_BACKEND_DAI_TERT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9475 msm_routing_put_port_mixer),
9476 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
9477 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9478 msm_routing_put_port_mixer),
9479 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
9480 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9481 msm_routing_put_port_mixer),
9482};
9483
9484static const struct snd_kcontrol_new quat_auxpcm_rx_port_mixer_controls[] = {
9485 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
9486 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9487 msm_routing_put_port_mixer),
9488 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
9489 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9490 msm_routing_put_port_mixer),
9491 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
9492 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9493 msm_routing_put_port_mixer),
9494};
9495
Rohit Kumara5077932017-09-10 22:05:05 +05309496static const struct snd_kcontrol_new quin_auxpcm_rx_port_mixer_controls[] = {
9497 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
9498 MSM_BACKEND_DAI_QUIN_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9499 msm_routing_put_port_mixer),
9500 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
9501 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9502 msm_routing_put_port_mixer),
9503 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
9504 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9505 msm_routing_put_port_mixer),
9506};
9507
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309508static const struct snd_kcontrol_new sbus_1_rx_port_mixer_controls[] = {
9509 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9510 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
9511 msm_routing_put_port_mixer),
9512 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9513 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0, msm_routing_get_port_mixer,
9514 msm_routing_put_port_mixer),
9515 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9516 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9517 msm_routing_put_port_mixer),
9518 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9519 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9520 msm_routing_put_port_mixer),
9521 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9522 MSM_BACKEND_DAI_TERT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9523 msm_routing_put_port_mixer),
9524 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9525 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9526 msm_routing_put_port_mixer),
9527};
9528
9529static const struct snd_kcontrol_new sbus_3_rx_port_mixer_controls[] = {
9530 SOC_SINGLE_EXT("INTERNAL_BT_SCO_RX", MSM_BACKEND_DAI_SLIMBUS_3_RX,
9531 MSM_BACKEND_DAI_INT_BT_SCO_RX, 1, 0, msm_routing_get_port_mixer,
9532 msm_routing_put_port_mixer),
9533 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_3_RX,
9534 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9535 msm_routing_put_port_mixer),
9536 SOC_SINGLE_EXT("AFE_PCM_RX", MSM_BACKEND_DAI_SLIMBUS_3_RX,
9537 MSM_BACKEND_DAI_AFE_PCM_RX, 1, 0, msm_routing_get_port_mixer,
9538 msm_routing_put_port_mixer),
9539 SOC_SINGLE_EXT("AUX_PCM_RX", MSM_BACKEND_DAI_SLIMBUS_3_RX,
9540 MSM_BACKEND_DAI_AUXPCM_RX, 1, 0, msm_routing_get_port_mixer,
9541 msm_routing_put_port_mixer),
9542 SOC_SINGLE_EXT("SLIM_0_RX", MSM_BACKEND_DAI_SLIMBUS_3_RX,
9543 MSM_BACKEND_DAI_SLIMBUS_0_RX, 1, 0, msm_routing_get_port_mixer,
9544 msm_routing_put_port_mixer),
9545};
9546
9547static const struct snd_kcontrol_new sbus_6_rx_port_mixer_controls[] = {
9548 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9549 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9550 msm_routing_put_port_mixer),
9551 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9552 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9553 msm_routing_put_port_mixer),
9554 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9555 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9556 msm_routing_put_port_mixer),
9557 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9558 MSM_BACKEND_DAI_SLIMBUS_7_TX, 1, 0, msm_routing_get_port_mixer,
9559 msm_routing_put_port_mixer),
9560 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9561 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9562 msm_routing_put_port_mixer),
9563 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9564 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9565 msm_routing_put_port_mixer),
9566 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9567 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9568 msm_routing_put_port_mixer),
9569 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9570 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9571 msm_routing_put_port_mixer),
9572 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9573 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9574 msm_routing_put_port_mixer),
9575 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9576 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9577 msm_routing_put_port_mixer),
9578 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9579 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9580 msm_routing_put_port_mixer),
9581 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9582 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
9583 msm_routing_put_port_mixer),
9584};
9585
9586static const struct snd_kcontrol_new bt_sco_rx_port_mixer_controls[] = {
9587 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_INT_BT_SCO_RX,
9588 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9589 msm_routing_put_port_mixer),
9590 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_INT_BT_SCO_RX,
9591 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9592 msm_routing_put_port_mixer),
9593};
9594
9595static const struct snd_kcontrol_new afe_pcm_rx_port_mixer_controls[] = {
9596 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_AFE_PCM_RX,
9597 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9598 msm_routing_put_port_mixer),
9599 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_AFE_PCM_RX,
9600 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9601 msm_routing_put_port_mixer),
9602};
9603
9604
9605static const struct snd_kcontrol_new hdmi_rx_port_mixer_controls[] = {
9606 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_HDMI_RX,
9607 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9608 msm_routing_put_port_mixer),
9609};
9610
9611static const struct snd_kcontrol_new display_port_rx_port_mixer_controls[] = {
9612 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
9613 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9614 msm_routing_put_port_mixer),
9615};
9616
9617static const struct snd_kcontrol_new sec_i2s_rx_port_mixer_controls[] = {
9618 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_SEC_I2S_RX,
9619 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9620 msm_routing_put_port_mixer),
9621};
9622
9623static const struct snd_kcontrol_new mi2s_rx_port_mixer_controls[] = {
9624 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_MI2S_RX,
9625 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9626 msm_routing_put_port_mixer),
9627 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_RX,
9628 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9629 msm_routing_put_port_mixer),
9630};
9631
9632static const struct snd_kcontrol_new primary_mi2s_rx_port_mixer_controls[] = {
9633 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9634 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9635 msm_routing_put_port_mixer),
9636 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9637 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9638 msm_routing_put_port_mixer),
9639 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9640 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9641 msm_routing_put_port_mixer),
9642 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9643 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9644 msm_routing_put_port_mixer),
9645 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9646 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
9647 msm_routing_put_port_mixer),
9648 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9649 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9650 msm_routing_put_port_mixer),
9651 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9652 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9653 msm_routing_put_port_mixer),
9654 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9655 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9656 msm_routing_put_port_mixer),
9657 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9658 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9659 msm_routing_put_port_mixer),
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -08009660 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9661 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9662 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309663};
9664
9665static const struct snd_kcontrol_new usb_rx_port_mixer_controls[] = {
9666 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_RX,
9667 MSM_BACKEND_DAI_USB_TX, 1, 0, msm_routing_get_port_mixer,
9668 msm_routing_put_port_mixer),
9669};
9670
9671static const struct snd_kcontrol_new quat_mi2s_rx_port_mixer_controls[] = {
9672 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9673 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9674 msm_routing_put_port_mixer),
9675 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9676 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9677 msm_routing_put_port_mixer),
9678 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9679 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9680 msm_routing_put_port_mixer),
9681 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9682 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9683 msm_routing_put_port_mixer),
9684 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9685 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9686 msm_routing_put_port_mixer),
9687 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9688 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9689 msm_routing_put_port_mixer),
9690 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9691 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9692 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309693 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9694 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9695 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309696 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9697 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9698 msm_routing_put_port_mixer),
9699};
9700
Rohit Kumara5077932017-09-10 22:05:05 +05309701static const struct snd_kcontrol_new quin_mi2s_rx_port_mixer_controls[] = {
9702 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9703 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9704 msm_routing_put_port_mixer),
9705 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9706 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9707 msm_routing_put_port_mixer),
9708 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9709 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9710 msm_routing_put_port_mixer),
9711 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9712 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9713 msm_routing_put_port_mixer),
9714 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9715 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9716 msm_routing_put_port_mixer),
9717 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9718 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9719 msm_routing_put_port_mixer),
9720 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9721 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9722 msm_routing_put_port_mixer),
9723};
9724
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309725static const struct snd_kcontrol_new pri_tdm_rx_0_port_mixer_controls[] = {
9726 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9727 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9728 msm_routing_get_port_mixer,
9729 msm_routing_put_port_mixer),
9730 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9731 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9732 msm_routing_get_port_mixer,
9733 msm_routing_put_port_mixer),
9734 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9735 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9736 msm_routing_get_port_mixer,
9737 msm_routing_put_port_mixer),
9738 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9739 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9740 msm_routing_get_port_mixer,
9741 msm_routing_put_port_mixer),
9742 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9743 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9744 msm_routing_get_port_mixer,
9745 msm_routing_put_port_mixer),
9746 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9747 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9748 msm_routing_get_port_mixer,
9749 msm_routing_put_port_mixer),
9750 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9751 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9752 msm_routing_get_port_mixer,
9753 msm_routing_put_port_mixer),
9754 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9755 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9756 msm_routing_get_port_mixer,
9757 msm_routing_put_port_mixer),
9758 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9759 MSM_BACKEND_DAI_PRI_TDM_TX_0, 1, 0,
9760 msm_routing_get_port_mixer,
9761 msm_routing_put_port_mixer),
9762 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9763 MSM_BACKEND_DAI_PRI_TDM_TX_1, 1, 0,
9764 msm_routing_get_port_mixer,
9765 msm_routing_put_port_mixer),
9766 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9767 MSM_BACKEND_DAI_PRI_TDM_TX_2, 1, 0,
9768 msm_routing_get_port_mixer,
9769 msm_routing_put_port_mixer),
9770 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9771 MSM_BACKEND_DAI_PRI_TDM_TX_3, 1, 0,
9772 msm_routing_get_port_mixer,
9773 msm_routing_put_port_mixer),
9774 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9775 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9776 msm_routing_get_port_mixer,
9777 msm_routing_put_port_mixer),
9778 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9779 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9780 msm_routing_get_port_mixer,
9781 msm_routing_put_port_mixer),
9782 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9783 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9784 msm_routing_get_port_mixer,
9785 msm_routing_put_port_mixer),
9786 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9787 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9788 msm_routing_get_port_mixer,
9789 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309790 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9791 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9792 msm_routing_get_port_mixer,
9793 msm_routing_put_port_mixer),
9794 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9795 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9796 msm_routing_get_port_mixer,
9797 msm_routing_put_port_mixer),
9798 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9799 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9800 msm_routing_get_port_mixer,
9801 msm_routing_put_port_mixer),
9802 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9803 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9804 msm_routing_get_port_mixer,
9805 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309806};
9807
9808static const struct snd_kcontrol_new pri_tdm_rx_1_port_mixer_controls[] = {
9809 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9810 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9811 msm_routing_get_port_mixer,
9812 msm_routing_put_port_mixer),
9813 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9814 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9815 msm_routing_get_port_mixer,
9816 msm_routing_put_port_mixer),
9817 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9818 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9819 msm_routing_get_port_mixer,
9820 msm_routing_put_port_mixer),
9821 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9822 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9823 msm_routing_get_port_mixer,
9824 msm_routing_put_port_mixer),
9825 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9826 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9827 msm_routing_get_port_mixer,
9828 msm_routing_put_port_mixer),
9829 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9830 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9831 msm_routing_get_port_mixer,
9832 msm_routing_put_port_mixer),
9833 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9834 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9835 msm_routing_get_port_mixer,
9836 msm_routing_put_port_mixer),
9837 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9838 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9839 msm_routing_get_port_mixer,
9840 msm_routing_put_port_mixer),
9841 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9842 MSM_BACKEND_DAI_PRI_TDM_TX_0, 1, 0,
9843 msm_routing_get_port_mixer,
9844 msm_routing_put_port_mixer),
9845 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9846 MSM_BACKEND_DAI_PRI_TDM_TX_1, 1, 0,
9847 msm_routing_get_port_mixer,
9848 msm_routing_put_port_mixer),
9849 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9850 MSM_BACKEND_DAI_PRI_TDM_TX_2, 1, 0,
9851 msm_routing_get_port_mixer,
9852 msm_routing_put_port_mixer),
9853 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9854 MSM_BACKEND_DAI_PRI_TDM_TX_3, 1, 0,
9855 msm_routing_get_port_mixer,
9856 msm_routing_put_port_mixer),
9857 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9858 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9859 msm_routing_get_port_mixer,
9860 msm_routing_put_port_mixer),
9861 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9862 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9863 msm_routing_get_port_mixer,
9864 msm_routing_put_port_mixer),
9865 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9866 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9867 msm_routing_get_port_mixer,
9868 msm_routing_put_port_mixer),
9869 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9870 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9871 msm_routing_get_port_mixer,
9872 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309873 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9874 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9875 msm_routing_get_port_mixer,
9876 msm_routing_put_port_mixer),
9877 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9878 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9879 msm_routing_get_port_mixer,
9880 msm_routing_put_port_mixer),
9881 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9882 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9883 msm_routing_get_port_mixer,
9884 msm_routing_put_port_mixer),
9885 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9886 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9887 msm_routing_get_port_mixer,
9888 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309889};
9890
9891static const struct snd_kcontrol_new pri_tdm_rx_2_port_mixer_controls[] = {
9892 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9893 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9894 msm_routing_get_port_mixer,
9895 msm_routing_put_port_mixer),
9896 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9897 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9898 msm_routing_get_port_mixer,
9899 msm_routing_put_port_mixer),
9900 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9901 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9902 msm_routing_get_port_mixer,
9903 msm_routing_put_port_mixer),
9904 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9905 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9906 msm_routing_get_port_mixer,
9907 msm_routing_put_port_mixer),
9908 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9909 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9910 msm_routing_get_port_mixer,
9911 msm_routing_put_port_mixer),
9912 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9913 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9914 msm_routing_get_port_mixer,
9915 msm_routing_put_port_mixer),
9916 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9917 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9918 msm_routing_get_port_mixer,
9919 msm_routing_put_port_mixer),
9920 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9921 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9922 msm_routing_get_port_mixer,
9923 msm_routing_put_port_mixer),
9924 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9925 MSM_BACKEND_DAI_PRI_TDM_TX_0, 1, 0,
9926 msm_routing_get_port_mixer,
9927 msm_routing_put_port_mixer),
9928 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9929 MSM_BACKEND_DAI_PRI_TDM_TX_1, 1, 0,
9930 msm_routing_get_port_mixer,
9931 msm_routing_put_port_mixer),
9932 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9933 MSM_BACKEND_DAI_PRI_TDM_TX_2, 1, 0,
9934 msm_routing_get_port_mixer,
9935 msm_routing_put_port_mixer),
9936 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9937 MSM_BACKEND_DAI_PRI_TDM_TX_3, 1, 0,
9938 msm_routing_get_port_mixer,
9939 msm_routing_put_port_mixer),
9940 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9941 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9942 msm_routing_get_port_mixer,
9943 msm_routing_put_port_mixer),
9944 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9945 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9946 msm_routing_get_port_mixer,
9947 msm_routing_put_port_mixer),
9948 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9949 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9950 msm_routing_get_port_mixer,
9951 msm_routing_put_port_mixer),
9952 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9953 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9954 msm_routing_get_port_mixer,
9955 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309956 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9957 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9958 msm_routing_get_port_mixer,
9959 msm_routing_put_port_mixer),
9960 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9961 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9962 msm_routing_get_port_mixer,
9963 msm_routing_put_port_mixer),
9964 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9965 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9966 msm_routing_get_port_mixer,
9967 msm_routing_put_port_mixer),
9968 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9969 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9970 msm_routing_get_port_mixer,
9971 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309972};
9973
9974static const struct snd_kcontrol_new pri_tdm_rx_3_port_mixer_controls[] = {
9975 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9976 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9977 msm_routing_get_port_mixer,
9978 msm_routing_put_port_mixer),
9979 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9980 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9981 msm_routing_get_port_mixer,
9982 msm_routing_put_port_mixer),
9983 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9984 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9985 msm_routing_get_port_mixer,
9986 msm_routing_put_port_mixer),
9987 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9988 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9989 msm_routing_get_port_mixer,
9990 msm_routing_put_port_mixer),
9991 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9992 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9993 msm_routing_get_port_mixer,
9994 msm_routing_put_port_mixer),
9995 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9996 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9997 msm_routing_get_port_mixer,
9998 msm_routing_put_port_mixer),
9999 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
10000 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10001 msm_routing_get_port_mixer,
10002 msm_routing_put_port_mixer),
10003 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
10004 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10005 msm_routing_get_port_mixer,
10006 msm_routing_put_port_mixer),
10007 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_3,
10008 MSM_BACKEND_DAI_PRI_TDM_TX_0, 1, 0,
10009 msm_routing_get_port_mixer,
10010 msm_routing_put_port_mixer),
10011 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_3,
10012 MSM_BACKEND_DAI_PRI_TDM_TX_1, 1, 0,
10013 msm_routing_get_port_mixer,
10014 msm_routing_put_port_mixer),
10015 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_3,
10016 MSM_BACKEND_DAI_PRI_TDM_TX_2, 1, 0,
10017 msm_routing_get_port_mixer,
10018 msm_routing_put_port_mixer),
10019 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_3,
10020 MSM_BACKEND_DAI_PRI_TDM_TX_3, 1, 0,
10021 msm_routing_get_port_mixer,
10022 msm_routing_put_port_mixer),
10023 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_3,
10024 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10025 msm_routing_get_port_mixer,
10026 msm_routing_put_port_mixer),
10027 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_3,
10028 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10029 msm_routing_get_port_mixer,
10030 msm_routing_put_port_mixer),
10031 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_3,
10032 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10033 msm_routing_get_port_mixer,
10034 msm_routing_put_port_mixer),
10035 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_3,
10036 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10037 msm_routing_get_port_mixer,
10038 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010039 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_3,
10040 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10041 msm_routing_get_port_mixer,
10042 msm_routing_put_port_mixer),
10043 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_3,
10044 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10045 msm_routing_get_port_mixer,
10046 msm_routing_put_port_mixer),
10047 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_3,
10048 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10049 msm_routing_get_port_mixer,
10050 msm_routing_put_port_mixer),
10051 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_3,
10052 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10053 msm_routing_get_port_mixer,
10054 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010055};
10056
10057static const struct snd_kcontrol_new sec_tdm_rx_0_port_mixer_controls[] = {
10058 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
10059 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10060 msm_routing_get_port_mixer,
10061 msm_routing_put_port_mixer),
10062 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
10063 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10064 msm_routing_get_port_mixer,
10065 msm_routing_put_port_mixer),
10066 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
10067 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
10068 msm_routing_get_port_mixer,
10069 msm_routing_put_port_mixer),
10070 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
10071 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10072 msm_routing_get_port_mixer,
10073 msm_routing_put_port_mixer),
10074 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
10075 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10076 msm_routing_get_port_mixer,
10077 msm_routing_put_port_mixer),
10078 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
10079 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10080 msm_routing_get_port_mixer,
10081 msm_routing_put_port_mixer),
10082 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
10083 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10084 msm_routing_get_port_mixer,
10085 msm_routing_put_port_mixer),
10086 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
10087 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10088 msm_routing_get_port_mixer,
10089 msm_routing_put_port_mixer),
10090 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_0,
10091 MSM_BACKEND_DAI_SEC_TDM_TX_0, 1, 0,
10092 msm_routing_get_port_mixer,
10093 msm_routing_put_port_mixer),
10094 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_0,
10095 MSM_BACKEND_DAI_SEC_TDM_TX_1, 1, 0,
10096 msm_routing_get_port_mixer,
10097 msm_routing_put_port_mixer),
10098 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_0,
10099 MSM_BACKEND_DAI_SEC_TDM_TX_2, 1, 0,
10100 msm_routing_get_port_mixer,
10101 msm_routing_put_port_mixer),
10102 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_0,
10103 MSM_BACKEND_DAI_SEC_TDM_TX_3, 1, 0,
10104 msm_routing_get_port_mixer,
10105 msm_routing_put_port_mixer),
10106 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_0,
10107 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10108 msm_routing_get_port_mixer,
10109 msm_routing_put_port_mixer),
10110 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_0,
10111 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10112 msm_routing_get_port_mixer,
10113 msm_routing_put_port_mixer),
10114 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_0,
10115 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10116 msm_routing_get_port_mixer,
10117 msm_routing_put_port_mixer),
10118 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_0,
10119 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10120 msm_routing_get_port_mixer,
10121 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010122 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_0,
10123 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10124 msm_routing_get_port_mixer,
10125 msm_routing_put_port_mixer),
10126 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_0,
10127 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10128 msm_routing_get_port_mixer,
10129 msm_routing_put_port_mixer),
10130 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_0,
10131 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10132 msm_routing_get_port_mixer,
10133 msm_routing_put_port_mixer),
10134 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_0,
10135 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10136 msm_routing_get_port_mixer,
10137 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010138};
10139
10140static const struct snd_kcontrol_new sec_tdm_rx_1_port_mixer_controls[] = {
10141 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10142 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10143 msm_routing_get_port_mixer,
10144 msm_routing_put_port_mixer),
10145 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10146 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10147 msm_routing_get_port_mixer,
10148 msm_routing_put_port_mixer),
10149 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10150 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
10151 msm_routing_get_port_mixer,
10152 msm_routing_put_port_mixer),
10153 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10154 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10155 msm_routing_get_port_mixer,
10156 msm_routing_put_port_mixer),
10157 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10158 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10159 msm_routing_get_port_mixer,
10160 msm_routing_put_port_mixer),
10161 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10162 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10163 msm_routing_get_port_mixer,
10164 msm_routing_put_port_mixer),
10165 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10166 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10167 msm_routing_get_port_mixer,
10168 msm_routing_put_port_mixer),
10169 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10170 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10171 msm_routing_get_port_mixer,
10172 msm_routing_put_port_mixer),
10173 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10174 MSM_BACKEND_DAI_SEC_TDM_TX_0, 1, 0,
10175 msm_routing_get_port_mixer,
10176 msm_routing_put_port_mixer),
10177 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10178 MSM_BACKEND_DAI_SEC_TDM_TX_1, 1, 0,
10179 msm_routing_get_port_mixer,
10180 msm_routing_put_port_mixer),
10181 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10182 MSM_BACKEND_DAI_SEC_TDM_TX_2, 1, 0,
10183 msm_routing_get_port_mixer,
10184 msm_routing_put_port_mixer),
10185 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10186 MSM_BACKEND_DAI_SEC_TDM_TX_3, 1, 0,
10187 msm_routing_get_port_mixer,
10188 msm_routing_put_port_mixer),
10189 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10190 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10191 msm_routing_get_port_mixer,
10192 msm_routing_put_port_mixer),
10193 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10194 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10195 msm_routing_get_port_mixer,
10196 msm_routing_put_port_mixer),
10197 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10198 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10199 msm_routing_get_port_mixer,
10200 msm_routing_put_port_mixer),
10201 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10202 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10203 msm_routing_get_port_mixer,
10204 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010205 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10206 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10207 msm_routing_get_port_mixer,
10208 msm_routing_put_port_mixer),
10209 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10210 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10211 msm_routing_get_port_mixer,
10212 msm_routing_put_port_mixer),
10213 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10214 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10215 msm_routing_get_port_mixer,
10216 msm_routing_put_port_mixer),
10217 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_1,
10218 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10219 msm_routing_get_port_mixer,
10220 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010221};
10222
10223static const struct snd_kcontrol_new sec_tdm_rx_2_port_mixer_controls[] = {
10224 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10225 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10226 msm_routing_get_port_mixer,
10227 msm_routing_put_port_mixer),
10228 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10229 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10230 msm_routing_get_port_mixer,
10231 msm_routing_put_port_mixer),
10232 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10233 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
10234 msm_routing_get_port_mixer,
10235 msm_routing_put_port_mixer),
10236 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10237 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10238 msm_routing_get_port_mixer,
10239 msm_routing_put_port_mixer),
10240 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10241 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10242 msm_routing_get_port_mixer,
10243 msm_routing_put_port_mixer),
10244 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10245 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10246 msm_routing_get_port_mixer,
10247 msm_routing_put_port_mixer),
10248 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10249 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10250 msm_routing_get_port_mixer,
10251 msm_routing_put_port_mixer),
10252 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10253 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10254 msm_routing_get_port_mixer,
10255 msm_routing_put_port_mixer),
10256 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10257 MSM_BACKEND_DAI_SEC_TDM_TX_0, 1, 0,
10258 msm_routing_get_port_mixer,
10259 msm_routing_put_port_mixer),
10260 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10261 MSM_BACKEND_DAI_SEC_TDM_TX_1, 1, 0,
10262 msm_routing_get_port_mixer,
10263 msm_routing_put_port_mixer),
10264 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10265 MSM_BACKEND_DAI_SEC_TDM_TX_2, 1, 0,
10266 msm_routing_get_port_mixer,
10267 msm_routing_put_port_mixer),
10268 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10269 MSM_BACKEND_DAI_SEC_TDM_TX_3, 1, 0,
10270 msm_routing_get_port_mixer,
10271 msm_routing_put_port_mixer),
10272 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10273 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10274 msm_routing_get_port_mixer,
10275 msm_routing_put_port_mixer),
10276 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10277 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10278 msm_routing_get_port_mixer,
10279 msm_routing_put_port_mixer),
10280 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10281 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10282 msm_routing_get_port_mixer,
10283 msm_routing_put_port_mixer),
10284 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10285 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10286 msm_routing_get_port_mixer,
10287 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010288 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10289 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10290 msm_routing_get_port_mixer,
10291 msm_routing_put_port_mixer),
10292 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10293 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10294 msm_routing_get_port_mixer,
10295 msm_routing_put_port_mixer),
10296 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10297 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10298 msm_routing_get_port_mixer,
10299 msm_routing_put_port_mixer),
10300 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_2,
10301 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10302 msm_routing_get_port_mixer,
10303 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010304};
10305
10306static const struct snd_kcontrol_new sec_tdm_rx_3_port_mixer_controls[] = {
10307 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10308 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10309 msm_routing_get_port_mixer,
10310 msm_routing_put_port_mixer),
10311 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10312 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10313 msm_routing_get_port_mixer,
10314 msm_routing_put_port_mixer),
10315 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10316 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
10317 msm_routing_get_port_mixer,
10318 msm_routing_put_port_mixer),
10319 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10320 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10321 msm_routing_get_port_mixer,
10322 msm_routing_put_port_mixer),
10323 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10324 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10325 msm_routing_get_port_mixer,
10326 msm_routing_put_port_mixer),
10327 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10328 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10329 msm_routing_get_port_mixer,
10330 msm_routing_put_port_mixer),
10331 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10332 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10333 msm_routing_get_port_mixer,
10334 msm_routing_put_port_mixer),
10335 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10336 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10337 msm_routing_get_port_mixer,
10338 msm_routing_put_port_mixer),
10339 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10340 MSM_BACKEND_DAI_SEC_TDM_TX_0, 1, 0,
10341 msm_routing_get_port_mixer,
10342 msm_routing_put_port_mixer),
10343 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10344 MSM_BACKEND_DAI_SEC_TDM_TX_1, 1, 0,
10345 msm_routing_get_port_mixer,
10346 msm_routing_put_port_mixer),
10347 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10348 MSM_BACKEND_DAI_SEC_TDM_TX_2, 1, 0,
10349 msm_routing_get_port_mixer,
10350 msm_routing_put_port_mixer),
10351 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10352 MSM_BACKEND_DAI_SEC_TDM_TX_3, 1, 0,
10353 msm_routing_get_port_mixer,
10354 msm_routing_put_port_mixer),
10355 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10356 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10357 msm_routing_get_port_mixer,
10358 msm_routing_put_port_mixer),
10359 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10360 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10361 msm_routing_get_port_mixer,
10362 msm_routing_put_port_mixer),
10363 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10364 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10365 msm_routing_get_port_mixer,
10366 msm_routing_put_port_mixer),
10367 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10368 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10369 msm_routing_get_port_mixer,
10370 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010371 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10372 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10373 msm_routing_get_port_mixer,
10374 msm_routing_put_port_mixer),
10375 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10376 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10377 msm_routing_get_port_mixer,
10378 msm_routing_put_port_mixer),
10379 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10380 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10381 msm_routing_get_port_mixer,
10382 msm_routing_put_port_mixer),
10383 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10384 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10385 msm_routing_get_port_mixer,
10386 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010387};
10388
10389static const struct snd_kcontrol_new tert_tdm_rx_0_port_mixer_controls[] = {
10390 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10391 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10392 msm_routing_get_port_mixer,
10393 msm_routing_put_port_mixer),
10394 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10395 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10396 msm_routing_get_port_mixer,
10397 msm_routing_put_port_mixer),
10398 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10399 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
10400 msm_routing_get_port_mixer,
10401 msm_routing_put_port_mixer),
10402 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10403 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10404 msm_routing_get_port_mixer,
10405 msm_routing_put_port_mixer),
10406 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10407 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10408 msm_routing_get_port_mixer,
10409 msm_routing_put_port_mixer),
10410 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10411 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10412 msm_routing_get_port_mixer,
10413 msm_routing_put_port_mixer),
10414 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10415 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10416 msm_routing_get_port_mixer,
10417 msm_routing_put_port_mixer),
10418 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10419 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10420 msm_routing_get_port_mixer,
10421 msm_routing_put_port_mixer),
10422 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10423 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10424 msm_routing_get_port_mixer,
10425 msm_routing_put_port_mixer),
10426 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10427 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10428 msm_routing_get_port_mixer,
10429 msm_routing_put_port_mixer),
10430 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10431 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10432 msm_routing_get_port_mixer,
10433 msm_routing_put_port_mixer),
10434 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10435 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10436 msm_routing_get_port_mixer,
10437 msm_routing_put_port_mixer),
10438 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10439 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10440 msm_routing_get_port_mixer,
10441 msm_routing_put_port_mixer),
10442 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10443 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10444 msm_routing_get_port_mixer,
10445 msm_routing_put_port_mixer),
10446 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10447 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10448 msm_routing_get_port_mixer,
10449 msm_routing_put_port_mixer),
10450 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10451 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10452 msm_routing_get_port_mixer,
10453 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010454 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10455 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10456 msm_routing_get_port_mixer,
10457 msm_routing_put_port_mixer),
10458 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10459 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10460 msm_routing_get_port_mixer,
10461 msm_routing_put_port_mixer),
10462 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10463 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10464 msm_routing_get_port_mixer,
10465 msm_routing_put_port_mixer),
10466 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10467 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10468 msm_routing_get_port_mixer,
10469 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010470};
10471
10472static const struct snd_kcontrol_new tert_tdm_rx_1_port_mixer_controls[] = {
10473 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10474 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10475 msm_routing_get_port_mixer,
10476 msm_routing_put_port_mixer),
10477 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10478 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10479 msm_routing_get_port_mixer,
10480 msm_routing_put_port_mixer),
10481 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10482 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
10483 msm_routing_get_port_mixer,
10484 msm_routing_put_port_mixer),
10485 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10486 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10487 msm_routing_get_port_mixer,
10488 msm_routing_put_port_mixer),
10489 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10490 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10491 msm_routing_get_port_mixer,
10492 msm_routing_put_port_mixer),
10493 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10494 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10495 msm_routing_get_port_mixer,
10496 msm_routing_put_port_mixer),
10497 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10498 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10499 msm_routing_get_port_mixer,
10500 msm_routing_put_port_mixer),
10501 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10502 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10503 msm_routing_get_port_mixer,
10504 msm_routing_put_port_mixer),
10505 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10506 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10507 msm_routing_get_port_mixer,
10508 msm_routing_put_port_mixer),
10509 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10510 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10511 msm_routing_get_port_mixer,
10512 msm_routing_put_port_mixer),
10513 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10514 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10515 msm_routing_get_port_mixer,
10516 msm_routing_put_port_mixer),
10517 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10518 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10519 msm_routing_get_port_mixer,
10520 msm_routing_put_port_mixer),
10521 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10522 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10523 msm_routing_get_port_mixer,
10524 msm_routing_put_port_mixer),
10525 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10526 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10527 msm_routing_get_port_mixer,
10528 msm_routing_put_port_mixer),
10529 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10530 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10531 msm_routing_get_port_mixer,
10532 msm_routing_put_port_mixer),
10533 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10534 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10535 msm_routing_get_port_mixer,
10536 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010537 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10538 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10539 msm_routing_get_port_mixer,
10540 msm_routing_put_port_mixer),
10541 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10542 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10543 msm_routing_get_port_mixer,
10544 msm_routing_put_port_mixer),
10545 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10546 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10547 msm_routing_get_port_mixer,
10548 msm_routing_put_port_mixer),
10549 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10550 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10551 msm_routing_get_port_mixer,
10552 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010553};
10554
10555static const struct snd_kcontrol_new tert_tdm_rx_2_port_mixer_controls[] = {
10556 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10557 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10558 msm_routing_get_port_mixer,
10559 msm_routing_put_port_mixer),
10560 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10561 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10562 msm_routing_get_port_mixer,
10563 msm_routing_put_port_mixer),
10564 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10565 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
10566 msm_routing_get_port_mixer,
10567 msm_routing_put_port_mixer),
10568 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10569 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10570 msm_routing_get_port_mixer,
10571 msm_routing_put_port_mixer),
10572 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10573 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10574 msm_routing_get_port_mixer,
10575 msm_routing_put_port_mixer),
10576 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10577 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10578 msm_routing_get_port_mixer,
10579 msm_routing_put_port_mixer),
10580 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10581 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10582 msm_routing_get_port_mixer,
10583 msm_routing_put_port_mixer),
10584 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10585 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10586 msm_routing_get_port_mixer,
10587 msm_routing_put_port_mixer),
10588 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10589 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10590 msm_routing_get_port_mixer,
10591 msm_routing_put_port_mixer),
10592 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10593 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10594 msm_routing_get_port_mixer,
10595 msm_routing_put_port_mixer),
10596 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10597 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10598 msm_routing_get_port_mixer,
10599 msm_routing_put_port_mixer),
10600 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10601 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10602 msm_routing_get_port_mixer,
10603 msm_routing_put_port_mixer),
10604 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10605 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10606 msm_routing_get_port_mixer,
10607 msm_routing_put_port_mixer),
10608 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10609 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10610 msm_routing_get_port_mixer,
10611 msm_routing_put_port_mixer),
10612 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10613 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10614 msm_routing_get_port_mixer,
10615 msm_routing_put_port_mixer),
10616 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10617 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10618 msm_routing_get_port_mixer,
10619 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010620 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10621 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10622 msm_routing_get_port_mixer,
10623 msm_routing_put_port_mixer),
10624 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10625 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10626 msm_routing_get_port_mixer,
10627 msm_routing_put_port_mixer),
10628 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10629 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10630 msm_routing_get_port_mixer,
10631 msm_routing_put_port_mixer),
10632 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10633 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10634 msm_routing_get_port_mixer,
10635 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010636};
10637
10638static const struct snd_kcontrol_new tert_tdm_rx_3_port_mixer_controls[] = {
10639 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10640 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10641 msm_routing_get_port_mixer,
10642 msm_routing_put_port_mixer),
10643 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10644 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10645 msm_routing_get_port_mixer,
10646 msm_routing_put_port_mixer),
10647 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10648 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
10649 msm_routing_get_port_mixer,
10650 msm_routing_put_port_mixer),
10651 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10652 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10653 msm_routing_get_port_mixer,
10654 msm_routing_put_port_mixer),
10655 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10656 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10657 msm_routing_get_port_mixer,
10658 msm_routing_put_port_mixer),
10659 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10660 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10661 msm_routing_get_port_mixer,
10662 msm_routing_put_port_mixer),
10663 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10664 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10665 msm_routing_get_port_mixer,
10666 msm_routing_put_port_mixer),
10667 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10668 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10669 msm_routing_get_port_mixer,
10670 msm_routing_put_port_mixer),
10671 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10672 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10673 msm_routing_get_port_mixer,
10674 msm_routing_put_port_mixer),
10675 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10676 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10677 msm_routing_get_port_mixer,
10678 msm_routing_put_port_mixer),
10679 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10680 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10681 msm_routing_get_port_mixer,
10682 msm_routing_put_port_mixer),
10683 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10684 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10685 msm_routing_get_port_mixer,
10686 msm_routing_put_port_mixer),
10687 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10688 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10689 msm_routing_get_port_mixer,
10690 msm_routing_put_port_mixer),
10691 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10692 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10693 msm_routing_get_port_mixer,
10694 msm_routing_put_port_mixer),
10695 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10696 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10697 msm_routing_get_port_mixer,
10698 msm_routing_put_port_mixer),
10699 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10700 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10701 msm_routing_get_port_mixer,
10702 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010703 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10704 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10705 msm_routing_get_port_mixer,
10706 msm_routing_put_port_mixer),
10707 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10708 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10709 msm_routing_get_port_mixer,
10710 msm_routing_put_port_mixer),
10711 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10712 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10713 msm_routing_get_port_mixer,
10714 msm_routing_put_port_mixer),
10715 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10716 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10717 msm_routing_get_port_mixer,
10718 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010719};
10720
10721static const struct snd_kcontrol_new quat_tdm_rx_0_port_mixer_controls[] = {
10722 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10723 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10724 msm_routing_get_port_mixer,
10725 msm_routing_put_port_mixer),
10726 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10727 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10728 msm_routing_get_port_mixer,
10729 msm_routing_put_port_mixer),
10730 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10731 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10732 msm_routing_get_port_mixer,
10733 msm_routing_put_port_mixer),
10734 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10735 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10736 msm_routing_get_port_mixer,
10737 msm_routing_put_port_mixer),
10738 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10739 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10740 msm_routing_get_port_mixer,
10741 msm_routing_put_port_mixer),
10742 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10743 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10744 msm_routing_get_port_mixer,
10745 msm_routing_put_port_mixer),
10746 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10747 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10748 msm_routing_get_port_mixer,
10749 msm_routing_put_port_mixer),
10750 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10751 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10752 msm_routing_get_port_mixer,
10753 msm_routing_put_port_mixer),
10754 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10755 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10756 msm_routing_get_port_mixer,
10757 msm_routing_put_port_mixer),
10758 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10759 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10760 msm_routing_get_port_mixer,
10761 msm_routing_put_port_mixer),
10762 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10763 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10764 msm_routing_get_port_mixer,
10765 msm_routing_put_port_mixer),
10766 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10767 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10768 msm_routing_get_port_mixer,
10769 msm_routing_put_port_mixer),
10770 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10771 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10772 msm_routing_get_port_mixer,
10773 msm_routing_put_port_mixer),
10774 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10775 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10776 msm_routing_get_port_mixer,
10777 msm_routing_put_port_mixer),
10778 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10779 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10780 msm_routing_get_port_mixer,
10781 msm_routing_put_port_mixer),
10782 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10783 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10784 msm_routing_get_port_mixer,
10785 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010786 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10787 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10788 msm_routing_get_port_mixer,
10789 msm_routing_put_port_mixer),
10790 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10791 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10792 msm_routing_get_port_mixer,
10793 msm_routing_put_port_mixer),
10794 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10795 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10796 msm_routing_get_port_mixer,
10797 msm_routing_put_port_mixer),
10798 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10799 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10800 msm_routing_get_port_mixer,
10801 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010802};
10803
10804static const struct snd_kcontrol_new quat_tdm_rx_1_port_mixer_controls[] = {
10805 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10806 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10807 msm_routing_get_port_mixer,
10808 msm_routing_put_port_mixer),
10809 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10810 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10811 msm_routing_get_port_mixer,
10812 msm_routing_put_port_mixer),
10813 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10814 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10815 msm_routing_get_port_mixer,
10816 msm_routing_put_port_mixer),
10817 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10818 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10819 msm_routing_get_port_mixer,
10820 msm_routing_put_port_mixer),
10821 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10822 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10823 msm_routing_get_port_mixer,
10824 msm_routing_put_port_mixer),
10825 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10826 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10827 msm_routing_get_port_mixer,
10828 msm_routing_put_port_mixer),
10829 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10830 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10831 msm_routing_get_port_mixer,
10832 msm_routing_put_port_mixer),
10833 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10834 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10835 msm_routing_get_port_mixer,
10836 msm_routing_put_port_mixer),
10837 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10838 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10839 msm_routing_get_port_mixer,
10840 msm_routing_put_port_mixer),
10841 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10842 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10843 msm_routing_get_port_mixer,
10844 msm_routing_put_port_mixer),
10845 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10846 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10847 msm_routing_get_port_mixer,
10848 msm_routing_put_port_mixer),
10849 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10850 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10851 msm_routing_get_port_mixer,
10852 msm_routing_put_port_mixer),
10853 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10854 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10855 msm_routing_get_port_mixer,
10856 msm_routing_put_port_mixer),
10857 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10858 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10859 msm_routing_get_port_mixer,
10860 msm_routing_put_port_mixer),
10861 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10862 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10863 msm_routing_get_port_mixer,
10864 msm_routing_put_port_mixer),
10865 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10866 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10867 msm_routing_get_port_mixer,
10868 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010869 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10870 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10871 msm_routing_get_port_mixer,
10872 msm_routing_put_port_mixer),
10873 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10874 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10875 msm_routing_get_port_mixer,
10876 msm_routing_put_port_mixer),
10877 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10878 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10879 msm_routing_get_port_mixer,
10880 msm_routing_put_port_mixer),
10881 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10882 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10883 msm_routing_get_port_mixer,
10884 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010885};
10886
10887static const struct snd_kcontrol_new quat_tdm_rx_2_port_mixer_controls[] = {
10888 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10889 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10890 msm_routing_get_port_mixer,
10891 msm_routing_put_port_mixer),
10892 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10893 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10894 msm_routing_get_port_mixer,
10895 msm_routing_put_port_mixer),
10896 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10897 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10898 msm_routing_get_port_mixer,
10899 msm_routing_put_port_mixer),
10900 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10901 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10902 msm_routing_get_port_mixer,
10903 msm_routing_put_port_mixer),
10904 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10905 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10906 msm_routing_get_port_mixer,
10907 msm_routing_put_port_mixer),
10908 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10909 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10910 msm_routing_get_port_mixer,
10911 msm_routing_put_port_mixer),
10912 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10913 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10914 msm_routing_get_port_mixer,
10915 msm_routing_put_port_mixer),
10916 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10917 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10918 msm_routing_get_port_mixer,
10919 msm_routing_put_port_mixer),
10920 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10921 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10922 msm_routing_get_port_mixer,
10923 msm_routing_put_port_mixer),
10924 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10925 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10926 msm_routing_get_port_mixer,
10927 msm_routing_put_port_mixer),
10928 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10929 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10930 msm_routing_get_port_mixer,
10931 msm_routing_put_port_mixer),
10932 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10933 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10934 msm_routing_get_port_mixer,
10935 msm_routing_put_port_mixer),
10936 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10937 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10938 msm_routing_get_port_mixer,
10939 msm_routing_put_port_mixer),
10940 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10941 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10942 msm_routing_get_port_mixer,
10943 msm_routing_put_port_mixer),
10944 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10945 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10946 msm_routing_get_port_mixer,
10947 msm_routing_put_port_mixer),
10948 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10949 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10950 msm_routing_get_port_mixer,
10951 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010952 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10953 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10954 msm_routing_get_port_mixer,
10955 msm_routing_put_port_mixer),
10956 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10957 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10958 msm_routing_get_port_mixer,
10959 msm_routing_put_port_mixer),
10960 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10961 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10962 msm_routing_get_port_mixer,
10963 msm_routing_put_port_mixer),
10964 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10965 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10966 msm_routing_get_port_mixer,
10967 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010968};
10969
10970static const struct snd_kcontrol_new quat_tdm_rx_3_port_mixer_controls[] = {
10971 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10972 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10973 msm_routing_get_port_mixer,
10974 msm_routing_put_port_mixer),
10975 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10976 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10977 msm_routing_get_port_mixer,
10978 msm_routing_put_port_mixer),
10979 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10980 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10981 msm_routing_get_port_mixer,
10982 msm_routing_put_port_mixer),
10983 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10984 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10985 msm_routing_get_port_mixer,
10986 msm_routing_put_port_mixer),
10987 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10988 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10989 msm_routing_get_port_mixer,
10990 msm_routing_put_port_mixer),
10991 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10992 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10993 msm_routing_get_port_mixer,
10994 msm_routing_put_port_mixer),
10995 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10996 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10997 msm_routing_get_port_mixer,
10998 msm_routing_put_port_mixer),
10999 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
11000 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
11001 msm_routing_get_port_mixer,
11002 msm_routing_put_port_mixer),
11003 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
11004 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
11005 msm_routing_get_port_mixer,
11006 msm_routing_put_port_mixer),
11007 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
11008 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
11009 msm_routing_get_port_mixer,
11010 msm_routing_put_port_mixer),
11011 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
11012 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
11013 msm_routing_get_port_mixer,
11014 msm_routing_put_port_mixer),
11015 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
11016 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
11017 msm_routing_get_port_mixer,
11018 msm_routing_put_port_mixer),
11019 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
11020 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
11021 msm_routing_get_port_mixer,
11022 msm_routing_put_port_mixer),
11023 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
11024 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
11025 msm_routing_get_port_mixer,
11026 msm_routing_put_port_mixer),
11027 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
11028 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
11029 msm_routing_get_port_mixer,
11030 msm_routing_put_port_mixer),
11031 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
11032 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
11033 msm_routing_get_port_mixer,
11034 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053011035 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
11036 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
11037 msm_routing_get_port_mixer,
11038 msm_routing_put_port_mixer),
11039 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
11040 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
11041 msm_routing_get_port_mixer,
11042 msm_routing_put_port_mixer),
11043 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
11044 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
11045 msm_routing_get_port_mixer,
11046 msm_routing_put_port_mixer),
11047 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
11048 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
11049 msm_routing_get_port_mixer,
11050 msm_routing_put_port_mixer),
11051};
11052
11053static const struct snd_kcontrol_new quin_tdm_rx_0_port_mixer_controls[] = {
11054 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
11055 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
11056 msm_routing_get_port_mixer,
11057 msm_routing_put_port_mixer),
11058 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
11059 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
11060 msm_routing_get_port_mixer,
11061 msm_routing_put_port_mixer),
11062 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
11063 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
11064 msm_routing_get_port_mixer,
11065 msm_routing_put_port_mixer),
11066 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
11067 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
11068 msm_routing_get_port_mixer,
11069 msm_routing_put_port_mixer),
11070 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
11071 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
11072 msm_routing_get_port_mixer,
11073 msm_routing_put_port_mixer),
11074 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
11075 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
11076 msm_routing_get_port_mixer,
11077 msm_routing_put_port_mixer),
11078 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
11079 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
11080 msm_routing_get_port_mixer,
11081 msm_routing_put_port_mixer),
11082 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
11083 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
11084 msm_routing_get_port_mixer,
11085 msm_routing_put_port_mixer),
11086 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
11087 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
11088 msm_routing_get_port_mixer,
11089 msm_routing_put_port_mixer),
11090 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
11091 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
11092 msm_routing_get_port_mixer,
11093 msm_routing_put_port_mixer),
11094 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
11095 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
11096 msm_routing_get_port_mixer,
11097 msm_routing_put_port_mixer),
11098 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
11099 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
11100 msm_routing_get_port_mixer,
11101 msm_routing_put_port_mixer),
11102 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
11103 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
11104 msm_routing_get_port_mixer,
11105 msm_routing_put_port_mixer),
11106 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
11107 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
11108 msm_routing_get_port_mixer,
11109 msm_routing_put_port_mixer),
11110 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
11111 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
11112 msm_routing_get_port_mixer,
11113 msm_routing_put_port_mixer),
11114 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
11115 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
11116 msm_routing_get_port_mixer,
11117 msm_routing_put_port_mixer),
11118 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
11119 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
11120 msm_routing_get_port_mixer,
11121 msm_routing_put_port_mixer),
11122 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
11123 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
11124 msm_routing_get_port_mixer,
11125 msm_routing_put_port_mixer),
11126 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
11127 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
11128 msm_routing_get_port_mixer,
11129 msm_routing_put_port_mixer),
11130 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
11131 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
11132 msm_routing_get_port_mixer,
11133 msm_routing_put_port_mixer),
11134};
11135
11136static const struct snd_kcontrol_new quin_tdm_rx_1_port_mixer_controls[] = {
11137 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11138 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
11139 msm_routing_get_port_mixer,
11140 msm_routing_put_port_mixer),
11141 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11142 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
11143 msm_routing_get_port_mixer,
11144 msm_routing_put_port_mixer),
11145 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11146 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
11147 msm_routing_get_port_mixer,
11148 msm_routing_put_port_mixer),
11149 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11150 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
11151 msm_routing_get_port_mixer,
11152 msm_routing_put_port_mixer),
11153 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11154 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
11155 msm_routing_get_port_mixer,
11156 msm_routing_put_port_mixer),
11157 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11158 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
11159 msm_routing_get_port_mixer,
11160 msm_routing_put_port_mixer),
11161 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11162 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
11163 msm_routing_get_port_mixer,
11164 msm_routing_put_port_mixer),
11165 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11166 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
11167 msm_routing_get_port_mixer,
11168 msm_routing_put_port_mixer),
11169 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11170 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
11171 msm_routing_get_port_mixer,
11172 msm_routing_put_port_mixer),
11173 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11174 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
11175 msm_routing_get_port_mixer,
11176 msm_routing_put_port_mixer),
11177 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11178 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
11179 msm_routing_get_port_mixer,
11180 msm_routing_put_port_mixer),
11181 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11182 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
11183 msm_routing_get_port_mixer,
11184 msm_routing_put_port_mixer),
11185 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11186 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
11187 msm_routing_get_port_mixer,
11188 msm_routing_put_port_mixer),
11189 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11190 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
11191 msm_routing_get_port_mixer,
11192 msm_routing_put_port_mixer),
11193 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11194 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
11195 msm_routing_get_port_mixer,
11196 msm_routing_put_port_mixer),
11197 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11198 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
11199 msm_routing_get_port_mixer,
11200 msm_routing_put_port_mixer),
11201 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11202 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
11203 msm_routing_get_port_mixer,
11204 msm_routing_put_port_mixer),
11205 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11206 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
11207 msm_routing_get_port_mixer,
11208 msm_routing_put_port_mixer),
11209 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11210 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
11211 msm_routing_get_port_mixer,
11212 msm_routing_put_port_mixer),
11213 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
11214 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
11215 msm_routing_get_port_mixer,
11216 msm_routing_put_port_mixer),
11217};
11218
11219static const struct snd_kcontrol_new quin_tdm_rx_2_port_mixer_controls[] = {
11220 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11221 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
11222 msm_routing_get_port_mixer,
11223 msm_routing_put_port_mixer),
11224 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11225 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
11226 msm_routing_get_port_mixer,
11227 msm_routing_put_port_mixer),
11228 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11229 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
11230 msm_routing_get_port_mixer,
11231 msm_routing_put_port_mixer),
11232 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11233 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
11234 msm_routing_get_port_mixer,
11235 msm_routing_put_port_mixer),
11236 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11237 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
11238 msm_routing_get_port_mixer,
11239 msm_routing_put_port_mixer),
11240 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11241 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
11242 msm_routing_get_port_mixer,
11243 msm_routing_put_port_mixer),
11244 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11245 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
11246 msm_routing_get_port_mixer,
11247 msm_routing_put_port_mixer),
11248 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11249 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
11250 msm_routing_get_port_mixer,
11251 msm_routing_put_port_mixer),
11252 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11253 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
11254 msm_routing_get_port_mixer,
11255 msm_routing_put_port_mixer),
11256 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11257 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
11258 msm_routing_get_port_mixer,
11259 msm_routing_put_port_mixer),
11260 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11261 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
11262 msm_routing_get_port_mixer,
11263 msm_routing_put_port_mixer),
11264 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11265 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
11266 msm_routing_get_port_mixer,
11267 msm_routing_put_port_mixer),
11268 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11269 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
11270 msm_routing_get_port_mixer,
11271 msm_routing_put_port_mixer),
11272 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11273 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
11274 msm_routing_get_port_mixer,
11275 msm_routing_put_port_mixer),
11276 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11277 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
11278 msm_routing_get_port_mixer,
11279 msm_routing_put_port_mixer),
11280 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11281 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
11282 msm_routing_get_port_mixer,
11283 msm_routing_put_port_mixer),
11284 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11285 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
11286 msm_routing_get_port_mixer,
11287 msm_routing_put_port_mixer),
11288 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11289 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
11290 msm_routing_get_port_mixer,
11291 msm_routing_put_port_mixer),
11292 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11293 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
11294 msm_routing_get_port_mixer,
11295 msm_routing_put_port_mixer),
11296 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
11297 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
11298 msm_routing_get_port_mixer,
11299 msm_routing_put_port_mixer),
11300};
11301
11302static const struct snd_kcontrol_new quin_tdm_rx_3_port_mixer_controls[] = {
11303 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11304 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
11305 msm_routing_get_port_mixer,
11306 msm_routing_put_port_mixer),
11307 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11308 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
11309 msm_routing_get_port_mixer,
11310 msm_routing_put_port_mixer),
11311 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11312 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
11313 msm_routing_get_port_mixer,
11314 msm_routing_put_port_mixer),
11315 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11316 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
11317 msm_routing_get_port_mixer,
11318 msm_routing_put_port_mixer),
11319 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11320 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
11321 msm_routing_get_port_mixer,
11322 msm_routing_put_port_mixer),
11323 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11324 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
11325 msm_routing_get_port_mixer,
11326 msm_routing_put_port_mixer),
11327 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11328 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
11329 msm_routing_get_port_mixer,
11330 msm_routing_put_port_mixer),
11331 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11332 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
11333 msm_routing_get_port_mixer,
11334 msm_routing_put_port_mixer),
11335 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11336 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
11337 msm_routing_get_port_mixer,
11338 msm_routing_put_port_mixer),
11339 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11340 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
11341 msm_routing_get_port_mixer,
11342 msm_routing_put_port_mixer),
11343 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11344 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
11345 msm_routing_get_port_mixer,
11346 msm_routing_put_port_mixer),
11347 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11348 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
11349 msm_routing_get_port_mixer,
11350 msm_routing_put_port_mixer),
11351 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11352 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
11353 msm_routing_get_port_mixer,
11354 msm_routing_put_port_mixer),
11355 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11356 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
11357 msm_routing_get_port_mixer,
11358 msm_routing_put_port_mixer),
11359 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11360 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
11361 msm_routing_get_port_mixer,
11362 msm_routing_put_port_mixer),
11363 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11364 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
11365 msm_routing_get_port_mixer,
11366 msm_routing_put_port_mixer),
11367 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11368 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
11369 msm_routing_get_port_mixer,
11370 msm_routing_put_port_mixer),
11371 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11372 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
11373 msm_routing_get_port_mixer,
11374 msm_routing_put_port_mixer),
11375 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11376 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
11377 msm_routing_get_port_mixer,
11378 msm_routing_put_port_mixer),
11379 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11380 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
11381 msm_routing_get_port_mixer,
11382 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011383};
11384
11385static const struct snd_kcontrol_new tert_mi2s_rx_port_mixer_controls[] = {
11386 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
11387 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11388 msm_routing_put_port_mixer),
11389 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
11390 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11391 msm_routing_put_port_mixer),
11392 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
11393 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
11394 msm_routing_put_port_mixer),
11395 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
11396 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11397 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053011398 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
11399 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11400 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011401 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
11402 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11403 msm_routing_put_port_mixer),
11404 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
11405 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
11406 msm_routing_put_port_mixer),
11407};
11408
11409static const struct snd_kcontrol_new sec_mi2s_rx_port_mixer_controls[] = {
11410 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11411 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11412 msm_routing_put_port_mixer),
11413 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11414 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11415 msm_routing_put_port_mixer),
11416 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11417 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11418 msm_routing_put_port_mixer),
11419 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11420 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11421 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053011422 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11423 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11424 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011425 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11426 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
11427 msm_routing_put_port_mixer),
11428 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11429 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
11430 msm_routing_put_port_mixer),
11431 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11432 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
11433 msm_routing_put_port_mixer),
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -080011434 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11435 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
11436 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011437};
11438
11439static const struct snd_kcontrol_new lsm1_mixer_controls[] = {
11440 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11441 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11442 msm_routing_put_listen_mixer),
11443 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11444 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11445 msm_routing_put_listen_mixer),
11446 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11447 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11448 msm_routing_put_listen_mixer),
11449 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11450 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11451 msm_routing_put_listen_mixer),
11452 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11453 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11454 msm_routing_put_listen_mixer),
11455 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11456 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11457 msm_routing_put_listen_mixer),
11458 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11459 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11460 msm_routing_put_listen_mixer),
11461 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11462 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11463 msm_routing_put_listen_mixer),
Ashish Jain01b10322018-05-12 15:37:44 +053011464 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
11465 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11466 msm_routing_put_listen_mixer),
11467 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
11468 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11469 msm_routing_put_listen_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011470};
11471
11472static const struct snd_kcontrol_new lsm2_mixer_controls[] = {
11473 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11474 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11475 msm_routing_put_listen_mixer),
11476 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11477 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11478 msm_routing_put_listen_mixer),
11479 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11480 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11481 msm_routing_put_listen_mixer),
11482 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11483 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11484 msm_routing_put_listen_mixer),
11485 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11486 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11487 msm_routing_put_listen_mixer),
11488 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11489 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11490 msm_routing_put_listen_mixer),
11491 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11492 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11493 msm_routing_put_listen_mixer),
11494 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11495 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11496 msm_routing_put_listen_mixer),
Ashish Jain01b10322018-05-12 15:37:44 +053011497 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
11498 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11499 msm_routing_put_listen_mixer),
11500 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
11501 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11502 msm_routing_put_listen_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011503};
11504
11505static const struct snd_kcontrol_new lsm3_mixer_controls[] = {
11506 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11507 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11508 msm_routing_put_listen_mixer),
11509 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11510 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11511 msm_routing_put_listen_mixer),
11512 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11513 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11514 msm_routing_put_listen_mixer),
11515 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11516 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11517 msm_routing_put_listen_mixer),
11518 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11519 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11520 msm_routing_put_listen_mixer),
11521 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11522 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11523 msm_routing_put_listen_mixer),
11524 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11525 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11526 msm_routing_put_listen_mixer),
11527 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11528 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11529 msm_routing_put_listen_mixer),
Ashish Jain01b10322018-05-12 15:37:44 +053011530 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
11531 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11532 msm_routing_put_listen_mixer),
11533 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
11534 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11535 msm_routing_put_listen_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011536};
11537
11538static const struct snd_kcontrol_new lsm4_mixer_controls[] = {
11539 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11540 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11541 msm_routing_put_listen_mixer),
11542 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11543 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11544 msm_routing_put_listen_mixer),
11545 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11546 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11547 msm_routing_put_listen_mixer),
11548 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11549 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11550 msm_routing_put_listen_mixer),
11551 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11552 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11553 msm_routing_put_listen_mixer),
11554 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11555 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11556 msm_routing_put_listen_mixer),
11557 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11558 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11559 msm_routing_put_listen_mixer),
11560 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11561 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11562 msm_routing_put_listen_mixer),
Ashish Jain01b10322018-05-12 15:37:44 +053011563 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
11564 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11565 msm_routing_put_listen_mixer),
11566 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
11567 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11568 msm_routing_put_listen_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011569};
11570
11571static const struct snd_kcontrol_new lsm5_mixer_controls[] = {
11572 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11573 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11574 msm_routing_put_listen_mixer),
11575 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11576 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11577 msm_routing_put_listen_mixer),
11578 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11579 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11580 msm_routing_put_listen_mixer),
11581 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11582 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11583 msm_routing_put_listen_mixer),
11584 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11585 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11586 msm_routing_put_listen_mixer),
11587 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11588 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11589 msm_routing_put_listen_mixer),
11590 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11591 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11592 msm_routing_put_listen_mixer),
11593 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11594 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11595 msm_routing_put_listen_mixer),
Ashish Jain01b10322018-05-12 15:37:44 +053011596 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
11597 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11598 msm_routing_put_listen_mixer),
11599 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
11600 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11601 msm_routing_put_listen_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011602};
11603
11604static const struct snd_kcontrol_new lsm6_mixer_controls[] = {
11605 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11606 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11607 msm_routing_put_listen_mixer),
11608 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11609 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11610 msm_routing_put_listen_mixer),
11611 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11612 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11613 msm_routing_put_listen_mixer),
11614 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11615 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11616 msm_routing_put_listen_mixer),
11617 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11618 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11619 msm_routing_put_listen_mixer),
11620 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11621 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11622 msm_routing_put_listen_mixer),
11623 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11624 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11625 msm_routing_put_listen_mixer),
11626 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11627 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11628 msm_routing_put_listen_mixer),
Ashish Jain01b10322018-05-12 15:37:44 +053011629 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
11630 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11631 msm_routing_put_listen_mixer),
11632 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
11633 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11634 msm_routing_put_listen_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011635};
11636
11637static const struct snd_kcontrol_new lsm7_mixer_controls[] = {
11638 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11639 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11640 msm_routing_put_listen_mixer),
11641 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11642 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11643 msm_routing_put_listen_mixer),
11644 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11645 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11646 msm_routing_put_listen_mixer),
11647 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11648 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11649 msm_routing_put_listen_mixer),
11650 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11651 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11652 msm_routing_put_listen_mixer),
11653 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11654 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11655 msm_routing_put_listen_mixer),
11656 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11657 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11658 msm_routing_put_listen_mixer),
11659 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11660 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11661 msm_routing_put_listen_mixer),
Ashish Jain01b10322018-05-12 15:37:44 +053011662 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
11663 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11664 msm_routing_put_listen_mixer),
11665 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
11666 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11667 msm_routing_put_listen_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011668};
11669
11670static const struct snd_kcontrol_new lsm8_mixer_controls[] = {
11671 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11672 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11673 msm_routing_put_listen_mixer),
11674 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11675 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11676 msm_routing_put_listen_mixer),
11677 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11678 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11679 msm_routing_put_listen_mixer),
11680 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11681 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11682 msm_routing_put_listen_mixer),
11683 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11684 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11685 msm_routing_put_listen_mixer),
11686 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11687 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11688 msm_routing_put_listen_mixer),
11689 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11690 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11691 msm_routing_put_listen_mixer),
11692 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11693 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11694 msm_routing_put_listen_mixer),
Ashish Jain01b10322018-05-12 15:37:44 +053011695 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
11696 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11697 msm_routing_put_listen_mixer),
11698 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
11699 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11700 msm_routing_put_listen_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011701};
11702
11703static const struct snd_kcontrol_new slim_fm_switch_mixer_controls =
11704 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11705 0, 1, 0, msm_routing_get_switch_mixer,
11706 msm_routing_put_switch_mixer);
11707
11708static const struct snd_kcontrol_new slim1_fm_switch_mixer_controls =
11709 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11710 0, 1, 0, msm_routing_get_switch_mixer,
11711 msm_routing_put_switch_mixer);
11712
11713static const struct snd_kcontrol_new slim3_fm_switch_mixer_controls =
11714 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11715 0, 1, 0, msm_routing_get_switch_mixer,
11716 msm_routing_put_switch_mixer);
11717
11718static const struct snd_kcontrol_new slim4_fm_switch_mixer_controls =
11719 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11720 0, 1, 0, msm_routing_get_switch_mixer,
11721 msm_routing_put_switch_mixer);
11722
11723static const struct snd_kcontrol_new slim6_fm_switch_mixer_controls =
11724 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11725 0, 1, 0, msm_routing_get_switch_mixer,
11726 msm_routing_put_switch_mixer);
11727
11728static const struct snd_kcontrol_new pcm_rx_switch_mixer_controls =
11729 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11730 0, 1, 0, msm_routing_get_fm_pcmrx_switch_mixer,
11731 msm_routing_put_fm_pcmrx_switch_mixer);
11732
11733static const struct snd_kcontrol_new int0_mi2s_rx_switch_mixer_controls =
11734 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11735 0, 1, 0, msm_routing_get_int0_mi2s_switch_mixer,
11736 msm_routing_put_int0_mi2s_switch_mixer);
11737
11738static const struct snd_kcontrol_new int4_mi2s_rx_switch_mixer_controls =
11739 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11740 0, 1, 0, msm_routing_get_int4_mi2s_switch_mixer,
11741 msm_routing_put_int4_mi2s_switch_mixer);
11742
11743static const struct snd_kcontrol_new pri_mi2s_rx_switch_mixer_controls =
11744 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11745 0, 1, 0, msm_routing_get_pri_mi2s_switch_mixer,
11746 msm_routing_put_pri_mi2s_switch_mixer);
11747
11748static const struct snd_kcontrol_new sec_mi2s_rx_switch_mixer_controls =
11749 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11750 0, 1, 0, msm_routing_get_sec_mi2s_switch_mixer,
11751 msm_routing_put_sec_mi2s_switch_mixer);
11752
11753static const struct snd_kcontrol_new tert_mi2s_rx_switch_mixer_controls =
11754 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11755 0, 1, 0, msm_routing_get_tert_mi2s_switch_mixer,
11756 msm_routing_put_tert_mi2s_switch_mixer);
11757
11758static const struct snd_kcontrol_new quat_mi2s_rx_switch_mixer_controls =
11759 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11760 0, 1, 0, msm_routing_get_quat_mi2s_switch_mixer,
11761 msm_routing_put_quat_mi2s_switch_mixer);
11762
Rohit Kumara5077932017-09-10 22:05:05 +053011763static const struct snd_kcontrol_new quin_mi2s_rx_switch_mixer_controls =
11764 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11765 0, 1, 0, msm_routing_get_quin_mi2s_switch_mixer,
11766 msm_routing_put_quin_mi2s_switch_mixer);
11767
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011768static const struct snd_kcontrol_new hfp_pri_aux_switch_mixer_controls =
11769 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11770 0, 1, 0, msm_routing_get_hfp_switch_mixer,
11771 msm_routing_put_hfp_switch_mixer);
11772
11773static const struct snd_kcontrol_new hfp_aux_switch_mixer_controls =
11774 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11775 0, 1, 0, msm_routing_get_hfp_switch_mixer,
11776 msm_routing_put_hfp_switch_mixer);
11777
11778static const struct snd_kcontrol_new hfp_int_switch_mixer_controls =
11779 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11780 0, 1, 0, msm_routing_get_hfp_switch_mixer,
11781 msm_routing_put_hfp_switch_mixer);
11782
11783static const struct snd_kcontrol_new hfp_slim7_switch_mixer_controls =
11784 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11785 0, 1, 0, msm_routing_get_hfp_switch_mixer,
11786 msm_routing_put_hfp_switch_mixer);
11787
11788static const struct snd_kcontrol_new usb_switch_mixer_controls =
11789 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11790 0, 1, 0, msm_routing_get_usb_switch_mixer,
11791 msm_routing_put_usb_switch_mixer);
11792
Aniket Kumar Lataf8664712018-02-22 14:46:09 -080011793static const struct snd_kcontrol_new a2dp_slim7_switch_mixer_controls =
11794 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11795 0, 1, 0, msm_routing_a2dp_switch_mixer_get,
11796 msm_routing_a2dp_switch_mixer_put);
11797
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011798static const struct soc_enum lsm_port_enum =
11799 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(lsm_port_text), lsm_port_text);
11800
11801static const char * const lsm_func_text[] = {
11802 "None", "AUDIO", "BEACON", "ULTRASOUND", "SWAUDIO",
11803};
11804static const struct soc_enum lsm_func_enum =
11805 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(lsm_func_text), lsm_func_text);
11806
11807static const struct snd_kcontrol_new lsm_controls[] = {
11808 /* kcontrol of lsm_function */
11809 SOC_ENUM_EXT(SLIMBUS_0_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11810 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11811 SOC_ENUM_EXT(SLIMBUS_1_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11812 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11813 SOC_ENUM_EXT(SLIMBUS_2_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11814 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11815 SOC_ENUM_EXT(SLIMBUS_3_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11816 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11817 SOC_ENUM_EXT(SLIMBUS_4_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11818 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11819 SOC_ENUM_EXT(SLIMBUS_5_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11820 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11821 SOC_ENUM_EXT(TERT_MI2S_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11822 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11823 SOC_ENUM_EXT(QUAT_MI2S_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11824 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11825 SOC_ENUM_EXT(INT3_MI2S_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11826 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
Ashish Jain01b10322018-05-12 15:37:44 +053011827 SOC_ENUM_EXT(PRI_TDM_TX_2_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11828 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11829 SOC_ENUM_EXT(PRI_TDM_TX_3_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11830 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011831 /* kcontrol of lsm_port */
11832 SOC_ENUM_EXT("LSM1 Port", lsm_port_enum,
11833 msm_routing_lsm_port_get,
11834 msm_routing_lsm_port_put),
11835 SOC_ENUM_EXT("LSM2 Port", lsm_port_enum,
11836 msm_routing_lsm_port_get,
11837 msm_routing_lsm_port_put),
11838 SOC_ENUM_EXT("LSM3 Port", lsm_port_enum,
11839 msm_routing_lsm_port_get,
11840 msm_routing_lsm_port_put),
11841 SOC_ENUM_EXT("LSM4 Port", lsm_port_enum,
11842 msm_routing_lsm_port_get,
11843 msm_routing_lsm_port_put),
11844 SOC_ENUM_EXT("LSM5 Port", lsm_port_enum,
11845 msm_routing_lsm_port_get,
11846 msm_routing_lsm_port_put),
11847 SOC_ENUM_EXT("LSM6 Port", lsm_port_enum,
11848 msm_routing_lsm_port_get,
11849 msm_routing_lsm_port_put),
11850 SOC_ENUM_EXT("LSM7 Port", lsm_port_enum,
11851 msm_routing_lsm_port_get,
11852 msm_routing_lsm_port_put),
11853 SOC_ENUM_EXT("LSM8 Port", lsm_port_enum,
11854 msm_routing_lsm_port_get,
11855 msm_routing_lsm_port_put),
11856};
11857
11858static const char * const aanc_slim_0_rx_text[] = {
11859 "ZERO", "SLIMBUS_0_TX", "SLIMBUS_1_TX", "SLIMBUS_2_TX", "SLIMBUS_3_TX",
11860 "SLIMBUS_4_TX", "SLIMBUS_5_TX", "SLIMBUS_6_TX"
11861};
11862
11863static const struct soc_enum aanc_slim_0_rx_enum =
11864 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(aanc_slim_0_rx_text),
11865 aanc_slim_0_rx_text);
11866
11867static const struct snd_kcontrol_new aanc_slim_0_rx_mux[] = {
11868 SOC_ENUM_EXT("AANC_SLIM_0_RX MUX", aanc_slim_0_rx_enum,
11869 msm_routing_slim_0_rx_aanc_mux_get,
11870 msm_routing_slim_0_rx_aanc_mux_put)
11871};
11872
11873static int msm_routing_get_stereo_to_custom_stereo_control(
11874 struct snd_kcontrol *kcontrol,
11875 struct snd_ctl_elem_value *ucontrol)
11876{
11877 ucontrol->value.integer.value[0] = is_custom_stereo_on;
11878 return 0;
11879}
11880
11881static int msm_routing_put_stereo_to_custom_stereo_control(
11882 struct snd_kcontrol *kcontrol,
11883 struct snd_ctl_elem_value *ucontrol)
11884{
11885 int flag = 0, i = 0, rc = 0, idx = 0;
11886 int be_index = 0, port_id, topo_id;
11887 unsigned int session_id = 0;
11888 uint16_t op_FL_ip_FL_weight = 0;
11889 uint16_t op_FL_ip_FR_weight = 0;
11890 uint16_t op_FR_ip_FL_weight = 0;
11891 uint16_t op_FR_ip_FR_weight = 0;
11892
11893 flag = ucontrol->value.integer.value[0];
11894 pr_debug("%s E flag %d\n", __func__, flag);
11895
11896 if ((is_custom_stereo_on && flag) || (!is_custom_stereo_on && !flag)) {
11897 pr_err("%s: is_custom_stereo_on %d, flag %d\n",
11898 __func__, is_custom_stereo_on, flag);
11899 return 0;
11900 }
11901 is_custom_stereo_on = flag ? true : false;
11902 pr_debug("%s:is_custom_stereo_on %d\n", __func__, is_custom_stereo_on);
11903 for (be_index = 0; be_index < MSM_BACKEND_DAI_MAX; be_index++) {
11904 port_id = msm_bedais[be_index].port_id;
11905 if (!msm_bedais[be_index].active)
11906 continue;
11907 if ((port_id != SLIMBUS_0_RX) &&
11908 (port_id != RT_PROXY_PORT_001_RX) &&
11909 (port_id != AFE_PORT_ID_PRIMARY_MI2S_RX) &&
11910 (port_id != AFE_PORT_ID_INT4_MI2S_RX))
11911 continue;
11912
11913 for_each_set_bit(i, &msm_bedais[be_index].fe_sessions[0],
11914 MSM_FRONTEND_DAI_MM_SIZE) {
11915 if (fe_dai_map[i][SESSION_TYPE_RX].perf_mode !=
11916 LEGACY_PCM_MODE)
11917 goto skip_send_custom_stereo;
11918 session_id =
11919 fe_dai_map[i][SESSION_TYPE_RX].strm_id;
11920 if (is_custom_stereo_on) {
11921 op_FL_ip_FL_weight =
11922 Q14_GAIN_ZERO_POINT_FIVE;
11923 op_FL_ip_FR_weight =
11924 Q14_GAIN_ZERO_POINT_FIVE;
11925 op_FR_ip_FL_weight =
11926 Q14_GAIN_ZERO_POINT_FIVE;
11927 op_FR_ip_FR_weight =
11928 Q14_GAIN_ZERO_POINT_FIVE;
11929 } else {
11930 op_FL_ip_FL_weight = Q14_GAIN_UNITY;
11931 op_FL_ip_FR_weight = 0;
11932 op_FR_ip_FL_weight = 0;
11933 op_FR_ip_FR_weight = Q14_GAIN_UNITY;
11934 }
11935 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++) {
11936 unsigned long copp =
11937 session_copp_map[i]
11938 [SESSION_TYPE_RX][be_index];
11939 if (!test_bit(idx, &copp))
11940 goto skip_send_custom_stereo;
11941 topo_id = adm_get_topology_for_port_copp_idx(
11942 msm_bedais[be_index].port_id, idx);
11943 if (topo_id < 0)
11944 pr_debug("%s:Err:custom stereo topo %d",
11945 __func__, topo_id);
11946 pr_debug("idx %d\n", idx);
11947 if (topo_id == DS2_ADM_COPP_TOPOLOGY_ID)
11948 rc = msm_ds2_dap_set_custom_stereo_onoff
11949 (msm_bedais[be_index].port_id,
11950 idx, is_custom_stereo_on);
11951 else if (topo_id == DOLBY_ADM_COPP_TOPOLOGY_ID)
11952 rc = dolby_dap_set_custom_stereo_onoff(
11953 msm_bedais[be_index].port_id,
11954 idx, is_custom_stereo_on);
11955 else
11956 rc = msm_qti_pp_send_stereo_to_custom_stereo_cmd
11957 (msm_bedais[be_index].port_id,
11958 idx, session_id,
11959 op_FL_ip_FL_weight,
11960 op_FL_ip_FR_weight,
11961 op_FR_ip_FL_weight,
11962 op_FR_ip_FR_weight);
11963 if (rc < 0)
11964skip_send_custom_stereo:
11965 pr_err("%s: err setting custom stereo\n",
11966 __func__);
11967 }
11968
11969 }
11970 }
11971 return 0;
11972}
11973
11974static const struct snd_kcontrol_new stereo_to_custom_stereo_controls[] = {
11975 SOC_SINGLE_EXT("Set Custom Stereo OnOff", SND_SOC_NOPM, 0,
11976 1, 0, msm_routing_get_stereo_to_custom_stereo_control,
11977 msm_routing_put_stereo_to_custom_stereo_control),
11978};
11979
11980static int msm_routing_get_app_type_cfg_control(struct snd_kcontrol *kcontrol,
11981 struct snd_ctl_elem_value *ucontrol)
11982{
11983 return 0;
11984}
11985
11986static int msm_routing_put_app_type_cfg_control(struct snd_kcontrol *kcontrol,
11987 struct snd_ctl_elem_value *ucontrol)
11988{
11989 int i = 0, j;
11990 int num_app_types = ucontrol->value.integer.value[i++];
11991
11992 pr_debug("%s\n", __func__);
11993
11994 memset(app_type_cfg, 0, MAX_APP_TYPES*
11995 sizeof(struct msm_pcm_routing_app_type_data));
11996 if (num_app_types > MAX_APP_TYPES) {
11997 pr_err("%s: number of app types exceed the max supported\n",
11998 __func__);
11999 return -EINVAL;
12000 }
12001 for (j = 0; j < num_app_types; j++) {
12002 app_type_cfg[j].app_type =
12003 ucontrol->value.integer.value[i++];
12004 app_type_cfg[j].sample_rate =
12005 ucontrol->value.integer.value[i++];
12006 app_type_cfg[j].bit_width =
12007 ucontrol->value.integer.value[i++];
12008 }
12009
12010 return 0;
12011}
12012
12013static int msm_routing_put_app_type_gain_control(struct snd_kcontrol *kcontrol,
12014 struct snd_ctl_elem_value *ucontrol)
12015{
12016 int j, fe_id, be_id, port_type;
12017 int ret = 0;
12018 unsigned long copp;
12019 struct msm_pcm_routing_bdai_data *bedai;
12020 int dir = ucontrol->value.integer.value[0] ? SESSION_TYPE_TX :
12021 SESSION_TYPE_RX;
12022 int app_type = ucontrol->value.integer.value[1];
12023 int gain = (ucontrol->value.integer.value[2] +
12024 ucontrol->value.integer.value[3])/2;
12025
12026 port_type = (dir == SESSION_TYPE_RX) ? MSM_AFE_PORT_TYPE_RX :
12027 MSM_AFE_PORT_TYPE_TX;
12028
12029 mutex_lock(&routing_lock);
12030 for (be_id = 0; be_id < MSM_BACKEND_DAI_MAX; be_id++) {
12031 if (is_be_dai_extproc(be_id))
12032 continue;
12033
12034 bedai = &msm_bedais[be_id];
12035 if (afe_get_port_type(bedai->port_id) != port_type)
12036 continue;
12037
12038 if (!bedai->active)
12039 continue;
12040
12041 for (fe_id = 0; fe_id < MSM_FRONTEND_DAI_MAX; fe_id++) {
12042 if (!test_bit(fe_id, &bedai->fe_sessions[0]))
12043 continue;
12044
12045 if (app_type !=
12046 fe_dai_app_type_cfg[fe_id][dir][be_id].app_type)
12047 continue;
12048
12049 copp = session_copp_map[fe_id][dir][be_id];
12050 for (j = 0; j < MAX_COPPS_PER_PORT; j++) {
12051 if (!test_bit(j, &copp))
12052 continue;
12053 ret |= adm_set_volume(bedai->port_id, j, gain);
12054 }
12055 }
12056 }
12057 mutex_unlock(&routing_lock);
12058 return ret ? -EINVAL : 0;
12059}
12060
12061static const struct snd_kcontrol_new app_type_cfg_controls[] = {
12062 SOC_SINGLE_MULTI_EXT("App Type Config", SND_SOC_NOPM, 0,
12063 0xFFFFFFFF, 0, 128, msm_routing_get_app_type_cfg_control,
12064 msm_routing_put_app_type_cfg_control),
12065 SOC_SINGLE_MULTI_EXT("App Type Gain", SND_SOC_NOPM, 0,
12066 0x2000, 0, 4, NULL, msm_routing_put_app_type_gain_control)
12067};
12068
Vikram Pandurangaee9c03a2017-09-07 15:06:17 -070012069static int msm_routing_put_module_cfg_control(struct snd_kcontrol *kcontrol,
12070 struct snd_ctl_elem_value *ucontrol)
12071{
12072 int copp_idx, fe_id, be_id, port_type;
12073 int ret = 0;
12074 unsigned long copp;
12075 struct msm_pcm_routing_bdai_data *bedai;
12076 char *param_data = NULL;
12077 uint32_t *update_param_data = NULL;
12078 uint32_t param_size = sizeof(uint32_t) +
12079 sizeof(struct adm_param_data_v5);
12080 int dir = ucontrol->value.integer.value[0] ? SESSION_TYPE_TX :
12081 SESSION_TYPE_RX;
12082 int app_type = ucontrol->value.integer.value[1];
12083 int module_id = ucontrol->value.integer.value[2];
12084 int instance_id = ucontrol->value.integer.value[3];
12085 int param_id = ucontrol->value.integer.value[4];
12086 int param_value = ucontrol->value.integer.value[5];
12087
12088 port_type = (dir == SESSION_TYPE_RX) ? MSM_AFE_PORT_TYPE_RX :
12089 MSM_AFE_PORT_TYPE_TX;
12090 pr_debug("%s app_type:%d mod_id:%d instance_id:%d param_id:%d value:%d\n",
12091 __func__, app_type, module_id,
12092 instance_id, param_id, param_value);
12093
12094 param_data = kzalloc(param_size, GFP_KERNEL);
12095 if (!param_data)
12096 return -ENOMEM;
12097
12098 update_param_data = (uint32_t *)param_data;
12099 *update_param_data++ = module_id;
12100 *update_param_data++ = param_id;
12101 *update_param_data++ = sizeof(uint32_t);
12102 *update_param_data++ = param_value;
12103
12104 mutex_lock(&routing_lock);
12105 for (be_id = 0; be_id < MSM_BACKEND_DAI_MAX; be_id++) {
12106 if (is_be_dai_extproc(be_id))
12107 continue;
12108
12109 bedai = &msm_bedais[be_id];
12110 if (afe_get_port_type(bedai->port_id) != port_type)
12111 continue;
12112
12113 if (!bedai->active)
12114 continue;
12115
12116 for (fe_id = 0; fe_id < MSM_FRONTEND_DAI_MAX; fe_id++) {
12117 if (!test_bit(fe_id, &bedai->fe_sessions[0]))
12118 continue;
12119
12120 if (app_type !=
12121 fe_dai_app_type_cfg[fe_id][dir][be_id].app_type)
12122 continue;
12123
12124 copp = session_copp_map[fe_id][dir][be_id];
12125 for (copp_idx = 0; copp_idx < MAX_COPPS_PER_PORT;
12126 copp_idx++) {
12127 if (!test_bit(copp_idx, &copp))
12128 continue;
12129
12130 ret = adm_send_params_v5(bedai->port_id,
12131 copp_idx,
12132 param_data,
12133 param_size);
12134 if (ret) {
12135 pr_err("%s: Setting param failed with err=%d\n",
12136 __func__, ret);
12137 ret = -EINVAL;
12138 goto done;
12139 }
12140 }
12141 }
12142 }
12143done:
12144 mutex_unlock(&routing_lock);
12145 kfree(param_data);
12146 return ret;
12147}
12148
12149static const struct snd_kcontrol_new module_cfg_controls[] = {
12150 SOC_SINGLE_MULTI_EXT("Audio Effect", SND_SOC_NOPM, 0,
12151 0x2000, 0, 6, NULL, msm_routing_put_module_cfg_control)
12152};
12153
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012154static int msm_routing_get_lsm_app_type_cfg_control(
12155 struct snd_kcontrol *kcontrol,
12156 struct snd_ctl_elem_value *ucontrol)
12157{
12158 return 0;
12159}
12160
12161static int msm_routing_put_lsm_app_type_cfg_control(
12162 struct snd_kcontrol *kcontrol,
12163 struct snd_ctl_elem_value *ucontrol)
12164{
12165 int i = 0, j;
12166 int num_app_types = ucontrol->value.integer.value[i++];
12167
12168 memset(lsm_app_type_cfg, 0, MAX_APP_TYPES*
12169 sizeof(struct msm_pcm_routing_app_type_data));
12170 if (num_app_types > MAX_APP_TYPES) {
12171 pr_err("%s: number of app types exceed the max supported\n",
12172 __func__);
12173 return -EINVAL;
12174 }
12175 for (j = 0; j < num_app_types; j++) {
12176 lsm_app_type_cfg[j].app_type =
12177 ucontrol->value.integer.value[i++];
12178 lsm_app_type_cfg[j].sample_rate =
12179 ucontrol->value.integer.value[i++];
12180 lsm_app_type_cfg[j].bit_width =
12181 ucontrol->value.integer.value[i++];
12182 }
12183
12184 return 0;
12185}
12186
12187static const struct snd_kcontrol_new lsm_app_type_cfg_controls[] = {
12188 SOC_SINGLE_MULTI_EXT("Listen App Type Config", SND_SOC_NOPM, 0,
12189 0xFFFFFFFF, 0, 128, msm_routing_get_lsm_app_type_cfg_control,
12190 msm_routing_put_lsm_app_type_cfg_control),
12191};
12192
12193static int msm_routing_get_use_ds1_or_ds2_control(
12194 struct snd_kcontrol *kcontrol,
12195 struct snd_ctl_elem_value *ucontrol)
12196{
12197 ucontrol->value.integer.value[0] = is_ds2_on;
12198 return 0;
12199}
12200
12201static int msm_routing_put_use_ds1_or_ds2_control(
12202 struct snd_kcontrol *kcontrol,
12203 struct snd_ctl_elem_value *ucontrol)
12204{
12205 is_ds2_on = ucontrol->value.integer.value[0];
12206 return 0;
12207}
12208
12209static const struct snd_kcontrol_new use_ds1_or_ds2_controls[] = {
12210 SOC_SINGLE_EXT("DS2 OnOff", SND_SOC_NOPM, 0,
12211 1, 0, msm_routing_get_use_ds1_or_ds2_control,
12212 msm_routing_put_use_ds1_or_ds2_control),
12213};
12214
12215int msm_routing_get_rms_value_control(struct snd_kcontrol *kcontrol,
12216 struct snd_ctl_elem_value *ucontrol) {
12217 int rc = 0;
12218 int be_idx = 0;
12219 char *param_value;
12220 int *update_param_value;
12221 uint32_t param_length = sizeof(uint32_t);
12222 uint32_t param_payload_len = RMS_PAYLOAD_LEN * sizeof(uint32_t);
12223
12224 param_value = kzalloc(param_length + param_payload_len, GFP_KERNEL);
12225 if (!param_value)
12226 return -ENOMEM;
12227
12228 for (be_idx = 0; be_idx < MSM_BACKEND_DAI_MAX; be_idx++)
12229 if (msm_bedais[be_idx].port_id == SLIMBUS_0_TX)
12230 break;
12231 if ((be_idx < MSM_BACKEND_DAI_MAX) && msm_bedais[be_idx].active) {
12232 rc = adm_get_params(SLIMBUS_0_TX, 0,
12233 RMS_MODULEID_APPI_PASSTHRU,
12234 RMS_PARAM_FIRST_SAMPLE,
12235 param_length + param_payload_len,
12236 param_value);
12237 if (rc) {
12238 pr_err("%s: get parameters failed:%d\n", __func__, rc);
12239 kfree(param_value);
12240 return -EINVAL;
12241 }
12242 update_param_value = (int *)param_value;
12243 ucontrol->value.integer.value[0] = update_param_value[0];
12244
12245 pr_debug("%s: FROM DSP value[0] 0x%x\n",
12246 __func__, update_param_value[0]);
12247 }
12248 kfree(param_value);
12249 return 0;
12250}
12251
12252static int msm_voc_session_id_put(struct snd_kcontrol *kcontrol,
12253 struct snd_ctl_elem_value *ucontrol)
12254{
12255 voc_session_id = ucontrol->value.integer.value[0];
12256
12257 pr_debug("%s: voc_session_id=%u\n", __func__, voc_session_id);
12258
12259 return 0;
12260}
12261
12262static int msm_voc_session_id_get(struct snd_kcontrol *kcontrol,
12263 struct snd_ctl_elem_value *ucontrol)
12264{
12265 ucontrol->value.integer.value[0] = voc_session_id;
12266
12267 return 0;
12268}
12269
12270static struct snd_kcontrol_new msm_voc_session_controls[] = {
12271 SOC_SINGLE_MULTI_EXT("Voc VSID", SND_SOC_NOPM, 0,
12272 0xFFFFFFFF, 0, 1, msm_voc_session_id_get,
12273 msm_voc_session_id_put),
12274};
12275
12276static int msm_sound_focus_info(struct snd_kcontrol *kcontrol,
12277 struct snd_ctl_elem_info *uinfo)
12278{
12279 uinfo->type = SNDRV_CTL_ELEM_TYPE_BYTES;
12280 uinfo->count = sizeof(struct sound_focus_param);
12281
12282 return 0;
12283}
12284
12285static int msm_voice_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
12291 memcpy((void *)&soundFocusData, ucontrol->value.bytes.data,
12292 sizeof(struct sound_focus_param));
12293 ret = voc_set_sound_focus(soundFocusData);
12294 if (ret) {
12295 pr_err("%s: Error setting Sound Focus Params, err=%d\n",
12296 __func__, ret);
12297
12298 ret = -EINVAL;
12299 }
12300
12301 return ret;
12302}
12303
12304static int msm_voice_sound_focus_get(struct snd_kcontrol *kcontrol,
12305 struct snd_ctl_elem_value *ucontrol)
12306{
12307 int ret = 0;
12308 struct sound_focus_param soundFocusData;
12309
12310 memset(&soundFocusData, 0, sizeof(struct sound_focus_param));
12311
12312 ret = voc_get_sound_focus(&soundFocusData);
12313 if (ret) {
12314 pr_err("%s: Error getting Sound Focus Params, err=%d\n",
12315 __func__, ret);
12316
12317 ret = -EINVAL;
12318 goto done;
12319 }
12320 memcpy(ucontrol->value.bytes.data, (void *)&soundFocusData,
12321 sizeof(struct sound_focus_param));
12322
12323done:
12324 return ret;
12325}
12326
12327static int msm_source_tracking_info(struct snd_kcontrol *kcontrol,
12328 struct snd_ctl_elem_info *uinfo)
12329{
12330 uinfo->type = SNDRV_CTL_ELEM_TYPE_BYTES;
12331 uinfo->count = sizeof(struct source_tracking_param);
12332
12333 return 0;
12334}
12335
12336static int msm_voice_source_tracking_get(struct snd_kcontrol *kcontrol,
12337 struct snd_ctl_elem_value *ucontrol)
12338{
12339 int ret = 0;
12340 struct source_tracking_param sourceTrackingData;
12341
12342 memset(&sourceTrackingData, 0, sizeof(struct source_tracking_param));
12343
12344 ret = voc_get_source_tracking(&sourceTrackingData);
12345 if (ret) {
12346 pr_err("%s: Error getting Source Tracking Params, err=%d\n",
12347 __func__, ret);
12348
12349 ret = -EINVAL;
12350 goto done;
12351 }
12352 memcpy(ucontrol->value.bytes.data, (void *)&sourceTrackingData,
12353 sizeof(struct source_tracking_param));
12354
12355done:
12356 return ret;
12357}
12358
12359static int msm_audio_get_copp_idx_from_port_id(int port_id, int session_type,
12360 int *copp_idx)
12361{
12362 int i, idx, be_idx;
12363 int ret = 0;
12364 unsigned long copp;
12365
12366 pr_debug("%s: Enter, port_id=%d\n", __func__, port_id);
12367
12368 ret = q6audio_validate_port(port_id);
12369 if (ret < 0) {
12370 pr_err("%s: port validation failed id 0x%x ret %d\n",
12371 __func__, port_id, ret);
12372
12373 ret = -EINVAL;
12374 goto done;
12375 }
12376
12377 for (be_idx = 0; be_idx < MSM_BACKEND_DAI_MAX; be_idx++) {
12378 if (msm_bedais[be_idx].port_id == port_id)
12379 break;
12380 }
12381 if (be_idx >= MSM_BACKEND_DAI_MAX) {
12382 pr_err("%s: Invalid be id %d\n", __func__, be_idx);
12383
12384 ret = -EINVAL;
12385 goto done;
12386 }
12387
12388 for_each_set_bit(i, &msm_bedais[be_idx].fe_sessions[0],
12389 MSM_FRONTEND_DAI_MM_SIZE) {
12390 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++) {
12391 copp = session_copp_map[i]
12392 [session_type][be_idx];
12393 if (test_bit(idx, &copp))
12394 break;
12395 }
12396 if (idx >= MAX_COPPS_PER_PORT)
12397 continue;
12398 else
12399 break;
12400 }
12401 if (i >= MSM_FRONTEND_DAI_MM_SIZE) {
12402 pr_err("%s: Invalid FE, exiting\n", __func__);
12403
12404 ret = -EINVAL;
12405 goto done;
12406 }
12407 *copp_idx = idx;
12408 pr_debug("%s: copp_idx=%d\n", __func__, *copp_idx);
12409
12410done:
12411 return ret;
12412}
12413
12414static int msm_audio_sound_focus_derive_port_id(struct snd_kcontrol *kcontrol,
12415 const char *prefix, int *port_id)
12416{
12417 int ret = 0;
12418
12419 pr_debug("%s: Enter, prefix:%s\n", __func__, prefix);
12420
12421 /*
12422 * Mixer control name will be like "Sound Focus Audio Tx SLIMBUS_0"
12423 * where the prefix is "Sound Focus Audio Tx ". Skip the prefix
12424 * and compare the string with the backend name to derive the port id.
12425 */
12426 if (!strcmp(kcontrol->id.name + strlen(prefix),
12427 "SLIMBUS_0")) {
12428 *port_id = SLIMBUS_0_TX;
12429 } else if (!strcmp(kcontrol->id.name + strlen(prefix),
12430 "TERT_MI2S")) {
12431 *port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
12432 } else if (!strcmp(kcontrol->id.name + strlen(prefix),
12433 "INT3_MI2S")) {
12434 *port_id = AFE_PORT_ID_INT3_MI2S_TX;
Sachin Mohan Gadag8c6e2db2018-07-16 19:53:19 +053012435 } else if (!strcmp(kcontrol->id.name + strlen(prefix),
12436 "PRIMARY_TDM")) {
12437 *port_id = AFE_PORT_ID_PRIMARY_TDM_TX;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012438 } else {
12439 pr_err("%s: mixer ctl name=%s, could not derive valid port id\n",
12440 __func__, kcontrol->id.name);
12441
12442 ret = -EINVAL;
12443 goto done;
12444 }
12445 pr_debug("%s: mixer ctl name=%s, derived port_id=%d\n",
12446 __func__, kcontrol->id.name, *port_id);
12447
12448done:
12449 return ret;
12450}
12451
12452static int msm_audio_sound_focus_put(struct snd_kcontrol *kcontrol,
12453 struct snd_ctl_elem_value *ucontrol)
12454{
12455 int ret = 0;
12456 struct sound_focus_param soundFocusData;
12457 int port_id, copp_idx;
12458
12459 ret = msm_audio_sound_focus_derive_port_id(kcontrol,
12460 "Sound Focus Audio Tx ", &port_id);
12461 if (ret != 0) {
12462 pr_err("%s: Error in deriving port id, err=%d\n",
12463 __func__, ret);
12464
12465 ret = -EINVAL;
12466 goto done;
12467 }
12468
12469 ret = msm_audio_get_copp_idx_from_port_id(port_id, SESSION_TYPE_TX,
12470 &copp_idx);
12471 if (ret) {
12472 pr_err("%s: Could not get copp idx for port_id=%d\n",
12473 __func__, port_id);
12474
12475 ret = -EINVAL;
12476 goto done;
12477 }
12478
12479 memcpy((void *)&soundFocusData, ucontrol->value.bytes.data,
12480 sizeof(struct sound_focus_param));
12481
12482 ret = adm_set_sound_focus(port_id, copp_idx, soundFocusData);
12483 if (ret) {
12484 pr_err("%s: Error setting Sound Focus Params, err=%d\n",
12485 __func__, ret);
12486
12487 ret = -EINVAL;
12488 goto done;
12489 }
12490
12491done:
12492 return ret;
12493}
12494
12495static int msm_audio_sound_focus_get(struct snd_kcontrol *kcontrol,
12496 struct snd_ctl_elem_value *ucontrol)
12497{
12498 int ret = 0;
12499 struct sound_focus_param soundFocusData;
12500 int port_id, copp_idx;
12501
12502 ret = msm_audio_sound_focus_derive_port_id(kcontrol,
12503 "Sound Focus Audio Tx ", &port_id);
12504 if (ret) {
12505 pr_err("%s: Error in deriving port id, err=%d\n",
12506 __func__, ret);
12507
12508 ret = -EINVAL;
12509 goto done;
12510 }
12511
12512 ret = msm_audio_get_copp_idx_from_port_id(port_id, SESSION_TYPE_TX,
12513 &copp_idx);
12514 if (ret) {
12515 pr_err("%s: Could not get copp idx for port_id=%d\n",
12516 __func__, port_id);
12517
12518 ret = -EINVAL;
12519 goto done;
12520 }
12521
12522 ret = adm_get_sound_focus(port_id, copp_idx, &soundFocusData);
12523 if (ret) {
12524 pr_err("%s: Error getting Sound Focus Params, err=%d\n",
12525 __func__, ret);
12526
12527 ret = -EINVAL;
12528 goto done;
12529 }
12530
12531 memcpy(ucontrol->value.bytes.data, (void *)&soundFocusData,
12532 sizeof(struct sound_focus_param));
12533
12534done:
12535 return ret;
12536}
12537
12538static int msm_audio_source_tracking_get(struct snd_kcontrol *kcontrol,
12539 struct snd_ctl_elem_value *ucontrol)
12540{
12541 int ret = 0;
12542 struct source_tracking_param sourceTrackingData;
12543 int port_id, copp_idx;
12544
12545 ret = msm_audio_sound_focus_derive_port_id(kcontrol,
12546 "Source Tracking Audio Tx ", &port_id);
12547 if (ret) {
12548 pr_err("%s: Error in deriving port id, err=%d\n",
12549 __func__, ret);
12550
12551 ret = -EINVAL;
12552 goto done;
12553 }
12554
12555 ret = msm_audio_get_copp_idx_from_port_id(port_id, SESSION_TYPE_TX,
12556 &copp_idx);
12557 if (ret) {
12558 pr_err("%s: Could not get copp idx for port_id=%d\n",
12559 __func__, port_id);
12560
12561 ret = -EINVAL;
12562 goto done;
12563 }
12564
12565 ret = adm_get_source_tracking(port_id, copp_idx, &sourceTrackingData);
12566 if (ret) {
12567 pr_err("%s: Error getting Source Tracking Params, err=%d\n",
12568 __func__, ret);
12569
12570 ret = -EINVAL;
12571 goto done;
12572 }
12573
12574 memcpy(ucontrol->value.bytes.data, (void *)&sourceTrackingData,
12575 sizeof(struct source_tracking_param));
12576
12577done:
12578 return ret;
12579}
12580
12581static const struct snd_kcontrol_new msm_source_tracking_controls[] = {
12582 {
12583 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12584 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12585 .name = "Sound Focus Voice Tx SLIMBUS_0",
12586 .info = msm_sound_focus_info,
12587 .get = msm_voice_sound_focus_get,
12588 .put = msm_voice_sound_focus_put,
12589 },
12590 {
12591 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12592 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12593 .name = "Source Tracking Voice Tx SLIMBUS_0",
12594 .info = msm_source_tracking_info,
12595 .get = msm_voice_source_tracking_get,
12596 },
12597 {
12598 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12599 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12600 .name = "Sound Focus Audio Tx SLIMBUS_0",
12601 .info = msm_sound_focus_info,
12602 .get = msm_audio_sound_focus_get,
12603 .put = msm_audio_sound_focus_put,
12604 },
12605 {
12606 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12607 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12608 .name = "Source Tracking Audio Tx SLIMBUS_0",
12609 .info = msm_source_tracking_info,
12610 .get = msm_audio_source_tracking_get,
12611 },
12612 {
12613 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12614 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12615 .name = "Sound Focus Voice Tx TERT_MI2S",
12616 .info = msm_sound_focus_info,
12617 .get = msm_voice_sound_focus_get,
12618 .put = msm_voice_sound_focus_put,
12619 },
12620 {
12621 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12622 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12623 .name = "Source Tracking Voice Tx TERT_MI2S",
12624 .info = msm_source_tracking_info,
12625 .get = msm_voice_source_tracking_get,
12626 },
12627 {
12628 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12629 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12630 .name = "Sound Focus Audio Tx TERT_MI2S",
12631 .info = msm_sound_focus_info,
12632 .get = msm_audio_sound_focus_get,
12633 .put = msm_audio_sound_focus_put,
12634 },
12635 {
12636 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12637 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12638 .name = "Source Tracking Audio Tx TERT_MI2S",
12639 .info = msm_source_tracking_info,
12640 .get = msm_audio_source_tracking_get,
12641 },
12642 {
12643 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12644 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12645 .name = "Sound Focus Voice Tx INT3_MI2S",
12646 .info = msm_sound_focus_info,
12647 .get = msm_voice_sound_focus_get,
12648 .put = msm_voice_sound_focus_put,
12649 },
12650 {
12651 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12652 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12653 .name = "Source Tracking Voice Tx INT3_MI2S",
12654 .info = msm_source_tracking_info,
12655 .get = msm_voice_source_tracking_get,
12656 },
12657 {
12658 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12659 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12660 .name = "Sound Focus Audio Tx INT3_MI2S",
12661 .info = msm_sound_focus_info,
12662 .get = msm_audio_sound_focus_get,
12663 .put = msm_audio_sound_focus_put,
12664 },
12665 {
12666 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12667 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12668 .name = "Source Tracking Audio Tx INT3_MI2S",
12669 .info = msm_source_tracking_info,
12670 .get = msm_audio_source_tracking_get,
12671 },
Sachin Mohan Gadag8c6e2db2018-07-16 19:53:19 +053012672 {
12673 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12674 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12675 .name = "Sound Focus Audio Tx PRIMARY_TDM",
12676 .info = msm_sound_focus_info,
12677 .get = msm_audio_sound_focus_get,
12678 .put = msm_audio_sound_focus_put,
12679 },
12680 {
12681 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12682 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12683 .name = "Source Tracking Audio Tx PRIMARY_TDM",
12684 .info = msm_source_tracking_info,
12685 .get = msm_audio_source_tracking_get,
12686 },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012687};
12688
12689static int spkr_prot_put_vi_lch_port(struct snd_kcontrol *kcontrol,
12690 struct snd_ctl_elem_value *ucontrol)
12691{
12692 int ret = 0;
12693 int item;
12694 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
12695
12696 pr_debug("%s item is %d\n", __func__,
12697 ucontrol->value.enumerated.item[0]);
12698 mutex_lock(&routing_lock);
12699 item = ucontrol->value.enumerated.item[0];
12700 if (item < e->items) {
12701 pr_debug("%s RX DAI ID %d TX DAI id %d\n",
12702 __func__, e->shift_l, e->values[item]);
12703 if (e->shift_l < MSM_BACKEND_DAI_MAX &&
12704 e->values[item] < MSM_BACKEND_DAI_MAX)
12705 /* Enable feedback TX path */
12706 ret = afe_spk_prot_feed_back_cfg(
12707 msm_bedais[e->values[item]].port_id,
12708 msm_bedais[e->shift_l].port_id, 1, 0, 1);
12709 else {
12710 pr_debug("%s values are out of range item %d\n",
12711 __func__, e->values[item]);
12712 /* Disable feedback TX path */
12713 if (e->values[item] == MSM_BACKEND_DAI_MAX)
12714 ret = afe_spk_prot_feed_back_cfg(0, 0, 0, 0, 0);
12715 else
12716 ret = -EINVAL;
12717 }
12718 } else {
12719 pr_err("%s item value is out of range item\n", __func__);
12720 ret = -EINVAL;
12721 }
12722 mutex_unlock(&routing_lock);
12723 return ret;
12724}
12725
12726static int spkr_prot_put_vi_rch_port(struct snd_kcontrol *kcontrol,
12727 struct snd_ctl_elem_value *ucontrol)
12728{
12729 int ret = 0;
12730 int item;
12731 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
12732
12733 pr_debug("%s item is %d\n", __func__,
12734 ucontrol->value.enumerated.item[0]);
12735 mutex_lock(&routing_lock);
12736 item = ucontrol->value.enumerated.item[0];
12737 if (item < e->items) {
12738 pr_debug("%s RX DAI ID %d TX DAI id %d\n",
12739 __func__, e->shift_l, e->values[item]);
12740 if (e->shift_l < MSM_BACKEND_DAI_MAX &&
12741 e->values[item] < MSM_BACKEND_DAI_MAX)
12742 /* Enable feedback TX path */
12743 ret = afe_spk_prot_feed_back_cfg(
12744 msm_bedais[e->values[item]].port_id,
12745 msm_bedais[e->shift_l].port_id,
12746 1, 1, 1);
12747 else {
12748 pr_debug("%s values are out of range item %d\n",
12749 __func__, e->values[item]);
12750 /* Disable feedback TX path */
12751 if (e->values[item] == MSM_BACKEND_DAI_MAX)
12752 ret = afe_spk_prot_feed_back_cfg(0,
12753 0, 0, 0, 0);
12754 else
12755 ret = -EINVAL;
12756 }
12757 } else {
12758 pr_err("%s item value is out of range item\n", __func__);
12759 ret = -EINVAL;
12760 }
12761 mutex_unlock(&routing_lock);
12762 return ret;
12763}
12764
12765static int spkr_prot_get_vi_lch_port(struct snd_kcontrol *kcontrol,
12766 struct snd_ctl_elem_value *ucontrol)
12767{
12768 pr_debug("%s\n", __func__);
12769 return 0;
12770}
12771
12772static int spkr_prot_get_vi_rch_port(struct snd_kcontrol *kcontrol,
12773 struct snd_ctl_elem_value *ucontrol)
12774{
12775 pr_debug("%s\n", __func__);
12776 ucontrol->value.enumerated.item[0] = 0;
12777 return 0;
12778}
12779
12780static const char * const slim0_rx_vi_fb_tx_lch_mux_text[] = {
12781 "ZERO", "SLIM4_TX"
12782};
12783
12784static const char * const slim0_rx_vi_fb_tx_rch_mux_text[] = {
12785 "ZERO", "SLIM4_TX"
12786};
12787
12788static const char * const mi2s_rx_vi_fb_tx_mux_text[] = {
12789 "ZERO", "SENARY_TX"
12790};
12791
12792static const char * const int4_mi2s_rx_vi_fb_tx_mono_mux_text[] = {
12793 "ZERO", "INT5_MI2S_TX"
12794};
12795
12796static const char * const int4_mi2s_rx_vi_fb_tx_stereo_mux_text[] = {
12797 "ZERO", "INT5_MI2S_TX"
12798};
12799
12800static const int const slim0_rx_vi_fb_tx_lch_value[] = {
12801 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_SLIMBUS_4_TX
12802};
12803
12804static const int const slim0_rx_vi_fb_tx_rch_value[] = {
12805 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_SLIMBUS_4_TX
12806};
12807
12808static const int const mi2s_rx_vi_fb_tx_value[] = {
12809 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_SENARY_MI2S_TX
12810};
12811
12812static const int const int4_mi2s_rx_vi_fb_tx_mono_ch_value[] = {
12813 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_INT5_MI2S_TX
12814};
12815
12816static const int const int4_mi2s_rx_vi_fb_tx_stereo_ch_value[] = {
12817 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_INT5_MI2S_TX
12818};
12819
12820static const struct soc_enum slim0_rx_vi_fb_lch_mux_enum =
12821 SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_SLIMBUS_0_RX, 0, 0,
12822 ARRAY_SIZE(slim0_rx_vi_fb_tx_lch_mux_text),
12823 slim0_rx_vi_fb_tx_lch_mux_text, slim0_rx_vi_fb_tx_lch_value);
12824
12825static const struct soc_enum slim0_rx_vi_fb_rch_mux_enum =
12826 SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_SLIMBUS_0_RX, 0, 0,
12827 ARRAY_SIZE(slim0_rx_vi_fb_tx_rch_mux_text),
12828 slim0_rx_vi_fb_tx_rch_mux_text, slim0_rx_vi_fb_tx_rch_value);
12829
12830static const struct soc_enum mi2s_rx_vi_fb_mux_enum =
12831 SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_PRI_MI2S_RX, 0, 0,
12832 ARRAY_SIZE(mi2s_rx_vi_fb_tx_mux_text),
12833 mi2s_rx_vi_fb_tx_mux_text, mi2s_rx_vi_fb_tx_value);
12834
12835static const struct soc_enum int4_mi2s_rx_vi_fb_mono_ch_mux_enum =
12836 SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_INT4_MI2S_RX, 0, 0,
12837 ARRAY_SIZE(int4_mi2s_rx_vi_fb_tx_mono_mux_text),
12838 int4_mi2s_rx_vi_fb_tx_mono_mux_text,
12839 int4_mi2s_rx_vi_fb_tx_mono_ch_value);
12840
12841static const struct soc_enum int4_mi2s_rx_vi_fb_stereo_ch_mux_enum =
12842 SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_INT4_MI2S_RX, 0, 0,
12843 ARRAY_SIZE(int4_mi2s_rx_vi_fb_tx_stereo_mux_text),
12844 int4_mi2s_rx_vi_fb_tx_stereo_mux_text,
12845 int4_mi2s_rx_vi_fb_tx_stereo_ch_value);
12846
12847static const struct snd_kcontrol_new slim0_rx_vi_fb_lch_mux =
12848 SOC_DAPM_ENUM_EXT("SLIM0_RX_VI_FB_LCH_MUX",
12849 slim0_rx_vi_fb_lch_mux_enum, spkr_prot_get_vi_lch_port,
12850 spkr_prot_put_vi_lch_port);
12851
12852static const struct snd_kcontrol_new slim0_rx_vi_fb_rch_mux =
12853 SOC_DAPM_ENUM_EXT("SLIM0_RX_VI_FB_RCH_MUX",
12854 slim0_rx_vi_fb_rch_mux_enum, spkr_prot_get_vi_rch_port,
12855 spkr_prot_put_vi_rch_port);
12856
12857static const struct snd_kcontrol_new mi2s_rx_vi_fb_mux =
12858 SOC_DAPM_ENUM_EXT("PRI_MI2S_RX_VI_FB_MUX",
12859 mi2s_rx_vi_fb_mux_enum, spkr_prot_get_vi_lch_port,
12860 spkr_prot_put_vi_lch_port);
12861
12862static const struct snd_kcontrol_new int4_mi2s_rx_vi_fb_mono_ch_mux =
12863 SOC_DAPM_ENUM_EXT("INT4_MI2S_RX_VI_FB_MONO_CH_MUX",
12864 int4_mi2s_rx_vi_fb_mono_ch_mux_enum, spkr_prot_get_vi_lch_port,
12865 spkr_prot_put_vi_lch_port);
12866
12867static const struct snd_kcontrol_new int4_mi2s_rx_vi_fb_stereo_ch_mux =
12868 SOC_DAPM_ENUM_EXT("INT4_MI2S_RX_VI_FB_STEREO_CH_MUX",
12869 int4_mi2s_rx_vi_fb_stereo_ch_mux_enum, spkr_prot_get_vi_rch_port,
12870 spkr_prot_put_vi_rch_port);
12871
12872static const struct snd_soc_dapm_widget msm_qdsp6_widgets[] = {
12873 /* Frontend AIF */
12874 /* Widget name equals to Front-End DAI name<Need confirmation>,
12875 * Stream name must contains substring of front-end dai name
12876 */
12877 SND_SOC_DAPM_AIF_IN("MM_DL1", "MultiMedia1 Playback", 0, 0, 0, 0),
12878 SND_SOC_DAPM_AIF_IN("MM_DL2", "MultiMedia2 Playback", 0, 0, 0, 0),
12879 SND_SOC_DAPM_AIF_IN("MM_DL3", "MultiMedia3 Playback", 0, 0, 0, 0),
12880 SND_SOC_DAPM_AIF_IN("MM_DL4", "MultiMedia4 Playback", 0, 0, 0, 0),
12881 SND_SOC_DAPM_AIF_IN("MM_DL5", "MultiMedia5 Playback", 0, 0, 0, 0),
12882 SND_SOC_DAPM_AIF_IN("MM_DL6", "MultiMedia6 Playback", 0, 0, 0, 0),
12883 SND_SOC_DAPM_AIF_IN("MM_DL7", "MultiMedia7 Playback", 0, 0, 0, 0),
12884 SND_SOC_DAPM_AIF_IN("MM_DL8", "MultiMedia8 Playback", 0, 0, 0, 0),
12885 SND_SOC_DAPM_AIF_IN("MM_DL9", "MultiMedia9 Playback", 0, 0, 0, 0),
12886 SND_SOC_DAPM_AIF_IN("MM_DL10", "MultiMedia10 Playback", 0, 0, 0, 0),
12887 SND_SOC_DAPM_AIF_IN("MM_DL11", "MultiMedia11 Playback", 0, 0, 0, 0),
12888 SND_SOC_DAPM_AIF_IN("MM_DL12", "MultiMedia12 Playback", 0, 0, 0, 0),
12889 SND_SOC_DAPM_AIF_IN("MM_DL13", "MultiMedia13 Playback", 0, 0, 0, 0),
12890 SND_SOC_DAPM_AIF_IN("MM_DL14", "MultiMedia14 Playback", 0, 0, 0, 0),
12891 SND_SOC_DAPM_AIF_IN("MM_DL15", "MultiMedia15 Playback", 0, 0, 0, 0),
12892 SND_SOC_DAPM_AIF_IN("MM_DL16", "MultiMedia16 Playback", 0, 0, 0, 0),
12893 SND_SOC_DAPM_AIF_IN("MM_DL20", "MultiMedia20 Playback", 0, 0, 0, 0),
12894 SND_SOC_DAPM_AIF_IN("VOIP_DL", "VoIP Playback", 0, 0, 0, 0),
12895 SND_SOC_DAPM_AIF_OUT("MM_UL1", "MultiMedia1 Capture", 0, 0, 0, 0),
12896 SND_SOC_DAPM_AIF_OUT("MM_UL2", "MultiMedia2 Capture", 0, 0, 0, 0),
12897 SND_SOC_DAPM_AIF_OUT("MM_UL3", "MultiMedia3 Capture", 0, 0, 0, 0),
12898 SND_SOC_DAPM_AIF_OUT("MM_UL4", "MultiMedia4 Capture", 0, 0, 0, 0),
12899 SND_SOC_DAPM_AIF_OUT("MM_UL5", "MultiMedia5 Capture", 0, 0, 0, 0),
12900 SND_SOC_DAPM_AIF_OUT("MM_UL6", "MultiMedia6 Capture", 0, 0, 0, 0),
12901 SND_SOC_DAPM_AIF_OUT("MM_UL8", "MultiMedia8 Capture", 0, 0, 0, 0),
12902 SND_SOC_DAPM_AIF_OUT("MM_UL9", "MultiMedia9 Capture", 0, 0, 0, 0),
Laxminath Kasam38070be2017-08-17 18:21:59 +053012903 SND_SOC_DAPM_AIF_OUT("MM_UL10", "MultiMedia10 Capture", 0, 0, 0, 0),
Asish Bhattacharya34504582017-08-08 12:55:01 +053012904 SND_SOC_DAPM_AIF_OUT("MM_UL16", "MultiMedia16 Capture", 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012905 SND_SOC_DAPM_AIF_OUT("MM_UL17", "MultiMedia17 Capture", 0, 0, 0, 0),
12906 SND_SOC_DAPM_AIF_OUT("MM_UL18", "MultiMedia18 Capture", 0, 0, 0, 0),
12907 SND_SOC_DAPM_AIF_OUT("MM_UL19", "MultiMedia19 Capture", 0, 0, 0, 0),
12908 SND_SOC_DAPM_AIF_OUT("MM_UL20", "MultiMedia20 Capture", 0, 0, 0, 0),
Meng Wangbe8194e2018-04-25 10:40:01 +080012909 SND_SOC_DAPM_AIF_OUT("MM_UL28", "MultiMedia28 Capture", 0, 0, 0, 0),
12910 SND_SOC_DAPM_AIF_OUT("MM_UL29", "MultiMedia29 Capture", 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012911 SND_SOC_DAPM_AIF_OUT("VOIP_UL", "VoIP Capture", 0, 0, 0, 0),
12912 SND_SOC_DAPM_AIF_IN("VOICEMMODE1_DL",
12913 "VoiceMMode1 Playback", 0, 0, 0, 0),
12914 SND_SOC_DAPM_AIF_OUT("VOICEMMODE1_UL",
12915 "VoiceMMode1 Capture", 0, 0, 0, 0),
12916 SND_SOC_DAPM_AIF_IN("VOICEMMODE2_DL",
12917 "VoiceMMode2 Playback", 0, 0, 0, 0),
12918 SND_SOC_DAPM_AIF_OUT("VOICEMMODE2_UL",
12919 "VoiceMMode2 Capture", 0, 0, 0, 0),
12920 SND_SOC_DAPM_AIF_IN("SLIM0_DL_HL", "SLIMBUS0_HOSTLESS Playback",
12921 0, 0, 0, 0),
12922 SND_SOC_DAPM_AIF_OUT("SLIM0_UL_HL", "SLIMBUS0_HOSTLESS Capture",
12923 0, 0, 0, 0),
12924 SND_SOC_DAPM_AIF_OUT("CPE_LSM_UL_HL", "CPE LSM capture",
12925 0, 0, 0, 0),
12926 SND_SOC_DAPM_AIF_IN("SLIM1_DL_HL", "SLIMBUS1_HOSTLESS Playback",
12927 0, 0, 0, 0),
12928 SND_SOC_DAPM_AIF_OUT("SLIM1_UL_HL", "SLIMBUS1_HOSTLESS Capture",
12929 0, 0, 0, 0),
12930 SND_SOC_DAPM_AIF_IN("SLIM3_DL_HL", "SLIMBUS3_HOSTLESS Playback",
12931 0, 0, 0, 0),
12932 SND_SOC_DAPM_AIF_OUT("SLIM3_UL_HL", "SLIMBUS3_HOSTLESS Capture",
12933 0, 0, 0, 0),
12934 SND_SOC_DAPM_AIF_IN("SLIM4_DL_HL", "SLIMBUS4_HOSTLESS Playback",
12935 0, 0, 0, 0),
12936 SND_SOC_DAPM_AIF_OUT("SLIM4_UL_HL", "SLIMBUS4_HOSTLESS Capture",
12937 0, 0, 0, 0),
12938 SND_SOC_DAPM_AIF_IN("SLIM6_DL_HL", "SLIMBUS6_HOSTLESS Playback",
12939 0, 0, 0, 0),
12940 SND_SOC_DAPM_AIF_OUT("SLIM6_UL_HL", "SLIMBUS6_HOSTLESS Capture",
12941 0, 0, 0, 0),
12942 SND_SOC_DAPM_AIF_IN("SLIM7_DL_HL", "SLIMBUS7_HOSTLESS Playback",
12943 0, 0, 0, 0),
12944 SND_SOC_DAPM_AIF_OUT("SLIM7_UL_HL", "SLIMBUS7_HOSTLESS Capture",
12945 0, 0, 0, 0),
12946 SND_SOC_DAPM_AIF_IN("SLIM8_DL_HL", "SLIMBUS8_HOSTLESS Playback",
12947 0, 0, 0, 0),
12948 SND_SOC_DAPM_AIF_OUT("SLIM8_UL_HL", "SLIMBUS8_HOSTLESS Capture",
12949 0, 0, 0, 0),
12950 SND_SOC_DAPM_AIF_IN("INTFM_DL_HL", "INT_FM_HOSTLESS Playback",
12951 0, 0, 0, 0),
12952 SND_SOC_DAPM_AIF_OUT("INTFM_UL_HL", "INT_FM_HOSTLESS Capture",
12953 0, 0, 0, 0),
12954 SND_SOC_DAPM_AIF_IN("INTHFP_DL_HL", "INT_HFP_BT_HOSTLESS Playback",
12955 0, 0, 0, 0),
12956 SND_SOC_DAPM_AIF_OUT("INTHFP_UL_HL", "INT_HFP_BT_HOSTLESS Capture",
12957 0, 0, 0, 0),
12958 SND_SOC_DAPM_AIF_IN("USBAUDIO_DL_HL", "USBAUDIO_HOSTLESS Playback",
12959 0, 0, 0, 0),
12960 SND_SOC_DAPM_AIF_OUT("USBAUDIO_UL_HL", "USBAUDIO_HOSTLESS Capture",
12961 0, 0, 0, 0),
12962 SND_SOC_DAPM_AIF_IN("HDMI_DL_HL", "HDMI_HOSTLESS Playback", 0, 0, 0, 0),
12963 SND_SOC_DAPM_AIF_IN("SEC_I2S_DL_HL", "SEC_I2S_RX_HOSTLESS Playback",
12964 0, 0, 0, 0),
12965 SND_SOC_DAPM_AIF_IN("INT0_MI2S_DL_HL",
12966 "INT0 MI2S_RX Hostless Playback",
12967 0, 0, 0, 0),
12968 SND_SOC_DAPM_AIF_IN("INT4_MI2S_DL_HL",
12969 "INT4 MI2S_RX Hostless Playback",
12970 0, 0, 0, 0),
12971 SND_SOC_DAPM_AIF_IN("PRI_MI2S_DL_HL",
12972 "Primary MI2S_RX Hostless Playback",
12973 0, 0, 0, 0),
12974 SND_SOC_DAPM_AIF_IN("SEC_MI2S_DL_HL",
12975 "Secondary MI2S_RX Hostless Playback",
12976 0, 0, 0, 0),
12977 SND_SOC_DAPM_AIF_IN("TERT_MI2S_DL_HL",
12978 "Tertiary MI2S_RX Hostless Playback",
12979 0, 0, 0, 0),
12980 SND_SOC_DAPM_AIF_IN("QUAT_MI2S_DL_HL",
12981 "Quaternary MI2S_RX Hostless Playback",
12982 0, 0, 0, 0),
Rohit Kumara5077932017-09-10 22:05:05 +053012983 SND_SOC_DAPM_AIF_IN("QUIN_MI2S_DL_HL",
12984 "Quinary MI2S_RX Hostless Playback",
12985 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012986
12987 SND_SOC_DAPM_AIF_IN("AUXPCM_DL_HL", "AUXPCM_HOSTLESS Playback",
12988 0, 0, 0, 0),
12989 SND_SOC_DAPM_AIF_OUT("AUXPCM_UL_HL", "AUXPCM_HOSTLESS Capture",
12990 0, 0, 0, 0),
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -080012991 SND_SOC_DAPM_AIF_IN("SEC_AUXPCM_DL_HL", "SEC_AUXPCM_HOSTLESS Playback",
12992 0, 0, 0, 0),
12993 SND_SOC_DAPM_AIF_OUT("SEC_AUXPCM_UL_HL", "SEC_AUXPCM_HOSTLESS Capture",
12994 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012995 SND_SOC_DAPM_AIF_OUT("MI2S_UL_HL", "MI2S_TX_HOSTLESS Capture",
12996 0, 0, 0, 0),
12997 SND_SOC_DAPM_AIF_OUT("INT3_MI2S_UL_HL",
12998 "INT3 MI2S_TX Hostless Capture",
12999 0, 0, 0, 0),
13000 SND_SOC_DAPM_AIF_OUT("TERT_MI2S_UL_HL",
13001 "Tertiary MI2S_TX Hostless Capture",
13002 0, 0, 0, 0),
13003 SND_SOC_DAPM_AIF_OUT("SEC_MI2S_UL_HL",
13004 "Secondary MI2S_TX Hostless Capture",
13005 0, 0, 0, 0),
13006 SND_SOC_DAPM_AIF_OUT("PRI_MI2S_UL_HL",
13007 "Primary MI2S_TX Hostless Capture",
13008 0, 0, 0, 0),
13009 SND_SOC_DAPM_AIF_OUT("MI2S_DL_HL", "MI2S_RX_HOSTLESS Playback",
13010 0, 0, 0, 0),
13011 SND_SOC_DAPM_AIF_IN("DTMF_DL_HL", "DTMF_RX_HOSTLESS Playback",
13012 0, 0, 0, 0),
13013 SND_SOC_DAPM_AIF_OUT("QUAT_MI2S_UL_HL",
13014 "Quaternary MI2S_TX Hostless Capture",
13015 0, 0, 0, 0),
Rohit Kumara5077932017-09-10 22:05:05 +053013016 SND_SOC_DAPM_AIF_OUT("QUIN_MI2S_UL_HL",
13017 "Quinary MI2S_TX Hostless Capture",
13018 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013019
13020 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_0_DL_HL",
13021 "Primary TDM0 Hostless Playback",
13022 0, 0, 0, 0),
13023 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_0_UL_HL",
13024 "Primary TDM0 Hostless Capture",
13025 0, 0, 0, 0),
13026 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_1_DL_HL",
13027 "Primary TDM1 Hostless Playback",
13028 0, 0, 0, 0),
13029 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_1_UL_HL",
13030 "Primary TDM1 Hostless Capture",
13031 0, 0, 0, 0),
13032 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_2_DL_HL",
13033 "Primary TDM2 Hostless Playback",
13034 0, 0, 0, 0),
13035 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_2_UL_HL",
13036 "Primary TDM2 Hostless Capture",
13037 0, 0, 0, 0),
13038 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_3_DL_HL",
13039 "Primary TDM3 Hostless Playback",
13040 0, 0, 0, 0),
13041 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_3_UL_HL",
13042 "Primary TDM3 Hostless Capture",
13043 0, 0, 0, 0),
13044 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_4_DL_HL",
13045 "Primary TDM4 Hostless Playback",
13046 0, 0, 0, 0),
13047 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_4_UL_HL",
13048 "Primary TDM4 Hostless Capture",
13049 0, 0, 0, 0),
13050 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_5_DL_HL",
13051 "Primary TDM5 Hostless Playback",
13052 0, 0, 0, 0),
13053 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_5_UL_HL",
13054 "Primary TDM5 Hostless Capture",
13055 0, 0, 0, 0),
13056 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_6_DL_HL",
13057 "Primary TDM6 Hostless Playback",
13058 0, 0, 0, 0),
13059 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_6_UL_HL",
13060 "Primary TDM6 Hostless Capture",
13061 0, 0, 0, 0),
13062 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_7_DL_HL",
13063 "Primary TDM7 Hostless Playback",
13064 0, 0, 0, 0),
13065 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_7_UL_HL",
13066 "Primary TDM7 Hostless Capture",
13067 0, 0, 0, 0),
13068 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_0_DL_HL",
13069 "Secondary TDM0 Hostless Playback",
13070 0, 0, 0, 0),
13071 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_0_UL_HL",
13072 "Secondary TDM0 Hostless Capture",
13073 0, 0, 0, 0),
13074 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_1_DL_HL",
13075 "Secondary TDM1 Hostless Playback",
13076 0, 0, 0, 0),
13077 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_1_UL_HL",
13078 "Secondary TDM1 Hostless Capture",
13079 0, 0, 0, 0),
13080 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_2_DL_HL",
13081 "Secondary TDM2 Hostless Playback",
13082 0, 0, 0, 0),
13083 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_2_UL_HL",
13084 "Secondary TDM2 Hostless Capture",
13085 0, 0, 0, 0),
13086 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_3_DL_HL",
13087 "Secondary TDM3 Hostless Playback",
13088 0, 0, 0, 0),
13089 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_3_UL_HL",
13090 "Secondary TDM3 Hostless Capture",
13091 0, 0, 0, 0),
13092 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_4_DL_HL",
13093 "Secondary TDM4 Hostless Playback",
13094 0, 0, 0, 0),
13095 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_4_UL_HL",
13096 "Secondary TDM4 Hostless Capture",
13097 0, 0, 0, 0),
13098 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_5_DL_HL",
13099 "Secondary TDM5 Hostless Playback",
13100 0, 0, 0, 0),
13101 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_5_UL_HL",
13102 "Secondary TDM5 Hostless Capture",
13103 0, 0, 0, 0),
13104 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_6_DL_HL",
13105 "Secondary TDM6 Hostless Playback",
13106 0, 0, 0, 0),
13107 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_6_UL_HL",
13108 "Secondary TDM6 Hostless Capture",
13109 0, 0, 0, 0),
13110 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_7_DL_HL",
13111 "Secondary TDM7 Hostless Playback",
13112 0, 0, 0, 0),
13113 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_7_UL_HL",
13114 "Secondary TDM7 Hostless Capture",
13115 0, 0, 0, 0),
13116 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_0_DL_HL",
13117 "Tertiary TDM0 Hostless Playback",
13118 0, 0, 0, 0),
13119 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_0_UL_HL",
13120 "Tertiary TDM0 Hostless Capture",
13121 0, 0, 0, 0),
13122 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_1_DL_HL",
13123 "Tertiary TDM1 Hostless Playback",
13124 0, 0, 0, 0),
13125 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_1_UL_HL",
13126 "Tertiary TDM1 Hostless Capture",
13127 0, 0, 0, 0),
13128 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_2_DL_HL",
13129 "Tertiary TDM2 Hostless Playback",
13130 0, 0, 0, 0),
13131 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_2_UL_HL",
13132 "Tertiary TDM2 Hostless Capture",
13133 0, 0, 0, 0),
13134 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_3_DL_HL",
13135 "Tertiary TDM3 Hostless Playback",
13136 0, 0, 0, 0),
13137 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_3_UL_HL",
13138 "Tertiary TDM3 Hostless Capture",
13139 0, 0, 0, 0),
13140 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_4_DL_HL",
13141 "Tertiary TDM4 Hostless Playback",
13142 0, 0, 0, 0),
13143 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_4_UL_HL",
13144 "Tertiary TDM4 Hostless Capture",
13145 0, 0, 0, 0),
13146 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_5_DL_HL",
13147 "Tertiary TDM5 Hostless Playback",
13148 0, 0, 0, 0),
13149 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_5_UL_HL",
13150 "Tertiary TDM5 Hostless Capture",
13151 0, 0, 0, 0),
13152 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_6_DL_HL",
13153 "Tertiary TDM6 Hostless Playback",
13154 0, 0, 0, 0),
13155 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_6_UL_HL",
13156 "Tertiary TDM6 Hostless Capture",
13157 0, 0, 0, 0),
13158 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_7_DL_HL",
13159 "Tertiary TDM7 Hostless Playback",
13160 0, 0, 0, 0),
13161 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_7_UL_HL",
13162 "Tertiary TDM7 Hostless Capture",
13163 0, 0, 0, 0),
13164 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_0_DL_HL",
13165 "Quaternary TDM0 Hostless Playback",
13166 0, 0, 0, 0),
13167 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_0_UL_HL",
13168 "Quaternary TDM0 Hostless Capture",
13169 0, 0, 0, 0),
13170 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_1_DL_HL",
13171 "Quaternary TDM1 Hostless Playback",
13172 0, 0, 0, 0),
13173 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_1_UL_HL",
13174 "Quaternary TDM1 Hostless Capture",
13175 0, 0, 0, 0),
13176 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_2_DL_HL",
13177 "Quaternary TDM2 Hostless Playback",
13178 0, 0, 0, 0),
13179 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_2_UL_HL",
13180 "Quaternary TDM2 Hostless Capture",
13181 0, 0, 0, 0),
13182 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_3_DL_HL",
13183 "Quaternary TDM3 Hostless Playback",
13184 0, 0, 0, 0),
13185 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_3_UL_HL",
13186 "Quaternary TDM3 Hostless Capture",
13187 0, 0, 0, 0),
13188 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_4_DL_HL",
13189 "Quaternary TDM4 Hostless Playback",
13190 0, 0, 0, 0),
13191 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_4_UL_HL",
13192 "Quaternary TDM4 Hostless Capture",
13193 0, 0, 0, 0),
13194 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_5_DL_HL",
13195 "Quaternary TDM5 Hostless Playback",
13196 0, 0, 0, 0),
13197 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_5_UL_HL",
13198 "Quaternary TDM5 Hostless Capture",
13199 0, 0, 0, 0),
13200 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_6_DL_HL",
13201 "Quaternary TDM6 Hostless Playback",
13202 0, 0, 0, 0),
13203 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_6_UL_HL",
13204 "Quaternary TDM6 Hostless Capture",
13205 0, 0, 0, 0),
13206 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_7_DL_HL",
13207 "Quaternary TDM7 Hostless Playback",
13208 0, 0, 0, 0),
13209 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_7_UL_HL",
13210 "Quaternary TDM7 Hostless Capture",
13211 0, 0, 0, 0),
Rohit Kumara5077932017-09-10 22:05:05 +053013212 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_0_DL_HL",
13213 "Quinary TDM0 Hostless Playback",
13214 0, 0, 0, 0),
13215 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_0_UL_HL",
13216 "Quinary TDM0 Hostless Capture",
13217 0, 0, 0, 0),
13218 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_1_DL_HL",
13219 "Quinary TDM1 Hostless Playback",
13220 0, 0, 0, 0),
13221 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_1_UL_HL",
13222 "Quinary TDM1 Hostless Capture",
13223 0, 0, 0, 0),
13224 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_2_DL_HL",
13225 "Quinary TDM2 Hostless Playback",
13226 0, 0, 0, 0),
13227 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_2_UL_HL",
13228 "Quinary TDM2 Hostless Capture",
13229 0, 0, 0, 0),
13230 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_3_DL_HL",
13231 "Quinary TDM3 Hostless Playback",
13232 0, 0, 0, 0),
13233 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_3_UL_HL",
13234 "Quinary TDM3 Hostless Capture",
13235 0, 0, 0, 0),
13236 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_4_DL_HL",
13237 "Quinary TDM4 Hostless Playback",
13238 0, 0, 0, 0),
13239 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_4_UL_HL",
13240 "Quinary TDM4 Hostless Capture",
13241 0, 0, 0, 0),
13242 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_5_DL_HL",
13243 "Quinary TDM5 Hostless Playback",
13244 0, 0, 0, 0),
13245 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_5_UL_HL",
13246 "Quinary TDM5 Hostless Capture",
13247 0, 0, 0, 0),
13248 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_6_DL_HL",
13249 "Quinary TDM6 Hostless Playback",
13250 0, 0, 0, 0),
13251 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_6_UL_HL",
13252 "Quinary TDM6 Hostless Capture",
13253 0, 0, 0, 0),
13254 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_7_DL_HL",
13255 "Quinary TDM7 Hostless Playback",
13256 0, 0, 0, 0),
13257 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_7_UL_HL",
13258 "Quinary TDM7 Hostless Capture",
13259 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013260
13261 /* LSM */
13262 SND_SOC_DAPM_AIF_OUT("LSM1_UL_HL", "Listen 1 Audio Service Capture",
13263 0, 0, 0, 0),
13264 SND_SOC_DAPM_AIF_OUT("LSM2_UL_HL", "Listen 2 Audio Service Capture",
13265 0, 0, 0, 0),
13266 SND_SOC_DAPM_AIF_OUT("LSM3_UL_HL", "Listen 3 Audio Service Capture",
13267 0, 0, 0, 0),
13268 SND_SOC_DAPM_AIF_OUT("LSM4_UL_HL", "Listen 4 Audio Service Capture",
13269 0, 0, 0, 0),
13270 SND_SOC_DAPM_AIF_OUT("LSM5_UL_HL", "Listen 5 Audio Service Capture",
13271 0, 0, 0, 0),
13272 SND_SOC_DAPM_AIF_OUT("LSM6_UL_HL", "Listen 6 Audio Service Capture",
13273 0, 0, 0, 0),
13274 SND_SOC_DAPM_AIF_OUT("LSM7_UL_HL", "Listen 7 Audio Service Capture",
13275 0, 0, 0, 0),
13276 SND_SOC_DAPM_AIF_OUT("LSM8_UL_HL", "Listen 8 Audio Service Capture",
13277 0, 0, 0, 0),
13278 SND_SOC_DAPM_AIF_IN("QCHAT_DL", "QCHAT Playback", 0, 0, 0, 0),
13279 SND_SOC_DAPM_AIF_OUT("QCHAT_UL", "QCHAT Capture", 0, 0, 0, 0),
13280 /* Backend AIF */
13281 /* Stream name equals to backend dai link stream name */
13282 SND_SOC_DAPM_AIF_OUT("PRI_I2S_RX", "Primary I2S Playback", 0, 0, 0, 0),
13283 SND_SOC_DAPM_AIF_OUT("SEC_I2S_RX", "Secondary I2S Playback",
13284 0, 0, 0, 0),
13285 SND_SOC_DAPM_AIF_OUT("SPDIF_RX", "SPDIF Playback", 0, 0, 0, 0),
13286 SND_SOC_DAPM_AIF_OUT("SLIMBUS_0_RX", "Slimbus Playback", 0, 0, 0, 0),
13287 SND_SOC_DAPM_AIF_OUT("SLIMBUS_2_RX", "Slimbus2 Playback", 0, 0, 0, 0),
13288 SND_SOC_DAPM_AIF_OUT("SLIMBUS_5_RX", "Slimbus5 Playback", 0, 0, 0, 0),
13289 SND_SOC_DAPM_AIF_OUT("HDMI", "HDMI Playback", 0, 0, 0, 0),
13290 SND_SOC_DAPM_AIF_OUT("DISPLAY_PORT", "Display Port Playback",
13291 0, 0, 0, 0),
13292 SND_SOC_DAPM_AIF_OUT("MI2S_RX", "MI2S Playback", 0, 0, 0, 0),
13293 SND_SOC_DAPM_AIF_OUT("QUAT_MI2S_RX", "Quaternary MI2S Playback",
13294 0, 0, 0, 0),
13295 SND_SOC_DAPM_AIF_OUT("TERT_MI2S_RX", "Tertiary MI2S Playback",
13296 0, 0, 0, 0),
13297 SND_SOC_DAPM_AIF_OUT("SEC_MI2S_RX", "Secondary MI2S Playback",
13298 0, 0, 0, 0),
13299 SND_SOC_DAPM_AIF_OUT("SEC_MI2S_RX_SD1",
13300 "Secondary MI2S Playback SD1",
13301 0, 0, 0, 0),
13302 SND_SOC_DAPM_AIF_OUT("PRI_MI2S_RX", "Primary MI2S Playback",
13303 0, 0, 0, 0),
13304 SND_SOC_DAPM_AIF_OUT("INT0_MI2S_RX", "INT0 MI2S Playback",
13305 0, 0, 0, 0),
Laxminath Kasam52697fe2017-11-29 15:44:14 +053013306 SND_SOC_DAPM_AIF_OUT("INT2_MI2S_RX", "INT2 MI2S Playback",
13307 0, 0, 0, 0),
13308 SND_SOC_DAPM_AIF_OUT("INT3_MI2S_RX", "INT3 MI2S Playback",
13309 0, 0, 0, 0),
13310 SND_SOC_DAPM_AIF_OUT("INT5_MI2S_RX", "INT5 MI2S Playback",
13311 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013312 SND_SOC_DAPM_AIF_OUT("INT4_MI2S_RX", "INT4 MI2S Playback",
13313 0, 0, 0, 0),
Laxminath Kasam52697fe2017-11-29 15:44:14 +053013314 SND_SOC_DAPM_AIF_OUT("INT4_MI2S_TX", "INT4 MI2S Capture",
13315 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013316 SND_SOC_DAPM_AIF_OUT("QUIN_MI2S_RX", "Quinary MI2S Playback",
13317 0, 0, 0, 0),
13318 SND_SOC_DAPM_AIF_IN("PRI_I2S_TX", "Primary I2S Capture", 0, 0, 0, 0),
13319 SND_SOC_DAPM_AIF_IN("MI2S_TX", "MI2S Capture", 0, 0, 0, 0),
13320 SND_SOC_DAPM_AIF_IN("QUAT_MI2S_TX", "Quaternary MI2S Capture",
13321 0, 0, 0, 0),
13322 SND_SOC_DAPM_AIF_IN("PRI_MI2S_TX", "Primary MI2S Capture",
13323 0, 0, 0, 0),
13324 SND_SOC_DAPM_AIF_IN("TERT_MI2S_TX", "Tertiary MI2S Capture",
13325 0, 0, 0, 0),
Laxminath Kasam52697fe2017-11-29 15:44:14 +053013326 SND_SOC_DAPM_AIF_OUT("INT0_MI2S_TX", "INT0 MI2S Capture",
13327 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013328 SND_SOC_DAPM_AIF_IN("INT2_MI2S_TX", "INT2 MI2S Capture",
13329 0, 0, 0, 0),
13330 SND_SOC_DAPM_AIF_IN("INT3_MI2S_TX", "INT3 MI2S Capture",
13331 0, 0, 0, 0),
13332 SND_SOC_DAPM_AIF_IN("SEC_MI2S_TX", "Secondary MI2S Capture",
13333 0, 0, 0, 0),
13334 SND_SOC_DAPM_AIF_IN("SLIMBUS_0_TX", "Slimbus Capture", 0, 0, 0, 0),
13335 SND_SOC_DAPM_AIF_IN("SLIMBUS_2_TX", "Slimbus2 Capture", 0, 0, 0, 0),
13336 SND_SOC_DAPM_AIF_IN("QUIN_MI2S_TX", "Quinary MI2S Capture",
13337 0, 0, 0, 0),
13338 SND_SOC_DAPM_AIF_IN("SENARY_MI2S_TX", "Senary MI2S Capture",
13339 0, 0, 0, 0),
13340 SND_SOC_DAPM_AIF_OUT("INT_BT_SCO_RX", "Internal BT-SCO Playback",
13341 0, 0, 0, 0),
13342 SND_SOC_DAPM_AIF_IN("INT_BT_SCO_TX", "Internal BT-SCO Capture",
13343 0, 0, 0, 0),
13344 SND_SOC_DAPM_AIF_OUT("INT_BT_A2DP_RX", "Internal BT-A2DP Playback",
13345 0, 0, 0, 0),
13346 SND_SOC_DAPM_AIF_OUT("INT_FM_RX", "Internal FM Playback",
13347 0, 0, 0, 0),
13348 SND_SOC_DAPM_AIF_IN("INT_FM_TX", "Internal FM Capture",
13349 0, 0, 0, 0),
13350 SND_SOC_DAPM_AIF_OUT("PCM_RX", "AFE Playback",
13351 0, 0, 0, 0),
13352 SND_SOC_DAPM_AIF_IN("PCM_TX", "AFE Capture",
13353 0, 0, 0, 0),
13354 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_0", "Primary TDM0 Playback",
13355 0, 0, 0, 0),
13356 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_0", "Primary TDM0 Capture",
13357 0, 0, 0, 0),
13358 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_1", "Primary TDM1 Playback",
13359 0, 0, 0, 0),
13360 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_1", "Primary TDM1 Capture",
13361 0, 0, 0, 0),
13362 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_2", "Primary TDM2 Playback",
13363 0, 0, 0, 0),
13364 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_2", "Primary TDM2 Capture",
13365 0, 0, 0, 0),
13366 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_3", "Primary TDM3 Playback",
13367 0, 0, 0, 0),
13368 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_3", "Primary TDM3 Capture",
13369 0, 0, 0, 0),
13370 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_4", "Primary TDM4 Playback",
13371 0, 0, 0, 0),
13372 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_4", "Primary TDM4 Capture",
13373 0, 0, 0, 0),
13374 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_5", "Primary TDM5 Playback",
13375 0, 0, 0, 0),
13376 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_5", "Primary TDM5 Capture",
13377 0, 0, 0, 0),
13378 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_6", "Primary TDM6 Playback",
13379 0, 0, 0, 0),
13380 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_6", "Primary TDM6 Capture",
13381 0, 0, 0, 0),
13382 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_7", "Primary TDM7 Playback",
13383 0, 0, 0, 0),
13384 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_7", "Primary TDM7 Capture",
13385 0, 0, 0, 0),
13386 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_0", "Secondary TDM0 Playback",
13387 0, 0, 0, 0),
13388 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_0", "Secondary TDM0 Capture",
13389 0, 0, 0, 0),
13390 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_1", "Secondary TDM1 Playback",
13391 0, 0, 0, 0),
13392 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_1", "Secondary TDM1 Capture",
13393 0, 0, 0, 0),
13394 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_2", "Secondary TDM2 Playback",
13395 0, 0, 0, 0),
13396 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_2", "Secondary TDM2 Capture",
13397 0, 0, 0, 0),
13398 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_3", "Secondary TDM3 Playback",
13399 0, 0, 0, 0),
13400 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_3", "Secondary TDM3 Capture",
13401 0, 0, 0, 0),
13402 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_4", "Secondary TDM4 Playback",
13403 0, 0, 0, 0),
13404 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_4", "Secondary TDM4 Capture",
13405 0, 0, 0, 0),
13406 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_5", "Secondary TDM5 Playback",
13407 0, 0, 0, 0),
13408 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_5", "Secondary TDM5 Capture",
13409 0, 0, 0, 0),
13410 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_6", "Secondary TDM6 Playback",
13411 0, 0, 0, 0),
13412 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_6", "Secondary TDM6 Capture",
13413 0, 0, 0, 0),
13414 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_7", "Secondary TDM7 Playback",
13415 0, 0, 0, 0),
13416 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_7", "Secondary TDM7 Capture",
13417 0, 0, 0, 0),
13418 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_0", "Tertiary TDM0 Playback",
13419 0, 0, 0, 0),
13420 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_0", "Tertiary TDM0 Capture",
13421 0, 0, 0, 0),
13422 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_1", "Tertiary TDM1 Playback",
13423 0, 0, 0, 0),
13424 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_1", "Tertiary TDM1 Capture",
13425 0, 0, 0, 0),
13426 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_2", "Tertiary TDM2 Playback",
13427 0, 0, 0, 0),
13428 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_2", "Tertiary TDM2 Capture",
13429 0, 0, 0, 0),
13430 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_3", "Tertiary TDM3 Playback",
13431 0, 0, 0, 0),
13432 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_3", "Tertiary TDM3 Capture",
13433 0, 0, 0, 0),
13434 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_4", "Tertiary TDM4 Playback",
13435 0, 0, 0, 0),
13436 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_4", "Tertiary TDM4 Capture",
13437 0, 0, 0, 0),
13438 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_5", "Tertiary TDM5 Playback",
13439 0, 0, 0, 0),
13440 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_5", "Tertiary TDM5 Capture",
13441 0, 0, 0, 0),
13442 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_6", "Tertiary TDM6 Playback",
13443 0, 0, 0, 0),
13444 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_6", "Tertiary TDM6 Capture",
13445 0, 0, 0, 0),
13446 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_7", "Tertiary TDM7 Playback",
13447 0, 0, 0, 0),
13448 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_7", "Tertiary TDM7 Capture",
13449 0, 0, 0, 0),
13450 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_0", "Quaternary TDM0 Playback",
13451 0, 0, 0, 0),
13452 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_0", "Quaternary TDM0 Capture",
13453 0, 0, 0, 0),
13454 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_1", "Quaternary TDM1 Playback",
13455 0, 0, 0, 0),
13456 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_1", "Quaternary TDM1 Capture",
13457 0, 0, 0, 0),
13458 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_2", "Quaternary TDM2 Playback",
13459 0, 0, 0, 0),
13460 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_2", "Quaternary TDM2 Capture",
13461 0, 0, 0, 0),
13462 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_3", "Quaternary TDM3 Playback",
13463 0, 0, 0, 0),
13464 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_3", "Quaternary TDM3 Capture",
13465 0, 0, 0, 0),
13466 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_4", "Quaternary TDM4 Playback",
13467 0, 0, 0, 0),
13468 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_4", "Quaternary TDM4 Capture",
13469 0, 0, 0, 0),
13470 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_5", "Quaternary TDM5 Playback",
13471 0, 0, 0, 0),
13472 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_5", "Quaternary TDM5 Capture",
13473 0, 0, 0, 0),
13474 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_6", "Quaternary TDM6 Playback",
13475 0, 0, 0, 0),
13476 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_6", "Quaternary TDM6 Capture",
13477 0, 0, 0, 0),
13478 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_7", "Quaternary TDM7 Playback",
13479 0, 0, 0, 0),
13480 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_7", "Quaternary TDM7 Capture",
13481 0, 0, 0, 0),
Rohit Kumara5077932017-09-10 22:05:05 +053013482 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_0", "Quinary TDM0 Playback",
13483 0, 0, 0, 0),
13484 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_0", "Quinary TDM0 Capture",
13485 0, 0, 0, 0),
13486 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_1", "Quinary TDM1 Playback",
13487 0, 0, 0, 0),
13488 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_1", "Quinary TDM1 Capture",
13489 0, 0, 0, 0),
13490 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_2", "Quinary TDM2 Playback",
13491 0, 0, 0, 0),
13492 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_2", "Quinary TDM2 Capture",
13493 0, 0, 0, 0),
13494 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_3", "Quinary TDM3 Playback",
13495 0, 0, 0, 0),
13496 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_3", "Quinary TDM3 Capture",
13497 0, 0, 0, 0),
13498 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_4", "Quinary TDM4 Playback",
13499 0, 0, 0, 0),
13500 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_4", "Quinary TDM4 Capture",
13501 0, 0, 0, 0),
13502 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_5", "Quinary TDM5 Playback",
13503 0, 0, 0, 0),
13504 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_5", "Quinary TDM5 Capture",
13505 0, 0, 0, 0),
13506 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_6", "Quinary TDM6 Playback",
13507 0, 0, 0, 0),
13508 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_6", "Quinary TDM6 Capture",
13509 0, 0, 0, 0),
13510 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_7", "Quinary TDM7 Playback",
13511 0, 0, 0, 0),
13512 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_7", "Quinary TDM7 Capture",
13513 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013514 /* incall */
13515 SND_SOC_DAPM_AIF_OUT("VOICE_PLAYBACK_TX", "Voice Farend Playback",
13516 0, 0, 0, 0),
13517 SND_SOC_DAPM_AIF_OUT("VOICE2_PLAYBACK_TX", "Voice2 Farend Playback",
13518 0, 0, 0, 0),
13519 SND_SOC_DAPM_AIF_OUT("SLIMBUS_4_RX", "Slimbus4 Playback",
13520 0, 0, 0, 0),
13521 SND_SOC_DAPM_AIF_IN("INCALL_RECORD_TX", "Voice Uplink Capture",
13522 0, 0, 0, 0),
13523 SND_SOC_DAPM_AIF_IN("INCALL_RECORD_RX", "Voice Downlink Capture",
13524 0, 0, 0, 0),
13525 SND_SOC_DAPM_AIF_IN("SLIMBUS_4_TX", "Slimbus4 Capture",
13526 0, 0, 0, 0),
13527 SND_SOC_DAPM_AIF_IN("SENARY_TX", "Senary_mi2s Capture",
13528 0, 0, 0, 0),
13529 SND_SOC_DAPM_AIF_IN("INT5_MI2S_TX", "INT5 MI2S Capture",
13530 0, 0, 0, 0),
13531 SND_SOC_DAPM_AIF_IN("SLIMBUS_5_TX", "Slimbus5 Capture", 0, 0, 0, 0),
13532
13533 SND_SOC_DAPM_AIF_OUT("AUX_PCM_RX", "AUX PCM Playback", 0, 0, 0, 0),
13534 SND_SOC_DAPM_AIF_IN("AUX_PCM_TX", "AUX PCM Capture", 0, 0, 0, 0),
13535 SND_SOC_DAPM_AIF_OUT("SEC_AUX_PCM_RX", "Sec AUX PCM Playback",
13536 0, 0, 0, 0),
13537 SND_SOC_DAPM_AIF_IN("SEC_AUX_PCM_TX", "Sec AUX PCM Capture",
13538 0, 0, 0, 0),
13539 SND_SOC_DAPM_AIF_OUT("TERT_AUX_PCM_RX", "Tert AUX PCM Playback",
13540 0, 0, 0, 0),
13541 SND_SOC_DAPM_AIF_IN("TERT_AUX_PCM_TX", "Tert AUX PCM Capture",
13542 0, 0, 0, 0),
13543 SND_SOC_DAPM_AIF_OUT("QUAT_AUX_PCM_RX", "Quat AUX PCM Playback",
13544 0, 0, 0, 0),
13545 SND_SOC_DAPM_AIF_IN("QUAT_AUX_PCM_TX", "Quat AUX PCM Capture",
13546 0, 0, 0, 0),
Rohit Kumara5077932017-09-10 22:05:05 +053013547 SND_SOC_DAPM_AIF_OUT("QUIN_AUX_PCM_RX", "Quin AUX PCM Playback",
13548 0, 0, 0, 0),
13549 SND_SOC_DAPM_AIF_IN("QUIN_AUX_PCM_TX", "Quin AUX PCM Capture",
13550 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013551 SND_SOC_DAPM_AIF_IN("VOICE_STUB_DL", "VOICE_STUB Playback", 0, 0, 0, 0),
13552 SND_SOC_DAPM_AIF_OUT("VOICE_STUB_UL", "VOICE_STUB Capture", 0, 0, 0, 0),
13553 SND_SOC_DAPM_AIF_IN("VOICE2_STUB_DL", "VOICE2_STUB Playback",
13554 0, 0, 0, 0),
13555 SND_SOC_DAPM_AIF_OUT("VOICE2_STUB_UL", "VOICE2_STUB Capture",
13556 0, 0, 0, 0),
13557 SND_SOC_DAPM_AIF_IN("VOLTE_STUB_DL", "VOLTE_STUB Playback", 0, 0, 0, 0),
13558 SND_SOC_DAPM_AIF_OUT("VOLTE_STUB_UL", "VOLTE_STUB Capture", 0, 0, 0, 0),
13559 SND_SOC_DAPM_AIF_OUT("STUB_RX", "Stub Playback", 0, 0, 0, 0),
13560 SND_SOC_DAPM_AIF_IN("STUB_TX", "Stub Capture", 0, 0, 0, 0),
13561 SND_SOC_DAPM_AIF_OUT("SLIMBUS_1_RX", "Slimbus1 Playback", 0, 0, 0, 0),
13562 SND_SOC_DAPM_AIF_IN("SLIMBUS_1_TX", "Slimbus1 Capture", 0, 0, 0, 0),
13563 SND_SOC_DAPM_AIF_IN("STUB_1_TX", "Stub1 Capture", 0, 0, 0, 0),
13564 SND_SOC_DAPM_AIF_OUT("SLIMBUS_3_RX", "Slimbus3 Playback", 0, 0, 0, 0),
13565 SND_SOC_DAPM_AIF_IN("SLIMBUS_3_TX", "Slimbus3 Capture", 0, 0, 0, 0),
13566 /* In- call recording */
13567 SND_SOC_DAPM_AIF_OUT("SLIMBUS_6_RX", "Slimbus6 Playback", 0, 0, 0, 0),
13568 SND_SOC_DAPM_AIF_IN("SLIMBUS_6_TX", "Slimbus6 Capture", 0, 0, 0, 0),
Raja Mallik425e1d32018-05-20 19:21:10 +053013569 SND_SOC_DAPM_AIF_IN("AFE_LOOPBACK_TX", "AFE Loopback Capture",
13570 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013571 SND_SOC_DAPM_AIF_OUT("SLIMBUS_7_RX", "Slimbus7 Playback", 0, 0, 0, 0),
13572 SND_SOC_DAPM_AIF_IN("SLIMBUS_7_TX", "Slimbus7 Capture", 0, 0, 0, 0),
13573
13574 SND_SOC_DAPM_AIF_OUT("SLIMBUS_8_RX", "Slimbus8 Playback", 0, 0, 0, 0),
13575 SND_SOC_DAPM_AIF_IN("SLIMBUS_8_TX", "Slimbus8 Capture", 0, 0, 0, 0),
13576 SND_SOC_DAPM_AIF_OUT("USB_AUDIO_RX", "USB Audio Playback", 0, 0, 0, 0),
13577 SND_SOC_DAPM_AIF_IN("USB_AUDIO_TX", "USB Audio Capture", 0, 0, 0, 0),
13578
13579 /* Switch Definitions */
13580 SND_SOC_DAPM_SWITCH("SLIMBUS_DL_HL", SND_SOC_NOPM, 0, 0,
13581 &slim_fm_switch_mixer_controls),
13582 SND_SOC_DAPM_SWITCH("SLIMBUS1_DL_HL", SND_SOC_NOPM, 0, 0,
13583 &slim1_fm_switch_mixer_controls),
13584 SND_SOC_DAPM_SWITCH("SLIMBUS3_DL_HL", SND_SOC_NOPM, 0, 0,
13585 &slim3_fm_switch_mixer_controls),
13586 SND_SOC_DAPM_SWITCH("SLIMBUS4_DL_HL", SND_SOC_NOPM, 0, 0,
13587 &slim4_fm_switch_mixer_controls),
13588 SND_SOC_DAPM_SWITCH("SLIMBUS6_DL_HL", SND_SOC_NOPM, 0, 0,
13589 &slim6_fm_switch_mixer_controls),
13590 SND_SOC_DAPM_SWITCH("PCM_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13591 &pcm_rx_switch_mixer_controls),
13592 SND_SOC_DAPM_SWITCH("INT0_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13593 &int0_mi2s_rx_switch_mixer_controls),
13594 SND_SOC_DAPM_SWITCH("INT4_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13595 &int4_mi2s_rx_switch_mixer_controls),
13596 SND_SOC_DAPM_SWITCH("PRI_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13597 &pri_mi2s_rx_switch_mixer_controls),
13598 SND_SOC_DAPM_SWITCH("SEC_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13599 &sec_mi2s_rx_switch_mixer_controls),
13600 SND_SOC_DAPM_SWITCH("TERT_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13601 &tert_mi2s_rx_switch_mixer_controls),
13602 SND_SOC_DAPM_SWITCH("QUAT_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13603 &quat_mi2s_rx_switch_mixer_controls),
Rohit Kumara5077932017-09-10 22:05:05 +053013604 SND_SOC_DAPM_SWITCH("QUIN_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13605 &quin_mi2s_rx_switch_mixer_controls),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013606 SND_SOC_DAPM_SWITCH("HFP_PRI_AUX_UL_HL", SND_SOC_NOPM, 0, 0,
13607 &hfp_pri_aux_switch_mixer_controls),
13608 SND_SOC_DAPM_SWITCH("HFP_AUX_UL_HL", SND_SOC_NOPM, 0, 0,
13609 &hfp_aux_switch_mixer_controls),
13610 SND_SOC_DAPM_SWITCH("HFP_INT_UL_HL", SND_SOC_NOPM, 0, 0,
13611 &hfp_int_switch_mixer_controls),
13612 SND_SOC_DAPM_SWITCH("HFP_SLIM7_UL_HL", SND_SOC_NOPM, 0, 0,
13613 &hfp_slim7_switch_mixer_controls),
13614 SND_SOC_DAPM_SWITCH("USB_DL_HL", SND_SOC_NOPM, 0, 0,
13615 &usb_switch_mixer_controls),
Aniket Kumar Lataf8664712018-02-22 14:46:09 -080013616 SND_SOC_DAPM_SWITCH("A2DP_SLIM7_UL_HL", SND_SOC_NOPM, 0, 0,
13617 &a2dp_slim7_switch_mixer_controls),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013618
13619 /* Mixer definitions */
13620 SND_SOC_DAPM_MIXER("PRI_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13621 pri_i2s_rx_mixer_controls, ARRAY_SIZE(pri_i2s_rx_mixer_controls)),
13622 SND_SOC_DAPM_MIXER("SEC_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13623 sec_i2s_rx_mixer_controls, ARRAY_SIZE(sec_i2s_rx_mixer_controls)),
13624 SND_SOC_DAPM_MIXER("SLIMBUS_0_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13625 slimbus_rx_mixer_controls, ARRAY_SIZE(slimbus_rx_mixer_controls)),
13626 SND_SOC_DAPM_MIXER("SLIMBUS_2_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13627 slimbus_2_rx_mixer_controls, ARRAY_SIZE(slimbus_2_rx_mixer_controls)),
13628 SND_SOC_DAPM_MIXER("SLIMBUS_5_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13629 slimbus_5_rx_mixer_controls, ARRAY_SIZE(slimbus_5_rx_mixer_controls)),
13630 SND_SOC_DAPM_MIXER("SLIMBUS_7_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13631 slimbus_7_rx_mixer_controls, ARRAY_SIZE(slimbus_7_rx_mixer_controls)),
13632 SND_SOC_DAPM_MIXER("HDMI Mixer", SND_SOC_NOPM, 0, 0,
13633 hdmi_mixer_controls, ARRAY_SIZE(hdmi_mixer_controls)),
13634 SND_SOC_DAPM_MIXER("DISPLAY_PORT Mixer", SND_SOC_NOPM, 0, 0,
13635 display_port_mixer_controls, ARRAY_SIZE(display_port_mixer_controls)),
13636 SND_SOC_DAPM_MIXER("SPDIF_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13637 spdif_rx_mixer_controls, ARRAY_SIZE(spdif_rx_mixer_controls)),
13638 SND_SOC_DAPM_MIXER("MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13639 mi2s_rx_mixer_controls, ARRAY_SIZE(mi2s_rx_mixer_controls)),
13640 SND_SOC_DAPM_MIXER("QUAT_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13641 quaternary_mi2s_rx_mixer_controls,
13642 ARRAY_SIZE(quaternary_mi2s_rx_mixer_controls)),
13643 SND_SOC_DAPM_MIXER("TERT_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13644 tertiary_mi2s_rx_mixer_controls,
13645 ARRAY_SIZE(tertiary_mi2s_rx_mixer_controls)),
13646 SND_SOC_DAPM_MIXER("SEC_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13647 secondary_mi2s_rx_mixer_controls,
13648 ARRAY_SIZE(secondary_mi2s_rx_mixer_controls)),
13649 SND_SOC_DAPM_MIXER("SEC_MI2S_RX_SD1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13650 secondary_mi2s_rx2_mixer_controls,
13651 ARRAY_SIZE(secondary_mi2s_rx2_mixer_controls)),
13652 SND_SOC_DAPM_MIXER("PRI_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13653 primary_mi2s_rx_mixer_controls,
13654 ARRAY_SIZE(primary_mi2s_rx_mixer_controls)),
13655 SND_SOC_DAPM_MIXER("INT0_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13656 int0_mi2s_rx_mixer_controls,
13657 ARRAY_SIZE(int0_mi2s_rx_mixer_controls)),
13658 SND_SOC_DAPM_MIXER("INT4_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13659 int4_mi2s_rx_mixer_controls,
13660 ARRAY_SIZE(int4_mi2s_rx_mixer_controls)),
13661 SND_SOC_DAPM_MIXER("QUIN_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13662 quinary_mi2s_rx_mixer_controls,
13663 ARRAY_SIZE(quinary_mi2s_rx_mixer_controls)),
13664 SND_SOC_DAPM_MIXER("PRI_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13665 pri_tdm_rx_0_mixer_controls,
13666 ARRAY_SIZE(pri_tdm_rx_0_mixer_controls)),
13667 SND_SOC_DAPM_MIXER("PRI_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13668 pri_tdm_rx_1_mixer_controls,
13669 ARRAY_SIZE(pri_tdm_rx_1_mixer_controls)),
13670 SND_SOC_DAPM_MIXER("PRI_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13671 pri_tdm_rx_2_mixer_controls,
13672 ARRAY_SIZE(pri_tdm_rx_2_mixer_controls)),
13673 SND_SOC_DAPM_MIXER("PRI_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
13674 pri_tdm_rx_3_mixer_controls,
13675 ARRAY_SIZE(pri_tdm_rx_3_mixer_controls)),
13676 SND_SOC_DAPM_MIXER("PRI_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13677 pri_tdm_tx_0_mixer_controls,
13678 ARRAY_SIZE(pri_tdm_tx_0_mixer_controls)),
13679 SND_SOC_DAPM_MIXER("SEC_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13680 sec_tdm_rx_0_mixer_controls,
13681 ARRAY_SIZE(sec_tdm_rx_0_mixer_controls)),
13682 SND_SOC_DAPM_MIXER("SEC_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13683 sec_tdm_rx_1_mixer_controls,
13684 ARRAY_SIZE(sec_tdm_rx_1_mixer_controls)),
13685 SND_SOC_DAPM_MIXER("SEC_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13686 sec_tdm_rx_2_mixer_controls,
13687 ARRAY_SIZE(sec_tdm_rx_2_mixer_controls)),
13688 SND_SOC_DAPM_MIXER("SEC_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
13689 sec_tdm_rx_3_mixer_controls,
13690 ARRAY_SIZE(sec_tdm_rx_3_mixer_controls)),
13691 SND_SOC_DAPM_MIXER("SEC_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13692 sec_tdm_tx_0_mixer_controls,
13693 ARRAY_SIZE(sec_tdm_tx_0_mixer_controls)),
13694 SND_SOC_DAPM_MIXER("TERT_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13695 tert_tdm_rx_0_mixer_controls,
13696 ARRAY_SIZE(tert_tdm_rx_0_mixer_controls)),
13697 SND_SOC_DAPM_MIXER("TERT_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13698 tert_tdm_tx_0_mixer_controls,
13699 ARRAY_SIZE(tert_tdm_tx_0_mixer_controls)),
13700 SND_SOC_DAPM_MIXER("TERT_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13701 tert_tdm_rx_1_mixer_controls,
13702 ARRAY_SIZE(tert_tdm_rx_1_mixer_controls)),
13703 SND_SOC_DAPM_MIXER("TERT_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13704 tert_tdm_rx_2_mixer_controls,
13705 ARRAY_SIZE(tert_tdm_rx_2_mixer_controls)),
13706 SND_SOC_DAPM_MIXER("TERT_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
13707 tert_tdm_rx_3_mixer_controls,
13708 ARRAY_SIZE(tert_tdm_rx_3_mixer_controls)),
13709 SND_SOC_DAPM_MIXER("TERT_TDM_RX_4 Audio Mixer", SND_SOC_NOPM, 0, 0,
13710 tert_tdm_rx_4_mixer_controls,
13711 ARRAY_SIZE(tert_tdm_rx_4_mixer_controls)),
13712 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13713 quat_tdm_rx_0_mixer_controls,
13714 ARRAY_SIZE(quat_tdm_rx_0_mixer_controls)),
13715 SND_SOC_DAPM_MIXER("QUAT_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13716 quat_tdm_tx_0_mixer_controls,
13717 ARRAY_SIZE(quat_tdm_tx_0_mixer_controls)),
13718 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13719 quat_tdm_rx_1_mixer_controls,
13720 ARRAY_SIZE(quat_tdm_rx_1_mixer_controls)),
13721 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13722 quat_tdm_rx_2_mixer_controls,
13723 ARRAY_SIZE(quat_tdm_rx_2_mixer_controls)),
13724 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
13725 quat_tdm_rx_3_mixer_controls,
13726 ARRAY_SIZE(quat_tdm_rx_3_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013727 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13728 quin_tdm_rx_0_mixer_controls,
13729 ARRAY_SIZE(quin_tdm_rx_0_mixer_controls)),
13730 SND_SOC_DAPM_MIXER("QUIN_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13731 quin_tdm_tx_0_mixer_controls,
13732 ARRAY_SIZE(quin_tdm_tx_0_mixer_controls)),
13733 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13734 quin_tdm_rx_1_mixer_controls,
13735 ARRAY_SIZE(quin_tdm_rx_1_mixer_controls)),
13736 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13737 quin_tdm_rx_2_mixer_controls,
13738 ARRAY_SIZE(quin_tdm_rx_2_mixer_controls)),
13739 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
13740 quin_tdm_rx_3_mixer_controls,
13741 ARRAY_SIZE(quin_tdm_rx_3_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013742 SND_SOC_DAPM_MIXER("MultiMedia1 Mixer", SND_SOC_NOPM, 0, 0,
13743 mmul1_mixer_controls, ARRAY_SIZE(mmul1_mixer_controls)),
13744 SND_SOC_DAPM_MIXER("MultiMedia2 Mixer", SND_SOC_NOPM, 0, 0,
13745 mmul2_mixer_controls, ARRAY_SIZE(mmul2_mixer_controls)),
13746 SND_SOC_DAPM_MIXER("MultiMedia3 Mixer", SND_SOC_NOPM, 0, 0,
13747 mmul3_mixer_controls, ARRAY_SIZE(mmul3_mixer_controls)),
13748 SND_SOC_DAPM_MIXER("MultiMedia4 Mixer", SND_SOC_NOPM, 0, 0,
13749 mmul4_mixer_controls, ARRAY_SIZE(mmul4_mixer_controls)),
13750 SND_SOC_DAPM_MIXER("MultiMedia5 Mixer", SND_SOC_NOPM, 0, 0,
13751 mmul5_mixer_controls, ARRAY_SIZE(mmul5_mixer_controls)),
13752 SND_SOC_DAPM_MIXER("MultiMedia6 Mixer", SND_SOC_NOPM, 0, 0,
13753 mmul6_mixer_controls, ARRAY_SIZE(mmul6_mixer_controls)),
13754 SND_SOC_DAPM_MIXER("MultiMedia8 Mixer", SND_SOC_NOPM, 0, 0,
13755 mmul8_mixer_controls, ARRAY_SIZE(mmul8_mixer_controls)),
13756 SND_SOC_DAPM_MIXER("MultiMedia9 Mixer", SND_SOC_NOPM, 0, 0,
13757 mmul9_mixer_controls, ARRAY_SIZE(mmul9_mixer_controls)),
Laxminath Kasam38070be2017-08-17 18:21:59 +053013758 SND_SOC_DAPM_MIXER("MultiMedia10 Mixer", SND_SOC_NOPM, 0, 0,
13759 mmul10_mixer_controls, ARRAY_SIZE(mmul10_mixer_controls)),
Asish Bhattacharya34504582017-08-08 12:55:01 +053013760 SND_SOC_DAPM_MIXER("MultiMedia16 Mixer", SND_SOC_NOPM, 0, 0,
13761 mmul16_mixer_controls, ARRAY_SIZE(mmul16_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013762 SND_SOC_DAPM_MIXER("MultiMedia17 Mixer", SND_SOC_NOPM, 0, 0,
13763 mmul17_mixer_controls, ARRAY_SIZE(mmul17_mixer_controls)),
13764 SND_SOC_DAPM_MIXER("MultiMedia18 Mixer", SND_SOC_NOPM, 0, 0,
13765 mmul18_mixer_controls, ARRAY_SIZE(mmul18_mixer_controls)),
13766 SND_SOC_DAPM_MIXER("MultiMedia19 Mixer", SND_SOC_NOPM, 0, 0,
13767 mmul19_mixer_controls, ARRAY_SIZE(mmul19_mixer_controls)),
13768 SND_SOC_DAPM_MIXER("MultiMedia20 Mixer", SND_SOC_NOPM, 0, 0,
13769 mmul20_mixer_controls, ARRAY_SIZE(mmul20_mixer_controls)),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053013770 SND_SOC_DAPM_MIXER("MultiMedia28 Mixer", SND_SOC_NOPM, 0, 0,
13771 mmul28_mixer_controls, ARRAY_SIZE(mmul28_mixer_controls)),
13772 SND_SOC_DAPM_MIXER("MultiMedia29 Mixer", SND_SOC_NOPM, 0, 0,
13773 mmul29_mixer_controls, ARRAY_SIZE(mmul29_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013774 SND_SOC_DAPM_MIXER("AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13775 auxpcm_rx_mixer_controls, ARRAY_SIZE(auxpcm_rx_mixer_controls)),
13776 SND_SOC_DAPM_MIXER("SEC_AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13777 sec_auxpcm_rx_mixer_controls, ARRAY_SIZE(sec_auxpcm_rx_mixer_controls)),
13778 SND_SOC_DAPM_MIXER("TERT_AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13779 tert_auxpcm_rx_mixer_controls,
13780 ARRAY_SIZE(tert_auxpcm_rx_mixer_controls)),
13781 SND_SOC_DAPM_MIXER("QUAT_AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13782 quat_auxpcm_rx_mixer_controls,
13783 ARRAY_SIZE(quat_auxpcm_rx_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013784 SND_SOC_DAPM_MIXER("QUIN_AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13785 quin_auxpcm_rx_mixer_controls,
13786 ARRAY_SIZE(quin_auxpcm_rx_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013787 /* incall */
13788 SND_SOC_DAPM_MIXER("Incall_Music Audio Mixer", SND_SOC_NOPM, 0, 0,
13789 incall_music_delivery_mixer_controls,
13790 ARRAY_SIZE(incall_music_delivery_mixer_controls)),
13791 SND_SOC_DAPM_MIXER("Incall_Music_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13792 incall_music2_delivery_mixer_controls,
13793 ARRAY_SIZE(incall_music2_delivery_mixer_controls)),
13794 SND_SOC_DAPM_MIXER("SLIMBUS_4_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13795 slimbus_4_rx_mixer_controls,
13796 ARRAY_SIZE(slimbus_4_rx_mixer_controls)),
13797 SND_SOC_DAPM_MIXER("SLIMBUS_6_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13798 slimbus_6_rx_mixer_controls,
13799 ARRAY_SIZE(slimbus_6_rx_mixer_controls)),
13800 SND_SOC_DAPM_MIXER("USB_AUDIO_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13801 usb_audio_rx_mixer_controls,
13802 ARRAY_SIZE(usb_audio_rx_mixer_controls)),
13803 /* Voice Mixer */
13804 SND_SOC_DAPM_MIXER("PRI_RX_Voice Mixer",
13805 SND_SOC_NOPM, 0, 0, pri_rx_voice_mixer_controls,
13806 ARRAY_SIZE(pri_rx_voice_mixer_controls)),
13807 SND_SOC_DAPM_MIXER("SEC_RX_Voice Mixer",
13808 SND_SOC_NOPM, 0, 0,
13809 sec_i2s_rx_voice_mixer_controls,
13810 ARRAY_SIZE(sec_i2s_rx_voice_mixer_controls)),
13811 SND_SOC_DAPM_MIXER("SEC_MI2S_RX_Voice Mixer",
13812 SND_SOC_NOPM, 0, 0,
13813 sec_mi2s_rx_voice_mixer_controls,
13814 ARRAY_SIZE(sec_mi2s_rx_voice_mixer_controls)),
13815 SND_SOC_DAPM_MIXER("SLIM_0_RX_Voice Mixer",
13816 SND_SOC_NOPM, 0, 0,
13817 slimbus_rx_voice_mixer_controls,
13818 ARRAY_SIZE(slimbus_rx_voice_mixer_controls)),
13819 SND_SOC_DAPM_MIXER("INTERNAL_BT_SCO_RX_Voice Mixer",
13820 SND_SOC_NOPM, 0, 0,
13821 bt_sco_rx_voice_mixer_controls,
13822 ARRAY_SIZE(bt_sco_rx_voice_mixer_controls)),
13823 SND_SOC_DAPM_MIXER("AFE_PCM_RX_Voice Mixer",
13824 SND_SOC_NOPM, 0, 0,
13825 afe_pcm_rx_voice_mixer_controls,
13826 ARRAY_SIZE(afe_pcm_rx_voice_mixer_controls)),
13827 SND_SOC_DAPM_MIXER("AUX_PCM_RX_Voice Mixer",
13828 SND_SOC_NOPM, 0, 0,
13829 aux_pcm_rx_voice_mixer_controls,
13830 ARRAY_SIZE(aux_pcm_rx_voice_mixer_controls)),
13831 SND_SOC_DAPM_MIXER("SEC_AUX_PCM_RX_Voice Mixer",
13832 SND_SOC_NOPM, 0, 0,
13833 sec_aux_pcm_rx_voice_mixer_controls,
13834 ARRAY_SIZE(sec_aux_pcm_rx_voice_mixer_controls)),
13835 SND_SOC_DAPM_MIXER("TERT_AUX_PCM_RX_Voice Mixer",
13836 SND_SOC_NOPM, 0, 0,
13837 tert_aux_pcm_rx_voice_mixer_controls,
13838 ARRAY_SIZE(tert_aux_pcm_rx_voice_mixer_controls)),
13839 SND_SOC_DAPM_MIXER("QUAT_AUX_PCM_RX_Voice Mixer",
13840 SND_SOC_NOPM, 0, 0,
13841 quat_aux_pcm_rx_voice_mixer_controls,
13842 ARRAY_SIZE(quat_aux_pcm_rx_voice_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013843 SND_SOC_DAPM_MIXER("QUIN_AUX_PCM_RX_Voice Mixer",
13844 SND_SOC_NOPM, 0, 0,
13845 quin_aux_pcm_rx_voice_mixer_controls,
13846 ARRAY_SIZE(quin_aux_pcm_rx_voice_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013847 SND_SOC_DAPM_MIXER("HDMI_RX_Voice Mixer",
13848 SND_SOC_NOPM, 0, 0,
13849 hdmi_rx_voice_mixer_controls,
13850 ARRAY_SIZE(hdmi_rx_voice_mixer_controls)),
13851 SND_SOC_DAPM_MIXER("MI2S_RX_Voice Mixer",
13852 SND_SOC_NOPM, 0, 0,
13853 mi2s_rx_voice_mixer_controls,
13854 ARRAY_SIZE(mi2s_rx_voice_mixer_controls)),
13855 SND_SOC_DAPM_MIXER("PRI_MI2S_RX_Voice Mixer",
13856 SND_SOC_NOPM, 0, 0,
13857 pri_mi2s_rx_voice_mixer_controls,
13858 ARRAY_SIZE(pri_mi2s_rx_voice_mixer_controls)),
13859 SND_SOC_DAPM_MIXER("INT0_MI2S_RX_Voice Mixer",
13860 SND_SOC_NOPM, 0, 0,
13861 int0_mi2s_rx_voice_mixer_controls,
13862 ARRAY_SIZE(int0_mi2s_rx_voice_mixer_controls)),
13863 SND_SOC_DAPM_MIXER("INT4_MI2S_RX_Voice Mixer",
13864 SND_SOC_NOPM, 0, 0,
13865 int4_mi2s_rx_voice_mixer_controls,
13866 ARRAY_SIZE(int4_mi2s_rx_voice_mixer_controls)),
13867 SND_SOC_DAPM_MIXER("TERT_MI2S_RX_Voice Mixer",
13868 SND_SOC_NOPM, 0, 0,
13869 tert_mi2s_rx_voice_mixer_controls,
13870 ARRAY_SIZE(tert_mi2s_rx_voice_mixer_controls)),
13871 SND_SOC_DAPM_MIXER("QUAT_MI2S_RX_Voice Mixer",
13872 SND_SOC_NOPM, 0, 0,
13873 quat_mi2s_rx_voice_mixer_controls,
13874 ARRAY_SIZE(quat_mi2s_rx_voice_mixer_controls)),
13875 SND_SOC_DAPM_MIXER("QUIN_MI2S_RX_Voice Mixer",
13876 SND_SOC_NOPM, 0, 0,
13877 quin_mi2s_rx_voice_mixer_controls,
13878 ARRAY_SIZE(quin_mi2s_rx_voice_mixer_controls)),
Raja Mallik321d5712018-05-04 17:22:11 +053013879 SND_SOC_DAPM_MIXER("PRI_TDM_RX_0_Voice Mixer",
13880 SND_SOC_NOPM, 0, 0,
13881 pri_tdm_rx_0_voice_mixer_controls,
13882 ARRAY_SIZE(pri_tdm_rx_0_voice_mixer_controls)),
13883 SND_SOC_DAPM_MIXER("PRI_TDM_RX_1_Voice Mixer",
13884 SND_SOC_NOPM, 0, 0,
13885 pri_tdm_rx_1_voice_mixer_controls,
13886 ARRAY_SIZE(pri_tdm_rx_1_voice_mixer_controls)),
13887 SND_SOC_DAPM_MIXER("PRI_TDM_RX_2_Voice Mixer",
13888 SND_SOC_NOPM, 0, 0,
13889 pri_tdm_rx_2_voice_mixer_controls,
13890 ARRAY_SIZE(pri_tdm_rx_2_voice_mixer_controls)),
13891 SND_SOC_DAPM_MIXER("PRI_TDM_RX_3_Voice Mixer",
13892 SND_SOC_NOPM, 0, 0,
13893 pri_tdm_rx_3_voice_mixer_controls,
13894 ARRAY_SIZE(pri_tdm_rx_3_voice_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013895 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_2_Voice Mixer",
13896 SND_SOC_NOPM, 0, 0,
13897 quat_tdm_rx_2_voice_mixer_controls,
13898 ARRAY_SIZE(quat_tdm_rx_2_voice_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013899 SND_SOC_DAPM_MIXER("Voip_Tx Mixer",
13900 SND_SOC_NOPM, 0, 0, tx_voip_mixer_controls,
13901 ARRAY_SIZE(tx_voip_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013902 SND_SOC_DAPM_MIXER("VoiceMMode1_Tx Mixer",
13903 SND_SOC_NOPM, 0, 0, tx_voicemmode1_mixer_controls,
13904 ARRAY_SIZE(tx_voicemmode1_mixer_controls)),
13905 SND_SOC_DAPM_MIXER("VoiceMMode2_Tx Mixer",
13906 SND_SOC_NOPM, 0, 0, tx_voicemmode2_mixer_controls,
13907 ARRAY_SIZE(tx_voicemmode2_mixer_controls)),
13908 SND_SOC_DAPM_MIXER("INTERNAL_BT_SCO_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13909 int_bt_sco_rx_mixer_controls, ARRAY_SIZE(int_bt_sco_rx_mixer_controls)),
13910 SND_SOC_DAPM_MIXER("INTERNAL_A2DP_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13911 int_bt_a2dp_rx_mixer_controls,
13912 ARRAY_SIZE(int_bt_a2dp_rx_mixer_controls)),
13913 SND_SOC_DAPM_MIXER("INTERNAL_FM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13914 int_fm_rx_mixer_controls, ARRAY_SIZE(int_fm_rx_mixer_controls)),
13915 SND_SOC_DAPM_MIXER("AFE_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13916 afe_pcm_rx_mixer_controls, ARRAY_SIZE(afe_pcm_rx_mixer_controls)),
13917 SND_SOC_DAPM_MIXER("Voice Stub Tx Mixer", SND_SOC_NOPM, 0, 0,
13918 tx_voice_stub_mixer_controls, ARRAY_SIZE(tx_voice_stub_mixer_controls)),
13919 SND_SOC_DAPM_MIXER("Voice2 Stub Tx Mixer", SND_SOC_NOPM, 0, 0,
13920 tx_voice2_stub_mixer_controls,
13921 ARRAY_SIZE(tx_voice2_stub_mixer_controls)),
13922 SND_SOC_DAPM_MIXER("VoLTE Stub Tx Mixer", SND_SOC_NOPM, 0, 0,
13923 tx_volte_stub_mixer_controls, ARRAY_SIZE(tx_volte_stub_mixer_controls)),
13924 SND_SOC_DAPM_MIXER("STUB_RX Mixer", SND_SOC_NOPM, 0, 0,
13925 stub_rx_mixer_controls, ARRAY_SIZE(stub_rx_mixer_controls)),
13926 SND_SOC_DAPM_MIXER("SLIMBUS_1_RX Mixer", SND_SOC_NOPM, 0, 0,
13927 slimbus_1_rx_mixer_controls, ARRAY_SIZE(slimbus_1_rx_mixer_controls)),
13928 SND_SOC_DAPM_MIXER("SLIMBUS_3_RX_Voice Mixer", SND_SOC_NOPM, 0, 0,
13929 slimbus_3_rx_mixer_controls, ARRAY_SIZE(slimbus_3_rx_mixer_controls)),
13930 SND_SOC_DAPM_MIXER("SLIM_6_RX_Voice Mixer",
13931 SND_SOC_NOPM, 0, 0,
13932 slimbus_6_rx_voice_mixer_controls,
13933 ARRAY_SIZE(slimbus_6_rx_voice_mixer_controls)),
13934 SND_SOC_DAPM_MIXER("SLIM_7_RX_Voice Mixer", SND_SOC_NOPM, 0, 0,
13935 slimbus_7_rx_voice_mixer_controls,
13936 ARRAY_SIZE(slimbus_7_rx_voice_mixer_controls)),
13937 SND_SOC_DAPM_MIXER("SLIM_8_RX_Voice Mixer", SND_SOC_NOPM, 0, 0,
13938 slimbus_8_rx_voice_mixer_controls,
13939 ARRAY_SIZE(slimbus_8_rx_voice_mixer_controls)),
13940 /* port mixer */
13941 SND_SOC_DAPM_MIXER("SLIMBUS_0_RX Port Mixer",
13942 SND_SOC_NOPM, 0, 0, sbus_0_rx_port_mixer_controls,
13943 ARRAY_SIZE(sbus_0_rx_port_mixer_controls)),
13944 SND_SOC_DAPM_MIXER("AUX_PCM_RX Port Mixer",
13945 SND_SOC_NOPM, 0, 0, aux_pcm_rx_port_mixer_controls,
13946 ARRAY_SIZE(aux_pcm_rx_port_mixer_controls)),
13947 SND_SOC_DAPM_MIXER("SEC_AUXPCM_RX Port Mixer",
13948 SND_SOC_NOPM, 0, 0, sec_auxpcm_rx_port_mixer_controls,
13949 ARRAY_SIZE(sec_auxpcm_rx_port_mixer_controls)),
13950 SND_SOC_DAPM_MIXER("TERT_AUXPCM_RX Port Mixer",
13951 SND_SOC_NOPM, 0, 0, tert_auxpcm_rx_port_mixer_controls,
13952 ARRAY_SIZE(tert_auxpcm_rx_port_mixer_controls)),
13953 SND_SOC_DAPM_MIXER("QUAT_AUXPCM_RX Port Mixer",
13954 SND_SOC_NOPM, 0, 0, quat_auxpcm_rx_port_mixer_controls,
13955 ARRAY_SIZE(quat_auxpcm_rx_port_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013956 SND_SOC_DAPM_MIXER("QUIN_AUXPCM_RX Port Mixer",
13957 SND_SOC_NOPM, 0, 0, quin_auxpcm_rx_port_mixer_controls,
13958 ARRAY_SIZE(quin_auxpcm_rx_port_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013959 SND_SOC_DAPM_MIXER("SLIMBUS_1_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13960 sbus_1_rx_port_mixer_controls,
13961 ARRAY_SIZE(sbus_1_rx_port_mixer_controls)),
13962 SND_SOC_DAPM_MIXER("INTERNAL_BT_SCO_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13963 bt_sco_rx_port_mixer_controls,
13964 ARRAY_SIZE(bt_sco_rx_port_mixer_controls)),
13965 SND_SOC_DAPM_MIXER("AFE_PCM_RX Port Mixer",
13966 SND_SOC_NOPM, 0, 0, afe_pcm_rx_port_mixer_controls,
13967 ARRAY_SIZE(afe_pcm_rx_port_mixer_controls)),
13968 SND_SOC_DAPM_MIXER("HDMI_RX Port Mixer",
13969 SND_SOC_NOPM, 0, 0, hdmi_rx_port_mixer_controls,
13970 ARRAY_SIZE(hdmi_rx_port_mixer_controls)),
13971 SND_SOC_DAPM_MIXER("DISPLAY_PORT_RX Port Mixer",
13972 SND_SOC_NOPM, 0, 0, display_port_rx_port_mixer_controls,
13973 ARRAY_SIZE(display_port_rx_port_mixer_controls)),
13974 SND_SOC_DAPM_MIXER("SEC_I2S_RX Port Mixer",
13975 SND_SOC_NOPM, 0, 0, sec_i2s_rx_port_mixer_controls,
13976 ARRAY_SIZE(sec_i2s_rx_port_mixer_controls)),
13977 SND_SOC_DAPM_MIXER("SLIMBUS_3_RX Port Mixer",
13978 SND_SOC_NOPM, 0, 0, sbus_3_rx_port_mixer_controls,
13979 ARRAY_SIZE(sbus_3_rx_port_mixer_controls)),
13980 SND_SOC_DAPM_MIXER("SLIMBUS_6_RX Port Mixer",
13981 SND_SOC_NOPM, 0, 0, sbus_6_rx_port_mixer_controls,
13982 ARRAY_SIZE(sbus_6_rx_port_mixer_controls)),
13983 SND_SOC_DAPM_MIXER("MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13984 mi2s_rx_port_mixer_controls, ARRAY_SIZE(mi2s_rx_port_mixer_controls)),
13985 SND_SOC_DAPM_MIXER("PRI_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13986 primary_mi2s_rx_port_mixer_controls,
13987 ARRAY_SIZE(primary_mi2s_rx_port_mixer_controls)),
13988 SND_SOC_DAPM_MIXER("SEC_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13989 sec_mi2s_rx_port_mixer_controls,
13990 ARRAY_SIZE(sec_mi2s_rx_port_mixer_controls)),
13991 SND_SOC_DAPM_MIXER("TERT_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13992 tert_mi2s_rx_port_mixer_controls,
13993 ARRAY_SIZE(tert_mi2s_rx_port_mixer_controls)),
13994 SND_SOC_DAPM_MIXER("QUAT_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13995 quat_mi2s_rx_port_mixer_controls,
13996 ARRAY_SIZE(quat_mi2s_rx_port_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013997 SND_SOC_DAPM_MIXER("QUIN_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13998 quin_mi2s_rx_port_mixer_controls,
13999 ARRAY_SIZE(quin_mi2s_rx_port_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014000 SND_SOC_DAPM_MIXER("PRI_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
14001 pri_tdm_rx_0_port_mixer_controls,
14002 ARRAY_SIZE(pri_tdm_rx_0_port_mixer_controls)),
14003 SND_SOC_DAPM_MIXER("PRI_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
14004 pri_tdm_rx_1_port_mixer_controls,
14005 ARRAY_SIZE(pri_tdm_rx_1_port_mixer_controls)),
14006 SND_SOC_DAPM_MIXER("PRI_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
14007 pri_tdm_rx_2_port_mixer_controls,
14008 ARRAY_SIZE(pri_tdm_rx_2_port_mixer_controls)),
14009 SND_SOC_DAPM_MIXER("PRI_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
14010 pri_tdm_rx_3_port_mixer_controls,
14011 ARRAY_SIZE(pri_tdm_rx_3_port_mixer_controls)),
14012 SND_SOC_DAPM_MIXER("SEC_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
14013 sec_tdm_rx_0_port_mixer_controls,
14014 ARRAY_SIZE(sec_tdm_rx_0_port_mixer_controls)),
14015 SND_SOC_DAPM_MIXER("SEC_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
14016 sec_tdm_rx_1_port_mixer_controls,
14017 ARRAY_SIZE(sec_tdm_rx_1_port_mixer_controls)),
14018 SND_SOC_DAPM_MIXER("SEC_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
14019 sec_tdm_rx_2_port_mixer_controls,
14020 ARRAY_SIZE(sec_tdm_rx_2_port_mixer_controls)),
14021 SND_SOC_DAPM_MIXER("SEC_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
14022 sec_tdm_rx_3_port_mixer_controls,
14023 ARRAY_SIZE(sec_tdm_rx_3_port_mixer_controls)),
14024 SND_SOC_DAPM_MIXER("TERT_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
14025 tert_tdm_rx_0_port_mixer_controls,
14026 ARRAY_SIZE(tert_tdm_rx_0_port_mixer_controls)),
14027 SND_SOC_DAPM_MIXER("TERT_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
14028 tert_tdm_rx_1_port_mixer_controls,
14029 ARRAY_SIZE(tert_tdm_rx_1_port_mixer_controls)),
14030 SND_SOC_DAPM_MIXER("TERT_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
14031 tert_tdm_rx_2_port_mixer_controls,
14032 ARRAY_SIZE(tert_tdm_rx_2_port_mixer_controls)),
14033 SND_SOC_DAPM_MIXER("TERT_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
14034 tert_tdm_rx_3_port_mixer_controls,
14035 ARRAY_SIZE(tert_tdm_rx_3_port_mixer_controls)),
14036 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
14037 quat_tdm_rx_0_port_mixer_controls,
14038 ARRAY_SIZE(quat_tdm_rx_0_port_mixer_controls)),
14039 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
14040 quat_tdm_rx_1_port_mixer_controls,
14041 ARRAY_SIZE(quat_tdm_rx_1_port_mixer_controls)),
14042 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
14043 quat_tdm_rx_2_port_mixer_controls,
14044 ARRAY_SIZE(quat_tdm_rx_2_port_mixer_controls)),
14045 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
14046 quat_tdm_rx_3_port_mixer_controls,
14047 ARRAY_SIZE(quat_tdm_rx_3_port_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053014048 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
14049 quin_tdm_rx_0_port_mixer_controls,
14050 ARRAY_SIZE(quin_tdm_rx_0_port_mixer_controls)),
14051 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
14052 quin_tdm_rx_1_port_mixer_controls,
14053 ARRAY_SIZE(quin_tdm_rx_1_port_mixer_controls)),
14054 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
14055 quin_tdm_rx_2_port_mixer_controls,
14056 ARRAY_SIZE(quin_tdm_rx_2_port_mixer_controls)),
14057 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
14058 quin_tdm_rx_3_port_mixer_controls,
14059 ARRAY_SIZE(quin_tdm_rx_3_port_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014060 SND_SOC_DAPM_MIXER("INT0_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
14061 int0_mi2s_rx_port_mixer_controls,
14062 ARRAY_SIZE(int0_mi2s_rx_port_mixer_controls)),
14063 SND_SOC_DAPM_MIXER("INT4_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
14064 int4_mi2s_rx_port_mixer_controls,
14065 ARRAY_SIZE(int4_mi2s_rx_port_mixer_controls)),
14066 SND_SOC_DAPM_MIXER("QCHAT_Tx Mixer",
14067 SND_SOC_NOPM, 0, 0, tx_qchat_mixer_controls,
14068 ARRAY_SIZE(tx_qchat_mixer_controls)),
14069 SND_SOC_DAPM_MIXER("USB_AUDIO_RX_Voice Mixer",
14070 SND_SOC_NOPM, 0, 0, usb_audio_rx_voice_mixer_controls,
14071 ARRAY_SIZE(usb_audio_rx_voice_mixer_controls)),
14072 SND_SOC_DAPM_MIXER("USB_AUDIO_RX Port Mixer",
14073 SND_SOC_NOPM, 0, 0, usb_rx_port_mixer_controls,
14074 ARRAY_SIZE(usb_rx_port_mixer_controls)),
Aalique Grahamee4fd7d52017-11-28 13:24:13 -080014075 SND_SOC_DAPM_MIXER("DISPLAY_PORT_RX_Voice Mixer",
14076 SND_SOC_NOPM, 0, 0, display_port_rx_voice_mixer_controls,
14077 ARRAY_SIZE(display_port_rx_voice_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014078 /* lsm mixer definitions */
14079 SND_SOC_DAPM_MIXER("LSM1 Mixer", SND_SOC_NOPM, 0, 0,
14080 lsm1_mixer_controls, ARRAY_SIZE(lsm1_mixer_controls)),
14081 SND_SOC_DAPM_MIXER("LSM2 Mixer", SND_SOC_NOPM, 0, 0,
14082 lsm2_mixer_controls, ARRAY_SIZE(lsm2_mixer_controls)),
14083 SND_SOC_DAPM_MIXER("LSM3 Mixer", SND_SOC_NOPM, 0, 0,
14084 lsm3_mixer_controls, ARRAY_SIZE(lsm3_mixer_controls)),
14085 SND_SOC_DAPM_MIXER("LSM4 Mixer", SND_SOC_NOPM, 0, 0,
14086 lsm4_mixer_controls, ARRAY_SIZE(lsm4_mixer_controls)),
14087 SND_SOC_DAPM_MIXER("LSM5 Mixer", SND_SOC_NOPM, 0, 0,
14088 lsm5_mixer_controls, ARRAY_SIZE(lsm5_mixer_controls)),
14089 SND_SOC_DAPM_MIXER("LSM6 Mixer", SND_SOC_NOPM, 0, 0,
14090 lsm6_mixer_controls, ARRAY_SIZE(lsm6_mixer_controls)),
14091 SND_SOC_DAPM_MIXER("LSM7 Mixer", SND_SOC_NOPM, 0, 0,
14092 lsm7_mixer_controls, ARRAY_SIZE(lsm7_mixer_controls)),
14093 SND_SOC_DAPM_MIXER("LSM8 Mixer", SND_SOC_NOPM, 0, 0,
14094 lsm8_mixer_controls, ARRAY_SIZE(lsm8_mixer_controls)),
14095 /* Virtual Pins to force backends ON atm */
14096 SND_SOC_DAPM_OUTPUT("BE_OUT"),
14097 SND_SOC_DAPM_INPUT("BE_IN"),
14098
14099 SND_SOC_DAPM_MUX("SLIM0_RX_VI_FB_LCH_MUX", SND_SOC_NOPM, 0, 0,
14100 &slim0_rx_vi_fb_lch_mux),
14101 SND_SOC_DAPM_MUX("SLIM0_RX_VI_FB_RCH_MUX", SND_SOC_NOPM, 0, 0,
14102 &slim0_rx_vi_fb_rch_mux),
14103 SND_SOC_DAPM_MUX("PRI_MI2S_RX_VI_FB_MUX", SND_SOC_NOPM, 0, 0,
14104 &mi2s_rx_vi_fb_mux),
14105 SND_SOC_DAPM_MUX("INT4_MI2S_RX_VI_FB_MONO_CH_MUX", SND_SOC_NOPM, 0, 0,
14106 &int4_mi2s_rx_vi_fb_mono_ch_mux),
14107 SND_SOC_DAPM_MUX("INT4_MI2S_RX_VI_FB_STEREO_CH_MUX", SND_SOC_NOPM, 0, 0,
14108 &int4_mi2s_rx_vi_fb_stereo_ch_mux),
14109
14110 SND_SOC_DAPM_MUX("VOC_EXT_EC MUX", SND_SOC_NOPM, 0, 0,
14111 &voc_ext_ec_mux),
14112 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL1 MUX", SND_SOC_NOPM, 0, 0,
14113 &ext_ec_ref_mux_ul1),
14114 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL2 MUX", SND_SOC_NOPM, 0, 0,
14115 &ext_ec_ref_mux_ul2),
14116 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL3 MUX", SND_SOC_NOPM, 0, 0,
14117 &ext_ec_ref_mux_ul3),
14118 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL4 MUX", SND_SOC_NOPM, 0, 0,
14119 &ext_ec_ref_mux_ul4),
14120 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL5 MUX", SND_SOC_NOPM, 0, 0,
14121 &ext_ec_ref_mux_ul5),
14122 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL6 MUX", SND_SOC_NOPM, 0, 0,
14123 &ext_ec_ref_mux_ul6),
14124 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL8 MUX", SND_SOC_NOPM, 0, 0,
14125 &ext_ec_ref_mux_ul8),
14126 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL9 MUX", SND_SOC_NOPM, 0, 0,
14127 &ext_ec_ref_mux_ul9),
Laxminath Kasam38070be2017-08-17 18:21:59 +053014128 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL10 MUX", SND_SOC_NOPM, 0, 0,
14129 &ext_ec_ref_mux_ul10),
Asish Bhattacharya34504582017-08-08 12:55:01 +053014130 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL16 MUX", SND_SOC_NOPM, 0, 0,
14131 &ext_ec_ref_mux_ul16),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014132 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL17 MUX", SND_SOC_NOPM, 0, 0,
14133 &ext_ec_ref_mux_ul17),
14134 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL18 MUX", SND_SOC_NOPM, 0, 0,
14135 &ext_ec_ref_mux_ul18),
14136 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL19 MUX", SND_SOC_NOPM, 0, 0,
14137 &ext_ec_ref_mux_ul19),
Meng Wangbe8194e2018-04-25 10:40:01 +080014138 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL28 MUX", SND_SOC_NOPM, 0, 0,
14139 &ext_ec_ref_mux_ul28),
14140 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL29 MUX", SND_SOC_NOPM, 0, 0,
14141 &ext_ec_ref_mux_ul29),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014142};
14143
14144static const struct snd_soc_dapm_route intercon[] = {
14145 {"PRI_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14146 {"PRI_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14147 {"PRI_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14148 {"PRI_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14149 {"PRI_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14150 {"PRI_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14151 {"PRI_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14152 {"PRI_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14153 {"PRI_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14154 {"PRI_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14155 {"PRI_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14156 {"PRI_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14157 {"PRI_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14158 {"PRI_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14159 {"PRI_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14160 {"PRI_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14161 {"PRI_I2S_RX", NULL, "PRI_RX Audio Mixer"},
14162
14163 {"SEC_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14164 {"SEC_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14165 {"SEC_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14166 {"SEC_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14167 {"SEC_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14168 {"SEC_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14169 {"SEC_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14170 {"SEC_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14171 {"SEC_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14172 {"SEC_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14173 {"SEC_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14174 {"SEC_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14175 {"SEC_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14176 {"SEC_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14177 {"SEC_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14178 {"SEC_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14179 {"SEC_I2S_RX", NULL, "SEC_RX Audio Mixer"},
14180
14181 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14182 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14183 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14184 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14185 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14186 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14187 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14188 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14189 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14190 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14191 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14192 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14193 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14194 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14195 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14196 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14197 {"SLIMBUS_0_RX", NULL, "SLIMBUS_0_RX Audio Mixer"},
14198
14199 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14200 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14201 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14202 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14203 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14204 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14205 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14206 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14207 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14208 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14209 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14210 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14211 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14212 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14213 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14214 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14215 {"SLIMBUS_2_RX", NULL, "SLIMBUS_2_RX Audio Mixer"},
14216
14217 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14218 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14219 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14220 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14221 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14222 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14223 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14224 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14225 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14226 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14227 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14228 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14229 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14230 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14231 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14232 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14233 {"SLIMBUS_5_RX", NULL, "SLIMBUS_5_RX Audio Mixer"},
14234
14235 {"HDMI Mixer", "MultiMedia1", "MM_DL1"},
14236 {"HDMI Mixer", "MultiMedia2", "MM_DL2"},
14237 {"HDMI Mixer", "MultiMedia3", "MM_DL3"},
14238 {"HDMI Mixer", "MultiMedia4", "MM_DL4"},
14239 {"HDMI Mixer", "MultiMedia5", "MM_DL5"},
14240 {"HDMI Mixer", "MultiMedia6", "MM_DL6"},
14241 {"HDMI Mixer", "MultiMedia7", "MM_DL7"},
14242 {"HDMI Mixer", "MultiMedia8", "MM_DL8"},
14243 {"HDMI Mixer", "MultiMedia9", "MM_DL9"},
14244 {"HDMI Mixer", "MultiMedia10", "MM_DL10"},
14245 {"HDMI Mixer", "MultiMedia11", "MM_DL11"},
14246 {"HDMI Mixer", "MultiMedia12", "MM_DL12"},
14247 {"HDMI Mixer", "MultiMedia13", "MM_DL13"},
14248 {"HDMI Mixer", "MultiMedia14", "MM_DL14"},
14249 {"HDMI Mixer", "MultiMedia15", "MM_DL15"},
14250 {"HDMI Mixer", "MultiMedia16", "MM_DL16"},
14251 {"HDMI", NULL, "HDMI Mixer"},
14252
14253 {"DISPLAY_PORT Mixer", "MultiMedia1", "MM_DL1"},
14254 {"DISPLAY_PORT Mixer", "MultiMedia2", "MM_DL2"},
14255 {"DISPLAY_PORT Mixer", "MultiMedia3", "MM_DL3"},
14256 {"DISPLAY_PORT Mixer", "MultiMedia4", "MM_DL4"},
14257 {"DISPLAY_PORT Mixer", "MultiMedia5", "MM_DL5"},
14258 {"DISPLAY_PORT Mixer", "MultiMedia6", "MM_DL6"},
14259 {"DISPLAY_PORT Mixer", "MultiMedia7", "MM_DL7"},
14260 {"DISPLAY_PORT Mixer", "MultiMedia8", "MM_DL8"},
14261 {"DISPLAY_PORT Mixer", "MultiMedia9", "MM_DL9"},
14262 {"DISPLAY_PORT Mixer", "MultiMedia10", "MM_DL10"},
14263 {"DISPLAY_PORT Mixer", "MultiMedia11", "MM_DL11"},
14264 {"DISPLAY_PORT Mixer", "MultiMedia12", "MM_DL12"},
14265 {"DISPLAY_PORT Mixer", "MultiMedia13", "MM_DL13"},
14266 {"DISPLAY_PORT Mixer", "MultiMedia14", "MM_DL14"},
14267 {"DISPLAY_PORT Mixer", "MultiMedia15", "MM_DL15"},
14268 {"DISPLAY_PORT Mixer", "MultiMedia16", "MM_DL16"},
14269 {"DISPLAY_PORT", NULL, "DISPLAY_PORT Mixer"},
14270
14271 {"SPDIF_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14272 {"SPDIF_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14273 {"SPDIF_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14274 {"SPDIF_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14275 {"SPDIF_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14276 {"SPDIF_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14277 {"SPDIF_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14278 {"SPDIF_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14279 {"SPDIF_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14280 {"SPDIF_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14281 {"SPDIF_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14282 {"SPDIF_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14283 {"SPDIF_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14284 {"SPDIF_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14285 {"SPDIF_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14286 {"SPDIF_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14287 {"SPDIF_RX", NULL, "SPDIF_RX Audio Mixer"},
14288
14289 /* incall */
14290 {"Incall_Music Audio Mixer", "MultiMedia1", "MM_DL1"},
14291 {"Incall_Music Audio Mixer", "MultiMedia2", "MM_DL2"},
14292 {"Incall_Music Audio Mixer", "MultiMedia5", "MM_DL5"},
14293 {"Incall_Music Audio Mixer", "MultiMedia9", "MM_DL9"},
14294 {"VOICE_PLAYBACK_TX", NULL, "Incall_Music Audio Mixer"},
14295 {"Incall_Music_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
14296 {"Incall_Music_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
14297 {"Incall_Music_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
14298 {"Incall_Music_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
14299 {"VOICE2_PLAYBACK_TX", NULL, "Incall_Music_2 Audio Mixer"},
14300 {"SLIMBUS_4_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14301 {"SLIMBUS_4_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14302 {"SLIMBUS_4_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14303 {"SLIMBUS_4_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14304 {"SLIMBUS_4_RX", NULL, "SLIMBUS_4_RX Audio Mixer"},
14305
14306 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14307 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14308 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14309 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14310 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14311 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14312 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14313 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14314 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14315 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14316 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14317 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14318 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14319 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14320 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14321 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14322 {"SLIMBUS_6_RX", NULL, "SLIMBUS_6_RX Audio Mixer"},
14323
14324 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14325 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14326 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14327 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14328 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14329 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14330 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14331 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14332 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14333 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14334 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14335 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14336 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14337 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14338 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14339 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14340 {"SLIMBUS_7_RX", NULL, "SLIMBUS_7_RX Audio Mixer"},
14341
14342 {"USB_AUDIO_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14343 {"USB_AUDIO_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14344 {"USB_AUDIO_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14345 {"USB_AUDIO_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14346 {"USB_AUDIO_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14347 {"USB_AUDIO_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14348 {"USB_AUDIO_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14349 {"USB_AUDIO_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14350 {"USB_AUDIO_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14351 {"USB_AUDIO_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14352 {"USB_AUDIO_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14353 {"USB_AUDIO_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14354 {"USB_AUDIO_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14355 {"USB_AUDIO_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14356 {"USB_AUDIO_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14357 {"USB_AUDIO_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14358 {"USB_AUDIO_RX", NULL, "USB_AUDIO_RX Audio Mixer"},
14359
14360 {"MultiMedia1 Mixer", "VOC_REC_UL", "INCALL_RECORD_TX"},
14361 {"MultiMedia4 Mixer", "VOC_REC_UL", "INCALL_RECORD_TX"},
14362 {"MultiMedia8 Mixer", "VOC_REC_UL", "INCALL_RECORD_TX"},
14363 {"MultiMedia1 Mixer", "VOC_REC_DL", "INCALL_RECORD_RX"},
14364 {"MultiMedia4 Mixer", "VOC_REC_DL", "INCALL_RECORD_RX"},
14365 {"MultiMedia8 Mixer", "VOC_REC_DL", "INCALL_RECORD_RX"},
14366 {"MultiMedia1 Mixer", "SLIM_4_TX", "SLIMBUS_4_TX"},
14367 {"MultiMedia1 Mixer", "SLIM_6_TX", "SLIMBUS_6_TX"},
14368 {"MultiMedia1 Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
14369 {"MultiMedia1 Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
14370 {"MultiMedia8 Mixer", "SLIM_6_TX", "SLIMBUS_6_TX"},
14371 {"MultiMedia8 Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
14372 {"MultiMedia4 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14373 {"MultiMedia17 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14374 {"MultiMedia18 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14375 {"MultiMedia19 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053014376 {"MultiMedia28 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14377 {"MultiMedia29 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014378 {"MultiMedia8 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14379 {"MultiMedia2 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14380 {"MultiMedia4 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14381 {"MultiMedia17 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14382 {"MultiMedia18 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14383 {"MultiMedia19 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053014384 {"MultiMedia28 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14385 {"MultiMedia29 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014386 {"MultiMedia8 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053014387 {"MultiMedia17 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14388 {"MultiMedia18 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14389 {"MultiMedia19 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14390 {"MultiMedia28 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14391 {"MultiMedia29 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14392 {"MultiMedia17 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014393 {"MultiMedia18 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053014394 {"MultiMedia19 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14395 {"MultiMedia28 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14396 {"MultiMedia29 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014397 {"MultiMedia8 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14398 {"MultiMedia3 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14399 {"MultiMedia5 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014400 {"MultiMedia10 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014401 {"MultiMedia16 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014402 {"MultiMedia5 Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
14403 {"MultiMedia5 Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014404 {"MultiMedia10 Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014405 {"MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14406 {"MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14407 {"MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14408 {"MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14409 {"MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14410 {"MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14411 {"MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14412 {"MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14413 {"MI2S_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14414 {"MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14415 {"MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14416 {"MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14417 {"MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14418 {"MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14419 {"MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14420 {"MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14421 {"MI2S_RX", NULL, "MI2S_RX Audio Mixer"},
14422
14423 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14424 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14425 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14426 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14427 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14428 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14429 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14430 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14431 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14432 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14433 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14434 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14435 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14436 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14437 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14438 {"QUAT_MI2S_RX", NULL, "QUAT_MI2S_RX Audio Mixer"},
14439
14440 {"TERT_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14441 {"TERT_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14442 {"TERT_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14443 {"TERT_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14444 {"TERT_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14445 {"TERT_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14446 {"TERT_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14447 {"TERT_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14448 {"TERT_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14449 {"TERT_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14450 {"TERT_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14451 {"TERT_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14452 {"TERT_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14453 {"TERT_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14454 {"TERT_MI2S_RX", NULL, "TERT_MI2S_RX Audio Mixer"},
14455
14456 {"SEC_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14457 {"SEC_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14458 {"SEC_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14459 {"SEC_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14460 {"SEC_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14461 {"SEC_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14462 {"SEC_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14463 {"SEC_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14464 {"SEC_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14465 {"SEC_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14466 {"SEC_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14467 {"SEC_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14468 {"SEC_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14469 {"SEC_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14470 {"SEC_MI2S_RX", NULL, "SEC_MI2S_RX Audio Mixer"},
14471
14472 {"SEC_MI2S_RX_SD1 Audio Mixer", "MultiMedia6", "MM_DL6"},
14473 {"SEC_MI2S_RX_SD1", NULL, "SEC_MI2S_RX_SD1 Audio Mixer"},
14474
14475 {"SEC_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14476 {"SEC_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
14477
14478 {"PRI_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14479 {"PRI_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14480 {"PRI_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14481 {"PRI_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14482 {"PRI_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14483 {"PRI_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14484 {"PRI_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14485 {"PRI_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
Sachin Mohan Gadagd1b8fbc2018-07-20 15:50:17 +053014486 {"PRI_MI2S_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014487 {"PRI_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14488 {"PRI_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14489 {"PRI_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14490 {"PRI_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14491 {"PRI_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14492 {"PRI_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14493 {"PRI_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14494 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX Audio Mixer"},
14495
14496 {"INT0_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14497 {"INT0_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14498 {"INT0_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14499 {"INT0_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14500 {"INT0_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14501 {"INT0_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14502 {"INT0_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14503 {"INT0_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14504 {"INT0_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14505 {"INT0_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14506 {"INT0_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14507 {"INT0_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14508 {"INT0_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14509 {"INT0_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14510 {"INT0_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14511 {"INT0_MI2S_RX", NULL, "INT0_MI2S_RX Audio Mixer"},
14512
14513 {"INT4_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14514 {"INT4_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14515 {"INT4_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14516 {"INT4_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14517 {"INT4_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14518 {"INT4_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14519 {"INT4_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14520 {"INT4_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14521 {"INT4_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14522 {"INT4_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14523 {"INT4_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14524 {"INT4_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14525 {"INT4_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14526 {"INT4_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14527 {"INT4_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14528 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX Audio Mixer"},
14529
14530 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14531 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14532 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14533 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14534 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14535 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14536 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14537 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14538 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14539 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14540 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14541 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14542 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14543 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14544 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14545 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14546 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14547 {"QUIN_MI2S_RX", NULL, "QUIN_MI2S_RX Audio Mixer"},
14548
14549 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14550 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14551 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14552 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14553 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14554 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14555 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14556 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14557 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14558 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14559 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14560 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14561 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14562 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14563 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14564 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14565 {"PRI_TDM_RX_0", NULL, "PRI_TDM_RX_0 Audio Mixer"},
14566
14567 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
14568 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
14569 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
14570 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
14571 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
14572 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
14573 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
14574 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
14575 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
14576 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
14577 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
14578 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
14579 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
14580 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
14581 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
14582 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
14583 {"PRI_TDM_RX_1", NULL, "PRI_TDM_RX_1 Audio Mixer"},
14584
14585 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
14586 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
14587 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
14588 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
14589 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
14590 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
14591 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
14592 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
14593 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
14594 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
14595 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
14596 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
14597 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
14598 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
14599 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
14600 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
14601 {"PRI_TDM_RX_2", NULL, "PRI_TDM_RX_2 Audio Mixer"},
14602
14603 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
14604 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
14605 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
14606 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
14607 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
14608 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
14609 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
14610 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
14611 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
14612 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
14613 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
14614 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
14615 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
14616 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
14617 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
14618 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
14619 {"PRI_TDM_RX_3", NULL, "PRI_TDM_RX_3 Audio Mixer"},
14620
14621 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14622 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14623 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14624 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14625 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14626 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14627 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14628 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14629 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14630 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14631 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14632 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14633 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14634 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14635 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14636 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14637 {"PRI_TDM_TX_0", NULL, "PRI_TDM_TX_0 Audio Mixer"},
14638
14639 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14640 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14641 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14642 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14643 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14644 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14645 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14646 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14647 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14648 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14649 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14650 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14651 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14652 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14653 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14654 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14655 {"SEC_TDM_RX_0", NULL, "SEC_TDM_RX_0 Audio Mixer"},
14656
14657 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
14658 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
14659 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
14660 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
14661 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
14662 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
14663 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
14664 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
14665 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
14666 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
14667 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
14668 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
14669 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
14670 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
14671 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
14672 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
14673 {"SEC_TDM_RX_1", NULL, "SEC_TDM_RX_1 Audio Mixer"},
14674
14675 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
14676 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
14677 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
14678 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
14679 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
14680 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
14681 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
14682 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
14683 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
14684 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
14685 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
14686 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
14687 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
14688 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
14689 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
14690 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
14691 {"SEC_TDM_RX_2", NULL, "SEC_TDM_RX_2 Audio Mixer"},
14692
14693 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
14694 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
14695 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
14696 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
14697 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
14698 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
14699 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
14700 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
14701 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
14702 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
14703 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
14704 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
14705 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
14706 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
14707 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
14708 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
14709 {"SEC_TDM_RX_3", NULL, "SEC_TDM_RX_3 Audio Mixer"},
14710
14711 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14712 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14713 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14714 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14715 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14716 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14717 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14718 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14719 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14720 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14721 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14722 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14723 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14724 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14725 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14726 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14727 {"SEC_TDM_TX_0", NULL, "SEC_TDM_TX_0 Audio Mixer"},
14728
14729 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14730 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14731 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14732 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14733 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14734 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14735 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14736 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14737 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14738 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14739 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14740 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14741 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14742 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14743 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14744 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14745 {"TERT_TDM_RX_0", NULL, "TERT_TDM_RX_0 Audio Mixer"},
14746
14747 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14748 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14749 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14750 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14751 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14752 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14753 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14754 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14755 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14756 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14757 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14758 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14759 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14760 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14761 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14762 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14763 {"TERT_TDM_TX_0", NULL, "TERT_TDM_TX_0 Audio Mixer"},
14764
14765 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
14766 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
14767 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
14768 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
14769 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
14770 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
14771 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
14772 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
14773 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
14774 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
14775 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
14776 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
14777 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
14778 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
14779 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
14780 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
14781 {"TERT_TDM_RX_1", NULL, "TERT_TDM_RX_1 Audio Mixer"},
14782
14783 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
14784 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
14785 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
14786 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
14787 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
14788 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
14789 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
14790 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
14791 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
14792 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
14793 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
14794 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
14795 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
14796 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
14797 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
14798 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
14799 {"TERT_TDM_RX_2", NULL, "TERT_TDM_RX_2 Audio Mixer"},
14800
14801 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
14802 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
14803 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
14804 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
14805 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
14806 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
14807 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
14808 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
14809 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
14810 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
14811 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
14812 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
14813 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
14814 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
14815 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
14816 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
14817 {"TERT_TDM_RX_3", NULL, "TERT_TDM_RX_3 Audio Mixer"},
14818
14819 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia1", "MM_DL1"},
14820 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia2", "MM_DL2"},
14821 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia3", "MM_DL3"},
14822 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia4", "MM_DL4"},
14823 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia5", "MM_DL5"},
14824 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia6", "MM_DL6"},
14825 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia7", "MM_DL7"},
14826 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia8", "MM_DL8"},
14827 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia9", "MM_DL9"},
14828 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia10", "MM_DL10"},
14829 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia11", "MM_DL11"},
14830 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia12", "MM_DL12"},
14831 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia13", "MM_DL13"},
14832 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia14", "MM_DL14"},
14833 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia15", "MM_DL15"},
14834 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia16", "MM_DL16"},
14835 {"TERT_TDM_RX_4", NULL, "TERT_TDM_RX_4 Audio Mixer"},
14836
14837 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14838 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14839 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14840 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14841 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14842 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14843 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14844 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14845 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14846 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14847 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14848 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14849 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14850 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14851 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14852 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14853 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia20", "MM_DL20"},
14854 {"QUAT_TDM_RX_0", NULL, "QUAT_TDM_RX_0 Audio Mixer"},
14855
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014856 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14857 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14858 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14859 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14860 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14861 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14862 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14863 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14864 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14865 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14866 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14867 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14868 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14869 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14870 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14871 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14872 {"QUAT_TDM_TX_0", NULL, "QUAT_TDM_TX_0 Audio Mixer"},
14873
14874 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
14875 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
14876 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
14877 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
14878 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
14879 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
14880 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
14881 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
14882 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
14883 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
14884 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
14885 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
14886 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
14887 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
14888 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
14889 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
14890 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia20", "MM_DL20"},
14891 {"QUAT_TDM_RX_1", NULL, "QUAT_TDM_RX_1 Audio Mixer"},
14892
14893 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
14894 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
14895 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
14896 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
14897 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
14898 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
14899 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
14900 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
14901 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
14902 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
14903 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
14904 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
14905 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
14906 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
14907 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
14908 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
14909 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia20", "MM_DL20"},
14910 {"QUAT_TDM_RX_2", NULL, "QUAT_TDM_RX_2 Audio Mixer"},
14911
14912 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
14913 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
14914 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
14915 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
14916 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
14917 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
14918 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
14919 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
14920 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
14921 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
14922 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
14923 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
14924 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
14925 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
14926 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
14927 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
14928 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia20", "MM_DL20"},
14929 {"QUAT_TDM_RX_3", NULL, "QUAT_TDM_RX_3 Audio Mixer"},
14930
Rohit Kumara5077932017-09-10 22:05:05 +053014931 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14932 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14933 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14934 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14935 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14936 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14937 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14938 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14939 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14940 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14941 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14942 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14943 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14944 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14945 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14946 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14947 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia20", "MM_DL20"},
14948 {"QUIN_TDM_RX_0", NULL, "QUIN_TDM_RX_0 Audio Mixer"},
14949
14950 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14951 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14952 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14953 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14954 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14955 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14956 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14957 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14958 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14959 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14960 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14961 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14962 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14963 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14964 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14965 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14966 {"QUIN_TDM_TX_0", NULL, "QUIN_TDM_TX_0 Audio Mixer"},
14967
14968 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
14969 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
14970 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
14971 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
14972 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
14973 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
14974 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
14975 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
14976 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
14977 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
14978 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
14979 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
14980 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
14981 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
14982 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
14983 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
14984 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia20", "MM_DL20"},
14985 {"QUIN_TDM_RX_1", NULL, "QUIN_TDM_RX_1 Audio Mixer"},
14986
14987 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
14988 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
14989 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
14990 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
14991 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
14992 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
14993 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
14994 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
14995 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
14996 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
14997 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
14998 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
14999 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
15000 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
15001 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
15002 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
15003 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia20", "MM_DL20"},
15004 {"QUIN_TDM_RX_2", NULL, "QUIN_TDM_RX_2 Audio Mixer"},
15005
15006 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
15007 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
15008 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
15009 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
15010 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
15011 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
15012 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
15013 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
15014 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
15015 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
15016 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
15017 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
15018 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
15019 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
15020 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
15021 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
15022 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia20", "MM_DL20"},
15023 {"QUIN_TDM_RX_3", NULL, "QUIN_TDM_RX_3 Audio Mixer"},
15024
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015025 {"MultiMedia1 Mixer", "PRI_TX", "PRI_I2S_TX"},
15026 {"MultiMedia1 Mixer", "MI2S_TX", "MI2S_TX"},
15027 {"MultiMedia2 Mixer", "MI2S_TX", "MI2S_TX"},
15028 {"MultiMedia3 Mixer", "MI2S_TX", "MI2S_TX"},
15029 {"MultiMedia5 Mixer", "MI2S_TX", "MI2S_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053015030 {"MultiMedia10 Mixer", "MI2S_TX", "MI2S_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053015031 {"MultiMedia16 Mixer", "MI2S_TX", "MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015032 {"MultiMedia1 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15033 {"MultiMedia2 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15034 {"MultiMedia6 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15035 {"MultiMedia1 Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
15036 {"MultiMedia2 Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
15037 {"MultiMedia1 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15038 {"MultiMedia2 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15039 {"MultiMedia1 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
15040 {"MultiMedia2 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
15041 {"MultiMedia1 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
15042 {"MultiMedia2 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
15043 {"MultiMedia1 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
15044 {"MultiMedia1 Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15045 {"MultiMedia3 Mixer", "AUX_PCM_TX", "AUX_PCM_TX"},
15046 {"MultiMedia5 Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053015047 {"MultiMedia10 Mixer", "AUX_PCM_TX", "AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015048 {"MultiMedia1 Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15049 {"MultiMedia3 Mixer", "SEC_AUX_PCM_TX", "SEC_AUX_PCM_TX"},
15050 {"MultiMedia5 Mixer", "SEC_AUX_PCM_TX", "SEC_AUX_PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053015051 {"MultiMedia10 Mixer", "SEC_AUX_PCM_TX", "SEC_AUX_PCM_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053015052 {"MultiMedia16 Mixer", "AUX_PCM_TX", "AUX_PCM_TX"},
15053 {"MultiMedia16 Mixer", "SEC_AUX_PCM_TX", "SEC_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015054 {"MultiMedia1 Mixer", "TERT_AUXPCM_UL_TX", "TERT_AUX_PCM_TX"},
15055 {"MultiMedia3 Mixer", "TERT_AUX_PCM_TX", "TERT_AUX_PCM_TX"},
15056 {"MultiMedia5 Mixer", "TERT_AUX_PCM_TX", "TERT_AUX_PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053015057 {"MultiMedia10 Mixer", "TERT_AUX_PCM_TX", "TERT_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015058 {"MultiMedia1 Mixer", "QUAT_AUXPCM_UL_TX", "QUAT_AUX_PCM_TX"},
15059 {"MultiMedia3 Mixer", "QUAT_AUX_PCM_TX", "QUAT_AUX_PCM_TX"},
15060 {"MultiMedia5 Mixer", "QUAT_AUX_PCM_TX", "QUAT_AUX_PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053015061 {"MultiMedia10 Mixer", "QUAT_AUX_PCM_TX", "QUAT_AUX_PCM_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053015062 {"MultiMedia16 Mixer", "QUAT_AUX_PCM_TX", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015063 {"MultiMedia1 Mixer", "QUIN_AUXPCM_UL_TX", "QUIN_AUX_PCM_TX"},
15064 {"MultiMedia3 Mixer", "QUIN_AUX_PCM_TX", "QUIN_AUX_PCM_TX"},
15065 {"MultiMedia5 Mixer", "QUIN_AUX_PCM_TX", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015066 {"MultiMedia2 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
15067 {"MultiMedia2 Mixer", "SLIM_6_TX", "SLIMBUS_6_TX"},
15068 {"MultiMedia2 Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
15069 {"MultiMedia2 Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
15070 {"MultiMedia1 Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15071 {"MultiMedia1 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15072 {"MultiMedia2 Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15073 {"MultiMedia6 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
15074 {"MultiMedia6 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15075 {"MultiMedia3 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15076 {"MultiMedia5 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053015077 {"MultiMedia10 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015078 {"MultiMedia6 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
15079 {"MultiMedia3 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
15080 {"MultiMedia5 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053015081 {"MultiMedia10 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053015082 {"MultiMedia16 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015083 {"MultiMedia6 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
15084 {"MultiMedia3 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
15085 {"MultiMedia5 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053015086 {"MultiMedia10 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053015087 {"MultiMedia16 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053015088 {"MultiMedia17 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
15089 {"MultiMedia18 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
15090 {"MultiMedia19 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
15091 {"MultiMedia28 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
15092 {"MultiMedia29 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015093 {"MultiMedia6 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15094 {"MultiMedia6 Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15095 {"MultiMedia6 Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15096 {"MultiMedia6 Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015097 {"MultiMedia6 Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015098
15099 {"MultiMedia1 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15100 {"MultiMedia1 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15101 {"MultiMedia1 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15102 {"MultiMedia1 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15103 {"MultiMedia1 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15104 {"MultiMedia1 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15105 {"MultiMedia1 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15106 {"MultiMedia1 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15107 {"MultiMedia1 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15108 {"MultiMedia1 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15109 {"MultiMedia1 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15110 {"MultiMedia1 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15111 {"MultiMedia1 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15112 {"MultiMedia1 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15113 {"MultiMedia1 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15114 {"MultiMedia1 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Raja Mallik425e1d32018-05-20 19:21:10 +053015115 {"MultiMedia1 Mixer", "AFE_LOOPBACK_TX", "AFE_LOOPBACK_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015116 {"MultiMedia1 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15117 {"MultiMedia1 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15118 {"MultiMedia1 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15119 {"MultiMedia1 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015120
15121 {"MultiMedia2 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15122 {"MultiMedia2 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15123 {"MultiMedia2 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15124 {"MultiMedia2 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15125 {"MultiMedia2 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15126 {"MultiMedia2 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15127 {"MultiMedia2 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15128 {"MultiMedia2 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15129 {"MultiMedia2 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15130 {"MultiMedia2 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15131 {"MultiMedia2 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15132 {"MultiMedia2 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15133 {"MultiMedia2 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15134 {"MultiMedia2 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15135 {"MultiMedia2 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15136 {"MultiMedia2 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Raja Mallik425e1d32018-05-20 19:21:10 +053015137 {"MultiMedia2 Mixer", "AFE_LOOPBACK_TX", "AFE_LOOPBACK_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015138 {"MultiMedia2 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15139 {"MultiMedia2 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15140 {"MultiMedia2 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15141 {"MultiMedia2 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015142
15143 {"MultiMedia3 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15144 {"MultiMedia3 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15145 {"MultiMedia3 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15146 {"MultiMedia3 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15147 {"MultiMedia3 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15148 {"MultiMedia3 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15149 {"MultiMedia3 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15150 {"MultiMedia3 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15151 {"MultiMedia3 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15152 {"MultiMedia3 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15153 {"MultiMedia3 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15154 {"MultiMedia3 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15155 {"MultiMedia3 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15156 {"MultiMedia3 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15157 {"MultiMedia3 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15158 {"MultiMedia3 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Raja Mallik425e1d32018-05-20 19:21:10 +053015159 {"MultiMedia3 Mixer", "AFE_LOOPBACK_TX", "AFE_LOOPBACK_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015160 {"MultiMedia3 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15161 {"MultiMedia3 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15162 {"MultiMedia3 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15163 {"MultiMedia3 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015164
15165 {"MultiMedia4 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15166 {"MultiMedia4 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15167 {"MultiMedia4 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15168 {"MultiMedia4 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15169 {"MultiMedia4 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15170 {"MultiMedia4 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15171 {"MultiMedia4 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15172 {"MultiMedia4 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15173 {"MultiMedia4 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15174 {"MultiMedia4 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15175 {"MultiMedia4 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15176 {"MultiMedia4 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15177 {"MultiMedia4 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15178 {"MultiMedia4 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15179 {"MultiMedia4 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15180 {"MultiMedia4 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Raja Mallik425e1d32018-05-20 19:21:10 +053015181 {"MultiMedia4 Mixer", "AFE_LOOPBACK_TX", "AFE_LOOPBACK_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015182 {"MultiMedia4 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15183 {"MultiMedia4 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15184 {"MultiMedia4 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15185 {"MultiMedia4 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015186
15187 {"MultiMedia5 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15188 {"MultiMedia5 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15189 {"MultiMedia5 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15190 {"MultiMedia5 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15191 {"MultiMedia5 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15192 {"MultiMedia5 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15193 {"MultiMedia5 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15194 {"MultiMedia5 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15195 {"MultiMedia5 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15196 {"MultiMedia5 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15197 {"MultiMedia5 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15198 {"MultiMedia5 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15199 {"MultiMedia5 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15200 {"MultiMedia5 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15201 {"MultiMedia5 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15202 {"MultiMedia5 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Raja Mallik425e1d32018-05-20 19:21:10 +053015203 {"MultiMedia5 Mixer", "AFE_LOOPBACK_TX", "AFE_LOOPBACK_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015204 {"MultiMedia5 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15205 {"MultiMedia5 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15206 {"MultiMedia5 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15207 {"MultiMedia5 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015208
15209 {"MultiMedia6 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15210 {"MultiMedia6 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15211 {"MultiMedia6 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15212 {"MultiMedia6 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15213 {"MultiMedia6 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15214 {"MultiMedia6 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15215 {"MultiMedia6 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15216 {"MultiMedia6 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15217 {"MultiMedia6 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15218 {"MultiMedia6 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15219 {"MultiMedia6 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15220 {"MultiMedia6 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15221 {"MultiMedia6 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15222 {"MultiMedia6 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15223 {"MultiMedia6 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15224 {"MultiMedia6 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Raja Mallik425e1d32018-05-20 19:21:10 +053015225 {"MultiMedia6 Mixer", "AFE_LOOPBACK_TX", "AFE_LOOPBACK_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015226 {"MultiMedia6 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15227 {"MultiMedia6 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15228 {"MultiMedia6 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15229 {"MultiMedia6 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015230
15231 {"MultiMedia8 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15232 {"MultiMedia8 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15233 {"MultiMedia8 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15234 {"MultiMedia8 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15235 {"MultiMedia8 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15236 {"MultiMedia8 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15237 {"MultiMedia8 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15238 {"MultiMedia8 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15239 {"MultiMedia8 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15240 {"MultiMedia8 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15241 {"MultiMedia8 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15242 {"MultiMedia8 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15243 {"MultiMedia8 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15244 {"MultiMedia8 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15245 {"MultiMedia8 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15246 {"MultiMedia8 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Raja Mallik425e1d32018-05-20 19:21:10 +053015247 {"MultiMedia8 Mixer", "AFE_LOOPBACK_TX", "AFE_LOOPBACK_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015248 {"MultiMedia8 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15249 {"MultiMedia8 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15250 {"MultiMedia8 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15251 {"MultiMedia8 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015252
15253 {"MultiMedia9 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15254 {"MultiMedia9 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15255 {"MultiMedia9 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15256 {"MultiMedia9 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15257 {"MultiMedia9 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15258 {"MultiMedia9 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15259 {"MultiMedia9 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15260 {"MultiMedia9 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015261 {"MultiMedia9 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15262 {"MultiMedia9 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15263 {"MultiMedia9 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15264 {"MultiMedia9 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Raja Mallik425e1d32018-05-20 19:21:10 +053015265 {"MultiMedia9 Mixer", "AFE_LOOPBACK_TX", "AFE_LOOPBACK_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015266
Laxminath Kasam38070be2017-08-17 18:21:59 +053015267 {"MultiMedia10 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15268 {"MultiMedia10 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15269 {"MultiMedia10 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15270 {"MultiMedia10 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15271 {"MultiMedia10 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15272 {"MultiMedia10 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15273 {"MultiMedia10 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15274 {"MultiMedia10 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015275 {"MultiMedia20 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15276 {"MultiMedia20 Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15277 {"MultiMedia20 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15278 {"MultiMedia20 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015279 {"MultiMedia20 Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015280 {"MultiMedia20 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15281 {"MultiMedia20 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15282 {"MultiMedia20 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15283 {"MultiMedia20 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15284 {"MultiMedia20 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15285 {"MultiMedia20 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15286 {"MultiMedia20 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15287 {"MultiMedia20 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15288 {"MultiMedia20 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15289 {"MultiMedia20 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15290 {"MultiMedia20 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15291 {"MultiMedia20 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15292 {"MultiMedia20 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15293 {"MultiMedia20 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15294 {"MultiMedia20 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15295 {"MultiMedia20 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015296 {"MultiMedia20 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15297 {"MultiMedia20 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15298 {"MultiMedia20 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15299 {"MultiMedia20 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015300
15301 {"MultiMedia1 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
15302 {"MultiMedia2 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
15303 {"MultiMedia4 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
15304 {"MultiMedia5 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
15305 {"MultiMedia6 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
15306 {"MultiMedia8 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053015307 {"MultiMedia10 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015308
Asish Bhattacharya34504582017-08-08 12:55:01 +053015309 {"MultiMedia16 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15310 {"MultiMedia16 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15311 {"MultiMedia16 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15312 {"MultiMedia16 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15313 {"MultiMedia16 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15314 {"MultiMedia16 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15315 {"MultiMedia16 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15316 {"MultiMedia16 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15317 {"MultiMedia16 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15318 {"MultiMedia16 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15319 {"MultiMedia16 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15320 {"MultiMedia16 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15321 {"MultiMedia16 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15322 {"MultiMedia16 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15323 {"MultiMedia16 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15324 {"MultiMedia16 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
15325 {"MultiMedia16 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
15326
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015327 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15328 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15329 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15330 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15331 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15332 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15333 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15334 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15335 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15336 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15337 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15338 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15339 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15340 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15341 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15342 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15343 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia6", "MM_UL6"},
15344 {"INT_BT_SCO_RX", NULL, "INTERNAL_BT_SCO_RX Audio Mixer"},
15345
15346 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15347 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15348 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15349 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15350 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15351 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15352 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15353 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15354 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15355 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15356 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15357 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15358 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15359 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15360 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15361 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15362 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia6", "MM_UL6"},
15363 {"INT_BT_A2DP_RX", NULL, "INTERNAL_A2DP_RX Audio Mixer"},
15364
15365 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15366 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15367 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15368 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15369 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15370 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15371 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15372 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15373 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15374 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15375 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15376 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15377 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15378 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15379 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15380 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15381 {"INT_FM_RX", NULL, "INTERNAL_FM_RX Audio Mixer"},
15382
15383 {"AFE_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15384 {"AFE_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15385 {"AFE_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15386 {"AFE_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15387 {"AFE_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15388 {"AFE_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15389 {"AFE_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15390 {"AFE_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15391 {"AFE_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15392 {"AFE_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15393 {"AFE_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15394 {"AFE_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15395 {"AFE_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15396 {"AFE_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15397 {"AFE_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15398 {"AFE_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15399 {"PCM_RX", NULL, "AFE_PCM_RX Audio Mixer"},
15400
15401 {"MultiMedia1 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15402 {"MultiMedia3 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15403 {"MultiMedia4 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053015404 {"MultiMedia10 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015405 {"MultiMedia17 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15406 {"MultiMedia18 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15407 {"MultiMedia19 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053015408 {"MultiMedia28 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15409 {"MultiMedia29 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015410 {"MultiMedia5 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15411 {"MultiMedia8 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053015412 {"MultiMedia16 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015413 {"MultiMedia1 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15414 {"MultiMedia4 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053015415 {"MultiMedia16 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015416 {"MultiMedia17 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15417 {"MultiMedia18 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15418 {"MultiMedia19 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053015419 {"MultiMedia28 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15420 {"MultiMedia29 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015421 {"MultiMedia5 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15422 {"MultiMedia6 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15423 {"MultiMedia8 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15424
15425 {"MultiMedia1 Mixer", "AFE_PCM_TX", "PCM_TX"},
15426 {"MultiMedia3 Mixer", "AFE_PCM_TX", "PCM_TX"},
15427 {"MultiMedia4 Mixer", "AFE_PCM_TX", "PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053015428 {"MultiMedia10 Mixer", "AFE_PCM_TX", "PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015429 {"MultiMedia17 Mixer", "AFE_PCM_TX", "PCM_TX"},
15430 {"MultiMedia18 Mixer", "AFE_PCM_TX", "PCM_TX"},
15431 {"MultiMedia19 Mixer", "AFE_PCM_TX", "PCM_TX"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053015432 {"MultiMedia28 Mixer", "AFE_PCM_TX", "PCM_TX"},
15433 {"MultiMedia29 Mixer", "AFE_PCM_TX", "PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015434 {"MultiMedia5 Mixer", "AFE_PCM_TX", "PCM_TX"},
15435 {"MultiMedia8 Mixer", "AFE_PCM_TX", "PCM_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053015436 {"MultiMedia16 Mixer", "AFE_PCM_TX", "PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015437 {"MM_UL1", NULL, "MultiMedia1 Mixer"},
15438 {"MultiMedia2 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15439 {"MM_UL2", NULL, "MultiMedia2 Mixer"},
15440 {"MM_UL3", NULL, "MultiMedia3 Mixer"},
15441 {"MM_UL4", NULL, "MultiMedia4 Mixer"},
15442 {"MM_UL5", NULL, "MultiMedia5 Mixer"},
15443 {"MM_UL6", NULL, "MultiMedia6 Mixer"},
15444 {"MM_UL8", NULL, "MultiMedia8 Mixer"},
15445 {"MM_UL9", NULL, "MultiMedia9 Mixer"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053015446 {"MM_UL10", NULL, "MultiMedia10 Mixer"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053015447 {"MM_UL16", NULL, "MultiMedia16 Mixer"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015448 {"MM_UL17", NULL, "MultiMedia17 Mixer"},
15449 {"MM_UL18", NULL, "MultiMedia18 Mixer"},
15450 {"MM_UL19", NULL, "MultiMedia19 Mixer"},
15451 {"MM_UL20", NULL, "MultiMedia20 Mixer"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053015452 {"MM_UL28", NULL, "MultiMedia28 Mixer"},
15453 {"MM_UL29", NULL, "MultiMedia29 Mixer"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015454
15455 {"AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15456 {"AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15457 {"AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15458 {"AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15459 {"AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15460 {"AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15461 {"AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15462 {"AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15463 {"AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15464 {"AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15465 {"AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15466 {"AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15467 {"AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15468 {"AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15469 {"AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15470 {"AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15471 {"AUX_PCM_RX", NULL, "AUX_PCM_RX Audio Mixer"},
15472
15473 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15474 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15475 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15476 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15477 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15478 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15479 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15480 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15481 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15482 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15483 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15484 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15485 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15486 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15487 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15488 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15489 {"SEC_AUX_PCM_RX", NULL, "SEC_AUX_PCM_RX Audio Mixer"},
15490
15491 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15492 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15493 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15494 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15495 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15496 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15497 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15498 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15499 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15500 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15501 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15502 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15503 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15504 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15505 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15506 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15507 {"TERT_AUX_PCM_RX", NULL, "TERT_AUX_PCM_RX Audio Mixer"},
15508
15509 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15510 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15511 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15512 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15513 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15514 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15515 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15516 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15517 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15518 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15519 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15520 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15521 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15522 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15523 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15524 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15525 {"QUAT_AUX_PCM_RX", NULL, "QUAT_AUX_PCM_RX Audio Mixer"},
15526
Rohit Kumara5077932017-09-10 22:05:05 +053015527 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15528 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15529 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15530 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15531 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15532 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15533 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15534 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15535 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15536 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15537 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15538 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15539 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15540 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15541 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15542 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15543 {"QUIN_AUX_PCM_RX", NULL, "QUIN_AUX_PCM_RX Audio Mixer"},
15544
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015545 {"PRI_RX_Voice Mixer", "Voip", "VOIP_DL"},
15546 {"PRI_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15547 {"PRI_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15548 {"PRI_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15549 {"PRI_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15550 {"PRI_I2S_RX", NULL, "PRI_RX_Voice Mixer"},
15551
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015552 {"SEC_RX_Voice Mixer", "Voip", "VOIP_DL"},
15553 {"SEC_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15554 {"SEC_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15555 {"SEC_I2S_RX", NULL, "SEC_RX_Voice Mixer"},
15556
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015557 {"SEC_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
15558 {"SEC_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15559 {"SEC_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15560 {"SEC_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15561 {"SEC_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15562 {"SEC_MI2S_RX", NULL, "SEC_MI2S_RX_Voice Mixer"},
15563
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015564 {"SLIM_0_RX_Voice Mixer", "Voip", "VOIP_DL"},
15565 {"SLIM_0_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015566 {"SLIM_0_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15567 {"SLIM_0_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15568 {"SLIM_0_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15569 {"SLIMBUS_0_RX", NULL, "SLIM_0_RX_Voice Mixer"},
15570
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015571 {"SLIM_6_RX_Voice Mixer", "Voip", "VOIP_DL"},
15572 {"SLIM_6_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015573 {"SLIM_6_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15574 {"SLIM_6_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15575 {"SLIM_6_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15576 {"SLIMBUS_6_RX", NULL, "SLIM_6_RX_Voice Mixer"},
15577
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015578 {"USB_AUDIO_RX_Voice Mixer", "Voip", "VOIP_DL"},
15579 {"USB_AUDIO_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015580 {"USB_AUDIO_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15581 {"USB_AUDIO_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15582 {"USB_AUDIO_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15583 {"USB_AUDIO_RX", NULL, "USB_AUDIO_RX_Voice Mixer"},
15584
Aalique Grahamee4fd7d52017-11-28 13:24:13 -080015585 {"DISPLAY_PORT_RX_Voice Mixer", "Voip", "VOIP_DL"},
15586 {"DISPLAY_PORT_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Aalique Grahamee4fd7d52017-11-28 13:24:13 -080015587 {"DISPLAY_PORT_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15588 {"DISPLAY_PORT_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15589 {"DISPLAY_PORT_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15590 {"DISPLAY_PORT", NULL, "DISPLAY_PORT_RX_Voice Mixer"},
15591
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015592 {"INTERNAL_BT_SCO_RX_Voice Mixer", "Voip", "VOIP_DL"},
15593 {"INTERNAL_BT_SCO_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15594 {"INTERNAL_BT_SCO_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15595 {"INTERNAL_BT_SCO_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15596 {"INTERNAL_BT_SCO_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015597 {"INT_BT_SCO_RX", NULL, "INTERNAL_BT_SCO_RX_Voice Mixer"},
15598
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015599 {"AFE_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
15600 {"AFE_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15601 {"AFE_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15602 {"AFE_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15603 {"AFE_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15604 {"PCM_RX", NULL, "AFE_PCM_RX_Voice Mixer"},
15605
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015606 {"AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
15607 {"AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015608 {"AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15609 {"AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15610 {"AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15611 {"AUX_PCM_RX", NULL, "AUX_PCM_RX_Voice Mixer"},
15612
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015613 {"SEC_AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
15614 {"SEC_AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015615 {"SEC_AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15616 {"SEC_AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15617 {"SEC_AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15618 {"SEC_AUX_PCM_RX", NULL, "SEC_AUX_PCM_RX_Voice Mixer"},
15619
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015620 {"TERT_AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
15621 {"TERT_AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015622 {"TERT_AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15623 {"TERT_AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15624 {"TERT_AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15625 {"TERT_AUX_PCM_RX", NULL, "TERT_AUX_PCM_RX_Voice Mixer"},
15626
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015627 {"QUAT_AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
15628 {"QUAT_AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015629 {"QUAT_AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15630 {"QUAT_AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15631 {"QUAT_AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15632 {"QUAT_AUX_PCM_RX", NULL, "QUAT_AUX_PCM_RX_Voice Mixer"},
15633
Rohit Kumara5077932017-09-10 22:05:05 +053015634 {"QUIN_AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
15635 {"QUIN_AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Rohit Kumara5077932017-09-10 22:05:05 +053015636 {"QUIN_AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15637 {"QUIN_AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15638 {"QUIN_AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15639 {"QUIN_AUX_PCM_RX", NULL, "QUIN_AUX_PCM_RX_Voice Mixer"},
15640
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015641 {"HDMI_RX_Voice Mixer", "Voip", "VOIP_DL"},
15642 {"HDMI_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15643 {"HDMI_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15644 {"HDMI_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15645 {"HDMI_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15646 {"HDMI", NULL, "HDMI_RX_Voice Mixer"},
15647 {"HDMI", NULL, "HDMI_DL_HL"},
15648
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015649 {"MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015650 {"MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15651 {"MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15652 {"MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
kunleiz8a60b822017-10-11 15:04:02 +080015653 {"MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015654 {"MI2S_RX", NULL, "MI2S_RX_Voice Mixer"},
15655
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015656 {"PRI_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015657 {"PRI_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15658 {"PRI_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15659 {"PRI_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15660 {"PRI_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15661 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX_Voice Mixer"},
15662
15663 {"INT0_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
15664 {"INT0_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15665 {"INT0_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15666 {"INT0_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15667 {"INT0_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15668 {"INT0_MI2S_RX", NULL, "INT0_MI2S_RX_Voice Mixer"},
15669
15670 {"INT4_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
15671 {"INT4_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15672 {"INT4_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15673 {"INT4_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15674 {"INT4_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15675 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX_Voice Mixer"},
15676
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015677 {"TERT_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015678 {"TERT_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15679 {"TERT_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15680 {"TERT_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15681 {"TERT_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15682 {"TERT_MI2S_RX", NULL, "TERT_MI2S_RX_Voice Mixer"},
15683
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015684 {"QUAT_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015685 {"QUAT_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15686 {"QUAT_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15687 {"QUAT_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15688 {"QUAT_MI2S_RX", NULL, "QUAT_MI2S_RX_Voice Mixer"},
15689
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015690 {"QUIN_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015691 {"QUIN_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15692 {"QUIN_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15693 {"QUIN_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15694 {"QUIN_MI2S_RX", NULL, "QUIN_MI2S_RX_Voice Mixer"},
15695
Raja Mallik321d5712018-05-04 17:22:11 +053015696 {"PRI_TDM_RX_0_Voice Mixer", "Voip", "VOIP_DL"},
Raja Mallik321d5712018-05-04 17:22:11 +053015697 {"PRI_TDM_RX_0_Voice Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
15698 {"PRI_TDM_RX_0_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
15699 {"PRI_TDM_RX_0_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
15700 {"PRI_TDM_RX_0_Voice Mixer", "QCHAT", "QCHAT_DL"},
15701 {"PRI_TDM_RX_0_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15702 {"PRI_TDM_RX_0_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15703 {"PRI_TDM_RX_0_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15704 {"PRI_TDM_RX_0", NULL, "PRI_TDM_RX_0_Voice Mixer"},
15705
Raja Mallik321d5712018-05-04 17:22:11 +053015706 {"PRI_TDM_RX_1_Voice Mixer", "Voip", "VOIP_DL"},
Raja Mallik321d5712018-05-04 17:22:11 +053015707 {"PRI_TDM_RX_1_Voice Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
15708 {"PRI_TDM_RX_1_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
15709 {"PRI_TDM_RX_1_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
15710 {"PRI_TDM_RX_1_Voice Mixer", "QCHAT", "QCHAT_DL"},
15711 {"PRI_TDM_RX_1_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15712 {"PRI_TDM_RX_1_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15713 {"PRI_TDM_RX_1_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15714 {"PRI_TDM_RX_1", NULL, "PRI_TDM_RX_1_Voice Mixer"},
15715
Raja Mallik321d5712018-05-04 17:22:11 +053015716 {"PRI_TDM_RX_2_Voice Mixer", "Voip", "VOIP_DL"},
Raja Mallik321d5712018-05-04 17:22:11 +053015717 {"PRI_TDM_RX_2_Voice Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
15718 {"PRI_TDM_RX_2_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
15719 {"PRI_TDM_RX_2_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
15720 {"PRI_TDM_RX_2_Voice Mixer", "QCHAT", "QCHAT_DL"},
15721 {"PRI_TDM_RX_2_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15722 {"PRI_TDM_RX_2_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15723 {"PRI_TDM_RX_2_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15724 {"PRI_TDM_RX_2", NULL, "PRI_TDM_RX_2_Voice Mixer"},
15725
Raja Mallik321d5712018-05-04 17:22:11 +053015726 {"PRI_TDM_RX_3_Voice Mixer", "Voip", "VOIP_DL"},
Raja Mallik321d5712018-05-04 17:22:11 +053015727 {"PRI_TDM_RX_3_Voice Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
15728 {"PRI_TDM_RX_3_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
15729 {"PRI_TDM_RX_3_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
15730 {"PRI_TDM_RX_3_Voice Mixer", "QCHAT", "QCHAT_DL"},
15731 {"PRI_TDM_RX_3_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15732 {"PRI_TDM_RX_3_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15733 {"PRI_TDM_RX_3_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15734 {"PRI_TDM_RX_3", NULL, "PRI_TDM_RX_3_Voice Mixer"},
15735
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015736 {"QUAT_TDM_RX_2_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15737 {"QUAT_TDM_RX_2", NULL, "QUAT_TDM_RX_2_Voice Mixer"},
15738
15739 {"VOC_EXT_EC MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15740 {"VOC_EXT_EC MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15741 {"VOC_EXT_EC MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15742 {"VOC_EXT_EC MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015743 {"VOC_EXT_EC MUX", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015744 {"VOC_EXT_EC MUX", "SLIM_1_TX", "SLIMBUS_1_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015745 {"VOIP_UL", NULL, "VOC_EXT_EC MUX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015746 {"VOICEMMODE1_UL", NULL, "VOC_EXT_EC MUX"},
15747 {"VOICEMMODE2_UL", NULL, "VOC_EXT_EC MUX"},
15748
15749 {"AUDIO_REF_EC_UL1 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15750 {"AUDIO_REF_EC_UL1 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15751 {"AUDIO_REF_EC_UL1 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15752 {"AUDIO_REF_EC_UL1 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15753 {"AUDIO_REF_EC_UL1 MUX", "SLIM_1_TX", "SLIMBUS_1_TX"},
Bala Kishore Pati1a044712018-10-03 12:12:36 +053015754 {"AUDIO_REF_EC_UL1 MUX", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015755 {"AUDIO_REF_EC_UL1 MUX", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15756 {"AUDIO_REF_EC_UL1 MUX", "QUAT_TDM_RX_0", "QUAT_TDM_RX_0"},
15757 {"AUDIO_REF_EC_UL1 MUX", "QUAT_TDM_RX_1", "QUAT_TDM_RX_1"},
15758 {"AUDIO_REF_EC_UL1 MUX", "QUAT_TDM_RX_2", "QUAT_TDM_RX_2"},
15759 {"AUDIO_REF_EC_UL1 MUX", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15760
15761 {"AUDIO_REF_EC_UL2 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15762 {"AUDIO_REF_EC_UL2 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15763 {"AUDIO_REF_EC_UL2 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15764 {"AUDIO_REF_EC_UL2 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15765
15766 {"AUDIO_REF_EC_UL3 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15767 {"AUDIO_REF_EC_UL3 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15768 {"AUDIO_REF_EC_UL3 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15769 {"AUDIO_REF_EC_UL3 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15770
15771 {"AUDIO_REF_EC_UL4 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15772 {"AUDIO_REF_EC_UL4 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15773 {"AUDIO_REF_EC_UL4 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15774 {"AUDIO_REF_EC_UL4 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15775
15776 {"AUDIO_REF_EC_UL5 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15777 {"AUDIO_REF_EC_UL5 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15778 {"AUDIO_REF_EC_UL5 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15779 {"AUDIO_REF_EC_UL5 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15780
15781 {"AUDIO_REF_EC_UL6 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15782 {"AUDIO_REF_EC_UL6 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15783 {"AUDIO_REF_EC_UL6 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15784 {"AUDIO_REF_EC_UL6 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15785
15786 {"AUDIO_REF_EC_UL8 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15787 {"AUDIO_REF_EC_UL8 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15788 {"AUDIO_REF_EC_UL8 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15789 {"AUDIO_REF_EC_UL8 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Bala Kishore Pati1a044712018-10-03 12:12:36 +053015790 {"AUDIO_REF_EC_UL8 MUX", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015791
15792 {"AUDIO_REF_EC_UL9 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15793 {"AUDIO_REF_EC_UL9 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15794 {"AUDIO_REF_EC_UL9 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15795 {"AUDIO_REF_EC_UL9 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15796
Laxminath Kasam38070be2017-08-17 18:21:59 +053015797 {"AUDIO_REF_EC_UL10 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15798 {"AUDIO_REF_EC_UL10 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15799 {"AUDIO_REF_EC_UL10 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15800 {"AUDIO_REF_EC_UL10 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15801 {"AUDIO_REF_EC_UL10 MUX", "SLIM_1_TX", "SLIMBUS_1_TX"},
15802 {"AUDIO_REF_EC_UL10 MUX", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15803 {"AUDIO_REF_EC_UL10 MUX", "QUAT_TDM_RX_0", "QUAT_TDM_RX_0"},
15804 {"AUDIO_REF_EC_UL10 MUX", "QUAT_TDM_RX_1", "QUAT_TDM_RX_1"},
15805 {"AUDIO_REF_EC_UL10 MUX", "QUAT_TDM_RX_2", "QUAT_TDM_RX_2"},
15806 {"AUDIO_REF_EC_UL10 MUX", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
Vikram Panduranga016c49f2017-09-11 15:15:56 -070015807
15808 {"AUDIO_REF_EC_UL16 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15809 {"AUDIO_REF_EC_UL16 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15810 {"AUDIO_REF_EC_UL16 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15811 {"AUDIO_REF_EC_UL16 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15812
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015813 {"AUDIO_REF_EC_UL17 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15814 {"AUDIO_REF_EC_UL17 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15815 {"AUDIO_REF_EC_UL17 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15816 {"AUDIO_REF_EC_UL17 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15817
15818 {"AUDIO_REF_EC_UL18 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15819 {"AUDIO_REF_EC_UL18 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15820 {"AUDIO_REF_EC_UL18 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15821 {"AUDIO_REF_EC_UL18 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15822
15823 {"AUDIO_REF_EC_UL19 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15824 {"AUDIO_REF_EC_UL19 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15825 {"AUDIO_REF_EC_UL19 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15826 {"AUDIO_REF_EC_UL19 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15827
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053015828 {"AUDIO_REF_EC_UL28 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15829 {"AUDIO_REF_EC_UL28 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15830 {"AUDIO_REF_EC_UL28 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15831 {"AUDIO_REF_EC_UL28 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15832
15833 {"AUDIO_REF_EC_UL29 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15834 {"AUDIO_REF_EC_UL29 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15835 {"AUDIO_REF_EC_UL29 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15836 {"AUDIO_REF_EC_UL29 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Yunfei Zhang3efc4a22017-11-07 16:30:13 +080015837
15838 {"LSM1_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15839 {"LSM2_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15840 {"LSM3_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15841 {"LSM4_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15842 {"LSM5_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15843 {"LSM6_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15844 {"LSM7_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15845 {"LSM8_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15846
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015847 {"MM_UL1", NULL, "AUDIO_REF_EC_UL1 MUX"},
15848 {"MM_UL2", NULL, "AUDIO_REF_EC_UL2 MUX"},
15849 {"MM_UL3", NULL, "AUDIO_REF_EC_UL3 MUX"},
15850 {"MM_UL4", NULL, "AUDIO_REF_EC_UL4 MUX"},
15851 {"MM_UL5", NULL, "AUDIO_REF_EC_UL5 MUX"},
15852 {"MM_UL6", NULL, "AUDIO_REF_EC_UL6 MUX"},
15853 {"MM_UL8", NULL, "AUDIO_REF_EC_UL8 MUX"},
15854 {"MM_UL9", NULL, "AUDIO_REF_EC_UL9 MUX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053015855 {"MM_UL10", NULL, "AUDIO_REF_EC_UL10 MUX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053015856 {"MM_UL16", NULL, "AUDIO_REF_EC_UL16 MUX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015857 {"MM_UL17", NULL, "AUDIO_REF_EC_UL17 MUX"},
15858 {"MM_UL18", NULL, "AUDIO_REF_EC_UL18 MUX"},
15859 {"MM_UL19", NULL, "AUDIO_REF_EC_UL19 MUX"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053015860 {"MM_UL28", NULL, "AUDIO_REF_EC_UL28 MUX"},
15861 {"MM_UL29", NULL, "AUDIO_REF_EC_UL29 MUX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015862
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015863 {"VoiceMMode1_Tx Mixer", "PRI_TX_MMode1", "PRI_I2S_TX"},
15864 {"VoiceMMode1_Tx Mixer", "PRI_MI2S_TX_MMode1", "PRI_MI2S_TX"},
15865 {"VoiceMMode1_Tx Mixer", "MI2S_TX_MMode1", "MI2S_TX"},
15866 {"VoiceMMode1_Tx Mixer", "TERT_MI2S_TX_MMode1", "TERT_MI2S_TX"},
15867 {"VoiceMMode1_Tx Mixer", "INT3_MI2S_TX_MMode1", "INT3_MI2S_TX"},
15868 {"VoiceMMode1_Tx Mixer", "SLIM_0_TX_MMode1", "SLIMBUS_0_TX"},
15869 {"VoiceMMode1_Tx Mixer", "SLIM_7_TX_MMode1", "SLIMBUS_7_TX"},
15870 {"VoiceMMode1_Tx Mixer", "SLIM_8_TX_MMode1", "SLIMBUS_8_TX"},
15871 {"VoiceMMode1_Tx Mixer", "USB_AUDIO_TX_MMode1", "USB_AUDIO_TX"},
15872 {"VoiceMMode1_Tx Mixer", "INT_BT_SCO_TX_MMode1", "INT_BT_SCO_TX"},
15873 {"VoiceMMode1_Tx Mixer", "AFE_PCM_TX_MMode1", "PCM_TX"},
15874 {"VoiceMMode1_Tx Mixer", "AUX_PCM_TX_MMode1", "AUX_PCM_TX"},
15875 {"VoiceMMode1_Tx Mixer", "SEC_AUX_PCM_TX_MMode1", "SEC_AUX_PCM_TX"},
15876 {"VoiceMMode1_Tx Mixer", "TERT_AUX_PCM_TX_MMode1", "TERT_AUX_PCM_TX"},
15877 {"VoiceMMode1_Tx Mixer", "QUAT_AUX_PCM_TX_MMode1", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015878 {"VoiceMMode1_Tx Mixer", "QUIN_AUX_PCM_TX_MMode1", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015879 {"VoiceMMode1_Tx Mixer", "QUAT_TDM_TX_0_MMode1", "QUAT_TDM_TX_0"},
Raja Mallik321d5712018-05-04 17:22:11 +053015880 {"VoiceMMode1_Tx Mixer", "PRI_TDM_TX_3_MMode1", "PRI_TDM_TX_3"},
Aditya Bavanari769c3102018-02-23 16:34:40 +053015881 {"VoiceMMode1_Tx Mixer", "QUAT_MI2S_TX_MMode1", "QUAT_MI2S_TX"},
15882 {"VoiceMMode1_Tx Mixer", "QUIN_MI2S_TX_MMode1", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015883 {"VOICEMMODE1_UL", NULL, "VoiceMMode1_Tx Mixer"},
15884
15885 {"VoiceMMode2_Tx Mixer", "PRI_TX_MMode2", "PRI_I2S_TX"},
15886 {"VoiceMMode2_Tx Mixer", "PRI_MI2S_TX_MMode2", "PRI_MI2S_TX"},
15887 {"VoiceMMode2_Tx Mixer", "MI2S_TX_MMode2", "MI2S_TX"},
15888 {"VoiceMMode2_Tx Mixer", "TERT_MI2S_TX_MMode2", "TERT_MI2S_TX"},
15889 {"VoiceMMode2_Tx Mixer", "INT3_MI2S_TX_MMode2", "INT3_MI2S_TX"},
15890 {"VoiceMMode2_Tx Mixer", "SLIM_0_TX_MMode2", "SLIMBUS_0_TX"},
15891 {"VoiceMMode2_Tx Mixer", "SLIM_7_TX_MMode2", "SLIMBUS_7_TX"},
15892 {"VoiceMMode2_Tx Mixer", "SLIM_8_TX_MMode2", "SLIMBUS_8_TX"},
15893 {"VoiceMMode2_Tx Mixer", "USB_AUDIO_TX_MMode2", "USB_AUDIO_TX"},
15894 {"VoiceMMode2_Tx Mixer", "INT_BT_SCO_TX_MMode2", "INT_BT_SCO_TX"},
15895 {"VoiceMMode2_Tx Mixer", "AFE_PCM_TX_MMode2", "PCM_TX"},
15896 {"VoiceMMode2_Tx Mixer", "AUX_PCM_TX_MMode2", "AUX_PCM_TX"},
15897 {"VoiceMMode2_Tx Mixer", "SEC_AUX_PCM_TX_MMode2", "SEC_AUX_PCM_TX"},
15898 {"VoiceMMode2_Tx Mixer", "TERT_AUX_PCM_TX_MMode2", "TERT_AUX_PCM_TX"},
15899 {"VoiceMMode2_Tx Mixer", "QUAT_AUX_PCM_TX_MMode2", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015900 {"VoiceMMode2_Tx Mixer", "QUIN_AUX_PCM_TX_MMode2", "QUIN_AUX_PCM_TX"},
Aditya Bavanari769c3102018-02-23 16:34:40 +053015901 {"VoiceMMode2_Tx Mixer", "QUAT_MI2S_TX_MMode2", "QUAT_MI2S_TX"},
15902 {"VoiceMMode2_Tx Mixer", "QUIN_MI2S_TX_MMode2", "QUIN_MI2S_TX"},
Raja Mallik321d5712018-05-04 17:22:11 +053015903 {"VoiceMMode2_Tx Mixer", "PRI_TDM_TX_3_MMode2", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015904 {"VOICEMMODE2_UL", NULL, "VoiceMMode2_Tx Mixer"},
15905
15906 {"Voip_Tx Mixer", "PRI_TX_Voip", "PRI_I2S_TX"},
15907 {"Voip_Tx Mixer", "MI2S_TX_Voip", "MI2S_TX"},
15908 {"Voip_Tx Mixer", "TERT_MI2S_TX_Voip", "TERT_MI2S_TX"},
15909 {"Voip_Tx Mixer", "INT3_MI2S_TX_Voip", "INT3_MI2S_TX"},
15910 {"Voip_Tx Mixer", "SLIM_0_TX_Voip", "SLIMBUS_0_TX"},
15911 {"Voip_Tx Mixer", "SLIM_7_TX_Voip", "SLIMBUS_7_TX"},
15912 {"Voip_Tx Mixer", "SLIM_8_TX_Voip", "SLIMBUS_8_TX"},
15913 {"Voip_Tx Mixer", "USB_AUDIO_TX_Voip", "USB_AUDIO_TX"},
15914 {"Voip_Tx Mixer", "INTERNAL_BT_SCO_TX_Voip", "INT_BT_SCO_TX"},
15915 {"Voip_Tx Mixer", "AFE_PCM_TX_Voip", "PCM_TX"},
15916 {"Voip_Tx Mixer", "AUX_PCM_TX_Voip", "AUX_PCM_TX"},
15917 {"Voip_Tx Mixer", "SEC_AUX_PCM_TX_Voip", "SEC_AUX_PCM_TX"},
15918 {"Voip_Tx Mixer", "TERT_AUX_PCM_TX_Voip", "TERT_AUX_PCM_TX"},
15919 {"Voip_Tx Mixer", "QUAT_AUX_PCM_TX_Voip", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015920 {"Voip_Tx Mixer", "QUIN_AUX_PCM_TX_Voip", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015921 {"Voip_Tx Mixer", "PRI_MI2S_TX_Voip", "PRI_MI2S_TX"},
Raja Mallik321d5712018-05-04 17:22:11 +053015922 {"Voip_Tx Mixer", "PRI_TDM_TX_3_Voip", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015923 {"VOIP_UL", NULL, "Voip_Tx Mixer"},
15924
15925 {"SLIMBUS_DL_HL", "Switch", "SLIM0_DL_HL"},
15926 {"SLIMBUS_0_RX", NULL, "SLIMBUS_DL_HL"},
15927 {"SLIMBUS1_DL_HL", "Switch", "SLIM1_DL_HL"},
15928 {"SLIMBUS_1_RX", NULL, "SLIMBUS1_DL_HL"},
15929 {"SLIMBUS3_DL_HL", "Switch", "SLIM3_DL_HL"},
15930 {"SLIMBUS_3_RX", NULL, "SLIMBUS3_DL_HL"},
15931 {"SLIMBUS4_DL_HL", "Switch", "SLIM4_DL_HL"},
15932 {"SLIMBUS_4_RX", NULL, "SLIMBUS4_DL_HL"},
15933 {"SLIMBUS6_DL_HL", "Switch", "SLIM0_DL_HL"},
15934 {"SLIMBUS_6_RX", NULL, "SLIMBUS6_DL_HL"},
15935 {"SLIM0_UL_HL", NULL, "SLIMBUS_0_TX"},
15936 {"SLIM1_UL_HL", NULL, "SLIMBUS_1_TX"},
15937 {"SLIM3_UL_HL", NULL, "SLIMBUS_3_TX"},
15938 {"SLIM4_UL_HL", NULL, "SLIMBUS_4_TX"},
15939 {"SLIM8_UL_HL", NULL, "SLIMBUS_8_TX"},
15940
15941 {"LSM1 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15942 {"LSM1 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15943 {"LSM1 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15944 {"LSM1 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15945 {"LSM1 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15946 {"LSM1 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15947 {"LSM1 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15948 {"LSM1 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Ashish Jain01b10322018-05-12 15:37:44 +053015949 {"LSM1 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15950 {"LSM1 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015951 {"LSM1_UL_HL", NULL, "LSM1 Mixer"},
15952
15953 {"LSM2 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15954 {"LSM2 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15955 {"LSM2 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15956 {"LSM2 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15957 {"LSM2 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15958 {"LSM2 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15959 {"LSM2 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15960 {"LSM2 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Ashish Jain01b10322018-05-12 15:37:44 +053015961 {"LSM2 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15962 {"LSM2 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015963 {"LSM2_UL_HL", NULL, "LSM2 Mixer"},
15964
15965
15966 {"LSM3 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15967 {"LSM3 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15968 {"LSM3 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15969 {"LSM3 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15970 {"LSM3 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15971 {"LSM3 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15972 {"LSM3 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15973 {"LSM3 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Ashish Jain01b10322018-05-12 15:37:44 +053015974 {"LSM3 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15975 {"LSM3 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015976 {"LSM3_UL_HL", NULL, "LSM3 Mixer"},
15977
15978
15979 {"LSM4 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15980 {"LSM4 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15981 {"LSM4 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15982 {"LSM4 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15983 {"LSM4 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15984 {"LSM4 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15985 {"LSM4 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15986 {"LSM4 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Ashish Jain01b10322018-05-12 15:37:44 +053015987 {"LSM4 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15988 {"LSM4 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015989 {"LSM4_UL_HL", NULL, "LSM4 Mixer"},
15990
15991 {"LSM5 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15992 {"LSM5 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15993 {"LSM5 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15994 {"LSM5 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15995 {"LSM5 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15996 {"LSM5 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15997 {"LSM5 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15998 {"LSM5 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Ashish Jain01b10322018-05-12 15:37:44 +053015999 {"LSM5 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
16000 {"LSM5 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016001 {"LSM5_UL_HL", NULL, "LSM5 Mixer"},
16002
16003 {"LSM6 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
16004 {"LSM6 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
16005 {"LSM6 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
16006 {"LSM6 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
16007 {"LSM6 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
16008 {"LSM6 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Ashish Jain01b10322018-05-12 15:37:44 +053016009 {"LSM6 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
16010 {"LSM6 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016011 {"LSM6_UL_HL", NULL, "LSM6 Mixer"},
16012
16013 {"LSM7 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
16014 {"LSM7 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
16015 {"LSM7 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
16016 {"LSM7 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
16017 {"LSM7 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
16018 {"LSM7 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Ashish Jain01b10322018-05-12 15:37:44 +053016019 {"LSM7 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
16020 {"LSM7 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016021 {"LSM7_UL_HL", NULL, "LSM7 Mixer"},
16022
16023 {"LSM8 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
16024 {"LSM8 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
16025 {"LSM8 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
16026 {"LSM8 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
16027 {"LSM8 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
16028 {"LSM8 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Ashish Jain01b10322018-05-12 15:37:44 +053016029 {"LSM8 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
16030 {"LSM8 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016031 {"LSM8_UL_HL", NULL, "LSM8 Mixer"},
16032
16033
16034 {"CPE_LSM_UL_HL", NULL, "BE_IN"},
16035 {"QCHAT_Tx Mixer", "PRI_TX_QCHAT", "PRI_I2S_TX"},
16036 {"QCHAT_Tx Mixer", "SLIM_0_TX_QCHAT", "SLIMBUS_0_TX"},
16037 {"QCHAT_Tx Mixer", "SLIM_7_TX_QCHAT", "SLIMBUS_7_TX"},
16038 {"QCHAT_Tx Mixer", "SLIM_8_TX_QCHAT", "SLIMBUS_8_TX"},
16039 {"QCHAT_Tx Mixer", "INTERNAL_BT_SCO_TX_QCHAT", "INT_BT_SCO_TX"},
16040 {"QCHAT_Tx Mixer", "AFE_PCM_TX_QCHAT", "PCM_TX"},
16041 {"QCHAT_Tx Mixer", "AUX_PCM_TX_QCHAT", "AUX_PCM_TX"},
16042 {"QCHAT_Tx Mixer", "SEC_AUX_PCM_TX_QCHAT", "SEC_AUX_PCM_TX"},
16043 {"QCHAT_Tx Mixer", "TERT_AUX_PCM_TX_QCHAT", "TERT_AUX_PCM_TX"},
16044 {"QCHAT_Tx Mixer", "QUAT_AUX_PCM_TX_QCHAT", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016045 {"QCHAT_Tx Mixer", "QUIN_AUX_PCM_TX_QCHAT", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016046 {"QCHAT_Tx Mixer", "MI2S_TX_QCHAT", "MI2S_TX"},
16047 {"QCHAT_Tx Mixer", "PRI_MI2S_TX_QCHAT", "PRI_MI2S_TX"},
16048 {"QCHAT_Tx Mixer", "TERT_MI2S_TX_QCHAT", "TERT_MI2S_TX"},
16049 {"QCHAT_Tx Mixer", "INT3_MI2S_TX_QCHAT", "INT3_MI2S_TX"},
16050 {"QCHAT_Tx Mixer", "USB_AUDIO_TX_QCHAT", "USB_AUDIO_TX"},
16051 {"QCHAT_UL", NULL, "QCHAT_Tx Mixer"},
16052
16053 {"INT_FM_RX", NULL, "INTFM_DL_HL"},
16054 {"INTFM_UL_HL", NULL, "INT_FM_TX"},
16055 {"INTHFP_UL_HL", NULL, "HFP_PRI_AUX_UL_HL"},
16056 {"HFP_PRI_AUX_UL_HL", "Switch", "AUX_PCM_TX"},
16057 {"INTHFP_UL_HL", NULL, "HFP_AUX_UL_HL"},
16058 {"HFP_AUX_UL_HL", "Switch", "SEC_AUX_PCM_TX"},
16059 {"INTHFP_UL_HL", NULL, "HFP_INT_UL_HL"},
16060 {"HFP_INT_UL_HL", "Switch", "INT_BT_SCO_TX"},
16061 {"SLIM7_UL_HL", NULL, "HFP_SLIM7_UL_HL"},
16062 {"HFP_SLIM7_UL_HL", "Switch", "SLIMBUS_7_TX"},
16063 {"AUX_PCM_RX", NULL, "AUXPCM_DL_HL"},
16064 {"AUX_PCM_RX", NULL, "INTHFP_DL_HL"},
Aniket Kumar Lataf8664712018-02-22 14:46:09 -080016065 {"SLIM7_UL_HL", NULL, "A2DP_SLIM7_UL_HL"},
16066 {"A2DP_SLIM7_UL_HL", "Switch", "SLIMBUS_7_TX"},
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -080016067 {"SEC_AUX_PCM_RX", NULL, "SEC_AUXPCM_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016068 {"AUXPCM_UL_HL", NULL, "AUX_PCM_TX"},
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -080016069 {"SEC_AUXPCM_UL_HL", NULL, "SEC_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016070 {"MI2S_RX", NULL, "MI2S_DL_HL"},
16071 {"MI2S_UL_HL", NULL, "MI2S_TX"},
16072 {"PCM_RX_DL_HL", "Switch", "SLIM0_DL_HL"},
16073 {"PCM_RX", NULL, "PCM_RX_DL_HL"},
16074
16075 /* connect to INT4_MI2S_DL_HL since same pcm_id */
16076 {"INT0_MI2S_RX_DL_HL", "Switch", "INT4_MI2S_DL_HL"},
16077 {"INT0_MI2S_RX", NULL, "INT0_MI2S_RX_DL_HL"},
16078 {"INT4_MI2S_RX_DL_HL", "Switch", "INT4_MI2S_DL_HL"},
16079 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX_DL_HL"},
16080 {"PRI_MI2S_RX_DL_HL", "Switch", "PRI_MI2S_DL_HL"},
16081 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX_DL_HL"},
16082 {"SEC_MI2S_RX_DL_HL", "Switch", "SEC_MI2S_DL_HL"},
16083 {"SEC_MI2S_RX", NULL, "SEC_MI2S_RX_DL_HL"},
16084 {"TERT_MI2S_RX_DL_HL", "Switch", "TERT_MI2S_DL_HL"},
16085 {"TERT_MI2S_RX", NULL, "TERT_MI2S_RX_DL_HL"},
16086
16087 {"QUAT_MI2S_RX_DL_HL", "Switch", "QUAT_MI2S_DL_HL"},
16088 {"QUAT_MI2S_RX", NULL, "QUAT_MI2S_RX_DL_HL"},
Rohit Kumara5077932017-09-10 22:05:05 +053016089 {"QUIN_MI2S_RX_DL_HL", "Switch", "QUIN_MI2S_DL_HL"},
16090 {"QUIN_MI2S_RX", NULL, "QUIN_MI2S_RX_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016091 {"MI2S_UL_HL", NULL, "TERT_MI2S_TX"},
16092 {"INT3_MI2S_UL_HL", NULL, "INT3_MI2S_TX"},
16093 {"TERT_MI2S_UL_HL", NULL, "TERT_MI2S_TX"},
16094 {"SEC_I2S_RX", NULL, "SEC_I2S_DL_HL"},
16095 {"PRI_MI2S_UL_HL", NULL, "PRI_MI2S_TX"},
16096 {"SEC_MI2S_UL_HL", NULL, "SEC_MI2S_TX"},
16097 {"SEC_MI2S_RX", NULL, "SEC_MI2S_DL_HL"},
16098 {"PRI_MI2S_RX", NULL, "PRI_MI2S_DL_HL"},
16099 {"TERT_MI2S_RX", NULL, "TERT_MI2S_DL_HL"},
16100 {"QUAT_MI2S_UL_HL", NULL, "QUAT_MI2S_TX"},
16101
16102 {"PRI_TDM_TX_0_UL_HL", NULL, "PRI_TDM_TX_0"},
16103 {"PRI_TDM_TX_1_UL_HL", NULL, "PRI_TDM_TX_1"},
16104 {"PRI_TDM_TX_2_UL_HL", NULL, "PRI_TDM_TX_2"},
16105 {"PRI_TDM_TX_3_UL_HL", NULL, "PRI_TDM_TX_3"},
16106 {"PRI_TDM_RX_0", NULL, "PRI_TDM_RX_0_DL_HL"},
16107 {"PRI_TDM_RX_1", NULL, "PRI_TDM_RX_1_DL_HL"},
16108 {"PRI_TDM_RX_2", NULL, "PRI_TDM_RX_2_DL_HL"},
16109 {"PRI_TDM_RX_3", NULL, "PRI_TDM_RX_3_DL_HL"},
16110 {"SEC_TDM_TX_0_UL_HL", NULL, "SEC_TDM_TX_0"},
16111 {"SEC_TDM_TX_1_UL_HL", NULL, "SEC_TDM_TX_1"},
16112 {"SEC_TDM_TX_2_UL_HL", NULL, "SEC_TDM_TX_2"},
16113 {"SEC_TDM_TX_3_UL_HL", NULL, "SEC_TDM_TX_3"},
16114 {"SEC_TDM_RX_0", NULL, "SEC_TDM_RX_0_DL_HL"},
16115 {"SEC_TDM_RX_1", NULL, "SEC_TDM_RX_1_DL_HL"},
16116 {"SEC_TDM_RX_2", NULL, "SEC_TDM_RX_2_DL_HL"},
16117 {"SEC_TDM_RX_3", NULL, "SEC_TDM_RX_3_DL_HL"},
16118 {"TERT_TDM_TX_0_UL_HL", NULL, "TERT_TDM_TX_0"},
16119 {"TERT_TDM_TX_1_UL_HL", NULL, "TERT_TDM_TX_1"},
16120 {"TERT_TDM_TX_2_UL_HL", NULL, "TERT_TDM_TX_2"},
16121 {"TERT_TDM_TX_3_UL_HL", NULL, "TERT_TDM_TX_3"},
16122 {"TERT_TDM_RX_0", NULL, "TERT_TDM_RX_0_DL_HL"},
16123 {"TERT_TDM_RX_1", NULL, "TERT_TDM_RX_1_DL_HL"},
16124 {"TERT_TDM_RX_2", NULL, "TERT_TDM_RX_2_DL_HL"},
16125 {"TERT_TDM_RX_3", NULL, "TERT_TDM_RX_3_DL_HL"},
16126 {"QUAT_TDM_TX_0_UL_HL", NULL, "QUAT_TDM_TX_0"},
16127 {"QUAT_TDM_TX_1_UL_HL", NULL, "QUAT_TDM_TX_1"},
16128 {"QUAT_TDM_TX_2_UL_HL", NULL, "QUAT_TDM_TX_2"},
16129 {"QUAT_TDM_TX_3_UL_HL", NULL, "QUAT_TDM_TX_3"},
16130 {"QUAT_TDM_RX_0", NULL, "QUAT_TDM_RX_0_DL_HL"},
16131 {"QUAT_TDM_RX_1", NULL, "QUAT_TDM_RX_1_DL_HL"},
16132 {"QUAT_TDM_RX_2", NULL, "QUAT_TDM_RX_2_DL_HL"},
16133 {"QUAT_TDM_RX_3", NULL, "QUAT_TDM_RX_3_DL_HL"},
Rohit Kumara5077932017-09-10 22:05:05 +053016134 {"QUIN_TDM_TX_0_UL_HL", NULL, "QUIN_TDM_TX_0"},
16135 {"QUIN_TDM_TX_1_UL_HL", NULL, "QUIN_TDM_TX_1"},
16136 {"QUIN_TDM_TX_2_UL_HL", NULL, "QUIN_TDM_TX_2"},
16137 {"QUIN_TDM_TX_3_UL_HL", NULL, "QUIN_TDM_TX_3"},
16138 {"QUIN_TDM_RX_0", NULL, "QUIN_TDM_RX_0_DL_HL"},
16139 {"QUIN_TDM_RX_1", NULL, "QUIN_TDM_RX_1_DL_HL"},
16140 {"QUIN_TDM_RX_2", NULL, "QUIN_TDM_RX_2_DL_HL"},
16141 {"QUIN_TDM_RX_3", NULL, "QUIN_TDM_RX_3_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016142
16143 {"PRI_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16144 {"PRI_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16145 {"PRI_TDM_RX_0 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16146 {"PRI_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16147 {"PRI_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16148 {"PRI_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16149 {"PRI_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16150 {"PRI_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16151 {"PRI_TDM_RX_0 Port Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
16152 {"PRI_TDM_RX_0 Port Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
16153 {"PRI_TDM_RX_0 Port Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
16154 {"PRI_TDM_RX_0 Port Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
16155 {"PRI_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16156 {"PRI_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16157 {"PRI_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16158 {"PRI_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016159 {"PRI_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16160 {"PRI_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16161 {"PRI_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16162 {"PRI_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016163 {"PRI_TDM_RX_0", NULL, "PRI_TDM_RX_0 Port Mixer"},
16164
16165 {"PRI_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16166 {"PRI_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16167 {"PRI_TDM_RX_1 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16168 {"PRI_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16169 {"PRI_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16170 {"PRI_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16171 {"PRI_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16172 {"PRI_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16173 {"PRI_TDM_RX_1 Port Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
16174 {"PRI_TDM_RX_1 Port Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
16175 {"PRI_TDM_RX_1 Port Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
16176 {"PRI_TDM_RX_1 Port Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
16177 {"PRI_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16178 {"PRI_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16179 {"PRI_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16180 {"PRI_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016181 {"PRI_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16182 {"PRI_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16183 {"PRI_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16184 {"PRI_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016185 {"PRI_TDM_RX_1", NULL, "PRI_TDM_RX_1 Port Mixer"},
16186
16187 {"PRI_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16188 {"PRI_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16189 {"PRI_TDM_RX_2 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16190 {"PRI_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16191 {"PRI_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16192 {"PRI_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16193 {"PRI_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16194 {"PRI_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16195 {"PRI_TDM_RX_2 Port Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
16196 {"PRI_TDM_RX_2 Port Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
16197 {"PRI_TDM_RX_2 Port Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
16198 {"PRI_TDM_RX_2 Port Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
16199 {"PRI_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16200 {"PRI_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16201 {"PRI_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16202 {"PRI_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016203 {"PRI_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16204 {"PRI_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16205 {"PRI_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16206 {"PRI_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016207 {"PRI_TDM_RX_2", NULL, "PRI_TDM_RX_2 Port Mixer"},
16208
16209 {"PRI_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16210 {"PRI_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16211 {"PRI_TDM_RX_3 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16212 {"PRI_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16213 {"PRI_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16214 {"PRI_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16215 {"PRI_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16216 {"PRI_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16217 {"PRI_TDM_RX_3 Port Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
16218 {"PRI_TDM_RX_3 Port Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
16219 {"PRI_TDM_RX_3 Port Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
16220 {"PRI_TDM_RX_3 Port Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
16221 {"PRI_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16222 {"PRI_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16223 {"PRI_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16224 {"PRI_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016225 {"PRI_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16226 {"PRI_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16227 {"PRI_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16228 {"PRI_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016229 {"PRI_TDM_RX_3", NULL, "PRI_TDM_RX_3 Port Mixer"},
16230
16231 {"SEC_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16232 {"SEC_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16233 {"SEC_TDM_RX_0 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16234 {"SEC_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16235 {"SEC_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16236 {"SEC_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16237 {"SEC_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16238 {"SEC_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16239 {"SEC_TDM_RX_0 Port Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
16240 {"SEC_TDM_RX_0 Port Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
16241 {"SEC_TDM_RX_0 Port Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
16242 {"SEC_TDM_RX_0 Port Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
16243 {"SEC_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16244 {"SEC_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16245 {"SEC_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16246 {"SEC_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016247 {"SEC_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16248 {"SEC_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16249 {"SEC_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16250 {"SEC_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016251 {"SEC_TDM_RX_0", NULL, "SEC_TDM_RX_0 Port Mixer"},
16252
16253 {"SEC_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16254 {"SEC_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16255 {"SEC_TDM_RX_1 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16256 {"SEC_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16257 {"SEC_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16258 {"SEC_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16259 {"SEC_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16260 {"SEC_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16261 {"SEC_TDM_RX_1 Port Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
16262 {"SEC_TDM_RX_1 Port Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
16263 {"SEC_TDM_RX_1 Port Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
16264 {"SEC_TDM_RX_1 Port Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
16265 {"SEC_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16266 {"SEC_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16267 {"SEC_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16268 {"SEC_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016269 {"SEC_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16270 {"SEC_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16271 {"SEC_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16272 {"SEC_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016273 {"SEC_TDM_RX_1", NULL, "SEC_TDM_RX_1 Port Mixer"},
16274
16275 {"SEC_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16276 {"SEC_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16277 {"SEC_TDM_RX_2 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16278 {"SEC_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16279 {"SEC_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16280 {"SEC_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16281 {"SEC_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16282 {"SEC_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16283 {"SEC_TDM_RX_2 Port Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
16284 {"SEC_TDM_RX_2 Port Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
16285 {"SEC_TDM_RX_2 Port Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
16286 {"SEC_TDM_RX_2 Port Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
16287 {"SEC_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16288 {"SEC_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16289 {"SEC_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16290 {"SEC_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016291 {"SEC_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16292 {"SEC_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16293 {"SEC_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16294 {"SEC_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016295 {"SEC_TDM_RX_2", NULL, "SEC_TDM_RX_2 Port Mixer"},
16296
16297 {"SEC_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16298 {"SEC_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16299 {"SEC_TDM_RX_3 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16300 {"SEC_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16301 {"SEC_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16302 {"SEC_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16303 {"SEC_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16304 {"SEC_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16305 {"SEC_TDM_RX_3 Port Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
16306 {"SEC_TDM_RX_3 Port Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
16307 {"SEC_TDM_RX_3 Port Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
16308 {"SEC_TDM_RX_3 Port Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
16309 {"SEC_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16310 {"SEC_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16311 {"SEC_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16312 {"SEC_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016313 {"SEC_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16314 {"SEC_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16315 {"SEC_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16316 {"SEC_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016317 {"SEC_TDM_RX_3", NULL, "SEC_TDM_RX_3 Port Mixer"},
16318
16319 {"TERT_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16320 {"TERT_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16321 {"TERT_TDM_RX_0 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16322 {"TERT_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16323 {"TERT_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16324 {"TERT_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16325 {"TERT_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16326 {"TERT_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16327 {"TERT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16328 {"TERT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16329 {"TERT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16330 {"TERT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16331 {"TERT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16332 {"TERT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16333 {"TERT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16334 {"TERT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016335 {"TERT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16336 {"TERT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16337 {"TERT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16338 {"TERT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016339 {"TERT_TDM_RX_0", NULL, "TERT_TDM_RX_0 Port Mixer"},
16340
16341 {"TERT_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16342 {"TERT_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16343 {"TERT_TDM_RX_1 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16344 {"TERT_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16345 {"TERT_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16346 {"TERT_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16347 {"TERT_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16348 {"TERT_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16349 {"TERT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16350 {"TERT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16351 {"TERT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16352 {"TERT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16353 {"TERT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16354 {"TERT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16355 {"TERT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16356 {"TERT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016357 {"TERT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16358 {"TERT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16359 {"TERT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16360 {"TERT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016361 {"TERT_TDM_RX_1", NULL, "TERT_TDM_RX_1 Port Mixer"},
16362
16363 {"TERT_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16364 {"TERT_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16365 {"TERT_TDM_RX_2 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16366 {"TERT_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16367 {"TERT_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16368 {"TERT_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16369 {"TERT_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16370 {"TERT_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16371 {"TERT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16372 {"TERT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16373 {"TERT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16374 {"TERT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16375 {"TERT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16376 {"TERT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16377 {"TERT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16378 {"TERT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016379 {"TERT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16380 {"TERT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16381 {"TERT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16382 {"TERT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016383 {"TERT_TDM_RX_2", NULL, "TERT_TDM_RX_2 Port Mixer"},
16384
16385 {"TERT_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16386 {"TERT_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16387 {"TERT_TDM_RX_3 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16388 {"TERT_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16389 {"TERT_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16390 {"TERT_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16391 {"TERT_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16392 {"TERT_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16393 {"TERT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16394 {"TERT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16395 {"TERT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16396 {"TERT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16397 {"TERT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16398 {"TERT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16399 {"TERT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16400 {"TERT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016401 {"TERT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16402 {"TERT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16403 {"TERT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16404 {"TERT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016405 {"TERT_TDM_RX_3", NULL, "TERT_TDM_RX_3 Port Mixer"},
16406
16407 {"QUAT_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16408 {"QUAT_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16409 {"QUAT_TDM_RX_0 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16410 {"QUAT_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16411 {"QUAT_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16412 {"QUAT_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16413 {"QUAT_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16414 {"QUAT_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16415 {"QUAT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16416 {"QUAT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16417 {"QUAT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16418 {"QUAT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16419 {"QUAT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16420 {"QUAT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16421 {"QUAT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16422 {"QUAT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016423 {"QUAT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16424 {"QUAT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16425 {"QUAT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16426 {"QUAT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016427 {"QUAT_TDM_RX_0", NULL, "QUAT_TDM_RX_0 Port Mixer"},
16428
16429 {"QUAT_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16430 {"QUAT_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16431 {"QUAT_TDM_RX_1 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16432 {"QUAT_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16433 {"QUAT_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16434 {"QUAT_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16435 {"QUAT_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16436 {"QUAT_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16437 {"QUAT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16438 {"QUAT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16439 {"QUAT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16440 {"QUAT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16441 {"QUAT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16442 {"QUAT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16443 {"QUAT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16444 {"QUAT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016445 {"QUAT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16446 {"QUAT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16447 {"QUAT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16448 {"QUAT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016449 {"QUAT_TDM_RX_1", NULL, "QUAT_TDM_RX_1 Port Mixer"},
16450
16451 {"QUAT_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16452 {"QUAT_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16453 {"QUAT_TDM_RX_2 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16454 {"QUAT_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16455 {"QUAT_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16456 {"QUAT_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16457 {"QUAT_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16458 {"QUAT_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16459 {"QUAT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16460 {"QUAT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16461 {"QUAT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16462 {"QUAT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16463 {"QUAT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16464 {"QUAT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16465 {"QUAT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16466 {"QUAT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016467 {"QUAT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16468 {"QUAT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16469 {"QUAT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16470 {"QUAT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016471 {"QUAT_TDM_RX_2", NULL, "QUAT_TDM_RX_2 Port Mixer"},
16472
16473 {"QUAT_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16474 {"QUAT_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16475 {"QUAT_TDM_RX_3 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16476 {"QUAT_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16477 {"QUAT_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16478 {"QUAT_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16479 {"QUAT_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16480 {"QUAT_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16481 {"QUAT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16482 {"QUAT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16483 {"QUAT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16484 {"QUAT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16485 {"QUAT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16486 {"QUAT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16487 {"QUAT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16488 {"QUAT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016489 {"QUAT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16490 {"QUAT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16491 {"QUAT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16492 {"QUAT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016493 {"QUAT_TDM_RX_3", NULL, "QUAT_TDM_RX_3 Port Mixer"},
16494
Rohit Kumara5077932017-09-10 22:05:05 +053016495 {"QUIN_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16496 {"QUIN_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16497 {"QUIN_TDM_RX_0 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16498 {"QUIN_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16499 {"QUIN_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16500 {"QUIN_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16501 {"QUIN_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16502 {"QUIN_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16503 {"QUIN_TDM_RX_0 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16504 {"QUIN_TDM_RX_0 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16505 {"QUIN_TDM_RX_0 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16506 {"QUIN_TDM_RX_0 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16507 {"QUIN_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16508 {"QUIN_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16509 {"QUIN_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16510 {"QUIN_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
16511 {"QUIN_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16512 {"QUIN_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16513 {"QUIN_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16514 {"QUIN_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Rohit Kumarc08b14f2017-10-06 10:52:17 +053016515 {"QUIN_TDM_RX_0", NULL, "QUIN_TDM_RX_0 Port Mixer"},
Rohit Kumara5077932017-09-10 22:05:05 +053016516
16517 {"QUIN_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16518 {"QUIN_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16519 {"QUIN_TDM_RX_1 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16520 {"QUIN_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16521 {"QUIN_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16522 {"QUIN_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16523 {"QUIN_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16524 {"QUIN_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16525 {"QUIN_TDM_RX_1 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16526 {"QUIN_TDM_RX_1 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16527 {"QUIN_TDM_RX_1 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16528 {"QUIN_TDM_RX_1 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16529 {"QUIN_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16530 {"QUIN_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16531 {"QUIN_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16532 {"QUIN_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
16533 {"QUIN_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16534 {"QUIN_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16535 {"QUIN_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16536 {"QUIN_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Rohit Kumarc08b14f2017-10-06 10:52:17 +053016537 {"QUIN_TDM_RX_1", NULL, "QUIN_TDM_RX_1 Port Mixer"},
Rohit Kumara5077932017-09-10 22:05:05 +053016538
16539 {"QUIN_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16540 {"QUIN_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16541 {"QUIN_TDM_RX_2 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16542 {"QUIN_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16543 {"QUIN_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16544 {"QUIN_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16545 {"QUIN_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16546 {"QUIN_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16547 {"QUIN_TDM_RX_2 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16548 {"QUIN_TDM_RX_2 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16549 {"QUIN_TDM_RX_2 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16550 {"QUIN_TDM_RX_2 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16551 {"QUIN_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16552 {"QUIN_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16553 {"QUIN_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16554 {"QUIN_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
16555 {"QUIN_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16556 {"QUIN_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16557 {"QUIN_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16558 {"QUIN_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Rohit Kumarc08b14f2017-10-06 10:52:17 +053016559 {"QUIN_TDM_RX_2", NULL, "QUIN_TDM_RX_2 Port Mixer"},
Rohit Kumara5077932017-09-10 22:05:05 +053016560
16561 {"QUIN_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16562 {"QUIN_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16563 {"QUIN_TDM_RX_3 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16564 {"QUIN_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16565 {"QUIN_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16566 {"QUIN_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16567 {"QUIN_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16568 {"QUIN_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16569 {"QUIN_TDM_RX_3 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16570 {"QUIN_TDM_RX_3 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16571 {"QUIN_TDM_RX_3 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16572 {"QUIN_TDM_RX_3 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16573 {"QUIN_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16574 {"QUIN_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16575 {"QUIN_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16576 {"QUIN_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
16577 {"QUIN_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16578 {"QUIN_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16579 {"QUIN_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16580 {"QUIN_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Rohit Kumarc08b14f2017-10-06 10:52:17 +053016581 {"QUIN_TDM_RX_3", NULL, "QUIN_TDM_RX_3 Port Mixer"},
Rohit Kumara5077932017-09-10 22:05:05 +053016582
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016583 {"INT0_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16584 {"INT0_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16585 {"INT0_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16586 {"INT0_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016587 {"INT0_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016588 {"INT0_MI2S_RX Port Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
16589 {"INT0_MI2S_RX Port Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16590 {"INT0_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16591 {"INT0_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16592 {"INT0_MI2S_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16593 {"INT0_MI2S_RX", NULL, "INT0_MI2S_RX Port Mixer"},
16594
16595 {"INT4_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16596 {"INT4_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16597 {"INT4_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16598 {"INT4_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016599 {"INT4_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016600 {"INT4_MI2S_RX Port Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
16601 {"INT4_MI2S_RX Port Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16602 {"INT4_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16603 {"INT4_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16604 {"INT4_MI2S_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16605 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX Port Mixer"},
16606
16607 {"SLIMBUS_0_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16608 {"SLIMBUS_0_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16609 {"SLIMBUS_0_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16610 {"SLIMBUS_0_RX Port Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16611 {"SLIMBUS_0_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16612 {"SLIMBUS_0_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16613 {"SLIMBUS_0_RX Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16614 {"SLIMBUS_0_RX Port Mixer", "TERT_AUXPCM_UL_TX", "TERT_AUX_PCM_TX"},
16615 {"SLIMBUS_0_RX Port Mixer", "QUAT_AUXPCM_UL_TX", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016616 {"SLIMBUS_0_RX Port Mixer", "QUIN_AUXPCM_UL_TX", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016617 {"SLIMBUS_0_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16618 {"SLIMBUS_0_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16619 {"SLIMBUS_0_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16620 {"SLIMBUS_0_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16621 {"SLIMBUS_0_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016622 {"SLIMBUS_0_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016623 {"SLIMBUS_0_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16624 {"SLIMBUS_0_RX", NULL, "SLIMBUS_0_RX Port Mixer"},
16625 {"AFE_PCM_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16626 {"AFE_PCM_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16627 {"PCM_RX", NULL, "AFE_PCM_RX Port Mixer"},
16628 {"USB_AUDIO_RX Port Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
16629 {"USB_AUDIO_RX", NULL, "USB_AUDIO_RX Port Mixer"},
16630 {"USB_DL_HL", "Switch", "USBAUDIO_DL_HL"},
16631 {"USB_AUDIO_RX", NULL, "USB_DL_HL"},
16632 {"USBAUDIO_UL_HL", NULL, "USB_AUDIO_TX"},
16633
16634
16635 {"AUX_PCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16636 {"AUX_PCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16637 {"AUX_PCM_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16638 {"AUX_PCM_RX Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16639 {"AUX_PCM_RX Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -080016640 {"AUX_PCM_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016641 {"AUX_PCM_RX", NULL, "AUX_PCM_RX Port Mixer"},
16642
16643 {"SEC_AUXPCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16644 {"SEC_AUXPCM_RX Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16645 {"SEC_AUXPCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -080016646 {"SEC_AUXPCM_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016647 {"SEC_AUX_PCM_RX", NULL, "SEC_AUXPCM_RX Port Mixer"},
16648
16649 {"TERT_AUXPCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16650 {"TERT_AUXPCM_RX Port Mixer", "TERT_AUXPCM_UL_TX", "TERT_AUX_PCM_TX"},
16651 {"TERT_AUXPCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16652 {"TERT_AUX_PCM_RX", NULL, "TERT_AUXPCM_RX Port Mixer"},
16653
16654 {"QUAT_AUXPCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16655 {"QUAT_AUXPCM_RX Port Mixer", "QUAT_AUXPCM_UL_TX", "QUAT_AUX_PCM_TX"},
16656 {"QUAT_AUXPCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16657 {"QUAT_AUX_PCM_RX", NULL, "QUAT_AUXPCM_RX Port Mixer"},
16658
Rohit Kumara5077932017-09-10 22:05:05 +053016659 {"QUIN_AUXPCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16660 {"QUIN_AUXPCM_RX Port Mixer", "QUIN_AUXPCM_UL_TX", "QUIN_AUX_PCM_TX"},
16661 {"QUIN_AUXPCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16662 {"QUIN_AUX_PCM_RX", NULL, "QUIN_AUXPCM_RX Port Mixer"},
16663
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016664 {"Voice Stub Tx Mixer", "STUB_TX_HL", "STUB_TX"},
16665 {"Voice Stub Tx Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16666 {"Voice Stub Tx Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16667 {"Voice Stub Tx Mixer", "STUB_1_TX_HL", "STUB_1_TX"},
16668 {"Voice Stub Tx Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16669 {"Voice Stub Tx Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16670 {"Voice Stub Tx Mixer", "TERT_AUXPCM_UL_TX", "TERT_AUX_PCM_TX"},
16671 {"Voice Stub Tx Mixer", "QUAT_AUXPCM_UL_TX", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016672 {"Voice Stub Tx Mixer", "QUIN_AUXPCM_UL_TX", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016673 {"Voice Stub Tx Mixer", "MI2S_TX", "MI2S_TX"},
16674 {"Voice Stub Tx Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16675 {"Voice Stub Tx Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16676 {"Voice Stub Tx Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
16677 {"Voice Stub Tx Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16678 {"Voice Stub Tx Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16679 {"Voice Stub Tx Mixer", "SLIM_3_TX", "SLIMBUS_3_TX"},
16680 {"Voice Stub Tx Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16681 {"Voice Stub Tx Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16682 {"Voice Stub Tx Mixer", "AFE_PCM_TX", "PCM_TX"},
16683 {"VOICE_STUB_UL", NULL, "Voice Stub Tx Mixer"},
16684
16685 {"VoLTE Stub Tx Mixer", "STUB_TX_HL", "STUB_TX"},
16686 {"VoLTE Stub Tx Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16687 {"VoLTE Stub Tx Mixer", "STUB_1_TX_HL", "STUB_1_TX"},
16688 {"VoLTE Stub Tx Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16689 {"VoLTE Stub Tx Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16690 {"VoLTE Stub Tx Mixer", "SLIM_3_TX", "SLIMBUS_3_TX"},
16691 {"VoLTE Stub Tx Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16692 {"VoLTE Stub Tx Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16693 {"VoLTE Stub Tx Mixer", "AFE_PCM_TX", "PCM_TX"},
16694 {"VoLTE Stub Tx Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16695 {"VoLTE Stub Tx Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16696 {"VOLTE_STUB_UL", NULL, "VoLTE Stub Tx Mixer"},
16697
16698 {"Voice2 Stub Tx Mixer", "STUB_TX_HL", "STUB_TX"},
16699 {"Voice2 Stub Tx Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16700 {"Voice2 Stub Tx Mixer", "STUB_1_TX_HL", "STUB_1_TX"},
16701 {"Voice2 Stub Tx Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16702 {"Voice2 Stub Tx Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16703 {"Voice2 Stub Tx Mixer", "SLIM_3_TX", "SLIMBUS_3_TX"},
16704 {"Voice2 Stub Tx Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16705 {"Voice2 Stub Tx Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16706 {"Voice2 Stub Tx Mixer", "AFE_PCM_TX", "PCM_TX"},
16707 {"Voice2 Stub Tx Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16708 {"Voice2 Stub Tx Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16709 {"VOICE2_STUB_UL", NULL, "Voice2 Stub Tx Mixer"},
16710
kunleizdf5a00a2017-11-27 15:27:36 +080016711 {"STUB_RX Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
16712 {"STUB_RX Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016713 {"STUB_RX", NULL, "STUB_RX Mixer"},
kunleizdf5a00a2017-11-27 15:27:36 +080016714
16715 {"SLIMBUS_1_RX Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
16716 {"SLIMBUS_1_RX Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016717 {"SLIMBUS_1_RX", NULL, "SLIMBUS_1_RX Mixer"},
kunleizdf5a00a2017-11-27 15:27:36 +080016718
16719 {"SLIMBUS_3_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
16720 {"SLIMBUS_3_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016721 {"SLIMBUS_3_RX", NULL, "SLIMBUS_3_RX_Voice Mixer"},
16722
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016723 {"SLIM_7_RX_Voice Mixer", "Voip", "VOIP_DL"},
16724 {"SLIM_7_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016725 {"SLIM_7_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
16726 {"SLIM_7_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
16727 {"SLIM_7_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
16728 {"SLIMBUS_7_RX", NULL, "SLIM_7_RX_Voice Mixer"},
16729
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016730 {"SLIM_8_RX_Voice Mixer", "Voip", "VOIP_DL"},
16731 {"SLIM_8_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016732 {"SLIM_8_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
16733 {"SLIM_8_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
16734 {"SLIM_8_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
16735 {"SLIMBUS_8_RX", NULL, "SLIM_8_RX_Voice Mixer"},
16736
16737 {"SLIMBUS_1_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16738 {"SLIMBUS_1_RX Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16739 {"SLIMBUS_1_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16740 {"SLIMBUS_1_RX", NULL, "SLIMBUS_1_RX Port Mixer"},
16741 {"INTERNAL_BT_SCO_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16742 {"INTERNAL_BT_SCO_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16743 {"INT_BT_SCO_RX", NULL, "INTERNAL_BT_SCO_RX Port Mixer"},
16744 {"SLIMBUS_3_RX Port Mixer", "INTERNAL_BT_SCO_RX", "INT_BT_SCO_RX"},
16745 {"SLIMBUS_3_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16746 {"SLIMBUS_3_RX Port Mixer", "AFE_PCM_RX", "PCM_RX"},
16747 {"SLIMBUS_3_RX Port Mixer", "AUX_PCM_RX", "AUX_PCM_RX"},
16748 {"SLIMBUS_3_RX Port Mixer", "SLIM_0_RX", "SLIMBUS_0_RX"},
16749 {"SLIMBUS_3_RX", NULL, "SLIMBUS_3_RX Port Mixer"},
16750
16751 {"SLIMBUS_6_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16752 {"SLIMBUS_6_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16753 {"SLIMBUS_6_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16754 {"SLIMBUS_6_RX Port Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16755 {"SLIMBUS_6_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16756 {"SLIMBUS_6_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16757 {"SLIMBUS_6_RX Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16758 {"SLIMBUS_6_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16759 {"SLIMBUS_6_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16760 {"SLIMBUS_6_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16761 {"SLIMBUS_6_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16762 {"SLIMBUS_6_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16763 {"SLIMBUS_6_RX", NULL, "SLIMBUS_6_RX Port Mixer"},
16764
16765 {"HDMI_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16766 {"HDMI", NULL, "HDMI_RX Port Mixer"},
16767
16768 {"DISPLAY_PORT_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16769 {"DISPLAY_PORT", NULL, "DISPLAY_PORT_RX Port Mixer"},
16770
16771 {"SEC_I2S_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16772 {"SEC_I2S_RX", NULL, "SEC_I2S_RX Port Mixer"},
16773
16774 {"MI2S_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16775 {"MI2S_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16776 {"MI2S_RX", NULL, "MI2S_RX Port Mixer"},
16777
16778 {"PRI_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16779 {"PRI_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16780 {"PRI_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16781 {"PRI_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016782 {"PRI_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016783 {"PRI_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16784 {"PRI_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16785 {"PRI_MI2S_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16786 {"PRI_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -080016787 {"PRI_MI2S_RX Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016788 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX Port Mixer"},
16789
16790 {"SEC_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16791 {"SEC_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16792 {"SEC_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16793 {"SEC_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016794 {"SEC_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016795 {"SEC_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16796 {"SEC_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16797 {"SEC_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -080016798 {"SEC_MI2S_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016799 {"SEC_MI2S_RX", NULL, "SEC_MI2S_RX Port Mixer"},
16800
16801 {"TERT_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16802 {"TERT_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16803 {"TERT_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16804 {"TERT_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016805 {"TERT_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016806 {"TERT_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16807 {"TERT_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16808 {"TERT_MI2S_RX", NULL, "TERT_MI2S_RX Port Mixer"},
16809
16810 {"QUAT_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16811 {"QUAT_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16812 {"QUAT_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16813 {"QUAT_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016814 {"QUAT_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016815 {"QUAT_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16816 {"QUAT_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16817 {"QUAT_MI2S_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16818 {"QUAT_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16819 {"QUAT_MI2S_RX", NULL, "QUAT_MI2S_RX Port Mixer"},
16820
Rohit Kumara5077932017-09-10 22:05:05 +053016821 {"QUIN_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16822 {"QUIN_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16823 {"QUIN_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16824 {"QUIN_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16825 {"QUIN_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
16826 {"QUIN_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16827 {"QUIN_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16828 {"QUIN_MI2S_RX", NULL, "QUIN_MI2S_RX Port Mixer"},
16829
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016830 /* Backend Enablement */
16831
16832 {"BE_OUT", NULL, "PRI_I2S_RX"},
16833 {"BE_OUT", NULL, "SEC_I2S_RX"},
16834 {"BE_OUT", NULL, "SLIMBUS_0_RX"},
16835 {"BE_OUT", NULL, "SLIMBUS_1_RX"},
16836 {"BE_OUT", NULL, "SLIMBUS_2_RX"},
16837 {"BE_OUT", NULL, "SLIMBUS_3_RX"},
16838 {"BE_OUT", NULL, "SLIMBUS_4_RX"},
16839 {"BE_OUT", NULL, "SLIMBUS_5_RX"},
16840 {"BE_OUT", NULL, "SLIMBUS_6_RX"},
16841 {"BE_OUT", NULL, "SLIMBUS_7_RX"},
16842 {"BE_OUT", NULL, "SLIMBUS_8_RX"},
16843 {"BE_OUT", NULL, "USB_AUDIO_RX"},
16844 {"BE_OUT", NULL, "HDMI"},
16845 {"BE_OUT", NULL, "DISPLAY_PORT"},
16846 {"BE_OUT", NULL, "SPDIF_RX"},
16847 {"BE_OUT", NULL, "MI2S_RX"},
16848 {"BE_OUT", NULL, "QUAT_MI2S_RX"},
16849 {"BE_OUT", NULL, "QUIN_MI2S_RX"},
16850 {"BE_OUT", NULL, "TERT_MI2S_RX"},
16851 {"BE_OUT", NULL, "SEC_MI2S_RX"},
16852 {"BE_OUT", NULL, "SEC_MI2S_RX_SD1"},
16853 {"BE_OUT", NULL, "PRI_MI2S_RX"},
16854 {"BE_OUT", NULL, "INT0_MI2S_RX"},
16855 {"BE_OUT", NULL, "INT4_MI2S_RX"},
Laxminath Kasam52697fe2017-11-29 15:44:14 +053016856 {"BE_OUT", NULL, "INT2_MI2S_RX"},
16857 {"BE_OUT", NULL, "INT3_MI2S_RX"},
16858 {"BE_OUT", NULL, "INT5_MI2S_RX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016859 {"BE_OUT", NULL, "INT_BT_SCO_RX"},
16860 {"BE_OUT", NULL, "INT_BT_A2DP_RX"},
16861 {"BE_OUT", NULL, "INT_FM_RX"},
16862 {"BE_OUT", NULL, "PCM_RX"},
16863 {"BE_OUT", NULL, "SLIMBUS_3_RX"},
16864 {"BE_OUT", NULL, "AUX_PCM_RX"},
16865 {"BE_OUT", NULL, "SEC_AUX_PCM_RX"},
16866 {"BE_OUT", NULL, "TERT_AUX_PCM_RX"},
16867 {"BE_OUT", NULL, "QUAT_AUX_PCM_RX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016868 {"BE_OUT", NULL, "QUIN_AUX_PCM_RX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016869 {"BE_OUT", NULL, "INT_BT_SCO_RX"},
16870 {"BE_OUT", NULL, "INT_FM_RX"},
16871 {"BE_OUT", NULL, "PCM_RX"},
16872 {"BE_OUT", NULL, "SLIMBUS_3_RX"},
16873 {"BE_OUT", NULL, "VOICE_PLAYBACK_TX"},
16874 {"BE_OUT", NULL, "VOICE2_PLAYBACK_TX"},
16875 {"BE_OUT", NULL, "PRI_TDM_RX_0"},
16876 {"BE_OUT", NULL, "PRI_TDM_RX_1"},
16877 {"BE_OUT", NULL, "PRI_TDM_RX_2"},
16878 {"BE_OUT", NULL, "PRI_TDM_RX_3"},
16879 {"BE_OUT", NULL, "SEC_TDM_RX_0"},
16880 {"BE_OUT", NULL, "SEC_TDM_RX_1"},
16881 {"BE_OUT", NULL, "SEC_TDM_RX_2"},
16882 {"BE_OUT", NULL, "SEC_TDM_RX_3"},
16883 {"BE_OUT", NULL, "TERT_TDM_RX_0"},
16884 {"BE_OUT", NULL, "TERT_TDM_RX_1"},
16885 {"BE_OUT", NULL, "TERT_TDM_RX_2"},
16886 {"BE_OUT", NULL, "TERT_TDM_RX_3"},
16887 {"BE_OUT", NULL, "TERT_TDM_RX_4"},
16888 {"BE_OUT", NULL, "QUAT_TDM_RX_0"},
16889 {"BE_OUT", NULL, "QUAT_TDM_RX_1"},
16890 {"BE_OUT", NULL, "QUAT_TDM_RX_2"},
16891 {"BE_OUT", NULL, "QUAT_TDM_RX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016892 {"BE_OUT", NULL, "QUIN_TDM_RX_0"},
16893 {"BE_OUT", NULL, "QUIN_TDM_RX_1"},
16894 {"BE_OUT", NULL, "QUIN_TDM_RX_2"},
16895 {"BE_OUT", NULL, "QUIN_TDM_RX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016896
16897 {"PRI_I2S_TX", NULL, "BE_IN"},
16898 {"MI2S_TX", NULL, "BE_IN"},
16899 {"QUAT_MI2S_TX", NULL, "BE_IN"},
16900 {"QUIN_MI2S_TX", NULL, "BE_IN"},
16901 {"PRI_MI2S_TX", NULL, "BE_IN"},
16902 {"TERT_MI2S_TX", NULL, "BE_IN"},
Laxminath Kasam52697fe2017-11-29 15:44:14 +053016903 {"INT0_MI2S_TX", NULL, "BE_IN"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016904 {"INT2_MI2S_TX", NULL, "BE_IN"},
16905 {"INT3_MI2S_TX", NULL, "BE_IN"},
Laxminath Kasam52697fe2017-11-29 15:44:14 +053016906 {"INT4_MI2S_TX", NULL, "BE_IN"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016907 {"INT5_MI2S_TX", NULL, "BE_IN"},
16908 {"SEC_MI2S_TX", NULL, "BE_IN"},
16909 {"SENARY_MI2S_TX", NULL, "BE_IN" },
16910 {"SLIMBUS_0_TX", NULL, "BE_IN" },
16911 {"SLIMBUS_1_TX", NULL, "BE_IN" },
16912 {"SLIMBUS_3_TX", NULL, "BE_IN" },
16913 {"SLIMBUS_4_TX", NULL, "BE_IN" },
16914 {"SLIMBUS_5_TX", NULL, "BE_IN" },
16915 {"SLIMBUS_6_TX", NULL, "BE_IN" },
16916 {"SLIMBUS_7_TX", NULL, "BE_IN" },
16917 {"SLIMBUS_8_TX", NULL, "BE_IN" },
16918 {"USB_AUDIO_TX", NULL, "BE_IN" },
16919 {"INT_BT_SCO_TX", NULL, "BE_IN"},
16920 {"INT_FM_TX", NULL, "BE_IN"},
16921 {"PCM_TX", NULL, "BE_IN"},
16922 {"BE_OUT", NULL, "SLIMBUS_3_RX"},
16923 {"BE_OUT", NULL, "STUB_RX"},
16924 {"STUB_TX", NULL, "BE_IN"},
16925 {"STUB_1_TX", NULL, "BE_IN"},
16926 {"BE_OUT", NULL, "AUX_PCM_RX"},
16927 {"AUX_PCM_TX", NULL, "BE_IN"},
16928 {"SEC_AUX_PCM_TX", NULL, "BE_IN"},
16929 {"TERT_AUX_PCM_TX", NULL, "BE_IN"},
16930 {"QUAT_AUX_PCM_TX", NULL, "BE_IN"},
Rohit Kumara5077932017-09-10 22:05:05 +053016931 {"QUIN_AUX_PCM_TX", NULL, "BE_IN"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016932 {"INCALL_RECORD_TX", NULL, "BE_IN"},
16933 {"INCALL_RECORD_RX", NULL, "BE_IN"},
16934 {"SLIM0_RX_VI_FB_LCH_MUX", "SLIM4_TX", "SLIMBUS_4_TX"},
16935 {"SLIM0_RX_VI_FB_RCH_MUX", "SLIM4_TX", "SLIMBUS_4_TX"},
16936 {"PRI_MI2S_RX_VI_FB_MUX", "SENARY_TX", "SENARY_TX"},
16937 {"INT4_MI2S_RX_VI_FB_MONO_CH_MUX", "INT5_MI2S_TX", "INT5_MI2S_TX"},
16938 {"INT4_MI2S_RX_VI_FB_STEREO_CH_MUX", "INT5_MI2S_TX", "INT5_MI2S_TX"},
16939 {"SLIMBUS_0_RX", NULL, "SLIM0_RX_VI_FB_LCH_MUX"},
16940 {"SLIMBUS_0_RX", NULL, "SLIM0_RX_VI_FB_RCH_MUX"},
16941 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX_VI_FB_MUX"},
16942 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX_VI_FB_MONO_CH_MUX"},
16943 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX_VI_FB_STEREO_CH_MUX"},
16944 {"PRI_TDM_TX_0", NULL, "BE_IN"},
16945 {"PRI_TDM_TX_1", NULL, "BE_IN"},
16946 {"PRI_TDM_TX_2", NULL, "BE_IN"},
16947 {"PRI_TDM_TX_3", NULL, "BE_IN"},
16948 {"SEC_TDM_TX_0", NULL, "BE_IN"},
16949 {"SEC_TDM_TX_1", NULL, "BE_IN"},
16950 {"SEC_TDM_TX_2", NULL, "BE_IN"},
16951 {"SEC_TDM_TX_3", NULL, "BE_IN"},
16952 {"TERT_TDM_TX_0", NULL, "BE_IN"},
16953 {"TERT_TDM_TX_1", NULL, "BE_IN"},
16954 {"TERT_TDM_TX_2", NULL, "BE_IN"},
16955 {"TERT_TDM_TX_3", NULL, "BE_IN"},
16956 {"QUAT_TDM_TX_0", NULL, "BE_IN"},
16957 {"QUAT_TDM_TX_1", NULL, "BE_IN"},
16958 {"QUAT_TDM_TX_2", NULL, "BE_IN"},
16959 {"QUAT_TDM_TX_3", NULL, "BE_IN"},
Raja Mallik425e1d32018-05-20 19:21:10 +053016960 {"AFE_LOOPBACK_TX", NULL, "BE_IN"},
Rohit Kumara5077932017-09-10 22:05:05 +053016961 {"QUIN_TDM_TX_0", NULL, "BE_IN"},
16962 {"QUIN_TDM_TX_1", NULL, "BE_IN"},
16963 {"QUIN_TDM_TX_2", NULL, "BE_IN"},
16964 {"QUIN_TDM_TX_3", NULL, "BE_IN"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016965};
16966
16967static int msm_pcm_routing_hw_params(struct snd_pcm_substream *substream,
16968 struct snd_pcm_hw_params *params)
16969{
16970 struct snd_soc_pcm_runtime *rtd = substream->private_data;
16971 unsigned int be_id = rtd->dai_link->id;
16972
16973 if (be_id >= MSM_BACKEND_DAI_MAX) {
16974 pr_err("%s: unexpected BE id %d\n", __func__, be_id);
16975 return -EINVAL;
16976 }
16977
16978 mutex_lock(&routing_lock);
16979 msm_bedais[be_id].sample_rate = params_rate(params);
16980 msm_bedais[be_id].channel = params_channels(params);
16981 msm_bedais[be_id].format = params_format(params);
16982 pr_debug("%s: BE Sample Rate (%d) format (%d) BE id %d\n",
16983 __func__, msm_bedais[be_id].sample_rate,
16984 msm_bedais[be_id].format, be_id);
16985 mutex_unlock(&routing_lock);
16986 return 0;
16987}
16988
16989static int msm_pcm_routing_close(struct snd_pcm_substream *substream)
16990{
16991 struct snd_soc_pcm_runtime *rtd = substream->private_data;
16992 unsigned int be_id = rtd->dai_link->id;
16993 int i, session_type, path_type, topology;
16994 struct msm_pcm_routing_bdai_data *bedai;
16995 struct msm_pcm_routing_fdai_data *fdai;
16996
16997 pr_debug("%s: substream->pcm->id:%s\n",
16998 __func__, substream->pcm->id);
16999
17000 if (be_id >= MSM_BACKEND_DAI_MAX) {
17001 pr_err("%s: unexpected BE id %d\n", __func__, be_id);
17002 return -EINVAL;
17003 }
17004
17005 bedai = &msm_bedais[be_id];
17006 session_type = (substream->stream == SNDRV_PCM_STREAM_PLAYBACK ?
17007 0 : 1);
17008 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
17009 path_type = ADM_PATH_PLAYBACK;
17010 else
17011 path_type = ADM_PATH_LIVE_REC;
17012
17013 mutex_lock(&routing_lock);
17014 for_each_set_bit(i, &bedai->fe_sessions[0], MSM_FRONTEND_DAI_MAX) {
17015 if (!is_mm_lsm_fe_id(i))
17016 continue;
17017 fdai = &fe_dai_map[i][session_type];
17018 if (fdai->strm_id != INVALID_SESSION) {
17019 int idx;
17020 int port_id;
17021 unsigned long copp =
17022 session_copp_map[i][session_type][be_id];
17023 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++)
17024 if (test_bit(idx, &copp))
17025 break;
17026 fdai->be_srate = bedai->sample_rate;
Sachin Mohan Gadag11b247f2018-09-06 19:27:42 +053017027 port_id = get_port_id(bedai->port_id);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017028 topology = adm_get_topology_for_port_copp_idx(port_id,
17029 idx);
Sachin Mohan Gadag3c3c5812018-07-20 15:46:54 +053017030 adm_close(port_id, fdai->perf_mode, idx);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017031 pr_debug("%s: copp:%ld,idx bit fe:%d, type:%d,be:%d topology=0x%x\n",
17032 __func__, copp, i, session_type, be_id,
17033 topology);
17034 clear_bit(idx,
17035 &session_copp_map[i][session_type][be_id]);
17036 if ((fdai->perf_mode == LEGACY_PCM_MODE) &&
17037 (bedai->passthr_mode[i] == LEGACY_PCM))
Sachin Mohan Gadag3c3c5812018-07-20 15:46:54 +053017038 msm_pcm_routing_deinit_pp(port_id,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017039 topology);
17040 }
17041 }
17042
17043 bedai->active = 0;
17044 bedai->sample_rate = 0;
17045 bedai->channel = 0;
17046 for (i = 0; i < MSM_FRONTEND_DAI_MAX; i++) {
17047 if (bedai->passthr_mode[i] != LISTEN)
17048 bedai->passthr_mode[i] = LEGACY_PCM;
17049 }
17050 mutex_unlock(&routing_lock);
17051
17052 return 0;
17053}
17054
17055static int msm_pcm_routing_prepare(struct snd_pcm_substream *substream)
17056{
17057 struct snd_soc_pcm_runtime *rtd = substream->private_data;
17058 unsigned int be_id = rtd->dai_link->id;
17059 int i, path_type, topology;
17060 int session_type = INVALID_SESSION;
17061 struct msm_pcm_routing_bdai_data *bedai;
17062 u32 channels, sample_rate;
17063 uint16_t bits_per_sample = 16, voc_path_type;
17064 struct msm_pcm_routing_fdai_data *fdai;
17065 u32 session_id;
17066 struct media_format_info voc_be_media_format;
17067 bool is_lsm;
17068
17069 pr_debug("%s: substream->pcm->id:%s\n",
17070 __func__, substream->pcm->id);
17071
17072 if (be_id >= MSM_BACKEND_DAI_MAX) {
17073 pr_err("%s: unexpected BE id %d\n", __func__, be_id);
17074 return -EINVAL;
17075 }
17076
17077 bedai = &msm_bedais[be_id];
17078
17079 mutex_lock(&routing_lock);
17080 if (bedai->active == 1)
17081 goto done; /* Ignore prepare if back-end already active */
17082
17083 /* AFE port is not active at this point. However, still
17084 * go ahead setting active flag under the notion that
17085 * QDSP6 is able to handle ADM starting before AFE port
17086 * is started.
17087 */
17088 bedai->active = 1;
17089
17090 for_each_set_bit(i, &bedai->fe_sessions[0], MSM_FRONTEND_DAI_MAX) {
17091 if (!(is_mm_lsm_fe_id(i) &&
17092 route_check_fe_id_adm_support(i)))
17093 continue;
17094
17095 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
17096 if (bedai->passthr_mode[i] != LEGACY_PCM)
17097 path_type = ADM_PATH_COMPRESSED_RX;
17098 else
17099 path_type = ADM_PATH_PLAYBACK;
17100 session_type = SESSION_TYPE_RX;
17101 } else {
17102 path_type = ADM_PATH_LIVE_REC;
17103 session_type = SESSION_TYPE_TX;
17104 }
17105
17106 is_lsm = (i >= MSM_FRONTEND_DAI_LSM1) &&
17107 (i <= MSM_FRONTEND_DAI_LSM8);
17108 fdai = &fe_dai_map[i][session_type];
17109 if (fdai->strm_id != INVALID_SESSION) {
17110 int app_type, app_type_idx, copp_idx, acdb_dev_id;
Sachin Mohan Gadag3c3c5812018-07-20 15:46:54 +053017111 int port_id = get_port_id(bedai->port_id);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017112
17113 if (session_type == SESSION_TYPE_TX &&
17114 fdai->be_srate &&
17115 (fdai->be_srate != bedai->sample_rate)) {
17116 pr_debug("%s: flush strm %d diff BE rates\n",
17117 __func__,
17118 fdai->strm_id);
17119
17120 if (fdai->event_info.event_func)
17121 fdai->event_info.event_func(
17122 MSM_PCM_RT_EVT_BUF_RECFG,
17123 fdai->event_info.priv_data);
17124 fdai->be_srate = 0; /* might not need it */
17125 }
17126 bits_per_sample = msm_routing_get_bit_width(
17127 bedai->format);
17128
17129 app_type =
17130 fe_dai_app_type_cfg[i][session_type][be_id].app_type;
17131 if (app_type && is_lsm) {
17132 app_type_idx =
17133 msm_pcm_routing_get_lsm_app_type_idx(app_type);
17134 sample_rate =
17135 fe_dai_app_type_cfg[i][session_type][be_id]
17136 .sample_rate;
17137 bits_per_sample =
17138 lsm_app_type_cfg[app_type_idx].bit_width;
17139 } else if (app_type) {
17140 app_type_idx =
17141 msm_pcm_routing_get_app_type_idx(app_type);
17142 sample_rate =
17143 fe_dai_app_type_cfg[i][session_type]
17144 [be_id].sample_rate;
17145 bits_per_sample =
17146 app_type_cfg[app_type_idx].bit_width;
17147 } else
17148 sample_rate = bedai->sample_rate;
17149 /*
17150 * check if ADM needs to be configured with different
17151 * channel mapping than backend
17152 */
17153 if (!bedai->adm_override_ch)
17154 channels = bedai->channel;
17155 else
17156 channels = bedai->adm_override_ch;
17157 acdb_dev_id =
17158 fe_dai_app_type_cfg[i][session_type][be_id].acdb_dev_id;
17159 topology = msm_routing_get_adm_topology(i, session_type,
17160 be_id);
Sachin Mohan Gadag3c3c5812018-07-20 15:46:54 +053017161 copp_idx = adm_open(port_id, path_type,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017162 sample_rate, channels, topology,
17163 fdai->perf_mode, bits_per_sample,
Sachin Mohan Gadag3c3c5812018-07-20 15:46:54 +053017164 app_type, acdb_dev_id,
17165 session_type);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017166 if ((copp_idx < 0) ||
17167 (copp_idx >= MAX_COPPS_PER_PORT)) {
17168 pr_err("%s: adm open failed\n", __func__);
17169 mutex_unlock(&routing_lock);
17170 return -EINVAL;
17171 }
17172 pr_debug("%s: setting idx bit of fe:%d, type: %d, be:%d\n",
17173 __func__, i, session_type, be_id);
17174 set_bit(copp_idx,
17175 &session_copp_map[i][session_type][be_id]);
17176
17177 if (msm_is_resample_needed(
17178 sample_rate,
17179 bedai->sample_rate))
Sachin Mohan Gadag3c3c5812018-07-20 15:46:54 +053017180 adm_copp_mfc_cfg(port_id, copp_idx,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017181 bedai->sample_rate);
17182
17183 msm_pcm_routing_build_matrix(i, session_type, path_type,
17184 fdai->perf_mode,
17185 bedai->passthr_mode[i]);
17186 if ((fdai->perf_mode == LEGACY_PCM_MODE) &&
17187 (bedai->passthr_mode[i] == LEGACY_PCM))
Sachin Mohan Gadag3c3c5812018-07-20 15:46:54 +053017188 msm_pcm_routing_cfg_pp(port_id, copp_idx,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017189 topology, channels);
17190 }
17191 }
17192
17193 for_each_set_bit(i, &bedai->fe_sessions[0], MSM_FRONTEND_DAI_MAX) {
17194 session_id = msm_pcm_routing_get_voc_sessionid(i);
17195 if (session_id) {
17196 pr_debug("%s voice session_id: 0x%x\n", __func__,
17197 session_id);
17198
17199 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
17200 voc_path_type = RX_PATH;
17201 else
17202 voc_path_type = TX_PATH;
17203
17204 voc_set_route_flag(session_id, voc_path_type, 1);
17205
17206 memset(&voc_be_media_format, 0,
17207 sizeof(struct media_format_info));
17208
17209 voc_be_media_format.port_id = bedai->port_id;
17210 voc_be_media_format.num_channels = bedai->channel;
17211 voc_be_media_format.sample_rate = bedai->sample_rate;
17212 voc_be_media_format.bits_per_sample = bedai->format;
17213 /* Defaulting this to 1 for voice call usecases */
17214 voc_be_media_format.channel_mapping[0] = 1;
17215
17216 voc_set_device_config(session_id, voc_path_type,
17217 &voc_be_media_format);
17218
17219 if (voc_get_route_flag(session_id, RX_PATH) &&
17220 voc_get_route_flag(session_id, TX_PATH))
17221 voc_enable_device(session_id);
17222 }
17223 }
17224
17225 /* Check if backend is an external ec ref port and set as needed */
17226 if (unlikely(bedai->port_id == voc_get_ext_ec_ref_port_id())) {
17227
17228 memset(&voc_be_media_format, 0,
17229 sizeof(struct media_format_info));
17230
17231 /* Get format info for ec ref port from msm_bedais[] */
17232 voc_be_media_format.port_id = bedai->port_id;
17233 voc_be_media_format.num_channels = bedai->channel;
17234 voc_be_media_format.bits_per_sample = bedai->format;
17235 voc_be_media_format.sample_rate = bedai->sample_rate;
17236 /* Defaulting this to 1 for voice call usecases */
17237 voc_be_media_format.channel_mapping[0] = 1;
17238 voc_set_ext_ec_ref_media_fmt_info(&voc_be_media_format);
17239 pr_debug("%s: EC Ref media format info set to port_id=%d, num_channels=%d, bits_per_sample=%d, sample_rate=%d\n",
17240 __func__, voc_be_media_format.port_id,
17241 voc_be_media_format.num_channels,
17242 voc_be_media_format.bits_per_sample,
17243 voc_be_media_format.sample_rate);
17244 }
17245
17246done:
17247 mutex_unlock(&routing_lock);
17248
17249 return 0;
17250}
17251
17252static int msm_routing_send_device_pp_params(int port_id, int copp_idx,
17253 int fe_id)
17254{
17255 int index, topo_id, be_idx;
17256 unsigned long pp_config = 0;
17257 bool mute_on;
17258 int latency;
17259 bool compr_passthr_mode = true;
17260
17261 pr_debug("%s: port_id %d, copp_idx %d\n", __func__, port_id, copp_idx);
17262
17263 if (port_id != HDMI_RX && port_id != DISPLAY_PORT_RX) {
17264 pr_err("%s: Device pp params on invalid port %d\n",
17265 __func__, port_id);
17266 return -EINVAL;
17267 }
17268
17269 for (be_idx = 0; be_idx < MSM_BACKEND_DAI_MAX; be_idx++) {
17270 if (port_id == msm_bedais[be_idx].port_id)
17271 break;
17272 }
17273
17274 if (be_idx >= MSM_BACKEND_DAI_MAX) {
17275 pr_debug("%s: Invalid be id %d\n", __func__, be_idx);
17276 return -EINVAL;
17277 }
17278
17279 for (index = 0; index < MSM_BACKEND_DAI_PP_PARAMS_REQ_MAX; index++) {
17280 if (msm_bedais_pp_params[index].port_id == port_id)
17281 break;
17282 }
17283 if (index >= MSM_BACKEND_DAI_PP_PARAMS_REQ_MAX) {
17284 pr_err("%s: Invalid backend pp params index %d\n",
17285 __func__, index);
17286 return -EINVAL;
17287 }
17288
17289 topo_id = adm_get_topology_for_port_copp_idx(port_id, copp_idx);
17290 if (topo_id != COMPRESSED_PASSTHROUGH_DEFAULT_TOPOLOGY) {
17291 pr_err("%s: Invalid passthrough topology 0x%x\n",
17292 __func__, topo_id);
17293 return -EINVAL;
17294 }
17295
17296 if ((msm_bedais[be_idx].passthr_mode[fe_id] == LEGACY_PCM) ||
17297 (msm_bedais[be_idx].passthr_mode[fe_id] == LISTEN))
17298 compr_passthr_mode = false;
17299
17300 pp_config = msm_bedais_pp_params[index].pp_params_config;
17301 if (test_bit(ADM_PP_PARAM_MUTE_BIT, &pp_config)) {
17302 pr_debug("%s: ADM_PP_PARAM_MUTE\n", __func__);
17303 clear_bit(ADM_PP_PARAM_MUTE_BIT, &pp_config);
17304 mute_on = msm_bedais_pp_params[index].mute_on;
17305 if ((msm_bedais[be_idx].active) && compr_passthr_mode)
17306 adm_send_compressed_device_mute(port_id,
17307 copp_idx,
17308 mute_on);
17309 }
17310 if (test_bit(ADM_PP_PARAM_LATENCY_BIT, &pp_config)) {
17311 pr_debug("%s: ADM_PP_PARAM_LATENCY\n", __func__);
17312 clear_bit(ADM_PP_PARAM_LATENCY_BIT,
17313 &pp_config);
17314 latency = msm_bedais_pp_params[index].latency;
17315 if ((msm_bedais[be_idx].active) && compr_passthr_mode)
17316 adm_send_compressed_device_latency(port_id,
17317 copp_idx,
17318 latency);
17319 }
17320 return 0;
17321}
17322
17323static int msm_routing_put_device_pp_params_mixer(struct snd_kcontrol *kcontrol,
17324 struct snd_ctl_elem_value *ucontrol)
17325{
17326 int pp_id = ucontrol->value.integer.value[0];
17327 int port_id = 0;
17328 int index, be_idx, i, topo_id, idx;
17329 bool mute;
17330 int latency;
17331 bool compr_passthr_mode = true;
17332
17333 pr_debug("%s: pp_id: 0x%x\n", __func__, pp_id);
17334
17335 for (be_idx = 0; be_idx < MSM_BACKEND_DAI_MAX; be_idx++) {
17336 port_id = msm_bedais[be_idx].port_id;
17337 if (port_id == HDMI_RX || port_id == DISPLAY_PORT_RX)
17338 break;
17339 }
17340
17341 if (be_idx >= MSM_BACKEND_DAI_MAX) {
17342 pr_debug("%s: Invalid be id %d\n", __func__, be_idx);
17343 return -EINVAL;
17344 }
17345
17346 for (index = 0; index < MSM_BACKEND_DAI_PP_PARAMS_REQ_MAX; index++) {
17347 if (msm_bedais_pp_params[index].port_id == port_id)
17348 break;
17349 }
17350 if (index >= MSM_BACKEND_DAI_PP_PARAMS_REQ_MAX) {
17351 pr_err("%s: Invalid pp params backend index %d\n",
17352 __func__, index);
17353 return -EINVAL;
17354 }
17355
17356 for_each_set_bit(i, &msm_bedais[be_idx].fe_sessions[0],
17357 MSM_FRONTEND_DAI_MM_SIZE) {
17358 if ((msm_bedais[be_idx].passthr_mode[i] == LEGACY_PCM) ||
17359 (msm_bedais[be_idx].passthr_mode[i] == LISTEN))
17360 compr_passthr_mode = false;
17361
17362 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++) {
17363 unsigned long copp =
17364 session_copp_map[i]
17365 [SESSION_TYPE_RX][be_idx];
17366 if (!test_bit(idx, &copp))
17367 continue;
17368 topo_id = adm_get_topology_for_port_copp_idx(port_id,
17369 idx);
17370 if (topo_id != COMPRESSED_PASSTHROUGH_DEFAULT_TOPOLOGY)
17371 continue;
17372 pr_debug("%s: port: 0x%x, copp %ld, be active: %d, passt: %d\n",
17373 __func__, port_id, copp, msm_bedais[be_idx].active,
17374 msm_bedais[be_idx].passthr_mode[i]);
17375 switch (pp_id) {
17376 case ADM_PP_PARAM_MUTE_ID:
17377 pr_debug("%s: ADM_PP_PARAM_MUTE\n", __func__);
17378 mute = ucontrol->value.integer.value[1] ? true : false;
17379 msm_bedais_pp_params[index].mute_on = mute;
17380 set_bit(ADM_PP_PARAM_MUTE_BIT,
17381 &msm_bedais_pp_params[index].pp_params_config);
17382 if ((msm_bedais[be_idx].active) && compr_passthr_mode)
17383 adm_send_compressed_device_mute(port_id,
17384 idx, mute);
17385 break;
17386 case ADM_PP_PARAM_LATENCY_ID:
17387 pr_debug("%s: ADM_PP_PARAM_LATENCY\n", __func__);
17388 msm_bedais_pp_params[index].latency =
17389 ucontrol->value.integer.value[1];
17390 set_bit(ADM_PP_PARAM_LATENCY_BIT,
17391 &msm_bedais_pp_params[index].pp_params_config);
17392 latency = msm_bedais_pp_params[index].latency =
17393 ucontrol->value.integer.value[1];
17394 if ((msm_bedais[be_idx].active) && compr_passthr_mode)
17395 adm_send_compressed_device_latency(port_id,
17396 idx, latency);
17397 break;
17398 default:
17399 pr_info("%s, device pp param %d not supported\n",
17400 __func__, pp_id);
17401 break;
17402 }
17403 }
17404 }
17405 return 0;
17406}
17407
17408static int msm_routing_get_device_pp_params_mixer(struct snd_kcontrol *kcontrol,
17409 struct snd_ctl_elem_value *ucontrol)
17410{
17411 pr_debug("%s:msm_routing_get_device_pp_params_mixer", __func__);
17412 return 0;
17413}
17414
17415static const struct snd_kcontrol_new device_pp_params_mixer_controls[] = {
17416 SOC_SINGLE_MULTI_EXT("Device PP Params", SND_SOC_NOPM, 0, 0xFFFFFFFF,
17417 0, 3, msm_routing_get_device_pp_params_mixer,
17418 msm_routing_put_device_pp_params_mixer),
17419};
17420
17421static int msm_aptx_dec_license_control_get(struct snd_kcontrol *kcontrol,
17422 struct snd_ctl_elem_value *ucontrol)
17423{
17424 ucontrol->value.integer.value[0] =
17425 core_get_license_status(ASM_MEDIA_FMT_APTX);
17426 pr_debug("%s: status %ld\n", __func__,
17427 ucontrol->value.integer.value[0]);
17428 return 0;
17429}
17430
17431static int msm_aptx_dec_license_control_put(struct snd_kcontrol *kcontrol,
17432 struct snd_ctl_elem_value *ucontrol)
17433{
17434 int32_t status = 0;
17435
17436 status = core_set_license(ucontrol->value.integer.value[0],
17437 APTX_CLASSIC_DEC_LICENSE_ID);
17438 pr_debug("%s: status %d\n", __func__, status);
17439 return status;
17440}
17441
17442static const struct snd_kcontrol_new aptx_dec_license_controls[] = {
17443 SOC_SINGLE_EXT("APTX Dec License", SND_SOC_NOPM, 0,
17444 0xFFFF, 0, msm_aptx_dec_license_control_get,
17445 msm_aptx_dec_license_control_put),
17446};
17447
Rohit kumar4ea92b12019-02-01 18:05:33 +053017448static int msm_routing_put_port_chmap_mixer(struct snd_kcontrol *kcontrol,
17449 struct snd_ctl_elem_value *ucontrol)
17450{
17451 uint8_t channel_map[PCM_FORMAT_MAX_NUM_CHANNEL];
17452 uint32_t be_idx = ucontrol->value.integer.value[0];
17453 int i;
17454
17455 for (i = 0; i < PCM_FORMAT_MAX_NUM_CHANNEL; i++) {
17456 channel_map[i] = (char)(ucontrol->value.integer.value[i + 1]);
17457 if (channel_map[i] > PCM_MAX_CHMAP_ID) {
17458 pr_err("%s: Invalid channel map %d\n",
17459 __func__, channel_map[i]);
17460 return -EINVAL;
17461 }
17462 }
17463 adm_set_port_multi_ch_map(channel_map, msm_bedais[be_idx].port_id);
17464
17465 return 0;
17466}
17467
17468static const struct snd_kcontrol_new port_multi_channel_map_mixer_controls[] = {
17469 SOC_SINGLE_MULTI_EXT("Backend Device Channel Map", SND_SOC_NOPM, 0,
17470 MSM_BACKEND_DAI_MAX, 0,
17471 PCM_FORMAT_MAX_NUM_CHANNEL + 1, NULL,
17472 msm_routing_put_port_chmap_mixer),
17473};
17474
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017475static int msm_routing_be_dai_name_table_info(struct snd_kcontrol *kcontrol,
17476 struct snd_ctl_elem_info *uinfo)
17477{
17478 uinfo->type = SNDRV_CTL_ELEM_TYPE_BYTES;
17479 uinfo->count = sizeof(be_dai_name_table);
17480 return 0;
17481}
17482
17483static int msm_routing_be_dai_name_table_tlv_get(struct snd_kcontrol *kcontrol,
17484 unsigned int __user *bytes,
17485 unsigned int size)
17486{
17487 int i;
17488 int ret;
17489
17490 if (size < sizeof(be_dai_name_table)) {
17491 pr_err("%s: invalid size %d requested, returning\n",
17492 __func__, size);
17493 ret = -EINVAL;
17494 goto done;
17495 }
17496
17497 /*
17498 * Fill be_dai_name_table from msm_bedais table to reduce code changes
17499 * needed when adding new backends
17500 */
17501 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
17502 be_dai_name_table[i].be_id = i;
17503 strlcpy(be_dai_name_table[i].be_name,
17504 msm_bedais[i].name,
17505 LPASS_BE_NAME_MAX_LENGTH);
17506 }
17507
17508 ret = copy_to_user(bytes, &be_dai_name_table,
17509 sizeof(be_dai_name_table));
17510 if (ret) {
17511 pr_err("%s: failed to copy be_dai_name_table\n", __func__);
17512 ret = -EFAULT;
17513 }
17514
17515done:
17516 return ret;
17517}
17518
17519static const struct snd_kcontrol_new
17520 msm_routing_be_dai_name_table_mixer_controls[] = {
17521 {
17522 .access = SNDRV_CTL_ELEM_ACCESS_TLV_READ |
17523 SNDRV_CTL_ELEM_ACCESS_TLV_CALLBACK,
17524 .info = msm_routing_be_dai_name_table_info,
17525 .name = "Backend DAI Name Table",
17526 .tlv.c = snd_soc_bytes_tlv_callback,
17527 .private_value = (unsigned long) &(struct soc_bytes_ext) {
17528 .max = sizeof(be_dai_name_table),
17529 .get = msm_routing_be_dai_name_table_tlv_get,
17530 }
17531 },
17532};
17533
17534static int msm_routing_stereo_channel_reverse_control_get(
17535 struct snd_kcontrol *kcontrol,
17536 struct snd_ctl_elem_value *ucontrol)
17537{
17538 ucontrol->value.integer.value[0] = swap_ch;
17539 pr_debug("%s: Swap channel value: %ld\n", __func__,
17540 ucontrol->value.integer.value[0]);
17541 return 0;
17542}
17543
17544static int msm_routing_stereo_channel_reverse_control_put(
17545 struct snd_kcontrol *kcontrol,
17546 struct snd_ctl_elem_value *ucontrol)
17547{
17548 int i, idx, be_index, port_id;
17549 int ret = 0;
17550 unsigned long copp;
17551
17552 pr_debug("%s Swap channel value:%ld\n", __func__,
17553 ucontrol->value.integer.value[0]);
17554
17555 swap_ch = ucontrol->value.integer.value[0];
17556
17557 mutex_lock(&routing_lock);
17558 for (be_index = 0; be_index < MSM_BACKEND_DAI_MAX; be_index++) {
17559 port_id = msm_bedais[be_index].port_id;
17560 if (!msm_bedais[be_index].active)
17561 continue;
17562
17563 for_each_set_bit(i, &msm_bedais[be_index].fe_sessions[0],
17564 MSM_FRONTEND_DAI_MM_SIZE) {
17565 copp = session_copp_map[i][SESSION_TYPE_RX][be_index];
17566 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++) {
17567 if (!test_bit(idx, &copp))
17568 continue;
17569
17570 pr_debug("%s: swap channel control of portid:%d, coppid:%d\n",
17571 __func__, port_id, idx);
17572 ret = adm_swap_speaker_channels(
17573 port_id, idx,
17574 msm_bedais[be_index].sample_rate,
17575 swap_ch);
17576 if (ret) {
17577 pr_err("%s:Swap_channel failed, err=%d\n",
17578 __func__, ret);
17579 goto done;
17580 }
17581 }
17582 }
17583 }
17584done:
17585 mutex_unlock(&routing_lock);
17586 return ret;
17587}
17588
17589static const struct snd_kcontrol_new stereo_channel_reverse_control[] = {
17590 SOC_SINGLE_EXT("Swap channel", SND_SOC_NOPM, 0,
17591 1, 0, msm_routing_stereo_channel_reverse_control_get,
17592 msm_routing_stereo_channel_reverse_control_put),
17593};
17594
17595static const struct snd_pcm_ops msm_routing_pcm_ops = {
17596 .hw_params = msm_pcm_routing_hw_params,
17597 .close = msm_pcm_routing_close,
17598 .prepare = msm_pcm_routing_prepare,
17599};
17600
17601/* Not used but frame seems to require it */
17602static int msm_routing_probe(struct snd_soc_platform *platform)
17603{
17604 snd_soc_dapm_new_controls(&platform->component.dapm, msm_qdsp6_widgets,
17605 ARRAY_SIZE(msm_qdsp6_widgets));
17606 snd_soc_dapm_add_routes(&platform->component.dapm, intercon,
17607 ARRAY_SIZE(intercon));
17608
17609 snd_soc_dapm_new_widgets(platform->component.dapm.card);
17610
17611 snd_soc_add_platform_controls(platform, lsm_controls,
17612 ARRAY_SIZE(lsm_controls));
17613
17614 snd_soc_add_platform_controls(platform, aanc_slim_0_rx_mux,
17615 ARRAY_SIZE(aanc_slim_0_rx_mux));
17616
17617 snd_soc_add_platform_controls(platform, msm_voc_session_controls,
17618 ARRAY_SIZE(msm_voc_session_controls));
17619
17620 snd_soc_add_platform_controls(platform, app_type_cfg_controls,
17621 ARRAY_SIZE(app_type_cfg_controls));
17622
17623 snd_soc_add_platform_controls(platform, lsm_app_type_cfg_controls,
17624 ARRAY_SIZE(lsm_app_type_cfg_controls));
17625
Vikram Pandurangaee9c03a2017-09-07 15:06:17 -070017626 snd_soc_add_platform_controls(platform, module_cfg_controls,
17627 ARRAY_SIZE(module_cfg_controls));
17628
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017629 snd_soc_add_platform_controls(platform,
17630 stereo_to_custom_stereo_controls,
17631 ARRAY_SIZE(stereo_to_custom_stereo_controls));
17632
17633 snd_soc_add_platform_controls(platform, ec_ref_param_controls,
17634 ARRAY_SIZE(ec_ref_param_controls));
17635
17636 snd_soc_add_platform_controls(platform, channel_mixer_controls,
17637 ARRAY_SIZE(channel_mixer_controls));
17638
17639 msm_qti_pp_add_controls(platform);
17640
17641 msm_dts_srs_tm_add_controls(platform);
17642
17643 msm_dolby_dap_add_controls(platform);
17644
17645 snd_soc_add_platform_controls(platform,
17646 use_ds1_or_ds2_controls,
17647 ARRAY_SIZE(use_ds1_or_ds2_controls));
17648
17649 snd_soc_add_platform_controls(platform,
17650 device_pp_params_mixer_controls,
17651 ARRAY_SIZE(device_pp_params_mixer_controls));
17652
17653 snd_soc_add_platform_controls(platform,
17654 msm_routing_be_dai_name_table_mixer_controls,
17655 ARRAY_SIZE(msm_routing_be_dai_name_table_mixer_controls));
17656
17657 snd_soc_add_platform_controls(platform, msm_source_tracking_controls,
17658 ARRAY_SIZE(msm_source_tracking_controls));
17659 snd_soc_add_platform_controls(platform, adm_channel_config_controls,
17660 ARRAY_SIZE(adm_channel_config_controls));
17661
17662 snd_soc_add_platform_controls(platform, aptx_dec_license_controls,
17663 ARRAY_SIZE(aptx_dec_license_controls));
17664 snd_soc_add_platform_controls(platform, stereo_channel_reverse_control,
17665 ARRAY_SIZE(stereo_channel_reverse_control));
Rohit kumar4ea92b12019-02-01 18:05:33 +053017666 snd_soc_add_platform_controls(platform,
17667 port_multi_channel_map_mixer_controls,
17668 ARRAY_SIZE(port_multi_channel_map_mixer_controls));
17669
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017670 return 0;
17671}
17672
17673int msm_routing_pcm_new(struct snd_soc_pcm_runtime *runtime)
17674{
17675 return msm_pcm_routing_hwdep_new(runtime, msm_bedais);
17676}
17677
17678void msm_routing_pcm_free(struct snd_pcm *pcm)
17679{
17680 msm_pcm_routing_hwdep_free(pcm);
17681}
17682
17683static struct snd_soc_platform_driver msm_soc_routing_platform = {
17684 .ops = &msm_routing_pcm_ops,
17685 .probe = msm_routing_probe,
17686 .pcm_new = msm_routing_pcm_new,
17687 .pcm_free = msm_routing_pcm_free,
17688};
17689
17690static int msm_routing_pcm_probe(struct platform_device *pdev)
17691{
17692
17693 dev_dbg(&pdev->dev, "dev name %s\n", dev_name(&pdev->dev));
17694 return snd_soc_register_platform(&pdev->dev,
17695 &msm_soc_routing_platform);
17696}
17697
17698static int msm_routing_pcm_remove(struct platform_device *pdev)
17699{
17700 snd_soc_unregister_platform(&pdev->dev);
17701 return 0;
17702}
17703
17704static const struct of_device_id msm_pcm_routing_dt_match[] = {
17705 {.compatible = "qcom,msm-pcm-routing"},
17706 {}
17707};
17708MODULE_DEVICE_TABLE(of, msm_pcm_routing_dt_match);
17709
17710static struct platform_driver msm_routing_pcm_driver = {
17711 .driver = {
17712 .name = "msm-pcm-routing",
17713 .owner = THIS_MODULE,
17714 .of_match_table = msm_pcm_routing_dt_match,
17715 },
17716 .probe = msm_routing_pcm_probe,
17717 .remove = msm_routing_pcm_remove,
17718};
17719
17720int msm_routing_check_backend_enabled(int fedai_id)
17721{
17722 int i;
17723
17724 if (fedai_id > MSM_FRONTEND_DAI_MM_MAX_ID) {
17725 /* bad ID assigned in machine driver */
17726 pr_err("%s: bad MM ID\n", __func__);
17727 return 0;
17728 }
17729 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
17730 if (test_bit(fedai_id, &msm_bedais[i].fe_sessions[0]))
17731 return msm_bedais[i].active;
17732 }
17733 return 0;
17734}
17735
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053017736static int get_cal_type_index(int32_t cal_type)
17737{
17738 int ret = -EINVAL;
17739
17740 switch (cal_type) {
17741 case ADM_TOPOLOGY_CAL_TYPE:
17742 ret = ADM_TOPOLOGY_CAL_TYPE_IDX;
17743 break;
17744 case ADM_LSM_TOPOLOGY_CAL_TYPE:
17745 ret = ADM_LSM_TOPOLOGY_CAL_TYPE_IDX;
17746 break;
17747 default:
17748 pr_err("%s: Invalid cal type %d\n", __func__, cal_type);
17749 }
17750 return ret;
17751}
17752
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017753static int msm_routing_set_cal(int32_t cal_type,
17754 size_t data_size, void *data)
17755{
17756 int ret = 0;
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053017757 int cal_index;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017758 pr_debug("%s\n", __func__);
17759
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053017760 cal_index = get_cal_type_index(cal_type);
17761 if (cal_index < 0) {
17762 pr_err("%s: Could not get cal index %d\n",
17763 __func__, cal_index);
17764 ret = -EINVAL;
17765 goto done;
17766 }
17767
17768 ret = cal_utils_set_cal(data_size, data, cal_data[cal_index], 0, NULL);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017769 if (ret < 0) {
17770 pr_err("%s: cal_utils_set_cal failed, ret = %d, cal type = %d!\n",
17771 __func__, ret, cal_type);
17772 ret = -EINVAL;
17773 goto done;
17774 }
17775done:
17776 return ret;
17777}
17778
17779static void msm_routing_delete_cal_data(void)
17780{
17781 pr_debug("%s\n", __func__);
17782
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053017783 cal_utils_destroy_cal_types(MAX_ROUTING_CAL_TYPES, &cal_data[0]);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017784}
17785
17786static int msm_routing_init_cal_data(void)
17787{
17788 int ret = 0;
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053017789 struct cal_type_info cal_type_info[] = {
17790 {{ADM_TOPOLOGY_CAL_TYPE,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017791 {NULL, NULL, NULL,
17792 msm_routing_set_cal, NULL, NULL} },
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053017793 {NULL, NULL, cal_utils_match_buf_num} },
17794
17795 {{ADM_LSM_TOPOLOGY_CAL_TYPE,
17796 {NULL, NULL, NULL,
17797 msm_routing_set_cal, NULL, NULL} },
17798 {NULL, NULL, cal_utils_match_buf_num} },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017799 };
17800 pr_debug("%s\n", __func__);
17801
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053017802 ret = cal_utils_create_cal_types(MAX_ROUTING_CAL_TYPES, &cal_data[0],
17803 &cal_type_info[0]);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017804 if (ret < 0) {
17805 pr_err("%s: could not create cal type!\n",
17806 __func__);
17807 ret = -EINVAL;
17808 goto err;
17809 }
17810
17811 return ret;
17812err:
17813 msm_routing_delete_cal_data();
17814 return ret;
17815}
17816
Laxminath Kasam8b1366a2017-10-05 01:44:16 +053017817int __init msm_soc_routing_platform_init(void)
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017818{
17819 mutex_init(&routing_lock);
17820 if (msm_routing_init_cal_data())
17821 pr_err("%s: could not init cal data!\n", __func__);
17822
17823 afe_set_routing_callback(
17824 (routing_cb)msm_pcm_get_dev_acdb_id_by_port_id);
17825
17826 memset(&be_dai_name_table, 0, sizeof(be_dai_name_table));
17827 memset(&last_be_id_configured, 0, sizeof(last_be_id_configured));
17828
17829 return platform_driver_register(&msm_routing_pcm_driver);
17830}
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017831
Asish Bhattacharya5faacb32017-12-04 17:23:15 +053017832void msm_soc_routing_platform_exit(void)
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017833{
17834 msm_routing_delete_cal_data();
17835 memset(&be_dai_name_table, 0, sizeof(be_dai_name_table));
17836 mutex_destroy(&routing_lock);
17837 platform_driver_unregister(&msm_routing_pcm_driver);
17838}
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017839
17840MODULE_DESCRIPTION("MSM routing platform driver");
17841MODULE_LICENSE("GPL v2");