blob: 5543cabd43e09b717d4df34e99350b9ab410a7c8 [file] [log] [blame]
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05301/* Copyright (c) 2012-2018, The Linux Foundation. All rights reserved.
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302 *
3 * This program is free software; you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License version 2 and
5 * only version 2 as published by the Free Software Foundation.
6 *
7 * This program is distributed in the hope that it will be useful,
8 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 * GNU General Public License for more details.
11 */
12
13#include <linux/init.h>
14#include <linux/err.h>
15#include <linux/module.h>
16#include <linux/moduleparam.h>
17#include <linux/platform_device.h>
18#include <linux/bitops.h>
19#include <linux/mutex.h>
20#include <linux/of_device.h>
21#include <linux/slab.h>
22#include <sound/core.h>
23#include <sound/soc.h>
24#include <sound/soc-dapm.h>
25#include <sound/pcm.h>
26#include <sound/initval.h>
27#include <sound/control.h>
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053028#include <sound/tlv.h>
29#include <sound/asound.h>
30#include <sound/pcm_params.h>
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053031#include <sound/hwdep.h>
Laxminath Kasam605b42f2017-08-01 22:02:15 +053032#include <sound/audio_effects.h>
Laxminath Kasam8b1366a2017-10-05 01:44:16 +053033#include <dsp/msm-dts-srs-tm-config.h>
Laxminath Kasam605b42f2017-08-01 22:02:15 +053034#include <dsp/q6voice.h>
35#include <dsp/q6adm-v2.h>
36#include <dsp/q6asm-v2.h>
37#include <dsp/q6afe-v2.h>
38#include <dsp/q6lsm.h>
39#include <dsp/q6core.h>
40#include <dsp/audio_cal_utils.h>
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053041
42#include "msm-pcm-routing-v2.h"
43#include "msm-pcm-routing-devdep.h"
44#include "msm-qti-pp-config.h"
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053045#include "msm-dolby-dap-config.h"
46#include "msm-ds2-dap-config.h"
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053047
48#ifndef CONFIG_DOLBY_DAP
49#undef DOLBY_ADM_COPP_TOPOLOGY_ID
50#define DOLBY_ADM_COPP_TOPOLOGY_ID 0xFFFFFFFE
51#endif
52
53#ifndef CONFIG_DOLBY_DS2
54#undef DS2_ADM_COPP_TOPOLOGY_ID
55#define DS2_ADM_COPP_TOPOLOGY_ID 0xFFFFFFFF
56#endif
57
58static struct mutex routing_lock;
59
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053060static struct cal_type_data *cal_data[MAX_ROUTING_CAL_TYPES];
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053061
62static int fm_switch_enable;
63static int hfp_switch_enable;
64static int int0_mi2s_switch_enable;
65static int int4_mi2s_switch_enable;
66static int pri_mi2s_switch_enable;
67static int sec_mi2s_switch_enable;
68static int tert_mi2s_switch_enable;
69static int quat_mi2s_switch_enable;
Rohit Kumara5077932017-09-10 22:05:05 +053070static int quin_mi2s_switch_enable;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053071static int fm_pcmrx_switch_enable;
72static int usb_switch_enable;
73static int lsm_port_index;
74static int slim0_rx_aanc_fb_port;
75static int msm_route_ec_ref_rx;
76static int msm_ec_ref_ch = 4;
77static int msm_ec_ref_bit_format = SNDRV_PCM_FORMAT_S16_LE;
78static int msm_ec_ref_sampling_rate = 48000;
79static uint32_t voc_session_id = ALL_SESSION_VSID;
80static int msm_route_ext_ec_ref;
81static bool is_custom_stereo_on;
82static bool is_ds2_on;
83static bool swap_ch;
84
85#define WEIGHT_0_DB 0x4000
86/* all the FEs which can support channel mixer */
87static struct msm_pcm_channel_mixer channel_mixer[MSM_FRONTEND_DAI_MM_SIZE];
88/* input BE for each FE */
89static int channel_input[MSM_FRONTEND_DAI_MM_SIZE][ADM_MAX_CHANNELS];
90
91enum {
92 MADNONE,
93 MADAUDIO,
94 MADBEACON,
95 MADULTRASOUND,
96 MADSWAUDIO,
97};
98
99#define ADM_LSM_PORT_INDEX 9
100
101#define SLIMBUS_0_TX_TEXT "SLIMBUS_0_TX"
102#define SLIMBUS_1_TX_TEXT "SLIMBUS_1_TX"
103#define SLIMBUS_2_TX_TEXT "SLIMBUS_2_TX"
104#define SLIMBUS_3_TX_TEXT "SLIMBUS_3_TX"
105#define SLIMBUS_4_TX_TEXT "SLIMBUS_4_TX"
106#define SLIMBUS_5_TX_TEXT "SLIMBUS_5_TX"
107#define TERT_MI2S_TX_TEXT "TERT_MI2S_TX"
108#define QUAT_MI2S_TX_TEXT "QUAT_MI2S_TX"
109#define ADM_LSM_TX_TEXT "ADM_LSM_TX"
110#define INT3_MI2S_TX_TEXT "INT3_MI2S_TX"
111
112#define LSM_FUNCTION_TEXT "LSM Function"
113static const char * const lsm_port_text[] = {
114 "None",
115 SLIMBUS_0_TX_TEXT, SLIMBUS_1_TX_TEXT, SLIMBUS_2_TX_TEXT,
116 SLIMBUS_3_TX_TEXT, SLIMBUS_4_TX_TEXT, SLIMBUS_5_TX_TEXT,
117 TERT_MI2S_TX_TEXT, QUAT_MI2S_TX_TEXT, ADM_LSM_TX_TEXT,
118 INT3_MI2S_TX_TEXT
119};
120
121struct msm_pcm_route_bdai_pp_params {
122 u16 port_id; /* AFE port ID */
123 unsigned long pp_params_config;
124 bool mute_on;
125 int latency;
126};
127
128static struct msm_pcm_route_bdai_pp_params
129 msm_bedais_pp_params[MSM_BACKEND_DAI_PP_PARAMS_REQ_MAX] = {
130 {HDMI_RX, 0, 0, 0},
131 {DISPLAY_PORT_RX, 0, 0, 0},
132};
133
134/*
135 * The be_dai_name_table is passed to HAL so that it can specify the
136 * BE ID for the BE it wants to enable based on the name. Thus there
137 * is a matching table and structure in HAL that need to be updated
138 * if any changes to these are made.
139 */
140struct msm_pcm_route_bdai_name {
141 unsigned int be_id;
142 char be_name[LPASS_BE_NAME_MAX_LENGTH];
143};
144static struct msm_pcm_route_bdai_name be_dai_name_table[MSM_BACKEND_DAI_MAX];
145
146static int msm_routing_send_device_pp_params(int port_id, int copp_idx,
147 int fe_id);
148
149static int msm_routing_get_bit_width(unsigned int format)
150{
151 int bit_width;
152
153 switch (format) {
154 case SNDRV_PCM_FORMAT_S32_LE:
155 bit_width = 32;
156 break;
157 case SNDRV_PCM_FORMAT_S24_LE:
158 case SNDRV_PCM_FORMAT_S24_3LE:
159 bit_width = 24;
160 break;
161 case SNDRV_PCM_FORMAT_S16_LE:
162 default:
163 bit_width = 16;
164 }
165 return bit_width;
166}
167
168static bool msm_is_resample_needed(int input_sr, int output_sr)
169{
170 bool rc = false;
171
172 if (input_sr != output_sr)
173 rc = true;
174
175 pr_debug("perform resampling (%s) for copp rate (%d)afe rate (%d)",
176 (rc ? "oh yes" : "not really"),
177 input_sr, output_sr);
178
179 return rc;
180}
181
182static void msm_pcm_routing_cfg_pp(int port_id, int copp_idx, int topology,
183 int channels)
184{
185 int rc = 0;
186
187 switch (topology) {
188 case SRS_TRUMEDIA_TOPOLOGY_ID:
189 pr_debug("%s: SRS_TRUMEDIA_TOPOLOGY_ID\n", __func__);
190 msm_dts_srs_tm_init(port_id, copp_idx);
191 break;
192 case DS2_ADM_COPP_TOPOLOGY_ID:
193 pr_debug("%s: DS2_ADM_COPP_TOPOLOGY %d\n",
194 __func__, DS2_ADM_COPP_TOPOLOGY_ID);
195 rc = msm_ds2_dap_init(port_id, copp_idx, channels,
196 is_custom_stereo_on);
197 if (rc < 0)
198 pr_err("%s: DS2 topo_id 0x%x, port %d, CS %d rc %d\n",
199 __func__, topology, port_id,
200 is_custom_stereo_on, rc);
201 break;
202 case DOLBY_ADM_COPP_TOPOLOGY_ID:
203 if (is_ds2_on) {
204 pr_debug("%s: DS2_ADM_COPP_TOPOLOGY\n", __func__);
205 rc = msm_ds2_dap_init(port_id, copp_idx, channels,
206 is_custom_stereo_on);
207 if (rc < 0)
208 pr_err("%s:DS2 topo_id 0x%x, port %d, rc %d\n",
209 __func__, topology, port_id, rc);
210 } else {
211 pr_debug("%s: DOLBY_ADM_COPP_TOPOLOGY_ID\n", __func__);
212 rc = msm_dolby_dap_init(port_id, copp_idx, channels,
213 is_custom_stereo_on);
214 if (rc < 0)
215 pr_err("%s: DS1 topo_id 0x%x, port %d, rc %d\n",
216 __func__, topology, port_id, rc);
217 }
218 break;
219 case ADM_CMD_COPP_OPEN_TOPOLOGY_ID_AUDIOSPHERE:
220 pr_debug("%s: TOPOLOGY_ID_AUDIOSPHERE\n", __func__);
221 rc = msm_qti_pp_asphere_init(port_id, copp_idx);
222 if (rc < 0)
223 pr_err("%s: topo_id 0x%x, port %d, copp %d, rc %d\n",
224 __func__, topology, port_id, copp_idx, rc);
225 break;
226 default:
227 /* custom topology specific feature param handlers */
228 break;
229 }
230}
231
232static void msm_pcm_routing_deinit_pp(int port_id, int topology)
233{
234 switch (topology) {
235 case SRS_TRUMEDIA_TOPOLOGY_ID:
236 pr_debug("%s: SRS_TRUMEDIA_TOPOLOGY_ID\n", __func__);
237 msm_dts_srs_tm_deinit(port_id);
238 break;
239 case DS2_ADM_COPP_TOPOLOGY_ID:
240 pr_debug("%s: DS2_ADM_COPP_TOPOLOGY_ID %d\n",
241 __func__, DS2_ADM_COPP_TOPOLOGY_ID);
242 msm_ds2_dap_deinit(port_id);
243 break;
244 case DOLBY_ADM_COPP_TOPOLOGY_ID:
245 if (is_ds2_on) {
246 pr_debug("%s: DS2_ADM_COPP_TOPOLOGY_ID\n", __func__);
247 msm_ds2_dap_deinit(port_id);
248 } else {
249 pr_debug("%s: DOLBY_ADM_COPP_TOPOLOGY_ID\n", __func__);
250 msm_dolby_dap_deinit(port_id);
251 }
252 break;
253 case ADM_CMD_COPP_OPEN_TOPOLOGY_ID_AUDIOSPHERE:
254 pr_debug("%s: TOPOLOGY_ID_AUDIOSPHERE\n", __func__);
255 msm_qti_pp_asphere_deinit(port_id);
256 break;
257 default:
258 /* custom topology specific feature deinit handlers */
259 break;
260 }
261}
262
263static void msm_pcm_routng_cfg_matrix_map_pp(struct route_payload payload,
264 int path_type, int perf_mode)
265{
266 int itr = 0, rc = 0;
267
268 if ((path_type == ADM_PATH_PLAYBACK) &&
269 (perf_mode == LEGACY_PCM_MODE) &&
270 is_custom_stereo_on) {
271 for (itr = 0; itr < payload.num_copps; itr++) {
272 if ((payload.port_id[itr] != SLIMBUS_0_RX) &&
273 (payload.port_id[itr] != RT_PROXY_PORT_001_RX)) {
274 continue;
275 }
276
277 rc = msm_qti_pp_send_stereo_to_custom_stereo_cmd(
278 payload.port_id[itr],
279 payload.copp_idx[itr],
280 payload.session_id,
281 Q14_GAIN_ZERO_POINT_FIVE,
282 Q14_GAIN_ZERO_POINT_FIVE,
283 Q14_GAIN_ZERO_POINT_FIVE,
284 Q14_GAIN_ZERO_POINT_FIVE);
285 if (rc < 0)
286 pr_err("%s: err setting custom stereo\n",
287 __func__);
288 }
289 }
290}
291
292#define SLIMBUS_EXTPROC_RX AFE_PORT_INVALID
293struct msm_pcm_routing_bdai_data msm_bedais[MSM_BACKEND_DAI_MAX] = {
294 { PRIMARY_I2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_PRI_I2S_RX},
295 { PRIMARY_I2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_PRI_I2S_TX},
296 { SLIMBUS_0_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_0_RX},
297 { SLIMBUS_0_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_0_TX},
298 { HDMI_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_HDMI},
299 { INT_BT_SCO_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_INT_BT_SCO_RX},
300 { INT_BT_SCO_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_INT_BT_SCO_TX},
301 { INT_FM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_INT_FM_RX},
302 { INT_FM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_INT_FM_TX},
303 { RT_PROXY_PORT_001_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
304 LPASS_BE_AFE_PCM_RX},
305 { RT_PROXY_PORT_001_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
306 LPASS_BE_AFE_PCM_TX},
307 { AFE_PORT_ID_PRIMARY_PCM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
308 LPASS_BE_AUXPCM_RX},
309 { AFE_PORT_ID_PRIMARY_PCM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
310 LPASS_BE_AUXPCM_TX},
311 { VOICE_PLAYBACK_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
312 LPASS_BE_VOICE_PLAYBACK_TX},
313 { VOICE2_PLAYBACK_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
314 LPASS_BE_VOICE2_PLAYBACK_TX},
315 { VOICE_RECORD_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
316 LPASS_BE_INCALL_RECORD_RX},
317 { VOICE_RECORD_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
318 LPASS_BE_INCALL_RECORD_TX},
319 { MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_MI2S_RX},
320 { MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_MI2S_TX},
321 { SECONDARY_I2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SEC_I2S_RX},
322 { SLIMBUS_1_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_1_RX},
323 { SLIMBUS_1_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_1_TX},
324 { SLIMBUS_2_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_2_RX},
325 { SLIMBUS_2_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_2_TX},
326 { SLIMBUS_3_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_3_RX},
327 { SLIMBUS_3_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_3_TX},
328 { SLIMBUS_4_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_4_RX},
329 { SLIMBUS_4_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_4_TX},
330 { SLIMBUS_5_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_5_RX},
331 { SLIMBUS_5_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_5_TX},
332 { SLIMBUS_6_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_6_RX},
333 { SLIMBUS_6_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_6_TX},
334 { SLIMBUS_7_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_7_RX},
335 { SLIMBUS_7_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_7_TX},
336 { SLIMBUS_8_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_8_RX},
337 { SLIMBUS_8_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_8_TX},
338 { SLIMBUS_EXTPROC_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_STUB_RX},
339 { SLIMBUS_EXTPROC_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_STUB_TX},
340 { SLIMBUS_EXTPROC_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_STUB_1_TX},
341 { AFE_PORT_ID_QUATERNARY_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
342 LPASS_BE_QUAT_MI2S_RX},
343 { AFE_PORT_ID_QUATERNARY_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
344 LPASS_BE_QUAT_MI2S_TX},
345 { AFE_PORT_ID_SECONDARY_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
346 LPASS_BE_SEC_MI2S_RX},
347 { AFE_PORT_ID_SECONDARY_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
348 LPASS_BE_SEC_MI2S_TX},
349 { AFE_PORT_ID_PRIMARY_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
350 LPASS_BE_PRI_MI2S_RX},
351 { AFE_PORT_ID_PRIMARY_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
352 LPASS_BE_PRI_MI2S_TX},
353 { AFE_PORT_ID_TERTIARY_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
354 LPASS_BE_TERT_MI2S_RX},
355 { AFE_PORT_ID_TERTIARY_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
356 LPASS_BE_TERT_MI2S_TX},
357 { AUDIO_PORT_ID_I2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
358 LPASS_BE_AUDIO_I2S_RX},
359 { AFE_PORT_ID_SECONDARY_PCM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
360 LPASS_BE_SEC_AUXPCM_RX},
361 { AFE_PORT_ID_SECONDARY_PCM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
362 LPASS_BE_SEC_AUXPCM_TX},
363 { AFE_PORT_ID_SPDIF_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
364 LPASS_BE_SPDIF_RX},
365 { AFE_PORT_ID_SECONDARY_MI2S_RX_SD1, 0, {0}, {0}, 0, 0, 0, 0, {0},
366 LPASS_BE_SEC_MI2S_RX_SD1},
367 { AFE_PORT_ID_QUINARY_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
368 LPASS_BE_QUIN_MI2S_RX},
369 { AFE_PORT_ID_QUINARY_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
370 LPASS_BE_QUIN_MI2S_TX},
371 { AFE_PORT_ID_SENARY_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
372 LPASS_BE_SENARY_MI2S_TX},
373 { AFE_PORT_ID_PRIMARY_TDM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
374 LPASS_BE_PRI_TDM_RX_0},
375 { AFE_PORT_ID_PRIMARY_TDM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
376 LPASS_BE_PRI_TDM_TX_0},
377 { AFE_PORT_ID_PRIMARY_TDM_RX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
378 LPASS_BE_PRI_TDM_RX_1},
379 { AFE_PORT_ID_PRIMARY_TDM_TX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
380 LPASS_BE_PRI_TDM_TX_1},
381 { AFE_PORT_ID_PRIMARY_TDM_RX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
382 LPASS_BE_PRI_TDM_RX_2},
383 { AFE_PORT_ID_PRIMARY_TDM_TX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
384 LPASS_BE_PRI_TDM_TX_2},
385 { AFE_PORT_ID_PRIMARY_TDM_RX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
386 LPASS_BE_PRI_TDM_RX_3},
387 { AFE_PORT_ID_PRIMARY_TDM_TX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
388 LPASS_BE_PRI_TDM_TX_3},
389 { AFE_PORT_ID_PRIMARY_TDM_RX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
390 LPASS_BE_PRI_TDM_RX_4},
391 { AFE_PORT_ID_PRIMARY_TDM_TX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
392 LPASS_BE_PRI_TDM_TX_4},
393 { AFE_PORT_ID_PRIMARY_TDM_RX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
394 LPASS_BE_PRI_TDM_RX_5},
395 { AFE_PORT_ID_PRIMARY_TDM_TX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
396 LPASS_BE_PRI_TDM_TX_5},
397 { AFE_PORT_ID_PRIMARY_TDM_RX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
398 LPASS_BE_PRI_TDM_RX_6},
399 { AFE_PORT_ID_PRIMARY_TDM_TX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
400 LPASS_BE_PRI_TDM_TX_6},
401 { AFE_PORT_ID_PRIMARY_TDM_RX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
402 LPASS_BE_PRI_TDM_RX_7},
403 { AFE_PORT_ID_PRIMARY_TDM_TX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
404 LPASS_BE_PRI_TDM_TX_7},
405 { AFE_PORT_ID_SECONDARY_TDM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
406 LPASS_BE_SEC_TDM_RX_0},
407 { AFE_PORT_ID_SECONDARY_TDM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
408 LPASS_BE_SEC_TDM_TX_0},
409 { AFE_PORT_ID_SECONDARY_TDM_RX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
410 LPASS_BE_SEC_TDM_RX_1},
411 { AFE_PORT_ID_SECONDARY_TDM_TX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
412 LPASS_BE_SEC_TDM_TX_1},
413 { AFE_PORT_ID_SECONDARY_TDM_RX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
414 LPASS_BE_SEC_TDM_RX_2},
415 { AFE_PORT_ID_SECONDARY_TDM_TX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
416 LPASS_BE_SEC_TDM_TX_2},
417 { AFE_PORT_ID_SECONDARY_TDM_RX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
418 LPASS_BE_SEC_TDM_RX_3},
419 { AFE_PORT_ID_SECONDARY_TDM_TX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
420 LPASS_BE_SEC_TDM_TX_3},
421 { AFE_PORT_ID_SECONDARY_TDM_RX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
422 LPASS_BE_SEC_TDM_RX_4},
423 { AFE_PORT_ID_SECONDARY_TDM_TX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
424 LPASS_BE_SEC_TDM_TX_4},
425 { AFE_PORT_ID_SECONDARY_TDM_RX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
426 LPASS_BE_SEC_TDM_RX_5},
427 { AFE_PORT_ID_SECONDARY_TDM_TX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
428 LPASS_BE_SEC_TDM_TX_5},
429 { AFE_PORT_ID_SECONDARY_TDM_RX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
430 LPASS_BE_SEC_TDM_RX_6},
431 { AFE_PORT_ID_SECONDARY_TDM_TX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
432 LPASS_BE_SEC_TDM_TX_6},
433 { AFE_PORT_ID_SECONDARY_TDM_RX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
434 LPASS_BE_SEC_TDM_RX_7},
435 { AFE_PORT_ID_SECONDARY_TDM_TX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
436 LPASS_BE_SEC_TDM_TX_7},
437 { AFE_PORT_ID_TERTIARY_TDM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
438 LPASS_BE_TERT_TDM_RX_0},
439 { AFE_PORT_ID_TERTIARY_TDM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
440 LPASS_BE_TERT_TDM_TX_0},
441 { AFE_PORT_ID_TERTIARY_TDM_RX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
442 LPASS_BE_TERT_TDM_RX_1},
443 { AFE_PORT_ID_TERTIARY_TDM_TX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
444 LPASS_BE_TERT_TDM_TX_1},
445 { AFE_PORT_ID_TERTIARY_TDM_RX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
446 LPASS_BE_TERT_TDM_RX_2},
447 { AFE_PORT_ID_TERTIARY_TDM_TX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
448 LPASS_BE_TERT_TDM_TX_2},
449 { AFE_PORT_ID_TERTIARY_TDM_RX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
450 LPASS_BE_TERT_TDM_RX_3},
451 { AFE_PORT_ID_TERTIARY_TDM_TX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
452 LPASS_BE_TERT_TDM_TX_3},
453 { AFE_PORT_ID_TERTIARY_TDM_RX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
454 LPASS_BE_TERT_TDM_RX_4},
455 { AFE_PORT_ID_TERTIARY_TDM_TX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
456 LPASS_BE_TERT_TDM_TX_4},
457 { AFE_PORT_ID_TERTIARY_TDM_RX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
458 LPASS_BE_TERT_TDM_RX_5},
459 { AFE_PORT_ID_TERTIARY_TDM_TX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
460 LPASS_BE_TERT_TDM_TX_5},
461 { AFE_PORT_ID_TERTIARY_TDM_RX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
462 LPASS_BE_TERT_TDM_RX_6},
463 { AFE_PORT_ID_TERTIARY_TDM_TX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
464 LPASS_BE_TERT_TDM_TX_6},
465 { AFE_PORT_ID_TERTIARY_TDM_RX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
466 LPASS_BE_TERT_TDM_RX_7},
467 { AFE_PORT_ID_TERTIARY_TDM_TX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
468 LPASS_BE_TERT_TDM_TX_7},
469 { AFE_PORT_ID_QUATERNARY_TDM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
470 LPASS_BE_QUAT_TDM_RX_0},
471 { AFE_PORT_ID_QUATERNARY_TDM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
472 LPASS_BE_QUAT_TDM_TX_0},
473 { AFE_PORT_ID_QUATERNARY_TDM_RX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
474 LPASS_BE_QUAT_TDM_RX_1},
475 { AFE_PORT_ID_QUATERNARY_TDM_TX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
476 LPASS_BE_QUAT_TDM_TX_1},
477 { AFE_PORT_ID_QUATERNARY_TDM_RX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
478 LPASS_BE_QUAT_TDM_RX_2},
479 { AFE_PORT_ID_QUATERNARY_TDM_TX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
480 LPASS_BE_QUAT_TDM_TX_2},
481 { AFE_PORT_ID_QUATERNARY_TDM_RX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
482 LPASS_BE_QUAT_TDM_RX_3},
483 { AFE_PORT_ID_QUATERNARY_TDM_TX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
484 LPASS_BE_QUAT_TDM_TX_3},
485 { AFE_PORT_ID_QUATERNARY_TDM_RX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
486 LPASS_BE_QUAT_TDM_RX_4},
487 { AFE_PORT_ID_QUATERNARY_TDM_TX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
488 LPASS_BE_QUAT_TDM_TX_4},
489 { AFE_PORT_ID_QUATERNARY_TDM_RX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
490 LPASS_BE_QUAT_TDM_RX_5},
491 { AFE_PORT_ID_QUATERNARY_TDM_TX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
492 LPASS_BE_QUAT_TDM_TX_5},
493 { AFE_PORT_ID_QUATERNARY_TDM_RX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
494 LPASS_BE_QUAT_TDM_RX_6},
495 { AFE_PORT_ID_QUATERNARY_TDM_TX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
496 LPASS_BE_QUAT_TDM_TX_6},
497 { AFE_PORT_ID_QUATERNARY_TDM_RX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
498 LPASS_BE_QUAT_TDM_RX_7},
499 { AFE_PORT_ID_QUATERNARY_TDM_TX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
500 LPASS_BE_QUAT_TDM_TX_7},
Rohit Kumara5077932017-09-10 22:05:05 +0530501 { AFE_PORT_ID_QUINARY_TDM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
502 LPASS_BE_QUIN_TDM_RX_0},
503 { AFE_PORT_ID_QUINARY_TDM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
504 LPASS_BE_QUIN_TDM_TX_0},
505 { AFE_PORT_ID_QUINARY_TDM_RX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
506 LPASS_BE_QUIN_TDM_RX_1},
507 { AFE_PORT_ID_QUINARY_TDM_TX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
508 LPASS_BE_QUIN_TDM_TX_1},
509 { AFE_PORT_ID_QUINARY_TDM_RX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
510 LPASS_BE_QUIN_TDM_RX_2},
511 { AFE_PORT_ID_QUINARY_TDM_TX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
512 LPASS_BE_QUIN_TDM_TX_2},
513 { AFE_PORT_ID_QUINARY_TDM_RX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
514 LPASS_BE_QUIN_TDM_RX_3},
515 { AFE_PORT_ID_QUINARY_TDM_TX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
516 LPASS_BE_QUIN_TDM_TX_3},
517 { AFE_PORT_ID_QUINARY_TDM_RX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
518 LPASS_BE_QUIN_TDM_RX_4},
519 { AFE_PORT_ID_QUINARY_TDM_TX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
520 LPASS_BE_QUIN_TDM_TX_4},
521 { AFE_PORT_ID_QUINARY_TDM_RX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
522 LPASS_BE_QUIN_TDM_RX_5},
523 { AFE_PORT_ID_QUINARY_TDM_TX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
524 LPASS_BE_QUIN_TDM_TX_5},
525 { AFE_PORT_ID_QUINARY_TDM_RX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
526 LPASS_BE_QUIN_TDM_RX_6},
527 { AFE_PORT_ID_QUINARY_TDM_TX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
528 LPASS_BE_QUIN_TDM_TX_6},
529 { AFE_PORT_ID_QUINARY_TDM_RX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
530 LPASS_BE_QUIN_TDM_RX_7},
531 { AFE_PORT_ID_QUINARY_TDM_TX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
532 LPASS_BE_QUIN_TDM_TX_7},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530533 { INT_BT_A2DP_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
534 LPASS_BE_INT_BT_A2DP_RX},
535 { AFE_PORT_ID_USB_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
536 LPASS_BE_USB_AUDIO_RX},
537 { AFE_PORT_ID_USB_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
538 LPASS_BE_USB_AUDIO_TX},
539 { DISPLAY_PORT_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
540 LPASS_BE_DISPLAY_PORT},
541 { AFE_PORT_ID_TERTIARY_PCM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
542 LPASS_BE_TERT_AUXPCM_RX},
543 { AFE_PORT_ID_TERTIARY_PCM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
544 LPASS_BE_TERT_AUXPCM_TX},
545 { AFE_PORT_ID_QUATERNARY_PCM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
546 LPASS_BE_QUAT_AUXPCM_RX},
547 { AFE_PORT_ID_QUATERNARY_PCM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
548 LPASS_BE_QUAT_AUXPCM_TX},
Rohit Kumara5077932017-09-10 22:05:05 +0530549 { AFE_PORT_ID_QUINARY_PCM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
550 LPASS_BE_QUIN_AUXPCM_RX},
551 { AFE_PORT_ID_QUINARY_PCM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
552 LPASS_BE_QUIN_AUXPCM_TX},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530553 { AFE_PORT_ID_INT0_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
554 LPASS_BE_INT0_MI2S_RX},
555 { AFE_PORT_ID_INT0_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
556 LPASS_BE_INT0_MI2S_TX},
557 { AFE_PORT_ID_INT1_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
558 LPASS_BE_INT1_MI2S_RX},
559 { AFE_PORT_ID_INT1_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
560 LPASS_BE_INT1_MI2S_TX},
561 { AFE_PORT_ID_INT2_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
562 LPASS_BE_INT2_MI2S_RX},
563 { AFE_PORT_ID_INT2_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
564 LPASS_BE_INT2_MI2S_TX},
565 { AFE_PORT_ID_INT3_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
566 LPASS_BE_INT3_MI2S_RX},
567 { AFE_PORT_ID_INT3_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
568 LPASS_BE_INT3_MI2S_TX},
569 { AFE_PORT_ID_INT4_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
570 LPASS_BE_INT4_MI2S_RX},
571 { AFE_PORT_ID_INT4_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
572 LPASS_BE_INT4_MI2S_TX},
573 { AFE_PORT_ID_INT5_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
574 LPASS_BE_INT5_MI2S_RX},
575 { AFE_PORT_ID_INT5_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
576 LPASS_BE_INT5_MI2S_TX},
577 { AFE_PORT_ID_INT6_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
578 LPASS_BE_INT6_MI2S_RX},
579 { AFE_PORT_ID_INT6_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
580 LPASS_BE_INT6_MI2S_TX},
581};
582
583/* Track ASM playback & capture sessions of DAI
584 * Track LSM listen sessions
585 */
586static struct msm_pcm_routing_fdai_data
587 fe_dai_map[MSM_FRONTEND_DAI_MAX][2] = {
588 /* MULTIMEDIA1 */
589 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
590 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
591 /* MULTIMEDIA2 */
592 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
593 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
594 /* MULTIMEDIA3 */
595 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
596 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
597 /* MULTIMEDIA4 */
598 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
599 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
600 /* MULTIMEDIA5 */
601 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
602 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
603 /* MULTIMEDIA6 */
604 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
605 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
606 /* MULTIMEDIA7*/
607 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
608 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
609 /* MULTIMEDIA8 */
610 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
611 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
612 /* MULTIMEDIA9 */
613 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
614 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
615 /* MULTIMEDIA10 */
616 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
617 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
618 /* MULTIMEDIA11 */
619 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
620 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
621 /* MULTIMEDIA12 */
622 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
623 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
624 /* MULTIMEDIA13 */
625 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
626 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
627 /* MULTIMEDIA14 */
628 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
629 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
630 /* MULTIMEDIA15 */
631 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
632 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
633 /* MULTIMEDIA16 */
634 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
635 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
636 /* MULTIMEDIA17 */
637 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
638 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
639 /* MULTIMEDIA18 */
640 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
641 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
642 /* MULTIMEDIA19 */
643 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
644 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
645 /* MULTIMEDIA20 */
646 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
647 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +0530648 /* MULTIMEDIA28 */
649 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
650 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
651 /* MULTIMEDIA29 */
652 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
653 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530654 /* VOIP */
655 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
656 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
657 /* AFE_RX */
658 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
659 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
660 /* AFE_TX */
661 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
662 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
663 /* VOICE_STUB */
664 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
665 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530666 /* DTMF_RX */
667 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
668 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530669 /* QCHAT */
670 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
671 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
672 /* VOLTE_STUB */
673 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
674 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
675 /* LSM1 */
676 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
677 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
678 /* LSM2 */
679 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
680 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
681 /* LSM3 */
682 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
683 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
684 /* LSM4 */
685 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
686 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
687 /* LSM5 */
688 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
689 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
690 /* LSM6 */
691 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
692 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
693 /* LSM7 */
694 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
695 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
696 /* LSM8 */
697 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
698 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
699 /* VOICE2_STUB */
700 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
701 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530702 /* VOICEMMODE1 */
703 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
704 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
705 /* VOICEMMODE2 */
706 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
707 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
708};
709
710static unsigned long session_copp_map[MSM_FRONTEND_DAI_MAX][2]
711 [MSM_BACKEND_DAI_MAX];
712static struct msm_pcm_routing_app_type_data app_type_cfg[MAX_APP_TYPES];
713static struct msm_pcm_routing_app_type_data lsm_app_type_cfg[MAX_APP_TYPES];
714static struct msm_pcm_stream_app_type_cfg
715 fe_dai_app_type_cfg[MSM_FRONTEND_DAI_MAX][2][MSM_BACKEND_DAI_MAX];
716
717static int last_be_id_configured[MSM_FRONTEND_DAI_MAX][MAX_SESSION_TYPES];
718
719/* The caller of this should aqcuire routing lock */
720void msm_pcm_routing_get_bedai_info(int be_idx,
721 struct msm_pcm_routing_bdai_data *be_dai)
722{
723 if (be_idx >= 0 && be_idx < MSM_BACKEND_DAI_MAX)
724 memcpy(be_dai, &msm_bedais[be_idx],
725 sizeof(struct msm_pcm_routing_bdai_data));
726}
727
728/* The caller of this should aqcuire routing lock */
729void msm_pcm_routing_get_fedai_info(int fe_idx, int sess_type,
730 struct msm_pcm_routing_fdai_data *fe_dai)
731{
732 if ((sess_type == SESSION_TYPE_TX) || (sess_type == SESSION_TYPE_RX))
733 memcpy(fe_dai, &fe_dai_map[fe_idx][sess_type],
734 sizeof(struct msm_pcm_routing_fdai_data));
735}
736
737void msm_pcm_routing_acquire_lock(void)
738{
739 mutex_lock(&routing_lock);
740}
741
742void msm_pcm_routing_release_lock(void)
743{
744 mutex_unlock(&routing_lock);
745}
746
747static int msm_pcm_routing_get_app_type_idx(int app_type)
748{
749 int idx;
750
751 pr_debug("%s: app_type: %d\n", __func__, app_type);
752 for (idx = 0; idx < MAX_APP_TYPES; idx++) {
753 if (app_type_cfg[idx].app_type == app_type)
754 return idx;
755 }
756 pr_info("%s: App type not available, fallback to default\n", __func__);
757 return 0;
758}
759
760static int msm_pcm_routing_get_lsm_app_type_idx(int app_type)
761{
762 int idx;
763
764 pr_debug("%s: app_type: %d\n", __func__, app_type);
765 for (idx = 0; idx < MAX_APP_TYPES; idx++) {
766 if (lsm_app_type_cfg[idx].app_type == app_type)
767 return idx;
768 }
769 pr_debug("%s: App type not available, fallback to default\n", __func__);
770 return 0;
771}
772
773static bool is_mm_lsm_fe_id(int fe_id)
774{
775 bool rc = true;
776
777 if (fe_id > MSM_FRONTEND_DAI_MM_MAX_ID &&
778 ((fe_id < MSM_FRONTEND_DAI_LSM1) ||
779 (fe_id > MSM_FRONTEND_DAI_LSM8))) {
780 rc = false;
781 }
782 return rc;
783}
784
785int msm_pcm_routing_reg_stream_app_type_cfg(
786 int fedai_id, int session_type, int be_id,
787 struct msm_pcm_stream_app_type_cfg *cfg_data)
788{
789 int ret = 0;
790
791 if (cfg_data == NULL) {
792 pr_err("%s: Received NULL pointer for cfg_data\n", __func__);
793 ret = -EINVAL;
794 goto done;
795 }
796
797 pr_debug("%s: fedai_id %d, session_type %d, be_id %d, app_type %d, acdb_dev_id %d, sample_rate %d\n",
798 __func__, fedai_id, session_type, be_id,
799 cfg_data->app_type, cfg_data->acdb_dev_id,
800 cfg_data->sample_rate);
801
802 if (!is_mm_lsm_fe_id(fedai_id)) {
803 pr_err("%s: Invalid machine driver ID %d\n",
804 __func__, fedai_id);
805 ret = -EINVAL;
806 goto done;
807 }
808 if (session_type != SESSION_TYPE_RX &&
809 session_type != SESSION_TYPE_TX) {
810 pr_err("%s: Invalid session type %d\n",
811 __func__, session_type);
812 ret = -EINVAL;
813 goto done;
814 }
815 if (be_id < 0 || be_id >= MSM_BACKEND_DAI_MAX) {
816 pr_err("%s: Received out of bounds be_id %d\n",
817 __func__, be_id);
818 ret = -EINVAL;
819 goto done;
820 }
821
822 fe_dai_app_type_cfg[fedai_id][session_type][be_id] = *cfg_data;
823
824 /*
825 * Store the BE ID of the configuration information set as the latest so
826 * the get mixer control knows what to return.
827 */
828 last_be_id_configured[fedai_id][session_type] = be_id;
829
830done:
831 return ret;
832}
833EXPORT_SYMBOL(msm_pcm_routing_reg_stream_app_type_cfg);
834
835/**
836 * msm_pcm_routing_get_stream_app_type_cfg
837 *
838 * Receives fedai_id, session_type, be_id, and populates app_type,
839 * acdb_dev_id, & sample rate. Returns 0 on success. On failure returns
840 * -EINVAL and does not alter passed values.
841 *
842 * fedai_id - Passed value, front end ID for which app type config is wanted
843 * session_type - Passed value, session type for which app type config
844 * is wanted
845 * be_id - Returned value, back end device id the app type config data is for
846 * cfg_data - Returned value, configuration data used by app type config
847 */
848int msm_pcm_routing_get_stream_app_type_cfg(
849 int fedai_id, int session_type, int *bedai_id,
850 struct msm_pcm_stream_app_type_cfg *cfg_data)
851{
852 int be_id;
853 int ret = 0;
854
855 if (bedai_id == NULL) {
856 pr_err("%s: Received NULL pointer for backend ID\n", __func__);
857 ret = -EINVAL;
858 goto done;
859 } else if (cfg_data == NULL) {
860 pr_err("%s: NULL pointer sent for cfg_data\n", __func__);
861 ret = -EINVAL;
862 goto done;
863 } else if (!is_mm_lsm_fe_id(fedai_id)) {
864 pr_err("%s: Invalid FE ID %d\n", __func__, fedai_id);
865 ret = -EINVAL;
866 goto done;
867 } else if (session_type != SESSION_TYPE_RX &&
868 session_type != SESSION_TYPE_TX) {
869 pr_err("%s: Invalid session type %d\n", __func__, session_type);
870 ret = -EINVAL;
871 goto done;
872 }
873
874 be_id = last_be_id_configured[fedai_id][session_type];
875 if (be_id < 0 || be_id >= MSM_BACKEND_DAI_MAX) {
876 pr_err("%s: Invalid BE ID %d\n", __func__, be_id);
877 ret = -EINVAL;
878 goto done;
879 }
880
881 *bedai_id = be_id;
882 *cfg_data = fe_dai_app_type_cfg[fedai_id][session_type][be_id];
883 pr_debug("%s: fedai_id %d, session_type %d, be_id %d, app_type %d, acdb_dev_id %d, sample_rate %d\n",
884 __func__, fedai_id, session_type, *bedai_id,
885 cfg_data->app_type, cfg_data->acdb_dev_id,
886 cfg_data->sample_rate);
887done:
888 return ret;
889}
890EXPORT_SYMBOL(msm_pcm_routing_get_stream_app_type_cfg);
891
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530892static struct cal_block_data *msm_routing_find_topology_by_path(int path,
893 int cal_index)
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530894{
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530895 struct list_head *ptr, *next;
896 struct cal_block_data *cal_block = NULL;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530897 pr_debug("%s\n", __func__);
898
899 list_for_each_safe(ptr, next,
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530900 &cal_data[cal_index]->cal_blocks) {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530901
902 cal_block = list_entry(ptr,
903 struct cal_block_data, list);
904
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530905 if (((struct audio_cal_info_adm_top *)cal_block
906 ->cal_info)->path == path) {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530907 return cal_block;
908 }
909 }
910 pr_debug("%s: Can't find topology for path %d\n", __func__, path);
911 return NULL;
912}
913
914static struct cal_block_data *msm_routing_find_topology(int path,
915 int app_type,
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530916 int acdb_id,
917 int cal_index)
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530918{
919 struct list_head *ptr, *next;
920 struct cal_block_data *cal_block = NULL;
921 struct audio_cal_info_adm_top *cal_info;
922
923 pr_debug("%s\n", __func__);
924
925 list_for_each_safe(ptr, next,
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530926 &cal_data[cal_index]->cal_blocks) {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530927
928 cal_block = list_entry(ptr,
929 struct cal_block_data, list);
930
931 cal_info = (struct audio_cal_info_adm_top *)
932 cal_block->cal_info;
933 if ((cal_info->path == path) &&
934 (cal_info->app_type == app_type) &&
935 (cal_info->acdb_id == acdb_id)) {
936 return cal_block;
937 }
938 }
939 pr_debug("%s: Can't find topology for path %d, app %d, acdb_id %d defaulting to search by path\n",
940 __func__, path, app_type, acdb_id);
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530941 return msm_routing_find_topology_by_path(cal_index, path);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530942}
943
944static int msm_routing_get_adm_topology(int fedai_id, int session_type,
945 int be_id)
946{
947 int topology = NULL_COPP_TOPOLOGY;
948 struct cal_block_data *cal_block = NULL;
949 int app_type = 0, acdb_dev_id = 0;
950
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530951 pr_debug("%s: fedai_id %d, session_type %d, be_id %d\n",
952 __func__, fedai_id, session_type, be_id);
953
954 if (cal_data == NULL)
955 goto done;
956
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530957 app_type = fe_dai_app_type_cfg[fedai_id][session_type][be_id].app_type;
958 acdb_dev_id =
959 fe_dai_app_type_cfg[fedai_id][session_type][be_id].acdb_dev_id;
960
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530961 mutex_lock(&cal_data[ADM_TOPOLOGY_CAL_TYPE_IDX]->lock);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530962 cal_block = msm_routing_find_topology(session_type, app_type,
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530963 acdb_dev_id,
964 ADM_TOPOLOGY_CAL_TYPE_IDX);
965 if (cal_block != NULL)
966 topology = ((struct audio_cal_info_adm_top *)
967 cal_block->cal_info)->topology;
968 mutex_unlock(&cal_data[ADM_TOPOLOGY_CAL_TYPE_IDX]->lock);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530969
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530970 if (cal_block == NULL) {
971 pr_debug("%s: Check for LSM topology\n", __func__);
972 mutex_lock(&cal_data[ADM_LSM_TOPOLOGY_CAL_TYPE_IDX]->lock);
973 cal_block = msm_routing_find_topology(session_type, app_type,
974 acdb_dev_id,
975 ADM_LSM_TOPOLOGY_CAL_TYPE_IDX);
976 if (cal_block != NULL)
977 topology = ((struct audio_cal_info_adm_top *)
978 cal_block->cal_info)->topology;
979 mutex_unlock(&cal_data[ADM_LSM_TOPOLOGY_CAL_TYPE_IDX]->lock);
980 }
981
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530982done:
983 pr_debug("%s: Using topology %d\n", __func__, topology);
984 return topology;
985}
986
987static uint8_t is_be_dai_extproc(int be_dai)
988{
989 if (be_dai == MSM_BACKEND_DAI_EXTPROC_RX ||
990 be_dai == MSM_BACKEND_DAI_EXTPROC_TX ||
991 be_dai == MSM_BACKEND_DAI_EXTPROC_EC_TX)
992 return 1;
993 else
994 return 0;
995}
996
997static void msm_pcm_routing_build_matrix(int fedai_id, int sess_type,
998 int path_type, int perf_mode,
999 uint32_t passthr_mode)
1000{
1001 int i, port_type, j, num_copps = 0;
1002 struct route_payload payload;
1003
1004 port_type = ((path_type == ADM_PATH_PLAYBACK ||
1005 path_type == ADM_PATH_COMPRESSED_RX) ?
1006 MSM_AFE_PORT_TYPE_RX : MSM_AFE_PORT_TYPE_TX);
1007
1008 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
1009 if (!is_be_dai_extproc(i) &&
1010 (afe_get_port_type(msm_bedais[i].port_id) == port_type) &&
1011 (msm_bedais[i].active) &&
1012 (test_bit(fedai_id, &msm_bedais[i].fe_sessions[0]))) {
1013 for (j = 0; j < MAX_COPPS_PER_PORT; j++) {
1014 unsigned long copp =
1015 session_copp_map[fedai_id][sess_type][i];
1016 if (test_bit(j, &copp)) {
1017 payload.port_id[num_copps] =
1018 msm_bedais[i].port_id;
1019 payload.copp_idx[num_copps] = j;
1020 payload.app_type[num_copps] =
1021 fe_dai_app_type_cfg
1022 [fedai_id][sess_type][i]
1023 .app_type;
1024 payload.acdb_dev_id[num_copps] =
1025 fe_dai_app_type_cfg
1026 [fedai_id][sess_type][i]
1027 .acdb_dev_id;
1028 payload.sample_rate[num_copps] =
1029 fe_dai_app_type_cfg
1030 [fedai_id][sess_type][i]
1031 .sample_rate;
1032 num_copps++;
1033 }
1034 }
1035 }
1036 }
1037
1038 if (num_copps) {
1039 payload.num_copps = num_copps;
1040 payload.session_id = fe_dai_map[fedai_id][sess_type].strm_id;
1041 adm_matrix_map(path_type, payload, perf_mode, passthr_mode);
1042 msm_pcm_routng_cfg_matrix_map_pp(payload, path_type, perf_mode);
1043 }
1044}
1045
1046void msm_pcm_routing_reg_psthr_stream(int fedai_id, int dspst_id,
1047 int stream_type)
1048{
1049 int i, session_type, path_type, port_type;
1050 u32 mode = 0;
1051
1052 if (fedai_id > MSM_FRONTEND_DAI_MM_MAX_ID) {
1053 /* bad ID assigned in machine driver */
1054 pr_err("%s: bad MM ID\n", __func__);
1055 return;
1056 }
1057
1058 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK) {
1059 session_type = SESSION_TYPE_RX;
1060 path_type = ADM_PATH_PLAYBACK;
1061 port_type = MSM_AFE_PORT_TYPE_RX;
1062 } else {
1063 session_type = SESSION_TYPE_TX;
1064 path_type = ADM_PATH_LIVE_REC;
1065 port_type = MSM_AFE_PORT_TYPE_TX;
1066 }
1067
1068 mutex_lock(&routing_lock);
1069
1070 fe_dai_map[fedai_id][session_type].strm_id = dspst_id;
1071 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
1072 if (!is_be_dai_extproc(i) &&
1073 (afe_get_port_type(msm_bedais[i].port_id) == port_type) &&
1074 (msm_bedais[i].active) &&
1075 (test_bit(fedai_id, &msm_bedais[i].fe_sessions[0]))) {
1076 mode = afe_get_port_type(msm_bedais[i].port_id);
1077 adm_connect_afe_port(mode, dspst_id,
1078 msm_bedais[i].port_id);
1079 break;
1080 }
1081 }
1082 mutex_unlock(&routing_lock);
1083}
1084
1085static bool route_check_fe_id_adm_support(int fe_id)
1086{
1087 bool rc = true;
1088
1089 if ((fe_id >= MSM_FRONTEND_DAI_LSM1) &&
1090 (fe_id <= MSM_FRONTEND_DAI_LSM8)) {
1091 /* fe id is listen while port is set to afe */
1092 if (lsm_port_index != ADM_LSM_PORT_INDEX) {
1093 pr_debug("%s: fe_id %d, lsm mux slim port %d\n",
1094 __func__, fe_id, lsm_port_index);
1095 rc = false;
1096 }
1097 }
1098
1099 return rc;
1100}
1101
1102int msm_pcm_routing_reg_phy_compr_stream(int fe_id, int perf_mode,
1103 int dspst_id, int stream_type,
1104 uint32_t passthr_mode)
1105{
1106 int i, j, session_type, path_type, port_type, topology;
1107 int num_copps = 0;
1108 struct route_payload payload;
1109 u32 channels, sample_rate;
1110 u16 bit_width = 16;
1111 bool is_lsm;
1112
1113 pr_debug("%s:fe_id[%d] perf_mode[%d] id[%d] stream_type[%d] passt[%d]",
1114 __func__, fe_id, perf_mode, dspst_id,
1115 stream_type, passthr_mode);
1116 if (!is_mm_lsm_fe_id(fe_id)) {
1117 /* bad ID assigned in machine driver */
1118 pr_err("%s: bad MM ID %d\n", __func__, fe_id);
1119 return -EINVAL;
1120 }
1121
1122 if (!route_check_fe_id_adm_support(fe_id)) {
1123 /* ignore adm open if not supported for fe_id */
1124 pr_debug("%s: No ADM support for fe id %d\n", __func__, fe_id);
1125 return 0;
1126 }
1127
1128 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK) {
1129 session_type = SESSION_TYPE_RX;
1130 if (passthr_mode != LEGACY_PCM)
1131 path_type = ADM_PATH_COMPRESSED_RX;
1132 else
1133 path_type = ADM_PATH_PLAYBACK;
1134 port_type = MSM_AFE_PORT_TYPE_RX;
1135 } else if (stream_type == SNDRV_PCM_STREAM_CAPTURE) {
1136 session_type = SESSION_TYPE_TX;
Laxminath Kasam38070be2017-08-17 18:21:59 +05301137 if ((passthr_mode != LEGACY_PCM) && (passthr_mode != LISTEN))
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301138 path_type = ADM_PATH_COMPRESSED_TX;
1139 else
1140 path_type = ADM_PATH_LIVE_REC;
1141 port_type = MSM_AFE_PORT_TYPE_TX;
1142 } else {
1143 pr_err("%s: invalid stream type %d\n", __func__, stream_type);
1144 return -EINVAL;
1145 }
1146
1147 is_lsm = (fe_id >= MSM_FRONTEND_DAI_LSM1) &&
1148 (fe_id <= MSM_FRONTEND_DAI_LSM8);
1149 mutex_lock(&routing_lock);
1150
1151 payload.num_copps = 0; /* only RX needs to use payload */
1152 fe_dai_map[fe_id][session_type].strm_id = dspst_id;
1153 /* re-enable EQ if active */
1154 msm_qti_pp_send_eq_values(fe_id);
1155 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
1156 if (test_bit(fe_id, &msm_bedais[i].fe_sessions[0]))
1157 msm_bedais[i].passthr_mode[fe_id] = passthr_mode;
1158
1159 if (!is_be_dai_extproc(i) &&
1160 (afe_get_port_type(msm_bedais[i].port_id) ==
1161 port_type) &&
1162 (msm_bedais[i].active) &&
1163 (test_bit(fe_id, &msm_bedais[i].fe_sessions[0]))) {
1164 int app_type, app_type_idx, copp_idx, acdb_dev_id;
1165
1166 /*
1167 * check if ADM needs to be configured with different
1168 * channel mapping than backend
1169 */
1170 if (!msm_bedais[i].adm_override_ch)
1171 channels = msm_bedais[i].channel;
1172 else
1173 channels = msm_bedais[i].adm_override_ch;
1174
1175 bit_width = msm_routing_get_bit_width(
1176 msm_bedais[i].format);
1177 app_type =
1178 fe_dai_app_type_cfg[fe_id][session_type][i].app_type;
1179 if (app_type && is_lsm) {
1180 app_type_idx =
1181 msm_pcm_routing_get_lsm_app_type_idx(app_type);
1182 sample_rate =
1183 fe_dai_app_type_cfg[fe_id][session_type][i]
1184 .sample_rate;
1185 bit_width =
1186 lsm_app_type_cfg[app_type_idx].bit_width;
1187 } else if (app_type) {
1188 app_type_idx =
1189 msm_pcm_routing_get_app_type_idx(
1190 app_type);
1191 sample_rate =
1192 fe_dai_app_type_cfg[fe_id][session_type][i].sample_rate;
1193 bit_width =
1194 app_type_cfg[app_type_idx].bit_width;
1195 } else {
1196 sample_rate = msm_bedais[i].sample_rate;
1197 }
1198 acdb_dev_id =
1199 fe_dai_app_type_cfg[fe_id][session_type][i].acdb_dev_id;
1200 topology = msm_routing_get_adm_topology(fe_id,
1201 session_type,
1202 i);
1203 if ((passthr_mode == COMPRESSED_PASSTHROUGH_DSD)
1204 || (passthr_mode ==
1205 COMPRESSED_PASSTHROUGH_GEN))
1206 topology = COMPRESSED_PASSTHROUGH_NONE_TOPOLOGY;
1207 pr_debug("%s: Before adm open topology %d\n", __func__,
1208 topology);
1209
1210 copp_idx =
1211 adm_open(msm_bedais[i].port_id,
1212 path_type, sample_rate, channels,
1213 topology, perf_mode, bit_width,
1214 app_type, acdb_dev_id);
1215 if ((copp_idx < 0) ||
1216 (copp_idx >= MAX_COPPS_PER_PORT)) {
1217 pr_err("%s:adm open failed coppid:%d\n",
1218 __func__, copp_idx);
1219 mutex_unlock(&routing_lock);
1220 return -EINVAL;
1221 }
1222 pr_debug("%s: set idx bit of fe:%d, type: %d, be:%d\n",
1223 __func__, fe_id, session_type, i);
1224 set_bit(copp_idx,
1225 &session_copp_map[fe_id][session_type][i]);
1226
1227 if (msm_is_resample_needed(
1228 sample_rate,
1229 msm_bedais[i].sample_rate))
1230 adm_copp_mfc_cfg(
1231 msm_bedais[i].port_id, copp_idx,
1232 msm_bedais[i].sample_rate);
1233
1234 for (j = 0; j < MAX_COPPS_PER_PORT; j++) {
1235 unsigned long copp =
1236 session_copp_map[fe_id][session_type][i];
1237 if (test_bit(j, &copp)) {
1238 payload.port_id[num_copps] =
1239 msm_bedais[i].port_id;
1240 payload.copp_idx[num_copps] = j;
1241 payload.app_type[num_copps] =
1242 fe_dai_app_type_cfg
1243 [fe_id][session_type][i]
1244 .app_type;
1245 payload.acdb_dev_id[num_copps] =
1246 fe_dai_app_type_cfg
1247 [fe_id][session_type][i]
1248 .acdb_dev_id;
1249 payload.sample_rate[num_copps] =
1250 fe_dai_app_type_cfg
1251 [fe_id][session_type][i]
1252 .sample_rate;
1253 num_copps++;
1254 }
1255 }
1256 if (passthr_mode != COMPRESSED_PASSTHROUGH_DSD
1257 && passthr_mode !=
1258 COMPRESSED_PASSTHROUGH_GEN) {
1259 msm_routing_send_device_pp_params(
1260 msm_bedais[i].port_id,
1261 copp_idx, fe_id);
1262 }
1263 }
1264 }
1265 if (num_copps) {
1266 payload.num_copps = num_copps;
1267 payload.session_id = fe_dai_map[fe_id][session_type].strm_id;
1268 adm_matrix_map(path_type, payload, perf_mode, passthr_mode);
1269 msm_pcm_routng_cfg_matrix_map_pp(payload, path_type, perf_mode);
1270 }
1271 mutex_unlock(&routing_lock);
1272 return 0;
1273}
1274
1275static u32 msm_pcm_routing_get_voc_sessionid(u16 val)
1276{
1277 u32 session_id;
1278
1279 switch (val) {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301280 case MSM_FRONTEND_DAI_QCHAT:
1281 session_id = voc_get_session_id(QCHAT_SESSION_NAME);
1282 break;
1283 case MSM_FRONTEND_DAI_VOIP:
1284 session_id = voc_get_session_id(VOIP_SESSION_NAME);
1285 break;
1286 case MSM_FRONTEND_DAI_VOICEMMODE1:
1287 session_id = voc_get_session_id(VOICEMMODE1_NAME);
1288 break;
1289 case MSM_FRONTEND_DAI_VOICEMMODE2:
1290 session_id = voc_get_session_id(VOICEMMODE2_NAME);
1291 break;
1292 default:
1293 session_id = 0;
1294 }
1295
1296 pr_debug("%s session_id 0x%x", __func__, session_id);
1297 return session_id;
1298}
1299
1300static int msm_pcm_routing_channel_mixer(int fe_id, bool perf_mode,
1301 int dspst_id, int stream_type)
1302{
1303 int copp_idx = 0;
1304 int sess_type = 0;
1305 int i = 0, j = 0, be_id;
1306 int ret = 0;
1307
1308 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
1309 pr_err("%s: invalid FE %d\n", __func__, fe_id);
1310 return 0;
1311 }
1312
1313 if (!(channel_mixer[fe_id].enable)) {
1314 pr_debug("%s: channel mixer not enabled for FE %d\n",
1315 __func__, fe_id);
1316 return 0;
1317 }
1318
1319 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK)
1320 sess_type = SESSION_TYPE_RX;
1321 else
1322 sess_type = SESSION_TYPE_TX;
1323
1324 for (i = 0; i < ADM_MAX_CHANNELS && channel_input[fe_id][i] > 0;
1325 ++i) {
1326 be_id = channel_input[fe_id][i] - 1;
1327 channel_mixer[fe_id].input_channels[i] =
1328 msm_bedais[be_id].channel;
1329
1330 if ((msm_bedais[be_id].active) &&
1331 test_bit(fe_id,
1332 &msm_bedais[be_id].fe_sessions[0])) {
1333 unsigned long copp =
1334 session_copp_map[fe_id][sess_type][be_id];
1335 for (j = 0; j < MAX_COPPS_PER_PORT; j++) {
1336 if (test_bit(j, &copp)) {
1337 copp_idx = j;
1338 break;
1339 }
1340 }
1341
1342 pr_debug("%s: fe %d, be %d, channel %d, copp %d\n",
1343 __func__,
1344 fe_id, be_id, msm_bedais[be_id].channel,
1345 copp_idx);
1346 ret = adm_programable_channel_mixer(
1347 msm_bedais[be_id].port_id,
1348 copp_idx, dspst_id, sess_type,
1349 channel_mixer + fe_id, i);
1350 }
1351 }
1352
1353 return ret;
1354}
1355
1356int msm_pcm_routing_reg_phy_stream(int fedai_id, int perf_mode,
1357 int dspst_id, int stream_type)
1358{
1359 int i, j, session_type, path_type, port_type, topology, num_copps = 0;
1360 struct route_payload payload;
1361 u32 channels, sample_rate;
1362 uint16_t bits_per_sample = 16;
1363 uint32_t passthr_mode = LEGACY_PCM;
1364 int ret = 0;
1365
1366 if (fedai_id > MSM_FRONTEND_DAI_MM_MAX_ID) {
1367 /* bad ID assigned in machine driver */
1368 pr_err("%s: bad MM ID %d\n", __func__, fedai_id);
1369 return -EINVAL;
1370 }
1371
1372 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK) {
1373 session_type = SESSION_TYPE_RX;
1374 path_type = ADM_PATH_PLAYBACK;
1375 port_type = MSM_AFE_PORT_TYPE_RX;
1376 } else {
1377 session_type = SESSION_TYPE_TX;
1378 path_type = ADM_PATH_LIVE_REC;
1379 port_type = MSM_AFE_PORT_TYPE_TX;
1380 }
1381
1382 mutex_lock(&routing_lock);
1383
1384 payload.num_copps = 0; /* only RX needs to use payload */
1385 fe_dai_map[fedai_id][session_type].strm_id = dspst_id;
1386 fe_dai_map[fedai_id][session_type].perf_mode = perf_mode;
1387
1388 /* re-enable EQ if active */
1389 msm_qti_pp_send_eq_values(fedai_id);
1390 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
1391 if (!is_be_dai_extproc(i) &&
1392 (afe_get_port_type(msm_bedais[i].port_id) == port_type) &&
1393 (msm_bedais[i].active) &&
1394 (test_bit(fedai_id, &msm_bedais[i].fe_sessions[0]))) {
1395 int app_type, app_type_idx, copp_idx, acdb_dev_id;
1396 /*
1397 * check if ADM needs to be configured with different
1398 * channel mapping than backend
1399 */
1400 if (!msm_bedais[i].adm_override_ch)
1401 channels = msm_bedais[i].channel;
1402 else
1403 channels = msm_bedais[i].adm_override_ch;
1404 msm_bedais[i].passthr_mode[fedai_id] =
1405 LEGACY_PCM;
1406
1407 bits_per_sample = msm_routing_get_bit_width(
1408 msm_bedais[i].format);
1409
1410 app_type =
1411 fe_dai_app_type_cfg[fedai_id][session_type][i].app_type;
1412 if (app_type) {
1413 app_type_idx =
1414 msm_pcm_routing_get_app_type_idx(app_type);
1415 sample_rate =
1416 fe_dai_app_type_cfg[fedai_id][session_type][i]
1417 .sample_rate;
1418 bits_per_sample =
1419 app_type_cfg[app_type_idx].bit_width;
1420 } else
1421 sample_rate = msm_bedais[i].sample_rate;
1422
1423 acdb_dev_id =
1424 fe_dai_app_type_cfg[fedai_id][session_type][i]
1425 .acdb_dev_id;
1426 topology = msm_routing_get_adm_topology(fedai_id,
1427 session_type,
1428 i);
1429 copp_idx = adm_open(msm_bedais[i].port_id, path_type,
1430 sample_rate, channels, topology,
1431 perf_mode, bits_per_sample,
1432 app_type, acdb_dev_id);
1433 if ((copp_idx < 0) ||
1434 (copp_idx >= MAX_COPPS_PER_PORT)) {
1435 pr_err("%s: adm open failed copp_idx:%d\n",
1436 __func__, copp_idx);
1437 mutex_unlock(&routing_lock);
1438 return -EINVAL;
1439 }
1440 pr_debug("%s: setting idx bit of fe:%d, type: %d, be:%d\n",
1441 __func__, fedai_id, session_type, i);
1442 set_bit(copp_idx,
1443 &session_copp_map[fedai_id][session_type][i]);
1444
1445 if (msm_is_resample_needed(
1446 sample_rate,
1447 msm_bedais[i].sample_rate))
1448 adm_copp_mfc_cfg(
1449 msm_bedais[i].port_id, copp_idx,
1450 msm_bedais[i].sample_rate);
1451
1452 for (j = 0; j < MAX_COPPS_PER_PORT; j++) {
1453 unsigned long copp =
1454 session_copp_map[fedai_id][session_type][i];
1455 if (test_bit(j, &copp)) {
1456 payload.port_id[num_copps] =
1457 msm_bedais[i].port_id;
1458 payload.copp_idx[num_copps] = j;
1459 payload.app_type[num_copps] =
1460 fe_dai_app_type_cfg
1461 [fedai_id][session_type]
1462 [i].app_type;
1463 payload.acdb_dev_id[num_copps] =
1464 fe_dai_app_type_cfg
1465 [fedai_id][session_type]
1466 [i].acdb_dev_id;
1467 payload.sample_rate[num_copps] =
1468 fe_dai_app_type_cfg
1469 [fedai_id][session_type]
1470 [i].sample_rate;
1471 num_copps++;
1472 }
1473 }
1474 if ((perf_mode == LEGACY_PCM_MODE) &&
1475 (msm_bedais[i].passthr_mode[fedai_id] ==
1476 LEGACY_PCM))
1477 msm_pcm_routing_cfg_pp(msm_bedais[i].port_id,
1478 copp_idx, topology,
1479 channels);
1480 }
1481 }
1482 if (num_copps) {
1483 payload.num_copps = num_copps;
1484 payload.session_id = fe_dai_map[fedai_id][session_type].strm_id;
1485 adm_matrix_map(path_type, payload, perf_mode, passthr_mode);
1486 msm_pcm_routng_cfg_matrix_map_pp(payload, path_type, perf_mode);
1487 }
1488
1489 ret = msm_pcm_routing_channel_mixer(fedai_id, perf_mode,
1490 dspst_id, stream_type);
1491 mutex_unlock(&routing_lock);
1492 return ret;
1493}
1494
1495int msm_pcm_routing_reg_phy_stream_v2(int fedai_id, int perf_mode,
1496 int dspst_id, int stream_type,
1497 struct msm_pcm_routing_evt event_info)
1498{
1499 if (msm_pcm_routing_reg_phy_stream(fedai_id, perf_mode, dspst_id,
1500 stream_type)) {
1501 pr_err("%s: failed to reg phy stream\n", __func__);
1502 return -EINVAL;
1503 }
1504
1505 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK)
1506 fe_dai_map[fedai_id][SESSION_TYPE_RX].event_info = event_info;
1507 else
1508 fe_dai_map[fedai_id][SESSION_TYPE_TX].event_info = event_info;
1509 return 0;
1510}
1511
1512void msm_pcm_routing_dereg_phy_stream(int fedai_id, int stream_type)
1513{
1514 int i, port_type, session_type, path_type, topology;
1515 struct msm_pcm_routing_fdai_data *fdai;
1516
1517 if (!is_mm_lsm_fe_id(fedai_id)) {
1518 /* bad ID assigned in machine driver */
1519 pr_err("%s: bad MM ID\n", __func__);
1520 return;
1521 }
1522
1523 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK) {
1524 port_type = MSM_AFE_PORT_TYPE_RX;
1525 session_type = SESSION_TYPE_RX;
1526 path_type = ADM_PATH_PLAYBACK;
1527 } else {
1528 port_type = MSM_AFE_PORT_TYPE_TX;
1529 session_type = SESSION_TYPE_TX;
1530 path_type = ADM_PATH_LIVE_REC;
1531 }
1532
1533 mutex_lock(&routing_lock);
1534 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
1535 if (!is_be_dai_extproc(i) &&
1536 (afe_get_port_type(msm_bedais[i].port_id) == port_type) &&
1537 (msm_bedais[i].active) &&
1538 (test_bit(fedai_id, &msm_bedais[i].fe_sessions[0]))) {
1539 int idx;
1540 unsigned long copp =
1541 session_copp_map[fedai_id][session_type][i];
1542 fdai = &fe_dai_map[fedai_id][session_type];
1543
1544 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++)
1545 if (test_bit(idx, &copp))
1546 break;
1547
1548 if (idx >= MAX_COPPS_PER_PORT || idx < 0) {
1549 pr_debug("%s: copp idx is invalid, exiting\n",
1550 __func__);
1551 continue;
1552 }
1553 topology = adm_get_topology_for_port_copp_idx(
1554 msm_bedais[i].port_id, idx);
1555 adm_close(msm_bedais[i].port_id, fdai->perf_mode, idx);
1556 pr_debug("%s:copp:%ld,idx bit fe:%d,type:%d,be:%d\n",
1557 __func__, copp, fedai_id, session_type, i);
1558 clear_bit(idx,
1559 &session_copp_map[fedai_id][session_type][i]);
1560 if ((topology == DOLBY_ADM_COPP_TOPOLOGY_ID ||
1561 topology == DS2_ADM_COPP_TOPOLOGY_ID) &&
1562 (fdai->perf_mode == LEGACY_PCM_MODE) &&
1563 (msm_bedais[i].passthr_mode[fedai_id] ==
1564 LEGACY_PCM))
1565 msm_pcm_routing_deinit_pp(msm_bedais[i].port_id,
1566 topology);
1567 }
1568 }
1569
1570 fe_dai_map[fedai_id][session_type].strm_id = INVALID_SESSION;
1571 fe_dai_map[fedai_id][session_type].be_srate = 0;
1572 mutex_unlock(&routing_lock);
1573}
1574
1575/* Check if FE/BE route is set */
1576static bool msm_pcm_routing_route_is_set(u16 be_id, u16 fe_id)
1577{
1578 bool rc = false;
1579
1580 if (!is_mm_lsm_fe_id(fe_id)) {
1581 /* recheck FE ID in the mixer control defined in this file */
1582 pr_err("%s: bad MM ID\n", __func__);
1583 return rc;
1584 }
1585
1586 if (test_bit(fe_id, &msm_bedais[be_id].fe_sessions[0]))
1587 rc = true;
1588
1589 return rc;
1590}
1591
1592static void msm_pcm_routing_process_audio(u16 reg, u16 val, int set)
1593{
1594 int session_type, path_type, topology;
1595 u32 channels, sample_rate;
1596 uint16_t bits_per_sample = 16;
1597 struct msm_pcm_routing_fdai_data *fdai;
1598 uint32_t passthr_mode;
1599 bool is_lsm;
1600
1601 pr_debug("%s: reg %x val %x set %x\n", __func__, reg, val, set);
1602
1603 if (!is_mm_lsm_fe_id(val)) {
1604 /* recheck FE ID in the mixer control defined in this file */
1605 pr_err("%s: bad MM ID\n", __func__);
1606 return;
1607 }
1608
1609 if (!route_check_fe_id_adm_support(val)) {
1610 /* ignore adm open if not supported for fe_id */
1611 pr_debug("%s: No ADM support for fe id %d\n", __func__, val);
1612 return;
1613 }
1614
1615 passthr_mode = msm_bedais[reg].passthr_mode[val];
1616 if (afe_get_port_type(msm_bedais[reg].port_id) ==
1617 MSM_AFE_PORT_TYPE_RX) {
1618 session_type = SESSION_TYPE_RX;
1619 if (passthr_mode != LEGACY_PCM)
1620 path_type = ADM_PATH_COMPRESSED_RX;
1621 else
1622 path_type = ADM_PATH_PLAYBACK;
1623 } else {
1624 session_type = SESSION_TYPE_TX;
1625 if (passthr_mode != LEGACY_PCM)
1626 path_type = ADM_PATH_COMPRESSED_TX;
1627 else
1628 path_type = ADM_PATH_LIVE_REC;
1629 }
1630 is_lsm = (val >= MSM_FRONTEND_DAI_LSM1) &&
1631 (val <= MSM_FRONTEND_DAI_LSM8);
1632
1633 mutex_lock(&routing_lock);
1634 if (set) {
1635 if (!test_bit(val, &msm_bedais[reg].fe_sessions[0]) &&
1636 ((msm_bedais[reg].port_id == VOICE_PLAYBACK_TX) ||
1637 (msm_bedais[reg].port_id == VOICE2_PLAYBACK_TX)))
1638 voc_start_playback(set, msm_bedais[reg].port_id);
1639
1640 set_bit(val, &msm_bedais[reg].fe_sessions[0]);
1641 fdai = &fe_dai_map[val][session_type];
1642 if (msm_bedais[reg].active && fdai->strm_id !=
1643 INVALID_SESSION) {
1644 int app_type, app_type_idx, copp_idx, acdb_dev_id;
1645 /*
1646 * check if ADM needs to be configured with different
1647 * channel mapping than backend
1648 */
1649 if (!msm_bedais[reg].adm_override_ch)
1650 channels = msm_bedais[reg].channel;
1651 else
1652 channels = msm_bedais[reg].adm_override_ch;
1653 if (session_type == SESSION_TYPE_TX &&
1654 fdai->be_srate &&
1655 (fdai->be_srate != msm_bedais[reg].sample_rate)) {
1656 pr_debug("%s: flush strm %d diff BE rates\n",
1657 __func__, fdai->strm_id);
1658
1659 if (fdai->event_info.event_func)
1660 fdai->event_info.event_func(
1661 MSM_PCM_RT_EVT_BUF_RECFG,
1662 fdai->event_info.priv_data);
1663 fdai->be_srate = 0; /* might not need it */
1664 }
1665
1666 bits_per_sample = msm_routing_get_bit_width(
1667 msm_bedais[reg].format);
1668
1669 app_type =
1670 fe_dai_app_type_cfg[val][session_type][reg].app_type;
1671 if (app_type && is_lsm) {
1672 app_type_idx =
1673 msm_pcm_routing_get_lsm_app_type_idx(app_type);
1674 sample_rate =
1675 fe_dai_app_type_cfg[val][session_type][reg]
1676 .sample_rate;
1677 bits_per_sample =
1678 lsm_app_type_cfg[app_type_idx].bit_width;
1679 } else if (app_type) {
1680 app_type_idx =
1681 msm_pcm_routing_get_app_type_idx(app_type);
1682 sample_rate =
1683 fe_dai_app_type_cfg[val][session_type][reg]
1684 .sample_rate;
1685 bits_per_sample =
1686 app_type_cfg[app_type_idx].bit_width;
1687 } else
1688 sample_rate = msm_bedais[reg].sample_rate;
1689
1690 topology = msm_routing_get_adm_topology(val,
1691 session_type,
1692 reg);
1693 acdb_dev_id =
1694 fe_dai_app_type_cfg[val][session_type][reg].acdb_dev_id;
1695 copp_idx = adm_open(msm_bedais[reg].port_id, path_type,
1696 sample_rate, channels, topology,
1697 fdai->perf_mode, bits_per_sample,
1698 app_type, acdb_dev_id);
1699 if ((copp_idx < 0) ||
1700 (copp_idx >= MAX_COPPS_PER_PORT)) {
1701 pr_err("%s: adm open failed\n", __func__);
1702 mutex_unlock(&routing_lock);
1703 return;
1704 }
1705 pr_debug("%s: setting idx bit of fe:%d, type: %d, be:%d\n",
1706 __func__, val, session_type, reg);
1707 set_bit(copp_idx,
1708 &session_copp_map[val][session_type][reg]);
1709
1710 if (msm_is_resample_needed(
1711 sample_rate,
1712 msm_bedais[reg].sample_rate))
1713 adm_copp_mfc_cfg(
1714 msm_bedais[reg].port_id, copp_idx,
1715 msm_bedais[reg].sample_rate);
1716
1717 if (session_type == SESSION_TYPE_RX &&
1718 fdai->event_info.event_func)
1719 fdai->event_info.event_func(
1720 MSM_PCM_RT_EVT_DEVSWITCH,
1721 fdai->event_info.priv_data);
1722
1723 msm_pcm_routing_build_matrix(val, session_type,
1724 path_type,
1725 fdai->perf_mode,
1726 passthr_mode);
1727 if ((fdai->perf_mode == LEGACY_PCM_MODE) &&
1728 (passthr_mode == LEGACY_PCM))
1729 msm_pcm_routing_cfg_pp(msm_bedais[reg].port_id,
1730 copp_idx, topology,
1731 channels);
1732 }
1733 } else {
1734 if (test_bit(val, &msm_bedais[reg].fe_sessions[0]) &&
1735 ((msm_bedais[reg].port_id == VOICE_PLAYBACK_TX) ||
1736 (msm_bedais[reg].port_id == VOICE2_PLAYBACK_TX)))
1737 voc_start_playback(set, msm_bedais[reg].port_id);
1738 clear_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 idx;
1743 int port_id;
1744 unsigned long copp =
1745 session_copp_map[val][session_type][reg];
1746 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++)
1747 if (test_bit(idx, &copp))
1748 break;
1749
1750 port_id = msm_bedais[reg].port_id;
1751 topology = adm_get_topology_for_port_copp_idx(port_id,
1752 idx);
1753 adm_close(msm_bedais[reg].port_id, fdai->perf_mode,
1754 idx);
1755 pr_debug("%s: copp: %ld, reset idx bit fe:%d, type: %d, be:%d topology=0x%x\n",
1756 __func__, copp, val, session_type, reg,
1757 topology);
1758 clear_bit(idx,
1759 &session_copp_map[val][session_type][reg]);
1760 if ((topology == DOLBY_ADM_COPP_TOPOLOGY_ID ||
1761 topology == DS2_ADM_COPP_TOPOLOGY_ID) &&
1762 (fdai->perf_mode == LEGACY_PCM_MODE) &&
1763 (passthr_mode == LEGACY_PCM))
1764 msm_pcm_routing_deinit_pp(
1765 msm_bedais[reg].port_id,
1766 topology);
1767 msm_pcm_routing_build_matrix(val, session_type,
1768 path_type,
1769 fdai->perf_mode,
1770 passthr_mode);
1771 }
1772 }
1773 if ((msm_bedais[reg].port_id == VOICE_RECORD_RX)
1774 || (msm_bedais[reg].port_id == VOICE_RECORD_TX))
1775 voc_start_record(msm_bedais[reg].port_id, set, voc_session_id);
1776
1777 mutex_unlock(&routing_lock);
1778}
1779
1780static int msm_routing_get_audio_mixer(struct snd_kcontrol *kcontrol,
1781 struct snd_ctl_elem_value *ucontrol)
1782{
1783 struct soc_mixer_control *mc =
1784 (struct soc_mixer_control *)kcontrol->private_value;
1785
1786 if (test_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]))
1787 ucontrol->value.integer.value[0] = 1;
1788 else
1789 ucontrol->value.integer.value[0] = 0;
1790
1791 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
1792 ucontrol->value.integer.value[0]);
1793
1794 return 0;
1795}
1796
1797static int msm_routing_put_audio_mixer(struct snd_kcontrol *kcontrol,
1798 struct snd_ctl_elem_value *ucontrol)
1799{
Asish Bhattacharya34504582017-08-08 12:55:01 +05301800 struct snd_soc_dapm_widget *widget =
1801 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301802 struct soc_mixer_control *mc =
1803 (struct soc_mixer_control *)kcontrol->private_value;
1804 struct snd_soc_dapm_update *update = NULL;
1805
1806 if (ucontrol->value.integer.value[0] &&
1807 msm_pcm_routing_route_is_set(mc->reg, mc->shift) == false) {
1808 msm_pcm_routing_process_audio(mc->reg, mc->shift, 1);
1809 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
1810 update);
1811 } else if (!ucontrol->value.integer.value[0] &&
1812 msm_pcm_routing_route_is_set(mc->reg, mc->shift) == true) {
1813 msm_pcm_routing_process_audio(mc->reg, mc->shift, 0);
1814 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
1815 update);
1816 }
1817
1818 return 1;
1819}
1820
1821static int msm_routing_get_listen_mixer(struct snd_kcontrol *kcontrol,
1822 struct snd_ctl_elem_value *ucontrol)
1823{
1824 struct soc_mixer_control *mc =
1825 (struct soc_mixer_control *)kcontrol->private_value;
1826
1827 if (test_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]))
1828 ucontrol->value.integer.value[0] = 1;
1829 else
1830 ucontrol->value.integer.value[0] = 0;
1831
1832 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
1833 ucontrol->value.integer.value[0]);
1834
1835 return 0;
1836}
1837
1838static int msm_routing_put_listen_mixer(struct snd_kcontrol *kcontrol,
1839 struct snd_ctl_elem_value *ucontrol)
1840{
Asish Bhattacharya34504582017-08-08 12:55:01 +05301841 struct snd_soc_dapm_widget *widget =
1842 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301843 struct soc_mixer_control *mc =
1844 (struct soc_mixer_control *)kcontrol->private_value;
1845 struct snd_soc_dapm_update *update = NULL;
1846
1847 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
1848 ucontrol->value.integer.value[0]);
1849
1850 if (ucontrol->value.integer.value[0]) {
1851 if (msm_pcm_routing_route_is_set(mc->reg, mc->shift) == false)
1852 msm_pcm_routing_process_audio(mc->reg, mc->shift, 1);
1853 snd_soc_dapm_mixer_update_power(widget->dapm,
1854 kcontrol, 1, update);
1855 } else if (!ucontrol->value.integer.value[0]) {
1856 if (msm_pcm_routing_route_is_set(mc->reg, mc->shift) == true)
1857 msm_pcm_routing_process_audio(mc->reg, mc->shift, 0);
1858 snd_soc_dapm_mixer_update_power(widget->dapm,
1859 kcontrol, 0, update);
1860 }
1861
1862 return 1;
1863}
1864
1865static void msm_pcm_routing_process_voice(u16 reg, u16 val, int set)
1866{
1867 u32 session_id = 0;
1868 u16 path_type;
1869 struct media_format_info voc_be_media_format;
1870
1871 pr_debug("%s: reg %x val %x set %x\n", __func__, reg, val, set);
1872
1873 session_id = msm_pcm_routing_get_voc_sessionid(val);
1874
1875 pr_debug("%s: FE DAI 0x%x session_id 0x%x\n",
1876 __func__, val, session_id);
1877
1878 mutex_lock(&routing_lock);
1879
1880 if (set)
1881 set_bit(val, &msm_bedais[reg].fe_sessions[0]);
1882 else
1883 clear_bit(val, &msm_bedais[reg].fe_sessions[0]);
1884
1885 if (val == MSM_FRONTEND_DAI_DTMF_RX &&
1886 afe_get_port_type(msm_bedais[reg].port_id) ==
1887 MSM_AFE_PORT_TYPE_RX) {
1888 pr_debug("%s(): set=%d port id=0x%x for dtmf generation\n",
1889 __func__, set, msm_bedais[reg].port_id);
1890 afe_set_dtmf_gen_rx_portid(msm_bedais[reg].port_id, set);
1891 }
1892
1893 if (afe_get_port_type(msm_bedais[reg].port_id) ==
1894 MSM_AFE_PORT_TYPE_RX)
1895 path_type = RX_PATH;
1896 else
1897 path_type = TX_PATH;
1898
1899 if (set) {
1900 if (msm_bedais[reg].active) {
1901 voc_set_route_flag(session_id, path_type, 1);
1902
1903 memset(&voc_be_media_format, 0,
1904 sizeof(struct media_format_info));
1905
1906 voc_be_media_format.port_id = msm_bedais[reg].port_id;
1907 voc_be_media_format.num_channels =
1908 msm_bedais[reg].channel;
1909 voc_be_media_format.sample_rate =
1910 msm_bedais[reg].sample_rate;
1911 voc_be_media_format.bits_per_sample =
1912 msm_bedais[reg].format;
1913 /* Defaulting this to 1 for voice call usecases */
1914 voc_be_media_format.channel_mapping[0] = 1;
1915
1916 voc_set_device_config(session_id, path_type,
1917 &voc_be_media_format);
1918
1919 if (voc_get_route_flag(session_id, TX_PATH) &&
1920 voc_get_route_flag(session_id, RX_PATH))
1921 voc_enable_device(session_id);
1922 } else {
1923 pr_debug("%s BE is not active\n", __func__);
1924 }
1925 } else {
1926 voc_set_route_flag(session_id, path_type, 0);
1927 voc_disable_device(session_id);
1928 }
1929
1930 mutex_unlock(&routing_lock);
1931
1932}
1933
1934static int msm_routing_get_voice_mixer(struct snd_kcontrol *kcontrol,
1935 struct snd_ctl_elem_value *ucontrol)
1936{
1937 struct soc_mixer_control *mc =
1938 (struct soc_mixer_control *)kcontrol->private_value;
1939
1940 mutex_lock(&routing_lock);
1941
1942 if (test_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]))
1943 ucontrol->value.integer.value[0] = 1;
1944 else
1945 ucontrol->value.integer.value[0] = 0;
1946
1947 mutex_unlock(&routing_lock);
1948
1949 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
1950 ucontrol->value.integer.value[0]);
1951
1952 return 0;
1953}
1954
1955static int msm_routing_put_voice_mixer(struct snd_kcontrol *kcontrol,
1956 struct snd_ctl_elem_value *ucontrol)
1957{
Asish Bhattacharya34504582017-08-08 12:55:01 +05301958 struct snd_soc_dapm_widget *widget =
1959 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301960 struct soc_mixer_control *mc =
1961 (struct soc_mixer_control *)kcontrol->private_value;
1962 struct snd_soc_dapm_update *update = NULL;
1963
1964 if (ucontrol->value.integer.value[0]) {
1965 msm_pcm_routing_process_voice(mc->reg, mc->shift, 1);
1966 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
1967 update);
1968 } else {
1969 msm_pcm_routing_process_voice(mc->reg, mc->shift, 0);
1970 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
1971 update);
1972 }
1973
1974 return 1;
1975}
1976
1977static int msm_routing_get_voice_stub_mixer(struct snd_kcontrol *kcontrol,
1978 struct snd_ctl_elem_value *ucontrol)
1979{
1980 struct soc_mixer_control *mc =
1981 (struct soc_mixer_control *)kcontrol->private_value;
1982
1983 mutex_lock(&routing_lock);
1984
1985 if (test_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]))
1986 ucontrol->value.integer.value[0] = 1;
1987 else
1988 ucontrol->value.integer.value[0] = 0;
1989
1990 mutex_unlock(&routing_lock);
1991
1992 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
1993 ucontrol->value.integer.value[0]);
1994
1995 return 0;
1996}
1997
1998static int msm_routing_put_voice_stub_mixer(struct snd_kcontrol *kcontrol,
1999 struct snd_ctl_elem_value *ucontrol)
2000{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302001 struct snd_soc_dapm_widget *widget =
2002 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302003 struct soc_mixer_control *mc =
2004 (struct soc_mixer_control *)kcontrol->private_value;
2005 struct snd_soc_dapm_update *update = NULL;
2006
2007 if (ucontrol->value.integer.value[0]) {
2008 mutex_lock(&routing_lock);
2009 set_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]);
2010 mutex_unlock(&routing_lock);
2011
2012 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2013 update);
2014 } else {
2015 mutex_lock(&routing_lock);
2016 clear_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]);
2017 mutex_unlock(&routing_lock);
2018
2019 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2020 update);
2021 }
2022
2023 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
2024 ucontrol->value.integer.value[0]);
2025
2026 return 1;
2027}
2028
2029/*
2030 * Return the mapping between port ID and backend ID to enable the AFE callback
2031 * to determine the acdb_dev_id from the port id
2032 */
2033int msm_pcm_get_be_id_from_port_id(int port_id)
2034{
2035 int i;
2036 int be_id = -EINVAL;
2037
2038 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
2039 if (msm_bedais[i].port_id == port_id) {
2040 be_id = i;
2041 break;
2042 }
2043 }
2044
2045 return be_id;
2046}
2047
2048/*
2049 * Return the registered dev_acdb_id given a port ID to enable identifying the
2050 * correct AFE calibration information by comparing the header information.
2051 */
2052static int msm_pcm_get_dev_acdb_id_by_port_id(int port_id)
2053{
2054 int acdb_id = -EINVAL;
2055 int i = 0;
2056 int session;
2057 int port_type = afe_get_port_type(port_id);
2058 int be_id = msm_pcm_get_be_id_from_port_id(port_id);
2059
2060 pr_debug("%s:port_id %d be_id %d, port_type 0x%x\n",
2061 __func__, port_id, be_id, port_type);
2062
2063 if (port_type == MSM_AFE_PORT_TYPE_TX) {
2064 session = SESSION_TYPE_TX;
2065 } else if (port_type == MSM_AFE_PORT_TYPE_RX) {
2066 session = SESSION_TYPE_RX;
2067 } else {
2068 pr_err("%s: Invalid port type %d\n", __func__, port_type);
2069 acdb_id = -EINVAL;
2070 goto exit;
2071 }
2072
2073 if (be_id < 0) {
2074 pr_err("%s: Error getting backend id %d\n", __func__, be_id);
2075 goto exit;
2076 }
2077
2078 mutex_lock(&routing_lock);
2079 i = find_first_bit(&msm_bedais[be_id].fe_sessions[0],
2080 MSM_FRONTEND_DAI_MAX);
2081 if (i < MSM_FRONTEND_DAI_MAX)
2082 acdb_id = fe_dai_app_type_cfg[i][session][be_id].acdb_dev_id;
2083
2084 pr_debug("%s: FE[%d] session[%d] BE[%d] acdb_id(%d)\n",
2085 __func__, i, session, be_id, acdb_id);
2086 mutex_unlock(&routing_lock);
2087exit:
2088 return acdb_id;
2089}
2090
2091static int msm_routing_get_switch_mixer(struct snd_kcontrol *kcontrol,
2092 struct snd_ctl_elem_value *ucontrol)
2093{
2094 ucontrol->value.integer.value[0] = fm_switch_enable;
2095 pr_debug("%s: FM Switch enable %ld\n", __func__,
2096 ucontrol->value.integer.value[0]);
2097 return 0;
2098}
2099
2100static int msm_routing_put_switch_mixer(struct snd_kcontrol *kcontrol,
2101 struct snd_ctl_elem_value *ucontrol)
2102{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302103 struct snd_soc_dapm_widget *widget =
2104 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302105 struct snd_soc_dapm_update *update = NULL;
2106
2107 pr_debug("%s: FM Switch enable %ld\n", __func__,
2108 ucontrol->value.integer.value[0]);
2109 if (ucontrol->value.integer.value[0])
2110 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2111 update);
2112 else
2113 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2114 update);
2115 fm_switch_enable = ucontrol->value.integer.value[0];
2116 return 1;
2117}
2118
2119static int msm_routing_get_hfp_switch_mixer(struct snd_kcontrol *kcontrol,
2120 struct snd_ctl_elem_value *ucontrol)
2121{
2122 ucontrol->value.integer.value[0] = hfp_switch_enable;
2123 pr_debug("%s: HFP Switch enable %ld\n", __func__,
2124 ucontrol->value.integer.value[0]);
2125 return 0;
2126}
2127
2128static int msm_routing_put_hfp_switch_mixer(struct snd_kcontrol *kcontrol,
2129 struct snd_ctl_elem_value *ucontrol)
2130{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302131 struct snd_soc_dapm_widget *widget =
2132 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302133 struct snd_soc_dapm_update *update = NULL;
2134
2135 pr_debug("%s: HFP Switch enable %ld\n", __func__,
2136 ucontrol->value.integer.value[0]);
2137 if (ucontrol->value.integer.value[0])
2138 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol,
2139 1, update);
2140 else
2141 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol,
2142 0, update);
2143 hfp_switch_enable = ucontrol->value.integer.value[0];
2144 return 1;
2145}
2146
2147static int msm_routing_get_int0_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2148 struct snd_ctl_elem_value *ucontrol)
2149{
2150 ucontrol->value.integer.value[0] = int0_mi2s_switch_enable;
2151 pr_debug("%s: INT0 MI2S Switch enable %ld\n", __func__,
2152 ucontrol->value.integer.value[0]);
2153 return 0;
2154}
2155
2156static int msm_routing_put_int0_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2157 struct snd_ctl_elem_value *ucontrol)
2158{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302159 struct snd_soc_dapm_widget *widget =
2160 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302161 struct snd_soc_dapm_update *update = NULL;
2162
2163 pr_debug("%s: INT0 MI2S Switch enable %ld\n", __func__,
2164 ucontrol->value.integer.value[0]);
2165 if (ucontrol->value.integer.value[0])
2166 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2167 update);
2168 else
2169 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2170 update);
2171 int0_mi2s_switch_enable = ucontrol->value.integer.value[0];
2172 return 1;
2173}
2174
2175static int msm_routing_get_int4_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2176 struct snd_ctl_elem_value *ucontrol)
2177{
2178 ucontrol->value.integer.value[0] = int4_mi2s_switch_enable;
2179 pr_debug("%s: INT4 MI2S Switch enable %ld\n", __func__,
2180 ucontrol->value.integer.value[0]);
2181 return 0;
2182}
2183
2184static int msm_routing_put_int4_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2185 struct snd_ctl_elem_value *ucontrol)
2186{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302187 struct snd_soc_dapm_widget *widget =
2188 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302189 struct snd_soc_dapm_update *update = NULL;
2190
2191 pr_debug("%s: INT4 MI2S Switch enable %ld\n", __func__,
2192 ucontrol->value.integer.value[0]);
2193 if (ucontrol->value.integer.value[0])
2194 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2195 update);
2196 else
2197 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2198 update);
2199 int4_mi2s_switch_enable = ucontrol->value.integer.value[0];
2200 return 1;
2201}
2202
2203static int msm_routing_get_usb_switch_mixer(struct snd_kcontrol *kcontrol,
2204 struct snd_ctl_elem_value *ucontrol)
2205{
2206 ucontrol->value.integer.value[0] = usb_switch_enable;
2207 pr_debug("%s: HFP Switch enable %ld\n", __func__,
2208 ucontrol->value.integer.value[0]);
2209 return 0;
2210}
2211
2212static int msm_routing_put_usb_switch_mixer(struct snd_kcontrol *kcontrol,
2213 struct snd_ctl_elem_value *ucontrol)
2214{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302215 struct snd_soc_dapm_widget *widget =
2216 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302217 struct snd_soc_dapm_update *update = NULL;
2218
2219 pr_debug("%s: USB Switch enable %ld\n", __func__,
2220 ucontrol->value.integer.value[0]);
2221 if (ucontrol->value.integer.value[0])
2222 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol,
2223 1, update);
2224 else
2225 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol,
2226 0, update);
2227 usb_switch_enable = ucontrol->value.integer.value[0];
2228 return 1;
2229}
2230
2231static int msm_routing_get_pri_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2232 struct snd_ctl_elem_value *ucontrol)
2233{
2234 ucontrol->value.integer.value[0] = pri_mi2s_switch_enable;
2235 pr_debug("%s: PRI MI2S Switch enable %ld\n", __func__,
2236 ucontrol->value.integer.value[0]);
2237 return 0;
2238}
2239
2240static int msm_routing_put_pri_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2241 struct snd_ctl_elem_value *ucontrol)
2242{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302243 struct snd_soc_dapm_widget *widget =
2244 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302245 struct snd_soc_dapm_update *update = NULL;
2246
2247 pr_debug("%s: PRI MI2S Switch enable %ld\n", __func__,
2248 ucontrol->value.integer.value[0]);
2249 if (ucontrol->value.integer.value[0])
2250 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2251 update);
2252 else
2253 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2254 update);
2255 pri_mi2s_switch_enable = ucontrol->value.integer.value[0];
2256 return 1;
2257}
2258
2259static int msm_routing_get_sec_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2260 struct snd_ctl_elem_value *ucontrol)
2261{
2262 ucontrol->value.integer.value[0] = sec_mi2s_switch_enable;
2263 pr_debug("%s: SEC MI2S Switch enable %ld\n", __func__,
2264 ucontrol->value.integer.value[0]);
2265 return 0;
2266}
2267
2268static int msm_routing_put_sec_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2269 struct snd_ctl_elem_value *ucontrol)
2270{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302271 struct snd_soc_dapm_widget *widget =
2272 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302273 struct snd_soc_dapm_update *update = NULL;
2274
2275 pr_debug("%s: SEC MI2S Switch enable %ld\n", __func__,
2276 ucontrol->value.integer.value[0]);
2277 if (ucontrol->value.integer.value[0])
2278 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2279 update);
2280 else
2281 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2282 update);
2283 sec_mi2s_switch_enable = ucontrol->value.integer.value[0];
2284 return 1;
2285}
2286
2287static int msm_routing_get_tert_mi2s_switch_mixer(
2288 struct snd_kcontrol *kcontrol,
2289 struct snd_ctl_elem_value *ucontrol)
2290{
2291 ucontrol->value.integer.value[0] = tert_mi2s_switch_enable;
2292 pr_debug("%s: TERT MI2S Switch enable %ld\n", __func__,
2293 ucontrol->value.integer.value[0]);
2294 return 0;
2295}
2296
2297static int msm_routing_put_tert_mi2s_switch_mixer(
2298 struct snd_kcontrol *kcontrol,
2299 struct snd_ctl_elem_value *ucontrol)
2300{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302301 struct snd_soc_dapm_widget *widget =
2302 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302303 struct snd_soc_dapm_update *update = NULL;
2304
2305 pr_debug("%s: TERT MI2S Switch enable %ld\n", __func__,
2306 ucontrol->value.integer.value[0]);
2307 if (ucontrol->value.integer.value[0])
2308 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2309 update);
2310 else
2311 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2312 update);
2313 tert_mi2s_switch_enable = ucontrol->value.integer.value[0];
2314 return 1;
2315}
2316
2317static int msm_routing_get_quat_mi2s_switch_mixer(
2318 struct snd_kcontrol *kcontrol,
2319 struct snd_ctl_elem_value *ucontrol)
2320{
2321 ucontrol->value.integer.value[0] = quat_mi2s_switch_enable;
2322 pr_debug("%s: QUAT MI2S Switch enable %ld\n", __func__,
2323 ucontrol->value.integer.value[0]);
2324 return 0;
2325}
2326
2327static int msm_routing_put_quat_mi2s_switch_mixer(
2328 struct snd_kcontrol *kcontrol,
2329 struct snd_ctl_elem_value *ucontrol)
2330{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302331 struct snd_soc_dapm_widget *widget =
2332 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302333 struct snd_soc_dapm_update *update = NULL;
2334
2335 pr_debug("%s: QUAT MI2S Switch enable %ld\n", __func__,
2336 ucontrol->value.integer.value[0]);
2337 if (ucontrol->value.integer.value[0])
2338 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2339 update);
2340 else
2341 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2342 update);
2343 quat_mi2s_switch_enable = ucontrol->value.integer.value[0];
2344 return 1;
2345}
2346
Rohit Kumara5077932017-09-10 22:05:05 +05302347static int msm_routing_get_quin_mi2s_switch_mixer(
2348 struct snd_kcontrol *kcontrol,
2349 struct snd_ctl_elem_value *ucontrol)
2350{
2351 ucontrol->value.integer.value[0] = quin_mi2s_switch_enable;
2352 pr_debug("%s: QUIN MI2S Switch enable %ld\n", __func__,
2353 ucontrol->value.integer.value[0]);
2354 return 0;
2355}
2356
2357static int msm_routing_put_quin_mi2s_switch_mixer(
2358 struct snd_kcontrol *kcontrol,
2359 struct snd_ctl_elem_value *ucontrol)
2360{
2361 struct snd_soc_dapm_widget *widget =
2362 snd_soc_dapm_kcontrol_widget(kcontrol);
2363 struct snd_soc_dapm_update *update = NULL;
2364
2365 pr_debug("%s: QUIN MI2S Switch enable %ld\n", __func__,
2366 ucontrol->value.integer.value[0]);
2367 if (ucontrol->value.integer.value[0])
2368 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2369 update);
2370 else
2371 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2372 update);
2373 quin_mi2s_switch_enable = ucontrol->value.integer.value[0];
2374 return 1;
2375}
2376
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302377static int msm_routing_get_fm_pcmrx_switch_mixer(struct snd_kcontrol *kcontrol,
2378 struct snd_ctl_elem_value *ucontrol)
2379{
2380 ucontrol->value.integer.value[0] = fm_pcmrx_switch_enable;
2381 pr_debug("%s: FM Switch enable %ld\n", __func__,
2382 ucontrol->value.integer.value[0]);
2383 return 0;
2384}
2385
2386static int msm_routing_put_fm_pcmrx_switch_mixer(struct snd_kcontrol *kcontrol,
2387 struct snd_ctl_elem_value *ucontrol)
2388{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302389 struct snd_soc_dapm_widget *widget =
2390 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302391 struct snd_soc_dapm_update *update = NULL;
2392
2393 pr_debug("%s: FM Switch enable %ld\n", __func__,
2394 ucontrol->value.integer.value[0]);
2395 if (ucontrol->value.integer.value[0])
2396 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2397 update);
2398 else
2399 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2400 update);
2401 fm_pcmrx_switch_enable = ucontrol->value.integer.value[0];
2402 return 1;
2403}
2404
2405static int msm_routing_lsm_port_get(struct snd_kcontrol *kcontrol,
2406 struct snd_ctl_elem_value *ucontrol)
2407{
2408 ucontrol->value.integer.value[0] = lsm_port_index;
2409 return 0;
2410}
2411
2412static int msm_routing_lsm_port_put(struct snd_kcontrol *kcontrol,
2413 struct snd_ctl_elem_value *ucontrol)
2414{
2415 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
2416 int mux = ucontrol->value.enumerated.item[0];
2417 int lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_5_TX;
2418
2419 if (mux >= e->items) {
2420 pr_err("%s: Invalid mux value %d\n", __func__, mux);
2421 return -EINVAL;
2422 }
2423
2424 pr_debug("%s: LSM enable %ld\n", __func__,
2425 ucontrol->value.integer.value[0]);
2426 switch (ucontrol->value.integer.value[0]) {
2427 case 1:
2428 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_0_TX;
2429 break;
2430 case 2:
2431 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_1_TX;
2432 break;
2433 case 3:
2434 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_2_TX;
2435 break;
2436 case 4:
2437 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_3_TX;
2438 break;
2439 case 5:
2440 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_4_TX;
2441 break;
2442 case 6:
2443 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_5_TX;
2444 break;
2445 case 7:
2446 lsm_port = AFE_PORT_ID_TERTIARY_MI2S_TX;
2447 break;
2448 case 8:
2449 lsm_port = AFE_PORT_ID_QUATERNARY_MI2S_TX;
2450 break;
2451 case 9:
2452 lsm_port = ADM_LSM_PORT_ID;
2453 break;
2454 case 10:
2455 lsm_port = AFE_PORT_ID_INT3_MI2S_TX;
2456 break;
2457 default:
2458 pr_err("Default lsm port");
2459 break;
2460 }
2461 set_lsm_port(lsm_port);
2462 lsm_port_index = ucontrol->value.integer.value[0];
2463
2464 return 0;
2465}
2466
2467static int msm_routing_lsm_func_get(struct snd_kcontrol *kcontrol,
2468 struct snd_ctl_elem_value *ucontrol)
2469{
2470 int i;
2471 u16 port_id;
2472 enum afe_mad_type mad_type;
2473
2474 pr_debug("%s: enter\n", __func__);
2475 for (i = 0; i < ARRAY_SIZE(lsm_port_text); i++)
2476 if (!strnstr(kcontrol->id.name, lsm_port_text[i],
2477 strlen(lsm_port_text[i])))
2478 break;
2479
2480 if (i-- == ARRAY_SIZE(lsm_port_text)) {
2481 WARN(1, "Invalid id name %s\n", kcontrol->id.name);
2482 return -EINVAL;
2483 }
2484
2485 port_id = i * 2 + 1 + SLIMBUS_0_RX;
2486
2487 /*Check for Tertiary/Quaternary/INT3 TX port*/
2488 if (strnstr(kcontrol->id.name, lsm_port_text[7],
2489 strlen(lsm_port_text[7])))
2490 port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
2491
2492 if (strnstr(kcontrol->id.name, lsm_port_text[8],
2493 strlen(lsm_port_text[8])))
2494 port_id = AFE_PORT_ID_QUATERNARY_MI2S_TX;
2495
2496 if (strnstr(kcontrol->id.name, lsm_port_text[10],
2497 strlen(lsm_port_text[10])))
2498 port_id = AFE_PORT_ID_INT3_MI2S_TX;
2499
2500 mad_type = afe_port_get_mad_type(port_id);
2501 pr_debug("%s: port_id 0x%x, mad_type %d\n", __func__, port_id,
2502 mad_type);
2503 switch (mad_type) {
2504 case MAD_HW_NONE:
2505 ucontrol->value.integer.value[0] = MADNONE;
2506 break;
2507 case MAD_HW_AUDIO:
2508 ucontrol->value.integer.value[0] = MADAUDIO;
2509 break;
2510 case MAD_HW_BEACON:
2511 ucontrol->value.integer.value[0] = MADBEACON;
2512 break;
2513 case MAD_HW_ULTRASOUND:
2514 ucontrol->value.integer.value[0] = MADULTRASOUND;
2515 break;
2516 case MAD_SW_AUDIO:
2517 ucontrol->value.integer.value[0] = MADSWAUDIO;
2518 break;
2519 default:
2520 WARN(1, "Unknown\n");
2521 return -EINVAL;
2522 }
2523 return 0;
2524}
2525
2526static int msm_routing_lsm_func_put(struct snd_kcontrol *kcontrol,
2527 struct snd_ctl_elem_value *ucontrol)
2528{
2529 int i;
2530 u16 port_id;
2531 enum afe_mad_type mad_type;
2532
2533 pr_debug("%s: enter\n", __func__);
2534 for (i = 0; i < ARRAY_SIZE(lsm_port_text); i++)
2535 if (strnstr(kcontrol->id.name, lsm_port_text[i],
2536 strlen(lsm_port_text[i])))
2537 break;
2538
2539 if (i-- == ARRAY_SIZE(lsm_port_text)) {
2540 WARN(1, "Invalid id name %s\n", kcontrol->id.name);
2541 return -EINVAL;
2542 }
2543
2544 port_id = i * 2 + 1 + SLIMBUS_0_RX;
2545 switch (ucontrol->value.integer.value[0]) {
2546 case MADNONE:
2547 mad_type = MAD_HW_NONE;
2548 break;
2549 case MADAUDIO:
2550 mad_type = MAD_HW_AUDIO;
2551 break;
2552 case MADBEACON:
2553 mad_type = MAD_HW_BEACON;
2554 break;
2555 case MADULTRASOUND:
2556 mad_type = MAD_HW_ULTRASOUND;
2557 break;
2558 case MADSWAUDIO:
2559 mad_type = MAD_SW_AUDIO;
2560 break;
2561 default:
2562 WARN(1, "Unknown\n");
2563 return -EINVAL;
2564 }
2565
2566 /*Check for Tertiary/Quaternary/INT3 TX port*/
2567 if (strnstr(kcontrol->id.name, lsm_port_text[7],
2568 strlen(lsm_port_text[7])))
2569 port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
2570
2571 if (strnstr(kcontrol->id.name, lsm_port_text[8],
2572 strlen(lsm_port_text[8])))
2573 port_id = AFE_PORT_ID_QUATERNARY_MI2S_TX;
2574
2575 if (strnstr(kcontrol->id.name, lsm_port_text[10],
2576 strlen(lsm_port_text[10])))
2577 port_id = AFE_PORT_ID_INT3_MI2S_TX;
2578
2579 pr_debug("%s: port_id 0x%x, mad_type %d\n", __func__, port_id,
2580 mad_type);
2581 return afe_port_set_mad_type(port_id, mad_type);
2582}
2583
2584static const char *const adm_override_chs_text[] = {"Zero", "One", "Two"};
2585
2586static SOC_ENUM_SINGLE_EXT_DECL(slim_7_rx_adm_override_chs,
2587 adm_override_chs_text);
2588
2589static int msm_routing_adm_get_backend_idx(struct snd_kcontrol *kcontrol)
2590{
2591 int backend_id;
2592
2593 if (strnstr(kcontrol->id.name, "SLIM7_RX", sizeof("SLIM7_RX"))) {
2594 backend_id = MSM_BACKEND_DAI_SLIMBUS_7_RX;
2595 } else {
2596 pr_err("%s: unsupported backend id: %s",
2597 __func__, kcontrol->id.name);
2598 return -EINVAL;
2599 }
2600
2601 return backend_id;
2602}
2603static int msm_routing_adm_channel_config_get(
2604 struct snd_kcontrol *kcontrol,
2605 struct snd_ctl_elem_value *ucontrol)
2606{
2607 int backend_id = msm_routing_adm_get_backend_idx(kcontrol);
2608
2609 if (backend_id >= 0) {
2610 mutex_lock(&routing_lock);
2611 ucontrol->value.integer.value[0] =
2612 msm_bedais[backend_id].adm_override_ch;
2613 pr_debug("%s: adm channel count %ld for BE:%d\n", __func__,
2614 ucontrol->value.integer.value[0], backend_id);
2615 mutex_unlock(&routing_lock);
2616 }
2617
2618 return 0;
2619}
2620
2621static int msm_routing_adm_channel_config_put(
2622 struct snd_kcontrol *kcontrol,
2623 struct snd_ctl_elem_value *ucontrol)
2624{
2625 int backend_id = msm_routing_adm_get_backend_idx(kcontrol);
2626
2627 if (backend_id >= 0) {
2628 mutex_lock(&routing_lock);
2629 msm_bedais[backend_id].adm_override_ch =
2630 ucontrol->value.integer.value[0];
2631 pr_debug("%s:updating BE :%d adm channels: %d\n",
2632 __func__, backend_id,
2633 msm_bedais[backend_id].adm_override_ch);
2634 mutex_unlock(&routing_lock);
2635 }
2636
2637 return 0;
2638}
2639
2640static const struct snd_kcontrol_new adm_channel_config_controls[] = {
2641 SOC_ENUM_EXT("SLIM7_RX ADM Channels", slim_7_rx_adm_override_chs,
2642 msm_routing_adm_channel_config_get,
2643 msm_routing_adm_channel_config_put),
2644};
2645
2646static int msm_routing_slim_0_rx_aanc_mux_get(struct snd_kcontrol *kcontrol,
2647 struct snd_ctl_elem_value *ucontrol)
2648{
2649
2650 mutex_lock(&routing_lock);
2651 ucontrol->value.integer.value[0] = slim0_rx_aanc_fb_port;
2652 mutex_unlock(&routing_lock);
2653 pr_debug("%s: AANC Mux Port %ld\n", __func__,
2654 ucontrol->value.integer.value[0]);
2655 return 0;
2656};
2657
2658static int msm_routing_slim_0_rx_aanc_mux_put(struct snd_kcontrol *kcontrol,
2659 struct snd_ctl_elem_value *ucontrol)
2660{
2661 struct aanc_data aanc_info;
2662
2663 mutex_lock(&routing_lock);
2664 memset(&aanc_info, 0x00, sizeof(aanc_info));
2665 pr_debug("%s: AANC Mux Port %ld\n", __func__,
2666 ucontrol->value.integer.value[0]);
2667 slim0_rx_aanc_fb_port = ucontrol->value.integer.value[0];
2668 if (ucontrol->value.integer.value[0] == 0) {
2669 aanc_info.aanc_active = false;
2670 aanc_info.aanc_tx_port = 0;
2671 aanc_info.aanc_rx_port = 0;
2672 } else {
2673 aanc_info.aanc_active = true;
2674 aanc_info.aanc_rx_port = SLIMBUS_0_RX;
2675 aanc_info.aanc_tx_port =
2676 (SLIMBUS_0_RX - 1 + (slim0_rx_aanc_fb_port * 2));
2677 }
2678 afe_set_aanc_info(&aanc_info);
2679 mutex_unlock(&routing_lock);
2680 return 0;
2681};
2682static int msm_routing_get_port_mixer(struct snd_kcontrol *kcontrol,
2683 struct snd_ctl_elem_value *ucontrol)
2684{
2685 int idx = 0, shift = 0;
2686 struct soc_mixer_control *mc =
2687 (struct soc_mixer_control *)kcontrol->private_value;
2688
2689 idx = mc->shift/(sizeof(msm_bedais[mc->reg].port_sessions[0]) * 8);
2690 shift = mc->shift%(sizeof(msm_bedais[mc->reg].port_sessions[0]) * 8);
2691
2692 if (idx >= BE_DAI_PORT_SESSIONS_IDX_MAX) {
2693 pr_err("%s: Invalid idx = %d\n", __func__, idx);
2694 return -EINVAL;
2695 }
2696
2697 if (test_bit(shift,
2698 (unsigned long *)&msm_bedais[mc->reg].port_sessions[idx]))
2699 ucontrol->value.integer.value[0] = 1;
2700 else
2701 ucontrol->value.integer.value[0] = 0;
2702
2703 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
2704 ucontrol->value.integer.value[0]);
2705
2706 return 0;
2707}
2708
2709static int msm_routing_put_port_mixer(struct snd_kcontrol *kcontrol,
2710 struct snd_ctl_elem_value *ucontrol)
2711{
2712 int idx = 0, shift = 0;
2713 struct soc_mixer_control *mc =
2714 (struct soc_mixer_control *)kcontrol->private_value;
2715
2716 idx = mc->shift/(sizeof(msm_bedais[mc->reg].port_sessions[0]) * 8);
2717 shift = mc->shift%(sizeof(msm_bedais[mc->reg].port_sessions[0]) * 8);
2718
2719 if (idx >= BE_DAI_PORT_SESSIONS_IDX_MAX) {
2720 pr_err("%s: Invalid idx = %d\n", __func__, idx);
2721 return -EINVAL;
2722 }
2723
2724 pr_debug("%s: reg 0x%x shift 0x%x val %ld idx %d reminder shift %d\n",
2725 __func__, mc->reg, mc->shift,
2726 ucontrol->value.integer.value[0], idx, shift);
2727
2728 if (ucontrol->value.integer.value[0]) {
2729 afe_loopback(1, msm_bedais[mc->reg].port_id,
2730 msm_bedais[mc->shift].port_id);
2731 set_bit(shift,
2732 (unsigned long *)&msm_bedais[mc->reg].port_sessions[idx]);
2733 } else {
2734 afe_loopback(0, msm_bedais[mc->reg].port_id,
2735 msm_bedais[mc->shift].port_id);
2736 clear_bit(shift,
2737 (unsigned long *)&msm_bedais[mc->reg].port_sessions[idx]);
2738 }
2739
2740 return 1;
2741}
2742
2743static int msm_pcm_get_channel_rule_index(struct snd_kcontrol *kcontrol,
2744 struct snd_ctl_elem_value *ucontrol)
2745{
2746 u16 fe_id = 0;
2747
2748 fe_id = ((struct soc_mixer_control *)
2749 kcontrol->private_value)->shift;
2750 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2751 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2752 return -EINVAL;
2753 }
2754
2755 ucontrol->value.integer.value[0] = channel_mixer[fe_id].rule;
2756
2757 return 0;
2758}
2759
2760static int msm_pcm_put_channel_rule_index(struct snd_kcontrol *kcontrol,
2761 struct snd_ctl_elem_value *ucontrol)
2762{
2763 u16 fe_id = 0;
2764
2765 fe_id = ((struct soc_mixer_control *)
2766 kcontrol->private_value)->shift;
2767 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2768 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2769 return -EINVAL;
2770 }
2771
2772 channel_mixer[fe_id].rule = ucontrol->value.integer.value[0];
2773
2774 return 1;
2775}
2776
2777static int msm_pcm_get_out_chs(struct snd_kcontrol *kcontrol,
2778 struct snd_ctl_elem_value *ucontrol)
2779{
2780 u16 fe_id = 0;
2781
2782 fe_id = ((struct soc_multi_mixer_control *)
2783 kcontrol->private_value)->shift;
2784 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2785 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2786 return -EINVAL;
2787 }
2788
2789 ucontrol->value.integer.value[0] =
2790 channel_mixer[fe_id].output_channel;
2791 return 0;
2792}
2793
2794static int msm_pcm_put_out_chs(struct snd_kcontrol *kcontrol,
2795 struct snd_ctl_elem_value *ucontrol)
2796{
2797 u16 fe_id = 0;
2798
2799 fe_id = ((struct soc_multi_mixer_control *)
2800 kcontrol->private_value)->shift;
2801 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2802 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2803 return -EINVAL;
2804 }
2805
2806 pr_debug("%s: fe_id is %d, output channels = %d\n", __func__,
2807 fe_id,
2808 (unsigned int)(ucontrol->value.integer.value[0]));
2809 channel_mixer[fe_id].output_channel =
2810 (unsigned int)(ucontrol->value.integer.value[0]);
2811
2812 return 1;
2813}
2814
2815static const char *const ch_mixer[] = {"Disable", "Enable"};
2816
2817/* If new backend is added, need update this array */
2818static const char *const be_name[] = {
2819"ZERO", "PRI_I2S_RX", "PRI_I2S_TX", "SLIM_0_RX",
2820"SLIM_0_TX", "HDMI_RX", "INT_BT_SCO_RX", "INT_BT_SCO_TX",
2821"INT_FM_RX", "INT_FM_TX", "AFE_PCM_RX", "AFE_PCM_TX",
2822"AUXPCM_RX", "AUXPCM_TX", "VOICE_PLAYBACK_TX", "VOICE2_PLAYBACK_TX",
2823"INCALL_RECORD_RX", "INCALL_RECORD_TX", "MI2S_RX", "MI2S_TX",
2824"SEC_I2S_RX", "SLIM_1_RX", "SLIM_1_TX", "SLIM_2_RX",
2825"SLIM_2_TX", "SLIM_3_RX", "SLIM_3_TX", "SLIM_4_RX",
2826"SLIM_4_TX", "SLIM_5_RX", "SLIM_5_TX", "SLIM_6_RX",
2827"SLIM_6_TX", "SLIM_7_RX", "SLIM_7_TX", "SLIM_8_RX",
2828"SLIM_8_TX", "EXTPROC_RX", "EXTPROC_TX", "EXPROC_EC_TX",
2829"QUAT_MI2S_RX", "QUAT_MI2S_TX", "SECOND_MI2S_RX", "SECOND_MI2S_TX",
2830"PRI_MI2S_RX", "PRI_MI2S_TX", "TERT_MI2S_RX", "TERT_MI2S_TX",
2831"AUDIO_I2S_RX", "SEC_AUXPCM_RX", "SEC_AUXPCM_TX", "SPDIF_RX",
2832"SECOND_MI2S_RX_SD1", "QUIN_MI2S_RX", "QUIN_MI2S_TX", "SENARY_MI2S_TX",
2833"PRI_TDM_RX_0", "PRI_TDM_TX_0", "PRI_TDM_RX_1", "PRI_TDM_TX_1",
2834"PRI_TDM_RX_2", "PRI_TDM_TX_2", "PRI_TDM_RX_3", "PRI_TDM_TX_3",
2835"PRI_TDM_RX_4", "PRI_TDM_TX_4", "PRI_TDM_RX_5", "PRI_TDM_TX_5",
2836"PRI_TDM_RX_6", "PRI_TDM_TX_6", "PRI_TDM_RX_7", "PRI_TDM_TX_7",
2837"SEC_TDM_RX_0", "SEC_TDM_TX_0", "SEC_TDM_RX_1", "SEC_TDM_TX_1",
2838"SEC_TDM_RX_2", "SEC_TDM_TX_2", "SEC_TDM_RX_3", "SEC_TDM_TX_3",
2839"SEC_TDM_RX_4", "SEC_TDM_TX_4", "SEC_TDM_RX_5", "SEC_TDM_TX_5",
2840"SEC_TDM_RX_6", "SEC_TDM_TX_6", "SEC_TDM_RX_7", "SEC_TDM_TX_7",
2841"TERT_TDM_RX_0", "TERT_TDM_TX_0", "TERT_TDM_RX_1", "TERT_TDM_TX_1",
2842"TERT_TDM_RX_2", "TERT_TDM_TX_2", "TERT_TDM_RX_3", "TERT_TDM_TX_3",
2843"TERT_TDM_RX_4", "TERT_TDM_TX_4", "TERT_TDM_RX_5", "TERT_TDM_TX_5",
2844"TERT_TDM_RX_6", "TERT_TDM_TX_6", "TERT_TDM_RX_7", "TERT_TDM_TX_7",
2845"QUAT_TDM_RX_0", "QUAT_TDM_TX_0", "QUAT_TDM_RX_1", "QUAT_TDM_TX_1",
2846"QUAT_TDM_RX_2", "QUAT_TDM_TX_2", "QUAT_TDM_RX_3", "QUAT_TDM_TX_3",
2847"QUAT_TDM_RX_4", "QUAT_TDM_TX_4", "QUAT_TDM_RX_5", "QUAT_TDM_TX_5",
2848"QUAT_TDM_RX_6", "QUAT_TDM_TX_6", "QUAT_TDM_RX_7", "QUAT_TDM_TX_7",
Rohit Kumara5077932017-09-10 22:05:05 +05302849"QUIN_TDM_RX_0", "QUIN_TDM_TX_0", "QUIN_TDM_RX_1", "QUIN_TDM_TX_1",
2850"QUIN_TDM_RX_2", "QUIN_TDM_TX_2", "QUIN_TDM_RX_3", "QUIN_TDM_TX_3",
2851"QUIN_TDM_RX_4", "QUIN_TDM_TX_4", "QUIN_TDM_RX_5", "QUIN_TDM_TX_5",
2852"QUIN_TDM_RX_6", "QUIN_TDM_TX_6", "QUIN_TDM_RX_7", "QUIN_TDM_TX_7",
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302853"INT_BT_A2DP_RX", "USB_RX", "USB_TX", "DISPLAY_PORT_RX",
2854"TERT_AUXPCM_RX", "TERT_AUXPCM_TX", "QUAT_AUXPCM_RX", "QUAT_AUXPCM_TX",
Rohit Kumara5077932017-09-10 22:05:05 +05302855"QUIN_AUXPCM_RX", "QUIN_AUXPCM_TX",
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302856"INT0_MI2S_RX", "INT0_MI2S_TX", "INT1_MI2S_RX", "INT1_MI2S_TX",
2857"INT2_MI2S_RX", "INT2_MI2S_TX", "INT3_MI2S_RX", "INT3_MI2S_TX",
2858"INT4_MI2S_RX", "INT4_MI2S_TX", "INT5_MI2S_RX", "INT5_MI2S_TX",
2859"INT6_MI2S_RX", "INT6_MI2S_TX"
2860};
2861
2862static SOC_ENUM_SINGLE_DECL(mm1_channel_mux,
2863 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, ch_mixer);
2864static SOC_ENUM_SINGLE_DECL(mm2_channel_mux,
2865 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA2, ch_mixer);
2866static SOC_ENUM_SINGLE_DECL(mm3_channel_mux,
2867 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA3, ch_mixer);
2868static SOC_ENUM_SINGLE_DECL(mm4_channel_mux,
2869 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA4, ch_mixer);
2870
2871static SOC_ENUM_DOUBLE_DECL(mm1_ch1_enum,
2872 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 0, be_name);
2873static SOC_ENUM_DOUBLE_DECL(mm1_ch2_enum,
2874 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 1, be_name);
2875static SOC_ENUM_DOUBLE_DECL(mm1_ch3_enum,
2876 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 2, be_name);
2877static SOC_ENUM_DOUBLE_DECL(mm1_ch4_enum,
2878 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 3, be_name);
2879static SOC_ENUM_DOUBLE_DECL(mm1_ch5_enum,
2880 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 4, be_name);
2881static SOC_ENUM_DOUBLE_DECL(mm1_ch6_enum,
2882 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 5, be_name);
2883static SOC_ENUM_DOUBLE_DECL(mm1_ch7_enum,
2884 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 6, be_name);
2885static SOC_ENUM_DOUBLE_DECL(mm1_ch8_enum,
2886 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 7, be_name);
2887
2888static int msm_pcm_get_ctl_enum_info(struct snd_ctl_elem_info *uinfo,
2889 unsigned int channels,
2890 unsigned int items, const char *const names[])
2891{
2892 if (uinfo->value.enumerated.item >= items)
2893 uinfo->value.enumerated.item = items - 1;
2894
2895 WARN(strlen(names[uinfo->value.enumerated.item]) >=
2896 sizeof(uinfo->value.enumerated.name),
2897 "ALSA: too long item name '%s'\n",
2898 names[uinfo->value.enumerated.item]);
2899 strlcpy(uinfo->value.enumerated.name,
2900 names[uinfo->value.enumerated.item],
2901 sizeof(uinfo->value.enumerated.name));
2902 return 0;
2903}
2904
2905static int msm_pcm_channel_mixer_info(struct snd_kcontrol *kcontrol,
2906 struct snd_ctl_elem_info *uinfo)
2907{
2908 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
2909
2910 uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED;
2911 uinfo->count = 1;
2912
2913 uinfo->value.enumerated.items = ARRAY_SIZE(ch_mixer);
2914 msm_pcm_get_ctl_enum_info(uinfo, 1, e->items, e->texts);
2915
2916 return 0;
2917}
2918static int msm_pcm_channel_mixer_get(struct snd_kcontrol *kcontrol,
2919 struct snd_ctl_elem_value *ucontrol)
2920{
2921 u16 fe_id = 0;
2922
2923 fe_id = ((struct soc_enum *)
2924 kcontrol->private_value)->shift_l;
2925 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2926 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2927 return -EINVAL;
2928 }
2929
2930 pr_debug("%s: FE %d %s\n", __func__,
2931 fe_id,
2932 channel_mixer[fe_id].enable ? "Enabled" : "Disabled");
2933 ucontrol->value.enumerated.item[0] = channel_mixer[fe_id].enable;
2934 return 0;
2935}
2936
2937static int msm_pcm_channel_mixer_put(struct snd_kcontrol *kcontrol,
2938 struct snd_ctl_elem_value *ucontrol)
2939{
2940 u16 fe_id = 0;
2941
2942 fe_id = ((struct soc_enum *)
2943 kcontrol->private_value)->shift_l;
2944 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2945 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2946 return -EINVAL;
2947 }
2948
2949 channel_mixer[fe_id].enable = ucontrol->value.enumerated.item[0];
2950 pr_debug("%s: %s FE %d\n", __func__,
2951 channel_mixer[fe_id].enable ? "Enable" : "Disable",
2952 fe_id);
2953 return 0;
2954}
2955
2956static int msm_pcm_channel_input_be_info(struct snd_kcontrol *kcontrol,
2957 struct snd_ctl_elem_info *uinfo)
2958{
2959 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
2960
2961 uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED;
2962 uinfo->count = 1;
2963
2964 uinfo->value.enumerated.items = ARRAY_SIZE(be_name);
2965 msm_pcm_get_ctl_enum_info(uinfo, 1, e->items, e->texts);
2966
2967 return 0;
2968}
2969
2970static int msm_pcm_channel_input_be_put(struct snd_kcontrol *kcontrol,
2971 struct snd_ctl_elem_value *ucontrol)
2972{
2973 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
2974 u16 fe_id = 0, in_ch = 0;
2975
2976 fe_id = e->shift_l;
2977 in_ch = e->shift_r;
2978 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2979 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2980 return -EINVAL;
2981 }
2982 if (in_ch >= ADM_MAX_CHANNELS) {
2983 pr_err("%s: invalid input channel %d\n", __func__, in_ch);
2984 return -EINVAL;
2985 }
2986
2987 channel_input[fe_id][in_ch] = ucontrol->value.enumerated.item[0];
2988 return 1;
2989}
2990
2991static int msm_pcm_channel_input_be_get(struct snd_kcontrol *kcontrol,
2992 struct snd_ctl_elem_value *ucontrol)
2993{
2994 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
2995 u16 fe_id = 0, in_ch = 0;
2996
2997 fe_id = e->shift_l;
2998 in_ch = e->shift_r;
2999 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
3000 pr_err("%s: invalid FE %d\n", __func__, fe_id);
3001 return -EINVAL;
3002 }
3003 if (in_ch >= ADM_MAX_CHANNELS) {
3004 pr_err("%s: invalid input channel %d\n", __func__, in_ch);
3005 return -EINVAL;
3006 }
3007
3008 ucontrol->value.enumerated.item[0] = channel_input[fe_id][in_ch];
3009 return 1;
3010}
3011
3012
3013static int msm_pcm_channel_weight_info(struct snd_kcontrol *kcontrol,
3014 struct snd_ctl_elem_info *uinfo)
3015{
3016 uinfo->type = SNDRV_CTL_ELEM_TYPE_INTEGER;
3017 uinfo->count = ADM_MAX_CHANNELS;
3018 uinfo->value.integer.min = 0;
3019 uinfo->value.integer.max = WEIGHT_0_DB;
3020
3021 return 0;
3022}
3023
3024static int msm_pcm_channel_weight_put(struct snd_kcontrol *kcontrol,
3025 struct snd_ctl_elem_value *ucontrol)
3026{
3027 u16 fe_id = 0, out_ch = 0;
3028 int i, weight;
3029
3030 fe_id = ((struct soc_multi_mixer_control *)
3031 kcontrol->private_value)->shift;
3032 out_ch = ((struct soc_multi_mixer_control *)
3033 kcontrol->private_value)->rshift;
3034 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
3035 pr_err("%s: invalid FE %d\n", __func__, fe_id);
3036 return -EINVAL;
3037 }
3038 if (out_ch >= ADM_MAX_CHANNELS) {
3039 pr_err("%s: invalid input channel %d\n", __func__, out_ch);
3040 return -EINVAL;
3041 }
3042
3043 pr_debug("%s: FE_ID: %d, channel weight %ld, %ld, %ld, %ld, %ld, %ld, %ld, %ld\n",
3044 __func__, fe_id,
3045 ucontrol->value.integer.value[0],
3046 ucontrol->value.integer.value[1],
3047 ucontrol->value.integer.value[2],
3048 ucontrol->value.integer.value[3],
3049 ucontrol->value.integer.value[4],
3050 ucontrol->value.integer.value[5],
3051 ucontrol->value.integer.value[6],
3052 ucontrol->value.integer.value[7]);
3053
3054 for (i = 0; i < ADM_MAX_CHANNELS; ++i) {
3055 weight = ucontrol->value.integer.value[i];
3056 channel_mixer[fe_id].channel_weight[out_ch][i] = weight;
3057 pr_debug("%s: FE_ID %d, output %d input %d weight %d\n",
3058 __func__, fe_id, out_ch, i,
3059 channel_mixer[fe_id].channel_weight[out_ch][i]);
3060 }
3061
3062 return 0;
3063}
3064
3065static int msm_pcm_channel_weight_get(struct snd_kcontrol *kcontrol,
3066 struct snd_ctl_elem_value *ucontrol)
3067{
3068 u16 fe_id = 0, out_ch = 0;
3069 int i;
3070
3071 fe_id = ((struct soc_multi_mixer_control *)
3072 kcontrol->private_value)->shift;
3073 out_ch = ((struct soc_multi_mixer_control *)
3074 kcontrol->private_value)->rshift;
3075 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
3076 pr_err("%s: invalid FE %d\n", __func__, fe_id);
3077 return -EINVAL;
3078 }
3079 if (out_ch >= ADM_MAX_CHANNELS) {
3080 pr_err("%s: invalid input channel %d\n", __func__, out_ch);
3081 return -EINVAL;
3082 }
3083
3084 for (i = 0; i < ADM_MAX_CHANNELS; ++i)
3085 ucontrol->value.integer.value[i] =
3086 channel_mixer[fe_id].channel_weight[out_ch][i];
3087
3088 pr_debug("%s: FE_ID: %d, weight %ld, %ld, %ld, %ld, %ld, %ld, %ld, %ld",
3089 __func__, fe_id,
3090 ucontrol->value.integer.value[0],
3091 ucontrol->value.integer.value[1],
3092 ucontrol->value.integer.value[2],
3093 ucontrol->value.integer.value[3],
3094 ucontrol->value.integer.value[4],
3095 ucontrol->value.integer.value[5],
3096 ucontrol->value.integer.value[6],
3097 ucontrol->value.integer.value[7]);
3098
3099 return 0;
3100}
3101
3102static const struct snd_kcontrol_new channel_mixer_controls[] = {
3103 SOC_SINGLE_EXT("MultiMedia1 Channel Rule", SND_SOC_NOPM,
3104 MSM_FRONTEND_DAI_MULTIMEDIA1, 8, 0,
3105 msm_pcm_get_channel_rule_index,
3106 msm_pcm_put_channel_rule_index),
3107 SOC_SINGLE_EXT("MultiMedia2 Channel Rule", SND_SOC_NOPM,
3108 MSM_FRONTEND_DAI_MULTIMEDIA2, 8, 0,
3109 msm_pcm_get_channel_rule_index,
3110 msm_pcm_put_channel_rule_index),
3111 SOC_SINGLE_EXT("MultiMedia3 Channel Rule", SND_SOC_NOPM,
3112 MSM_FRONTEND_DAI_MULTIMEDIA3, 8, 0,
3113 msm_pcm_get_channel_rule_index,
3114 msm_pcm_put_channel_rule_index),
3115 SOC_SINGLE_EXT("MultiMedia4 Channel Rule", SND_SOC_NOPM,
3116 MSM_FRONTEND_DAI_MULTIMEDIA4, 8, 0,
3117 msm_pcm_get_channel_rule_index,
3118 msm_pcm_put_channel_rule_index),
3119 SOC_SINGLE_EXT("MultiMedia5 Channel Rule", SND_SOC_NOPM,
3120 MSM_FRONTEND_DAI_MULTIMEDIA5, 8, 0,
3121 msm_pcm_get_channel_rule_index,
3122 msm_pcm_put_channel_rule_index),
3123 SOC_SINGLE_EXT("MultiMedia6 Channel Rule", SND_SOC_NOPM,
3124 MSM_FRONTEND_DAI_MULTIMEDIA6, 8, 0,
3125 msm_pcm_get_channel_rule_index,
3126 msm_pcm_put_channel_rule_index),
3127
3128 SOC_SINGLE_EXT("MultiMedia1 Channels", SND_SOC_NOPM,
3129 MSM_FRONTEND_DAI_MULTIMEDIA1, 8, 0,
3130 msm_pcm_get_out_chs,
3131 msm_pcm_put_out_chs),
3132 SOC_SINGLE_EXT("MultiMedia2 Channels", SND_SOC_NOPM,
3133 MSM_FRONTEND_DAI_MULTIMEDIA2, 8, 0,
3134 msm_pcm_get_out_chs,
3135 msm_pcm_put_out_chs),
3136 SOC_SINGLE_EXT("MultiMedia3 Channels", SND_SOC_NOPM,
3137 MSM_FRONTEND_DAI_MULTIMEDIA3, 8, 0,
3138 msm_pcm_get_out_chs,
3139 msm_pcm_put_out_chs),
3140 SOC_SINGLE_EXT("MultiMedia4 Channels", SND_SOC_NOPM,
3141 MSM_FRONTEND_DAI_MULTIMEDIA4, 8, 0,
3142 msm_pcm_get_out_chs,
3143 msm_pcm_put_out_chs),
3144 SOC_SINGLE_EXT("MultiMedia5 Channels", SND_SOC_NOPM,
3145 MSM_FRONTEND_DAI_MULTIMEDIA5, 8, 0,
3146 msm_pcm_get_out_chs,
3147 msm_pcm_put_out_chs),
3148 SOC_SINGLE_EXT("MultiMedia6 Channels", SND_SOC_NOPM,
3149 MSM_FRONTEND_DAI_MULTIMEDIA6, 8, 0,
3150 msm_pcm_get_out_chs,
3151 msm_pcm_put_out_chs),
3152 {
3153 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3154 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3155 .name = "MultiMedia1 Channel Mixer",
3156 .info = msm_pcm_channel_mixer_info,
3157 .get = msm_pcm_channel_mixer_get,
3158 .put = msm_pcm_channel_mixer_put,
3159 .private_value = (unsigned long)&(mm1_channel_mux)
3160 },
3161 {
3162 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3163 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3164 .name = "MultiMedia2 Channel Mixer",
3165 .info = msm_pcm_channel_mixer_info,
3166 .get = msm_pcm_channel_mixer_get,
3167 .put = msm_pcm_channel_mixer_put,
3168 .private_value = (unsigned long)&(mm2_channel_mux)
3169 },
3170 {
3171 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3172 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3173 .name = "MultiMedia3 Channel Mixer",
3174 .info = msm_pcm_channel_mixer_info,
3175 .get = msm_pcm_channel_mixer_get,
3176 .put = msm_pcm_channel_mixer_put,
3177 .private_value = (unsigned long)&(mm3_channel_mux)
3178 },
3179 {
3180 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3181 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3182 .name = "MultiMedia4 Channel Mixer",
3183 .info = msm_pcm_channel_mixer_info,
3184 .get = msm_pcm_channel_mixer_get,
3185 .put = msm_pcm_channel_mixer_put,
3186 .private_value = (unsigned long)&(mm4_channel_mux)
3187 },
3188 {
3189 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3190 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3191 .name = "MultiMedia1 Output Channel1",
3192 .info = msm_pcm_channel_weight_info,
3193 .get = msm_pcm_channel_weight_get,
3194 .put = msm_pcm_channel_weight_put,
3195 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3196 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 0,}
3197 },
3198 {
3199 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3200 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3201 .name = "MultiMedia1 Output Channel2",
3202 .info = msm_pcm_channel_weight_info,
3203 .get = msm_pcm_channel_weight_get,
3204 .put = msm_pcm_channel_weight_put,
3205 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3206 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 1, }
3207 },
3208 {
3209 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3210 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3211 .name = "MultiMedia1 Output Channel3",
3212 .info = msm_pcm_channel_weight_info,
3213 .get = msm_pcm_channel_weight_get,
3214 .put = msm_pcm_channel_weight_put,
3215 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3216 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 2,}
3217 },
3218 {
3219 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3220 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3221 .name = "MultiMedia1 Output Channel4",
3222 .info = msm_pcm_channel_weight_info,
3223 .get = msm_pcm_channel_weight_get,
3224 .put = msm_pcm_channel_weight_put,
3225 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3226 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 3,}
3227 },
3228 {
3229 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3230 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3231 .name = "MultiMedia1 Output Channel5",
3232 .info = msm_pcm_channel_weight_info,
3233 .get = msm_pcm_channel_weight_get,
3234 .put = msm_pcm_channel_weight_put,
3235 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3236 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 4,}
3237 },
3238 {
3239 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3240 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3241 .name = "MultiMedia1 Output Channel6",
3242 .info = msm_pcm_channel_weight_info,
3243 .get = msm_pcm_channel_weight_get,
3244 .put = msm_pcm_channel_weight_put,
3245 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3246 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 5,}
3247 },
3248 {
3249 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3250 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3251 .name = "MultiMedia1 Output Channel7",
3252 .info = msm_pcm_channel_weight_info,
3253 .get = msm_pcm_channel_weight_get,
3254 .put = msm_pcm_channel_weight_put,
3255 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3256 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 6,}
3257 },
3258 {
3259 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3260 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3261 .name = "MultiMedia1 Output Channel8",
3262 .info = msm_pcm_channel_weight_info,
3263 .get = msm_pcm_channel_weight_get,
3264 .put = msm_pcm_channel_weight_put,
3265 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3266 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 7,}
3267 },
3268 {
3269 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3270 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3271 .name = "MultiMedia2 Output Channel1",
3272 .info = msm_pcm_channel_weight_info,
3273 .get = msm_pcm_channel_weight_get,
3274 .put = msm_pcm_channel_weight_put,
3275 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3276 {.shift = MSM_FRONTEND_DAI_MULTIMEDIA2, .rshift = 0,}
3277 },
3278 {
3279 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3280 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3281 .name = "MultiMedia2 Output Channel2",
3282 .info = msm_pcm_channel_weight_info,
3283 .get = msm_pcm_channel_weight_get,
3284 .put = msm_pcm_channel_weight_put,
3285 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3286 {.shift = MSM_FRONTEND_DAI_MULTIMEDIA2, .rshift = 1,}
3287 },
3288 {
3289 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3290 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3291 .name = "MultiMedia2 Output Channel3",
3292 .info = msm_pcm_channel_weight_info,
3293 .get = msm_pcm_channel_weight_get,
3294 .put = msm_pcm_channel_weight_put,
3295 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3296 {.shift = MSM_FRONTEND_DAI_MULTIMEDIA2, .rshift = 2,}
3297 },
3298 {
3299 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3300 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3301 .name = "MultiMedia3 Output Channel1",
3302 .info = msm_pcm_channel_weight_info,
3303 .get = msm_pcm_channel_weight_get,
3304 .put = msm_pcm_channel_weight_put,
3305 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3306 {.shift = MSM_FRONTEND_DAI_MULTIMEDIA3, .rshift = 0,}
3307 },
3308 {
3309 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3310 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3311 .name = "MultiMedia3 Output Channel2",
3312 .info = msm_pcm_channel_weight_info,
3313 .get = msm_pcm_channel_weight_get,
3314 .put = msm_pcm_channel_weight_put,
3315 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3316 {.shift = MSM_FRONTEND_DAI_MULTIMEDIA3, .rshift = 1,}
3317 },
3318 {
3319 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3320 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3321 .name = "MultiMedia1 Channel1",
3322 .info = msm_pcm_channel_input_be_info,
3323 .get = msm_pcm_channel_input_be_get,
3324 .put = msm_pcm_channel_input_be_put,
3325 .private_value = (unsigned long)&(mm1_ch1_enum)
3326 },
3327 {
3328 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3329 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3330 .name = "MultiMedia1 Channel2",
3331 .info = msm_pcm_channel_input_be_info,
3332 .get = msm_pcm_channel_input_be_get,
3333 .put = msm_pcm_channel_input_be_put,
3334 .private_value = (unsigned long)&(mm1_ch2_enum)
3335 },
3336 {
3337 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3338 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3339 .name = "MultiMedia1 Channel3",
3340 .info = msm_pcm_channel_input_be_info,
3341 .get = msm_pcm_channel_input_be_get,
3342 .put = msm_pcm_channel_input_be_put,
3343 .private_value = (unsigned long)&(mm1_ch3_enum)
3344 },
3345 {
3346 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3347 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3348 .name = "MultiMedia1 Channel4",
3349 .info = msm_pcm_channel_input_be_info,
3350 .get = msm_pcm_channel_input_be_get,
3351 .put = msm_pcm_channel_input_be_put,
3352 .private_value = (unsigned long)&(mm1_ch4_enum)
3353 },
3354 {
3355 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3356 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3357 .name = "MultiMedia1 Channel5",
3358 .info = msm_pcm_channel_input_be_info,
3359 .get = msm_pcm_channel_input_be_get,
3360 .put = msm_pcm_channel_input_be_put,
3361 .private_value = (unsigned long)&(mm1_ch5_enum)
3362 },
3363 {
3364 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3365 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3366 .name = "MultiMedia1 Channel6",
3367 .info = msm_pcm_channel_input_be_info,
3368 .get = msm_pcm_channel_input_be_get,
3369 .put = msm_pcm_channel_input_be_put,
3370 .private_value = (unsigned long)&(mm1_ch6_enum)
3371 },
3372 {
3373 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3374 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3375 .name = "MultiMedia1 Channel7",
3376 .info = msm_pcm_channel_input_be_info,
3377 .get = msm_pcm_channel_input_be_get,
3378 .put = msm_pcm_channel_input_be_put,
3379 .private_value = (unsigned long)&(mm1_ch7_enum)
3380 },
3381 {
3382 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3383 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3384 .name = "MultiMedia1 Channel8",
3385 .info = msm_pcm_channel_input_be_info,
3386 .get = msm_pcm_channel_input_be_get,
3387 .put = msm_pcm_channel_input_be_put,
3388 .private_value = (unsigned long)&(mm1_ch8_enum)
3389 },
3390};
3391static int msm_ec_ref_ch_get(struct snd_kcontrol *kcontrol,
3392 struct snd_ctl_elem_value *ucontrol)
3393{
3394 ucontrol->value.integer.value[0] = msm_ec_ref_ch;
3395 pr_debug("%s: msm_ec_ref_ch = %ld\n", __func__,
3396 ucontrol->value.integer.value[0]);
3397 return 0;
3398}
3399
3400static int msm_ec_ref_ch_put(struct snd_kcontrol *kcontrol,
3401 struct snd_ctl_elem_value *ucontrol)
3402{
3403 msm_ec_ref_ch = ucontrol->value.integer.value[0];
3404 pr_debug("%s: msm_ec_ref_ch = %d\n", __func__, msm_ec_ref_ch);
3405 adm_num_ec_ref_rx_chans(msm_ec_ref_ch);
3406 return 0;
3407}
3408
3409static const char *const ec_ref_ch_text[] = {"Zero", "One", "Two", "Three",
3410 "Four", "Five", "Six", "Seven", "Eight"};
3411
3412static int msm_ec_ref_bit_format_get(struct snd_kcontrol *kcontrol,
3413 struct snd_ctl_elem_value *ucontrol)
3414{
3415 switch (msm_ec_ref_bit_format) {
3416 case SNDRV_PCM_FORMAT_S24_LE:
3417 ucontrol->value.integer.value[0] = 2;
3418 break;
3419 case SNDRV_PCM_FORMAT_S16_LE:
3420 ucontrol->value.integer.value[0] = 1;
3421 break;
3422 default:
3423 ucontrol->value.integer.value[0] = 0;
3424 break;
3425 }
3426 pr_debug("%s: msm_ec_ref_bit_format = %ld\n",
3427 __func__, ucontrol->value.integer.value[0]);
3428 return 0;
3429}
3430
3431static int msm_ec_ref_bit_format_put(struct snd_kcontrol *kcontrol,
3432 struct snd_ctl_elem_value *ucontrol)
3433{
3434 u16 bit_width = 0;
3435
3436 switch (ucontrol->value.integer.value[0]) {
3437 case 2:
3438 msm_ec_ref_bit_format = SNDRV_PCM_FORMAT_S24_LE;
3439 break;
3440 case 1:
3441 msm_ec_ref_bit_format = SNDRV_PCM_FORMAT_S16_LE;
3442 break;
3443 default:
3444 msm_ec_ref_bit_format = 0;
3445 break;
3446 }
3447
3448 if (msm_ec_ref_bit_format == SNDRV_PCM_FORMAT_S16_LE)
3449 bit_width = 16;
3450 else if (msm_ec_ref_bit_format == SNDRV_PCM_FORMAT_S24_LE)
3451 bit_width = 24;
3452
3453 pr_debug("%s: msm_ec_ref_bit_format = %d\n",
3454 __func__, msm_ec_ref_bit_format);
3455 adm_ec_ref_rx_bit_width(bit_width);
3456 return 0;
3457}
3458
3459static char const *ec_ref_bit_format_text[] = {"0", "S16_LE", "S24_LE"};
3460
3461static int msm_ec_ref_rate_get(struct snd_kcontrol *kcontrol,
3462 struct snd_ctl_elem_value *ucontrol)
3463{
3464 ucontrol->value.integer.value[0] = msm_ec_ref_sampling_rate;
3465 pr_debug("%s: msm_ec_ref_sampling_rate = %ld\n",
3466 __func__, ucontrol->value.integer.value[0]);
3467 return 0;
3468}
3469
3470static int msm_ec_ref_rate_put(struct snd_kcontrol *kcontrol,
3471 struct snd_ctl_elem_value *ucontrol)
3472{
3473 switch (ucontrol->value.integer.value[0]) {
3474 case 0:
3475 msm_ec_ref_sampling_rate = 0;
3476 break;
3477 case 1:
3478 msm_ec_ref_sampling_rate = 8000;
3479 break;
3480 case 2:
3481 msm_ec_ref_sampling_rate = 16000;
3482 break;
3483 case 3:
3484 msm_ec_ref_sampling_rate = 32000;
3485 break;
3486 case 4:
3487 msm_ec_ref_sampling_rate = 44100;
3488 break;
3489 case 5:
3490 msm_ec_ref_sampling_rate = 48000;
3491 break;
3492 case 6:
3493 msm_ec_ref_sampling_rate = 96000;
3494 break;
3495 case 7:
3496 msm_ec_ref_sampling_rate = 192000;
3497 break;
3498 case 8:
3499 msm_ec_ref_sampling_rate = 384000;
3500 break;
3501 default:
3502 msm_ec_ref_sampling_rate = 48000;
3503 break;
3504 }
3505 pr_debug("%s: msm_ec_ref_sampling_rate = %d\n",
3506 __func__, msm_ec_ref_sampling_rate);
3507 adm_ec_ref_rx_sampling_rate(msm_ec_ref_sampling_rate);
3508 return 0;
3509}
3510
3511static const char *const ec_ref_rate_text[] = {"0", "8000", "16000",
3512 "32000", "44100", "48000", "96000", "192000", "384000"};
3513
3514static const struct soc_enum msm_route_ec_ref_params_enum[] = {
3515 SOC_ENUM_SINGLE_EXT(9, ec_ref_ch_text),
3516 SOC_ENUM_SINGLE_EXT(3, ec_ref_bit_format_text),
3517 SOC_ENUM_SINGLE_EXT(9, ec_ref_rate_text),
3518};
3519
3520static const struct snd_kcontrol_new ec_ref_param_controls[] = {
3521 SOC_ENUM_EXT("EC Reference Channels", msm_route_ec_ref_params_enum[0],
3522 msm_ec_ref_ch_get, msm_ec_ref_ch_put),
3523 SOC_ENUM_EXT("EC Reference Bit Format", msm_route_ec_ref_params_enum[1],
3524 msm_ec_ref_bit_format_get, msm_ec_ref_bit_format_put),
3525 SOC_ENUM_EXT("EC Reference SampleRate", msm_route_ec_ref_params_enum[2],
3526 msm_ec_ref_rate_get, msm_ec_ref_rate_put),
3527};
3528
3529static int msm_routing_ec_ref_rx_get(struct snd_kcontrol *kcontrol,
3530 struct snd_ctl_elem_value *ucontrol)
3531{
3532 pr_debug("%s: ec_ref_rx = %d", __func__, msm_route_ec_ref_rx);
3533 mutex_lock(&routing_lock);
3534 ucontrol->value.integer.value[0] = msm_route_ec_ref_rx;
3535 mutex_unlock(&routing_lock);
3536 return 0;
3537}
3538
3539static int msm_routing_ec_ref_rx_put(struct snd_kcontrol *kcontrol,
3540 struct snd_ctl_elem_value *ucontrol)
3541{
3542 int ec_ref_port_id;
Asish Bhattacharya34504582017-08-08 12:55:01 +05303543 struct snd_soc_dapm_widget *widget =
3544 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303545 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
3546 struct snd_soc_dapm_update *update = NULL;
3547
3548
3549 mutex_lock(&routing_lock);
3550 switch (ucontrol->value.integer.value[0]) {
3551 case 0:
3552 msm_route_ec_ref_rx = 0;
3553 ec_ref_port_id = AFE_PORT_INVALID;
3554 break;
3555 case 1:
3556 msm_route_ec_ref_rx = 1;
3557 ec_ref_port_id = SLIMBUS_0_RX;
3558 break;
3559 case 2:
3560 msm_route_ec_ref_rx = 2;
3561 ec_ref_port_id = AFE_PORT_ID_PRIMARY_MI2S_RX;
3562 break;
3563 case 3:
3564 msm_route_ec_ref_rx = 3;
3565 ec_ref_port_id = AFE_PORT_ID_PRIMARY_MI2S_TX;
3566 break;
3567 case 4:
3568 msm_route_ec_ref_rx = 4;
3569 ec_ref_port_id = AFE_PORT_ID_SECONDARY_MI2S_TX;
3570 break;
3571 case 5:
3572 msm_route_ec_ref_rx = 5;
3573 ec_ref_port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
3574 break;
3575 case 6:
3576 msm_route_ec_ref_rx = 6;
3577 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_MI2S_TX;
3578 break;
3579 case 7:
3580 msm_route_ec_ref_rx = 7;
3581 ec_ref_port_id = AFE_PORT_ID_SECONDARY_MI2S_RX;
3582 break;
3583 case 9:
3584 msm_route_ec_ref_rx = 9;
3585 ec_ref_port_id = SLIMBUS_5_RX;
3586 break;
3587 case 10:
3588 msm_route_ec_ref_rx = 10;
3589 ec_ref_port_id = SLIMBUS_1_TX;
3590 break;
3591 case 11:
3592 msm_route_ec_ref_rx = 11;
3593 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_TDM_TX_1;
3594 break;
3595 case 12:
3596 msm_route_ec_ref_rx = 12;
3597 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_TDM_RX;
3598 break;
3599 case 13:
3600 msm_route_ec_ref_rx = 13;
3601 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_TDM_RX_1;
3602 break;
3603 case 14:
3604 msm_route_ec_ref_rx = 14;
3605 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_TDM_RX_2;
3606 break;
3607 case 15:
3608 msm_route_ec_ref_rx = 15;
3609 ec_ref_port_id = SLIMBUS_6_RX;
3610 break;
3611 case 16:
3612 msm_route_ec_ref_rx = 16;
3613 ec_ref_port_id = AFE_PORT_ID_TERTIARY_MI2S_RX;
3614 break;
3615 case 17:
3616 msm_route_ec_ref_rx = 17;
3617 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_MI2S_RX;
3618 break;
3619 case 18:
3620 msm_route_ec_ref_rx = 18;
3621 ec_ref_port_id = AFE_PORT_ID_TERTIARY_TDM_TX;
3622 break;
3623 case 19:
3624 msm_route_ec_ref_rx = 19;
3625 ec_ref_port_id = AFE_PORT_ID_USB_RX;
3626 break;
3627 case 20:
3628 msm_route_ec_ref_rx = 20;
3629 ec_ref_port_id = AFE_PORT_ID_INT0_MI2S_RX;
3630 break;
3631 case 21:
3632 msm_route_ec_ref_rx = 21;
3633 ec_ref_port_id = AFE_PORT_ID_INT4_MI2S_RX;
3634 break;
3635 case 22:
3636 msm_route_ec_ref_rx = 22;
3637 ec_ref_port_id = AFE_PORT_ID_INT3_MI2S_TX;
3638 break;
Aalique Grahamee4fd7d52017-11-28 13:24:13 -08003639 case 23:
3640 msm_route_ec_ref_rx = 23;
3641 ec_ref_port_id = AFE_PORT_ID_HDMI_OVER_DP_RX;
3642 break;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303643 default:
3644 msm_route_ec_ref_rx = 0; /* NONE */
3645 pr_err("%s EC ref rx %ld not valid\n",
3646 __func__, ucontrol->value.integer.value[0]);
3647 ec_ref_port_id = AFE_PORT_INVALID;
3648 break;
3649 }
3650 adm_ec_ref_rx_id(ec_ref_port_id);
3651 pr_debug("%s: msm_route_ec_ref_rx = %d\n",
3652 __func__, msm_route_ec_ref_rx);
3653 mutex_unlock(&routing_lock);
3654 snd_soc_dapm_mux_update_power(widget->dapm, kcontrol,
3655 msm_route_ec_ref_rx, e, update);
3656 return 0;
3657}
3658
3659static const char *const ec_ref_rx[] = { "None", "SLIM_RX", "I2S_RX",
3660 "PRI_MI2S_TX", "SEC_MI2S_TX",
3661 "TERT_MI2S_TX", "QUAT_MI2S_TX", "SEC_I2S_RX", "PROXY_RX",
3662 "SLIM_5_RX", "SLIM_1_TX", "QUAT_TDM_TX_1",
3663 "QUAT_TDM_RX_0", "QUAT_TDM_RX_1", "QUAT_TDM_RX_2", "SLIM_6_RX",
3664 "TERT_MI2S_RX", "QUAT_MI2S_RX", "TERT_TDM_TX_0", "USB_AUDIO_RX",
Aalique Grahamee4fd7d52017-11-28 13:24:13 -08003665 "INT0_MI2S_RX", "INT4_MI2S_RX", "INT3_MI2S_TX", "DISPLAY_PORT"};
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303666
3667static const struct soc_enum msm_route_ec_ref_rx_enum[] = {
3668 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(ec_ref_rx), ec_ref_rx),
3669};
3670
3671static const struct snd_kcontrol_new ext_ec_ref_mux_ul1 =
3672 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL1 MUX Mux",
3673 msm_route_ec_ref_rx_enum[0],
3674 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3675
3676static const struct snd_kcontrol_new ext_ec_ref_mux_ul2 =
3677 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL2 MUX Mux",
3678 msm_route_ec_ref_rx_enum[0],
3679 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3680
3681static const struct snd_kcontrol_new ext_ec_ref_mux_ul3 =
3682 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL3 MUX Mux",
3683 msm_route_ec_ref_rx_enum[0],
3684 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3685
3686static const struct snd_kcontrol_new ext_ec_ref_mux_ul4 =
3687 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL4 MUX Mux",
3688 msm_route_ec_ref_rx_enum[0],
3689 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3690
3691static const struct snd_kcontrol_new ext_ec_ref_mux_ul5 =
3692 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL5 MUX Mux",
3693 msm_route_ec_ref_rx_enum[0],
3694 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3695
3696static const struct snd_kcontrol_new ext_ec_ref_mux_ul6 =
3697 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL6 MUX Mux",
3698 msm_route_ec_ref_rx_enum[0],
3699 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3700
3701static const struct snd_kcontrol_new ext_ec_ref_mux_ul8 =
3702 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL8 MUX Mux",
3703 msm_route_ec_ref_rx_enum[0],
3704 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3705
3706static const struct snd_kcontrol_new ext_ec_ref_mux_ul9 =
3707 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL9 MUX Mux",
3708 msm_route_ec_ref_rx_enum[0],
3709 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3710
Asish Bhattacharya34504582017-08-08 12:55:01 +05303711static const struct snd_kcontrol_new ext_ec_ref_mux_ul16 =
3712 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL16 MUX Mux",
3713 msm_route_ec_ref_rx_enum[0],
3714 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3715
Laxminath Kasam38070be2017-08-17 18:21:59 +05303716static const struct snd_kcontrol_new ext_ec_ref_mux_ul10 =
3717 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL10 MUX Mux",
3718 msm_route_ec_ref_rx_enum[0],
3719 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3720
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303721static const struct snd_kcontrol_new ext_ec_ref_mux_ul17 =
3722 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL17 MUX Mux",
3723 msm_route_ec_ref_rx_enum[0],
3724 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3725
3726static const struct snd_kcontrol_new ext_ec_ref_mux_ul18 =
3727 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL18 MUX Mux",
3728 msm_route_ec_ref_rx_enum[0],
3729 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3730
3731static const struct snd_kcontrol_new ext_ec_ref_mux_ul19 =
3732 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL19 MUX Mux",
3733 msm_route_ec_ref_rx_enum[0],
3734 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3735
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05303736static const struct snd_kcontrol_new ext_ec_ref_mux_ul28 =
3737 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL28 MUX Mux",
3738 msm_route_ec_ref_rx_enum[0],
3739 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3740
3741static const struct snd_kcontrol_new ext_ec_ref_mux_ul29 =
3742 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL29 MUX Mux",
3743 msm_route_ec_ref_rx_enum[0],
3744 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3745
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303746static int msm_routing_ext_ec_get(struct snd_kcontrol *kcontrol,
3747 struct snd_ctl_elem_value *ucontrol)
3748{
3749 pr_debug("%s: ext_ec_ref_rx = %x\n", __func__, msm_route_ext_ec_ref);
3750
3751 mutex_lock(&routing_lock);
3752 ucontrol->value.integer.value[0] = msm_route_ext_ec_ref;
3753 mutex_unlock(&routing_lock);
3754 return 0;
3755}
3756
3757static int msm_routing_ext_ec_put(struct snd_kcontrol *kcontrol,
3758 struct snd_ctl_elem_value *ucontrol)
3759{
Asish Bhattacharya34504582017-08-08 12:55:01 +05303760 struct snd_soc_dapm_widget *widget =
3761 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303762 int mux = ucontrol->value.enumerated.item[0];
3763 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
3764 int ret = 1;
3765 bool state = true;
3766 uint16_t ext_ec_ref_port_id;
3767 struct snd_soc_dapm_update *update = NULL;
3768
3769 if (mux >= e->items) {
3770 pr_err("%s: Invalid mux value %d\n", __func__, mux);
3771 return -EINVAL;
3772 }
3773
3774 mutex_lock(&routing_lock);
3775 msm_route_ext_ec_ref = ucontrol->value.integer.value[0];
3776
3777 switch (msm_route_ext_ec_ref) {
3778 case EXT_EC_REF_PRI_MI2S_TX:
3779 ext_ec_ref_port_id = AFE_PORT_ID_PRIMARY_MI2S_TX;
3780 break;
3781 case EXT_EC_REF_SEC_MI2S_TX:
3782 ext_ec_ref_port_id = AFE_PORT_ID_SECONDARY_MI2S_TX;
3783 break;
3784 case EXT_EC_REF_TERT_MI2S_TX:
3785 ext_ec_ref_port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
3786 break;
3787 case EXT_EC_REF_QUAT_MI2S_TX:
3788 ext_ec_ref_port_id = AFE_PORT_ID_QUATERNARY_MI2S_TX;
3789 break;
3790 case EXT_EC_REF_QUIN_MI2S_TX:
3791 ext_ec_ref_port_id = AFE_PORT_ID_QUINARY_MI2S_TX;
3792 break;
3793 case EXT_EC_REF_SLIM_1_TX:
3794 ext_ec_ref_port_id = SLIMBUS_1_TX;
3795 break;
3796 case EXT_EC_REF_NONE:
3797 default:
3798 ext_ec_ref_port_id = AFE_PORT_INVALID;
3799 state = false;
3800 break;
3801 }
3802
3803 pr_debug("%s: val = %d ext_ec_ref_port_id = 0x%0x state = %d\n",
3804 __func__, msm_route_ext_ec_ref, ext_ec_ref_port_id, state);
3805
3806 if (!voc_set_ext_ec_ref_port_id(ext_ec_ref_port_id, state)) {
3807 mutex_unlock(&routing_lock);
3808 snd_soc_dapm_mux_update_power(widget->dapm, kcontrol, mux, e,
3809 update);
3810 } else {
3811 ret = -EINVAL;
3812 mutex_unlock(&routing_lock);
3813 }
3814 return ret;
3815}
3816
3817static const char * const ext_ec_ref_rx[] = {"NONE", "PRI_MI2S_TX",
3818 "SEC_MI2S_TX", "TERT_MI2S_TX",
3819 "QUAT_MI2S_TX", "QUIN_MI2S_TX",
3820 "SLIM_1_TX"};
3821
3822static const struct soc_enum msm_route_ext_ec_ref_rx_enum[] = {
3823 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(ext_ec_ref_rx), ext_ec_ref_rx),
3824};
3825
3826static const struct snd_kcontrol_new voc_ext_ec_mux =
3827 SOC_DAPM_ENUM_EXT("VOC_EXT_EC MUX Mux", msm_route_ext_ec_ref_rx_enum[0],
3828 msm_routing_ext_ec_get, msm_routing_ext_ec_put);
3829
3830
3831static const struct snd_kcontrol_new pri_i2s_rx_mixer_controls[] = {
3832 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_I2S_RX,
3833 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
3834 msm_routing_put_audio_mixer),
3835 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_I2S_RX,
3836 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
3837 msm_routing_put_audio_mixer),
3838 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_I2S_RX,
3839 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
3840 msm_routing_put_audio_mixer),
3841 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_I2S_RX,
3842 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
3843 msm_routing_put_audio_mixer),
3844 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_I2S_RX,
3845 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
3846 msm_routing_put_audio_mixer),
3847 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_I2S_RX,
3848 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
3849 msm_routing_put_audio_mixer),
3850 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_I2S_RX,
3851 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
3852 msm_routing_put_audio_mixer),
3853 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_I2S_RX,
3854 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
3855 msm_routing_put_audio_mixer),
3856 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_I2S_RX,
3857 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
3858 msm_routing_put_audio_mixer),
3859 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_I2S_RX,
3860 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
3861 msm_routing_put_audio_mixer),
3862 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_I2S_RX,
3863 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
3864 msm_routing_put_audio_mixer),
3865 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_I2S_RX,
3866 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
3867 msm_routing_put_audio_mixer),
3868 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_I2S_RX,
3869 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
3870 msm_routing_put_audio_mixer),
3871 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_I2S_RX,
3872 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
3873 msm_routing_put_audio_mixer),
3874 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_I2S_RX,
3875 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
3876 msm_routing_put_audio_mixer),
3877 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_I2S_RX,
3878 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
3879 msm_routing_put_audio_mixer),
3880 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_PRI_I2S_RX,
3881 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
3882 msm_routing_put_audio_mixer),
3883 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_PRI_I2S_RX,
3884 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
3885 msm_routing_put_audio_mixer),
3886 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_PRI_I2S_RX,
3887 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
3888 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05303889 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_PRI_I2S_RX,
3890 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
3891 msm_routing_put_audio_mixer),
3892 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_PRI_I2S_RX,
3893 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
3894 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303895};
3896
3897static const struct snd_kcontrol_new sec_i2s_rx_mixer_controls[] = {
3898 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_I2S_RX,
3899 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
3900 msm_routing_put_audio_mixer),
3901 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_I2S_RX,
3902 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
3903 msm_routing_put_audio_mixer),
3904 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_I2S_RX,
3905 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
3906 msm_routing_put_audio_mixer),
3907 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_I2S_RX,
3908 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
3909 msm_routing_put_audio_mixer),
3910 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_I2S_RX,
3911 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
3912 msm_routing_put_audio_mixer),
3913 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_I2S_RX,
3914 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
3915 msm_routing_put_audio_mixer),
3916 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_I2S_RX,
3917 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
3918 msm_routing_put_audio_mixer),
3919 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_I2S_RX,
3920 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
3921 msm_routing_put_audio_mixer),
3922 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_I2S_RX,
3923 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
3924 msm_routing_put_audio_mixer),
3925 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_I2S_RX,
3926 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
3927 msm_routing_put_audio_mixer),
3928 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_I2S_RX,
3929 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
3930 msm_routing_put_audio_mixer),
3931 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_I2S_RX,
3932 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
3933 msm_routing_put_audio_mixer),
3934 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_I2S_RX,
3935 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
3936 msm_routing_put_audio_mixer),
3937 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_I2S_RX,
3938 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
3939 msm_routing_put_audio_mixer),
3940 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_I2S_RX,
3941 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
3942 msm_routing_put_audio_mixer),
3943 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_I2S_RX,
3944 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
3945 msm_routing_put_audio_mixer),
3946 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SEC_I2S_RX,
3947 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
3948 msm_routing_put_audio_mixer),
3949 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SEC_I2S_RX,
3950 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
3951 msm_routing_put_audio_mixer),
3952 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SEC_I2S_RX,
3953 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
3954 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05303955 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_SEC_I2S_RX,
3956 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
3957 msm_routing_put_audio_mixer),
3958 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_SEC_I2S_RX,
3959 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
3960 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303961};
3962
3963static const struct snd_kcontrol_new spdif_rx_mixer_controls[] = {
3964 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SPDIF_RX,
3965 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
3966 msm_routing_put_audio_mixer),
3967 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SPDIF_RX,
3968 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
3969 msm_routing_put_audio_mixer),
3970 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SPDIF_RX,
3971 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
3972 msm_routing_put_audio_mixer),
3973 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SPDIF_RX,
3974 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
3975 msm_routing_put_audio_mixer),
3976 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SPDIF_RX,
3977 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
3978 msm_routing_put_audio_mixer),
3979 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SPDIF_RX,
3980 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
3981 msm_routing_put_audio_mixer),
3982 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SPDIF_RX,
3983 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
3984 msm_routing_put_audio_mixer),
3985 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SPDIF_RX,
3986 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
3987 msm_routing_put_audio_mixer),
3988 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SPDIF_RX,
3989 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
3990 msm_routing_put_audio_mixer),
3991 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SPDIF_RX,
3992 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
3993 msm_routing_put_audio_mixer),
3994 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SPDIF_RX,
3995 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
3996 msm_routing_put_audio_mixer),
3997 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SPDIF_RX,
3998 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
3999 msm_routing_put_audio_mixer),
4000 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SPDIF_RX,
4001 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4002 msm_routing_put_audio_mixer),
4003 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SPDIF_RX,
4004 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4005 msm_routing_put_audio_mixer),
4006 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SPDIF_RX,
4007 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4008 msm_routing_put_audio_mixer),
4009 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SPDIF_RX,
4010 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4011 msm_routing_put_audio_mixer),
4012 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SPDIF_RX,
4013 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4014 msm_routing_put_audio_mixer),
4015 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SPDIF_RX,
4016 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4017 msm_routing_put_audio_mixer),
4018 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SPDIF_RX,
4019 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4020 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304021 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_SPDIF_RX,
4022 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4023 msm_routing_put_audio_mixer),
4024 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_SPDIF_RX,
4025 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4026 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304027};
4028
4029static const struct snd_kcontrol_new slimbus_2_rx_mixer_controls[] = {
4030 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4031 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4032 msm_routing_put_audio_mixer),
4033 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4034 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4035 msm_routing_put_audio_mixer),
4036 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4037 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4038 msm_routing_put_audio_mixer),
4039 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4040 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4041 msm_routing_put_audio_mixer),
4042 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4043 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4044 msm_routing_put_audio_mixer),
4045 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4046 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4047 msm_routing_put_audio_mixer),
4048 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4049 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4050 msm_routing_put_audio_mixer),
4051 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4052 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4053 msm_routing_put_audio_mixer),
4054 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4055 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4056 msm_routing_put_audio_mixer),
4057 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4058 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4059 msm_routing_put_audio_mixer),
4060 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4061 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4062 msm_routing_put_audio_mixer),
4063 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4064 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4065 msm_routing_put_audio_mixer),
4066 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4067 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4068 msm_routing_put_audio_mixer),
4069 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4070 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4071 msm_routing_put_audio_mixer),
4072 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4073 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4074 msm_routing_put_audio_mixer),
4075 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4076 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4077 msm_routing_put_audio_mixer),
4078};
4079
4080static const struct snd_kcontrol_new slimbus_5_rx_mixer_controls[] = {
4081 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4082 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4083 msm_routing_put_audio_mixer),
4084 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4085 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4086 msm_routing_put_audio_mixer),
4087 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4088 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4089 msm_routing_put_audio_mixer),
4090 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4091 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4092 msm_routing_put_audio_mixer),
4093 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4094 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4095 msm_routing_put_audio_mixer),
4096 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4097 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4098 msm_routing_put_audio_mixer),
4099 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4100 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4101 msm_routing_put_audio_mixer),
4102 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4103 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4104 msm_routing_put_audio_mixer),
4105 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4106 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4107 msm_routing_put_audio_mixer),
4108 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4109 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4110 msm_routing_put_audio_mixer),
4111 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4112 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4113 msm_routing_put_audio_mixer),
4114 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4115 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4116 msm_routing_put_audio_mixer),
4117 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4118 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4119 msm_routing_put_audio_mixer),
4120 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4121 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4122 msm_routing_put_audio_mixer),
4123 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4124 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4125 msm_routing_put_audio_mixer),
4126 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4127 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4128 msm_routing_put_audio_mixer),
4129 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4130 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4131 msm_routing_put_audio_mixer),
4132 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4133 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4134 msm_routing_put_audio_mixer),
4135 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4136 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4137 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304138 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4139 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4140 msm_routing_put_audio_mixer),
4141 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4142 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4143 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304144};
4145
4146static const struct snd_kcontrol_new slimbus_rx_mixer_controls[] = {
4147 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4148 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4149 msm_routing_put_audio_mixer),
4150 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4151 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4152 msm_routing_put_audio_mixer),
4153 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4154 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4155 msm_routing_put_audio_mixer),
4156 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4157 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4158 msm_routing_put_audio_mixer),
4159 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4160 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4161 msm_routing_put_audio_mixer),
4162 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4163 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4164 msm_routing_put_audio_mixer),
4165 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4166 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4167 msm_routing_put_audio_mixer),
4168 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4169 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4170 msm_routing_put_audio_mixer),
4171 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4172 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4173 msm_routing_put_audio_mixer),
4174 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4175 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4176 msm_routing_put_audio_mixer),
4177 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4178 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4179 msm_routing_put_audio_mixer),
4180 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4181 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4182 msm_routing_put_audio_mixer),
4183 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4184 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4185 msm_routing_put_audio_mixer),
4186 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4187 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4188 msm_routing_put_audio_mixer),
4189 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4190 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4191 msm_routing_put_audio_mixer),
4192 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4193 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4194 msm_routing_put_audio_mixer),
4195 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4196 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4197 msm_routing_put_audio_mixer),
4198 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4199 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4200 msm_routing_put_audio_mixer),
4201 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4202 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4203 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304204 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4205 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4206 msm_routing_put_audio_mixer),
4207 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4208 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4209 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304210};
4211
4212static const struct snd_kcontrol_new mi2s_rx_mixer_controls[] = {
4213 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_MI2S_RX,
4214 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4215 msm_routing_put_audio_mixer),
4216 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_MI2S_RX,
4217 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4218 msm_routing_put_audio_mixer),
4219 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_MI2S_RX,
4220 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4221 msm_routing_put_audio_mixer),
4222 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_MI2S_RX,
4223 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4224 msm_routing_put_audio_mixer),
4225 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_MI2S_RX,
4226 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4227 msm_routing_put_audio_mixer),
4228 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_MI2S_RX,
4229 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4230 msm_routing_put_audio_mixer),
4231 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_MI2S_RX,
4232 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4233 msm_routing_put_audio_mixer),
4234 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_MI2S_RX,
4235 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4236 msm_routing_put_audio_mixer),
4237 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_MI2S_RX,
4238 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4239 msm_routing_put_audio_mixer),
4240 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_MI2S_RX,
4241 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4242 msm_routing_put_audio_mixer),
4243 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_MI2S_RX,
4244 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4245 msm_routing_put_audio_mixer),
4246 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_MI2S_RX,
4247 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4248 msm_routing_put_audio_mixer),
4249 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_MI2S_RX,
4250 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4251 msm_routing_put_audio_mixer),
4252 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_MI2S_RX,
4253 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4254 msm_routing_put_audio_mixer),
4255 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_MI2S_RX,
4256 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4257 msm_routing_put_audio_mixer),
4258 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_MI2S_RX,
4259 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4260 msm_routing_put_audio_mixer),
4261 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_MI2S_RX,
4262 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4263 msm_routing_put_audio_mixer),
4264 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_MI2S_RX,
4265 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4266 msm_routing_put_audio_mixer),
4267 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_MI2S_RX,
4268 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4269 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304270 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_MI2S_RX,
4271 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4272 msm_routing_put_audio_mixer),
4273 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_MI2S_RX,
4274 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4275 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304276};
4277
4278static const struct snd_kcontrol_new quaternary_mi2s_rx_mixer_controls[] = {
4279 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4280 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4281 msm_routing_put_audio_mixer),
4282 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4283 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4284 msm_routing_put_audio_mixer),
4285 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4286 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4287 msm_routing_put_audio_mixer),
4288 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4289 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4290 msm_routing_put_audio_mixer),
4291 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4292 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4293 msm_routing_put_audio_mixer),
4294 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4295 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4296 msm_routing_put_audio_mixer),
4297 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4298 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4299 msm_routing_put_audio_mixer),
4300 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4301 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4302 msm_routing_put_audio_mixer),
4303 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4304 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4305 msm_routing_put_audio_mixer),
4306 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4307 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4308 msm_routing_put_audio_mixer),
4309 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4310 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4311 msm_routing_put_audio_mixer),
4312 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4313 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4314 msm_routing_put_audio_mixer),
4315 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4316 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4317 msm_routing_put_audio_mixer),
4318 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4319 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4320 msm_routing_put_audio_mixer),
4321 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4322 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4323 msm_routing_put_audio_mixer),
4324 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4325 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4326 msm_routing_put_audio_mixer),
4327 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4328 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4329 msm_routing_put_audio_mixer),
4330 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4331 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4332 msm_routing_put_audio_mixer),
4333 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4334 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4335 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304336 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4337 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4338 msm_routing_put_audio_mixer),
4339 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4340 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4341 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304342};
4343
4344static const struct snd_kcontrol_new quinary_mi2s_rx_mixer_controls[] = {
4345 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4346 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4347 msm_routing_put_audio_mixer),
4348 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4349 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4350 msm_routing_put_audio_mixer),
4351 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4352 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4353 msm_routing_put_audio_mixer),
4354 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4355 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4356 msm_routing_put_audio_mixer),
4357 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4358 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4359 msm_routing_put_audio_mixer),
4360 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4361 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4362 msm_routing_put_audio_mixer),
4363 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4364 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4365 msm_routing_put_audio_mixer),
4366 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4367 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4368 msm_routing_put_audio_mixer),
4369 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4370 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4371 msm_routing_put_audio_mixer),
4372 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4373 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4374 msm_routing_put_audio_mixer),
4375 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4376 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4377 msm_routing_put_audio_mixer),
4378 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4379 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4380 msm_routing_put_audio_mixer),
4381 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4382 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4383 msm_routing_put_audio_mixer),
4384 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4385 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4386 msm_routing_put_audio_mixer),
4387 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4388 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4389 msm_routing_put_audio_mixer),
4390 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4391 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4392 msm_routing_put_audio_mixer),
4393 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4394 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4395 msm_routing_put_audio_mixer),
4396 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4397 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4398 msm_routing_put_audio_mixer),
4399 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4400 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4401 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304402 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4403 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4404 msm_routing_put_audio_mixer),
4405 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4406 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4407 msm_routing_put_audio_mixer),
4408
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304409};
4410
4411static const struct snd_kcontrol_new tertiary_mi2s_rx_mixer_controls[] = {
4412 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4413 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4414 msm_routing_put_audio_mixer),
4415 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4416 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4417 msm_routing_put_audio_mixer),
4418 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4419 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4420 msm_routing_put_audio_mixer),
4421 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4422 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4423 msm_routing_put_audio_mixer),
4424 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4425 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4426 msm_routing_put_audio_mixer),
4427 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4428 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4429 msm_routing_put_audio_mixer),
4430 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4431 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4432 msm_routing_put_audio_mixer),
4433 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4434 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4435 msm_routing_put_audio_mixer),
4436 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4437 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4438 msm_routing_put_audio_mixer),
4439 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4440 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4441 msm_routing_put_audio_mixer),
4442 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4443 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4444 msm_routing_put_audio_mixer),
4445 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4446 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4447 msm_routing_put_audio_mixer),
4448 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4449 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4450 msm_routing_put_audio_mixer),
4451 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4452 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4453 msm_routing_put_audio_mixer),
4454 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4455 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4456 msm_routing_put_audio_mixer),
4457 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4458 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4459 msm_routing_put_audio_mixer),
4460 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4461 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4462 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304463 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4464 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4465 msm_routing_put_audio_mixer),
4466 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4467 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4468 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304469};
4470
4471static const struct snd_kcontrol_new secondary_mi2s_rx2_mixer_controls[] = {
4472 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SECONDARY_MI2S_RX_SD1,
4473 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4474 msm_routing_put_audio_mixer),
4475};
4476
4477static const struct snd_kcontrol_new secondary_mi2s_rx_mixer_controls[] = {
4478 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4479 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4480 msm_routing_put_audio_mixer),
4481 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4482 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4483 msm_routing_put_audio_mixer),
4484 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4485 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4486 msm_routing_put_audio_mixer),
4487 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4488 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4489 msm_routing_put_audio_mixer),
4490 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4491 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4492 msm_routing_put_audio_mixer),
4493 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4494 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4495 msm_routing_put_audio_mixer),
4496 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4497 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4498 msm_routing_put_audio_mixer),
4499 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4500 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4501 msm_routing_put_audio_mixer),
4502 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4503 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4504 msm_routing_put_audio_mixer),
4505 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4506 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4507 msm_routing_put_audio_mixer),
4508 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4509 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4510 msm_routing_put_audio_mixer),
4511 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4512 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4513 msm_routing_put_audio_mixer),
4514 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4515 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4516 msm_routing_put_audio_mixer),
4517 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4518 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4519 msm_routing_put_audio_mixer),
4520 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4521 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4522 msm_routing_put_audio_mixer),
4523 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4524 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4525 msm_routing_put_audio_mixer),
4526 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4527 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4528 msm_routing_put_audio_mixer),
4529 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4530 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4531 msm_routing_put_audio_mixer),
4532 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4533 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4534 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304535 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4536 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4537 msm_routing_put_audio_mixer),
4538 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4539 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4540 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304541};
4542
4543static const struct snd_kcontrol_new primary_mi2s_rx_mixer_controls[] = {
4544 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_MI2S_RX,
4545 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4546 msm_routing_put_audio_mixer),
4547 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_MI2S_RX,
4548 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4549 msm_routing_put_audio_mixer),
4550 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_MI2S_RX,
4551 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4552 msm_routing_put_audio_mixer),
4553 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_MI2S_RX,
4554 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4555 msm_routing_put_audio_mixer),
4556 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_MI2S_RX,
4557 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4558 msm_routing_put_audio_mixer),
4559 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_MI2S_RX,
4560 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4561 msm_routing_put_audio_mixer),
4562 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_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_PRI_MI2S_RX,
4566 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4567 msm_routing_put_audio_mixer),
4568 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_MI2S_RX,
4569 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4570 msm_routing_put_audio_mixer),
4571 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_MI2S_RX,
4572 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4573 msm_routing_put_audio_mixer),
4574 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_MI2S_RX,
4575 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4576 msm_routing_put_audio_mixer),
4577 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_MI2S_RX,
4578 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4579 msm_routing_put_audio_mixer),
4580 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_MI2S_RX,
4581 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4582 msm_routing_put_audio_mixer),
4583 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_MI2S_RX,
4584 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4585 msm_routing_put_audio_mixer),
4586 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_MI2S_RX,
4587 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4588 msm_routing_put_audio_mixer),
4589 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_MI2S_RX,
4590 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4591 msm_routing_put_audio_mixer),
4592 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_PRI_MI2S_RX,
4593 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4594 msm_routing_put_audio_mixer),
4595 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_PRI_MI2S_RX,
4596 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4597 msm_routing_put_audio_mixer),
4598 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_PRI_MI2S_RX,
4599 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4600 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304601 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_PRI_MI2S_RX,
4602 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4603 msm_routing_put_audio_mixer),
4604 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_PRI_MI2S_RX,
4605 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4606 msm_routing_put_audio_mixer),
4607
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304608};
4609
4610static const struct snd_kcontrol_new int0_mi2s_rx_mixer_controls[] = {
4611 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_INT0_MI2S_RX,
4612 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4613 msm_routing_put_audio_mixer),
4614 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_INT0_MI2S_RX,
4615 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4616 msm_routing_put_audio_mixer),
4617 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_INT0_MI2S_RX,
4618 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4619 msm_routing_put_audio_mixer),
4620 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_INT0_MI2S_RX,
4621 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4622 msm_routing_put_audio_mixer),
4623 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_INT0_MI2S_RX,
4624 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4625 msm_routing_put_audio_mixer),
4626 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_INT0_MI2S_RX,
4627 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4628 msm_routing_put_audio_mixer),
4629 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_INT0_MI2S_RX,
4630 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4631 msm_routing_put_audio_mixer),
4632 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_INT0_MI2S_RX,
4633 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4634 msm_routing_put_audio_mixer),
4635 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_INT0_MI2S_RX,
4636 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4637 msm_routing_put_audio_mixer),
4638 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_INT0_MI2S_RX,
4639 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4640 msm_routing_put_audio_mixer),
4641 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_INT0_MI2S_RX,
4642 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4643 msm_routing_put_audio_mixer),
4644 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_INT0_MI2S_RX,
4645 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4646 msm_routing_put_audio_mixer),
4647 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_INT0_MI2S_RX,
4648 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4649 msm_routing_put_audio_mixer),
4650 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_INT0_MI2S_RX,
4651 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4652 msm_routing_put_audio_mixer),
4653 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_INT0_MI2S_RX,
4654 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4655 msm_routing_put_audio_mixer),
4656 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_INT0_MI2S_RX,
4657 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4658 msm_routing_put_audio_mixer),
4659};
4660
4661static const struct snd_kcontrol_new int4_mi2s_rx_mixer_controls[] = {
4662 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_INT4_MI2S_RX,
4663 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4664 msm_routing_put_audio_mixer),
4665 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_INT4_MI2S_RX,
4666 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4667 msm_routing_put_audio_mixer),
4668 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_INT4_MI2S_RX,
4669 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4670 msm_routing_put_audio_mixer),
4671 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_INT4_MI2S_RX,
4672 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4673 msm_routing_put_audio_mixer),
4674 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_INT4_MI2S_RX,
4675 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4676 msm_routing_put_audio_mixer),
4677 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_INT4_MI2S_RX,
4678 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4679 msm_routing_put_audio_mixer),
4680 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_INT4_MI2S_RX,
4681 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4682 msm_routing_put_audio_mixer),
4683 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_INT4_MI2S_RX,
4684 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4685 msm_routing_put_audio_mixer),
4686 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_INT4_MI2S_RX,
4687 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4688 msm_routing_put_audio_mixer),
4689 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_INT4_MI2S_RX,
4690 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4691 msm_routing_put_audio_mixer),
4692 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_INT4_MI2S_RX,
4693 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4694 msm_routing_put_audio_mixer),
4695 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_INT4_MI2S_RX,
4696 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4697 msm_routing_put_audio_mixer),
4698 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_INT4_MI2S_RX,
4699 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4700 msm_routing_put_audio_mixer),
4701 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_INT4_MI2S_RX,
4702 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4703 msm_routing_put_audio_mixer),
4704 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_INT4_MI2S_RX,
4705 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4706 msm_routing_put_audio_mixer),
4707 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_INT4_MI2S_RX,
4708 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4709 msm_routing_put_audio_mixer),
4710};
4711
4712static const struct snd_kcontrol_new hdmi_mixer_controls[] = {
4713 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_HDMI_RX,
4714 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4715 msm_routing_put_audio_mixer),
4716 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_HDMI_RX,
4717 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4718 msm_routing_put_audio_mixer),
4719 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_HDMI_RX,
4720 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4721 msm_routing_put_audio_mixer),
4722 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_HDMI_RX,
4723 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4724 msm_routing_put_audio_mixer),
4725 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_HDMI_RX,
4726 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4727 msm_routing_put_audio_mixer),
4728 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_HDMI_RX,
4729 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4730 msm_routing_put_audio_mixer),
4731 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_HDMI_RX,
4732 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4733 msm_routing_put_audio_mixer),
4734 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_HDMI_RX,
4735 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4736 msm_routing_put_audio_mixer),
4737 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_HDMI_RX,
4738 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4739 msm_routing_put_audio_mixer),
4740 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_HDMI_RX,
4741 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4742 msm_routing_put_audio_mixer),
4743 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_HDMI_RX,
4744 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4745 msm_routing_put_audio_mixer),
4746 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_HDMI_RX,
4747 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4748 msm_routing_put_audio_mixer),
4749 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_HDMI_RX,
4750 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4751 msm_routing_put_audio_mixer),
4752 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_HDMI_RX,
4753 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4754 msm_routing_put_audio_mixer),
4755 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_HDMI_RX,
4756 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4757 msm_routing_put_audio_mixer),
4758 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_HDMI_RX,
4759 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4760 msm_routing_put_audio_mixer),
4761 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_HDMI_RX,
4762 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4763 msm_routing_put_audio_mixer),
4764 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_HDMI_RX,
4765 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4766 msm_routing_put_audio_mixer),
4767 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_HDMI_RX,
4768 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4769 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05304770 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_HDMI_RX,
4771 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
4772 msm_routing_put_audio_mixer),
4773 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_HDMI_RX,
4774 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
4775 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05304776};
4777
4778static const struct snd_kcontrol_new display_port_mixer_controls[] = {
4779 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4780 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4781 msm_routing_put_audio_mixer),
4782 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4783 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4784 msm_routing_put_audio_mixer),
4785 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4786 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4787 msm_routing_put_audio_mixer),
4788 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4789 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4790 msm_routing_put_audio_mixer),
4791 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4792 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4793 msm_routing_put_audio_mixer),
4794 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4795 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4796 msm_routing_put_audio_mixer),
4797 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4798 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4799 msm_routing_put_audio_mixer),
4800 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4801 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4802 msm_routing_put_audio_mixer),
4803 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4804 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4805 msm_routing_put_audio_mixer),
4806 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4807 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4808 msm_routing_put_audio_mixer),
4809 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4810 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4811 msm_routing_put_audio_mixer),
4812 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4813 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4814 msm_routing_put_audio_mixer),
4815 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4816 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4817 msm_routing_put_audio_mixer),
4818 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4819 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4820 msm_routing_put_audio_mixer),
4821 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4822 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4823 msm_routing_put_audio_mixer),
4824 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4825 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4826 msm_routing_put_audio_mixer),
4827};
4828
4829 /* incall music delivery mixer */
4830static const struct snd_kcontrol_new incall_music_delivery_mixer_controls[] = {
4831 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_VOICE_PLAYBACK_TX,
4832 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4833 msm_routing_put_audio_mixer),
4834 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_VOICE_PLAYBACK_TX,
4835 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4836 msm_routing_put_audio_mixer),
4837 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_VOICE_PLAYBACK_TX,
4838 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4839 msm_routing_put_audio_mixer),
4840 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_VOICE_PLAYBACK_TX,
4841 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4842 msm_routing_put_audio_mixer),
4843};
4844
4845static const struct snd_kcontrol_new incall_music2_delivery_mixer_controls[] = {
4846 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_VOICE2_PLAYBACK_TX,
4847 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4848 msm_routing_put_audio_mixer),
4849 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_VOICE2_PLAYBACK_TX,
4850 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4851 msm_routing_put_audio_mixer),
4852 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_VOICE2_PLAYBACK_TX,
4853 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4854 msm_routing_put_audio_mixer),
4855 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_VOICE2_PLAYBACK_TX,
4856 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4857 msm_routing_put_audio_mixer),
4858};
4859
4860static const struct snd_kcontrol_new slimbus_4_rx_mixer_controls[] = {
4861 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_4_RX,
4862 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4863 msm_routing_put_audio_mixer),
4864 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_4_RX,
4865 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4866 msm_routing_put_audio_mixer),
4867 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_4_RX,
4868 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4869 msm_routing_put_audio_mixer),
4870 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_4_RX,
4871 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4872 msm_routing_put_audio_mixer),
4873};
4874
4875static const struct snd_kcontrol_new slimbus_6_rx_mixer_controls[] = {
4876 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4877 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4878 msm_routing_put_audio_mixer),
4879 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4880 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4881 msm_routing_put_audio_mixer),
4882 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4883 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4884 msm_routing_put_audio_mixer),
4885 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4886 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4887 msm_routing_put_audio_mixer),
4888 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4889 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4890 msm_routing_put_audio_mixer),
4891 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4892 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4893 msm_routing_put_audio_mixer),
4894 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4895 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4896 msm_routing_put_audio_mixer),
4897 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4898 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4899 msm_routing_put_audio_mixer),
4900 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4901 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4902 msm_routing_put_audio_mixer),
4903 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4904 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4905 msm_routing_put_audio_mixer),
4906 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4907 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4908 msm_routing_put_audio_mixer),
4909 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4910 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4911 msm_routing_put_audio_mixer),
4912 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4913 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4914 msm_routing_put_audio_mixer),
4915 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4916 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4917 msm_routing_put_audio_mixer),
4918 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4919 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4920 msm_routing_put_audio_mixer),
4921 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4922 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4923 msm_routing_put_audio_mixer),
4924};
4925
4926static const struct snd_kcontrol_new slimbus_7_rx_mixer_controls[] = {
4927 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4928 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4929 msm_routing_put_audio_mixer),
4930 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4931 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4932 msm_routing_put_audio_mixer),
4933 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4934 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4935 msm_routing_put_audio_mixer),
4936 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4937 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4938 msm_routing_put_audio_mixer),
4939 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4940 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4941 msm_routing_put_audio_mixer),
4942 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4943 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4944 msm_routing_put_audio_mixer),
4945 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4946 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4947 msm_routing_put_audio_mixer),
4948 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4949 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4950 msm_routing_put_audio_mixer),
4951 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4952 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4953 msm_routing_put_audio_mixer),
4954 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4955 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4956 msm_routing_put_audio_mixer),
4957 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4958 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4959 msm_routing_put_audio_mixer),
4960 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4961 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4962 msm_routing_put_audio_mixer),
4963 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4964 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4965 msm_routing_put_audio_mixer),
4966 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4967 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4968 msm_routing_put_audio_mixer),
4969 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4970 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4971 msm_routing_put_audio_mixer),
4972 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4973 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4974 msm_routing_put_audio_mixer),
4975};
4976
4977static const struct snd_kcontrol_new usb_audio_rx_mixer_controls[] = {
4978 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_USB_RX,
4979 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4980 msm_routing_put_audio_mixer),
4981 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_USB_RX,
4982 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4983 msm_routing_put_audio_mixer),
4984 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_USB_RX,
4985 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4986 msm_routing_put_audio_mixer),
4987 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_USB_RX,
4988 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4989 msm_routing_put_audio_mixer),
4990 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_USB_RX,
4991 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4992 msm_routing_put_audio_mixer),
4993 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_USB_RX,
4994 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4995 msm_routing_put_audio_mixer),
4996 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_USB_RX,
4997 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4998 msm_routing_put_audio_mixer),
4999 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_USB_RX,
5000 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5001 msm_routing_put_audio_mixer),
5002 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_USB_RX,
5003 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5004 msm_routing_put_audio_mixer),
5005 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_USB_RX,
5006 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5007 msm_routing_put_audio_mixer),
5008 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_USB_RX,
5009 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5010 msm_routing_put_audio_mixer),
5011 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_USB_RX,
5012 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5013 msm_routing_put_audio_mixer),
5014 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_USB_RX,
5015 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5016 msm_routing_put_audio_mixer),
5017 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_USB_RX,
5018 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5019 msm_routing_put_audio_mixer),
5020 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_USB_RX,
5021 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5022 msm_routing_put_audio_mixer),
5023 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_USB_RX,
5024 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5025 msm_routing_put_audio_mixer),
5026};
5027
5028static const struct snd_kcontrol_new int_bt_sco_rx_mixer_controls[] = {
5029 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5030 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5031 msm_routing_put_audio_mixer),
5032 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5033 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5034 msm_routing_put_audio_mixer),
5035 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5036 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5037 msm_routing_put_audio_mixer),
5038 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5039 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5040 msm_routing_put_audio_mixer),
5041 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5042 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5043 msm_routing_put_audio_mixer),
5044 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5045 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5046 msm_routing_put_audio_mixer),
5047 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5048 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5049 msm_routing_put_audio_mixer),
5050 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5051 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5052 msm_routing_put_audio_mixer),
5053 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5054 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5055 msm_routing_put_audio_mixer),
5056 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5057 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5058 msm_routing_put_audio_mixer),
5059 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5060 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5061 msm_routing_put_audio_mixer),
5062 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5063 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5064 msm_routing_put_audio_mixer),
5065 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5066 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5067 msm_routing_put_audio_mixer),
5068 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5069 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5070 msm_routing_put_audio_mixer),
5071 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5072 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5073 msm_routing_put_audio_mixer),
5074 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5075 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5076 msm_routing_put_audio_mixer),
5077 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5078 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
5079 msm_routing_put_audio_mixer),
5080 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5081 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
5082 msm_routing_put_audio_mixer),
5083 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5084 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
5085 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05305086 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5087 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
5088 msm_routing_put_audio_mixer),
5089 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_INT_BT_SCO_RX,
5090 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
5091 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305092};
5093
5094static const struct snd_kcontrol_new int_bt_a2dp_rx_mixer_controls[] = {
5095 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5096 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5097 msm_routing_put_audio_mixer),
5098 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5099 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5100 msm_routing_put_audio_mixer),
5101 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5102 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5103 msm_routing_put_audio_mixer),
5104 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5105 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5106 msm_routing_put_audio_mixer),
5107 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5108 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5109 msm_routing_put_audio_mixer),
5110 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5111 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5112 msm_routing_put_audio_mixer),
5113 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5114 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5115 msm_routing_put_audio_mixer),
5116 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5117 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5118 msm_routing_put_audio_mixer),
5119 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5120 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5121 msm_routing_put_audio_mixer),
5122 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5123 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5124 msm_routing_put_audio_mixer),
5125 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5126 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5127 msm_routing_put_audio_mixer),
5128 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5129 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5130 msm_routing_put_audio_mixer),
5131 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5132 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5133 msm_routing_put_audio_mixer),
5134 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5135 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5136 msm_routing_put_audio_mixer),
5137 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5138 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5139 msm_routing_put_audio_mixer),
5140 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5141 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5142 msm_routing_put_audio_mixer),
5143};
5144
5145static const struct snd_kcontrol_new int_fm_rx_mixer_controls[] = {
5146 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_INT_FM_RX,
5147 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5148 msm_routing_put_audio_mixer),
5149 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_INT_FM_RX,
5150 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5151 msm_routing_put_audio_mixer),
5152 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_INT_FM_RX,
5153 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5154 msm_routing_put_audio_mixer),
5155 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_INT_FM_RX,
5156 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5157 msm_routing_put_audio_mixer),
5158 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_INT_FM_RX,
5159 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5160 msm_routing_put_audio_mixer),
5161 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_INT_FM_RX,
5162 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5163 msm_routing_put_audio_mixer),
5164 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_INT_FM_RX,
5165 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5166 msm_routing_put_audio_mixer),
5167 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_INT_FM_RX,
5168 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5169 msm_routing_put_audio_mixer),
5170 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_INT_FM_RX,
5171 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5172 msm_routing_put_audio_mixer),
5173 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_INT_FM_RX,
5174 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5175 msm_routing_put_audio_mixer),
5176 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_INT_FM_RX,
5177 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5178 msm_routing_put_audio_mixer),
5179 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_INT_FM_RX,
5180 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5181 msm_routing_put_audio_mixer),
5182 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_INT_FM_RX,
5183 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5184 msm_routing_put_audio_mixer),
5185 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_INT_FM_RX,
5186 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5187 msm_routing_put_audio_mixer),
5188 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_INT_FM_RX,
5189 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5190 msm_routing_put_audio_mixer),
5191 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_INT_FM_RX,
5192 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5193 msm_routing_put_audio_mixer),
5194 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_INT_FM_RX,
5195 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
5196 msm_routing_put_audio_mixer),
5197 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_INT_FM_RX,
5198 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
5199 msm_routing_put_audio_mixer),
5200 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_INT_FM_RX,
5201 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
5202 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05305203 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_INT_FM_RX,
5204 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
5205 msm_routing_put_audio_mixer),
5206 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_INT_FM_RX,
5207 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
5208 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305209};
5210
5211static const struct snd_kcontrol_new afe_pcm_rx_mixer_controls[] = {
5212 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_AFE_PCM_RX,
5213 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5214 msm_routing_put_audio_mixer),
5215 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_AFE_PCM_RX,
5216 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5217 msm_routing_put_audio_mixer),
5218 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_AFE_PCM_RX,
5219 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5220 msm_routing_put_audio_mixer),
5221 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_AFE_PCM_RX,
5222 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5223 msm_routing_put_audio_mixer),
5224 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_AFE_PCM_RX,
5225 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5226 msm_routing_put_audio_mixer),
5227 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_AFE_PCM_RX,
5228 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5229 msm_routing_put_audio_mixer),
5230 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_AFE_PCM_RX,
5231 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5232 msm_routing_put_audio_mixer),
5233 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_AFE_PCM_RX,
5234 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5235 msm_routing_put_audio_mixer),
5236 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_AFE_PCM_RX,
5237 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5238 msm_routing_put_audio_mixer),
5239 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_AFE_PCM_RX,
5240 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5241 msm_routing_put_audio_mixer),
5242 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_AFE_PCM_RX,
5243 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5244 msm_routing_put_audio_mixer),
5245 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_AFE_PCM_RX,
5246 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5247 msm_routing_put_audio_mixer),
5248 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_AFE_PCM_RX,
5249 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5250 msm_routing_put_audio_mixer),
5251 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_AFE_PCM_RX,
5252 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5253 msm_routing_put_audio_mixer),
5254 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_AFE_PCM_RX,
5255 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5256 msm_routing_put_audio_mixer),
5257 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_AFE_PCM_RX,
5258 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5259 msm_routing_put_audio_mixer),
5260 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_AFE_PCM_RX,
5261 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
5262 msm_routing_put_audio_mixer),
5263 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_AFE_PCM_RX,
5264 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
5265 msm_routing_put_audio_mixer),
5266 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_AFE_PCM_RX,
5267 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
5268 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05305269 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_AFE_PCM_RX,
5270 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
5271 msm_routing_put_audio_mixer),
5272 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_AFE_PCM_RX,
5273 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
5274 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305275};
5276
5277static const struct snd_kcontrol_new auxpcm_rx_mixer_controls[] = {
5278 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_AUXPCM_RX,
5279 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5280 msm_routing_put_audio_mixer),
5281 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_AUXPCM_RX,
5282 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5283 msm_routing_put_audio_mixer),
5284 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_AUXPCM_RX,
5285 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5286 msm_routing_put_audio_mixer),
5287 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_AUXPCM_RX,
5288 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5289 msm_routing_put_audio_mixer),
5290 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_AUXPCM_RX,
5291 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5292 msm_routing_put_audio_mixer),
5293 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_AUXPCM_RX,
5294 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5295 msm_routing_put_audio_mixer),
5296 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_AUXPCM_RX,
5297 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5298 msm_routing_put_audio_mixer),
5299 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_AUXPCM_RX,
5300 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5301 msm_routing_put_audio_mixer),
5302 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_AUXPCM_RX,
5303 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5304 msm_routing_put_audio_mixer),
5305 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_AUXPCM_RX,
5306 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5307 msm_routing_put_audio_mixer),
5308 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_AUXPCM_RX,
5309 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5310 msm_routing_put_audio_mixer),
5311 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_AUXPCM_RX,
5312 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5313 msm_routing_put_audio_mixer),
5314 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_AUXPCM_RX,
5315 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5316 msm_routing_put_audio_mixer),
5317 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_AUXPCM_RX,
5318 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5319 msm_routing_put_audio_mixer),
5320 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_AUXPCM_RX,
5321 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5322 msm_routing_put_audio_mixer),
5323 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_AUXPCM_RX,
5324 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5325 msm_routing_put_audio_mixer),
5326 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_AUXPCM_RX,
5327 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
5328 msm_routing_put_audio_mixer),
5329 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_AUXPCM_RX,
5330 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
5331 msm_routing_put_audio_mixer),
5332 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_AUXPCM_RX,
5333 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
5334 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05305335 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_AUXPCM_RX,
5336 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
5337 msm_routing_put_audio_mixer),
5338 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_AUXPCM_RX,
5339 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
5340 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305341};
5342
5343static const struct snd_kcontrol_new sec_auxpcm_rx_mixer_controls[] = {
5344 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5345 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5346 msm_routing_put_audio_mixer),
5347 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5348 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5349 msm_routing_put_audio_mixer),
5350 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5351 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5352 msm_routing_put_audio_mixer),
5353 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5354 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5355 msm_routing_put_audio_mixer),
5356 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5357 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5358 msm_routing_put_audio_mixer),
5359 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5360 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5361 msm_routing_put_audio_mixer),
5362 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5363 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5364 msm_routing_put_audio_mixer),
5365 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5366 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5367 msm_routing_put_audio_mixer),
5368 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5369 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5370 msm_routing_put_audio_mixer),
5371 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5372 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5373 msm_routing_put_audio_mixer),
5374 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5375 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5376 msm_routing_put_audio_mixer),
5377 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5378 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5379 msm_routing_put_audio_mixer),
5380 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5381 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5382 msm_routing_put_audio_mixer),
5383 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5384 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5385 msm_routing_put_audio_mixer),
5386 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5387 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5388 msm_routing_put_audio_mixer),
5389 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5390 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5391 msm_routing_put_audio_mixer),
5392 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5393 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
5394 msm_routing_put_audio_mixer),
5395 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5396 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
5397 msm_routing_put_audio_mixer),
5398 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5399 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
5400 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05305401 SOC_SINGLE_EXT("MultiMedia28", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5402 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
5403 msm_routing_put_audio_mixer),
5404 SOC_SINGLE_EXT("MultiMedia29", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5405 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
5406 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305407};
5408
5409static const struct snd_kcontrol_new tert_auxpcm_rx_mixer_controls[] = {
5410 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5411 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5412 msm_routing_put_audio_mixer),
5413 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5414 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5415 msm_routing_put_audio_mixer),
5416 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5417 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5418 msm_routing_put_audio_mixer),
5419 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5420 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5421 msm_routing_put_audio_mixer),
5422 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5423 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5424 msm_routing_put_audio_mixer),
5425 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5426 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5427 msm_routing_put_audio_mixer),
5428 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5429 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5430 msm_routing_put_audio_mixer),
5431 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5432 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5433 msm_routing_put_audio_mixer),
5434 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5435 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5436 msm_routing_put_audio_mixer),
5437 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5438 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5439 msm_routing_put_audio_mixer),
5440 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5441 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5442 msm_routing_put_audio_mixer),
5443 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5444 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5445 msm_routing_put_audio_mixer),
5446 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5447 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5448 msm_routing_put_audio_mixer),
5449 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5450 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5451 msm_routing_put_audio_mixer),
5452 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5453 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5454 msm_routing_put_audio_mixer),
5455 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5456 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5457 msm_routing_put_audio_mixer),
5458};
5459
5460static const struct snd_kcontrol_new quat_auxpcm_rx_mixer_controls[] = {
5461 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5462 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5463 msm_routing_put_audio_mixer),
5464 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5465 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5466 msm_routing_put_audio_mixer),
5467 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5468 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5469 msm_routing_put_audio_mixer),
5470 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5471 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5472 msm_routing_put_audio_mixer),
5473 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5474 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5475 msm_routing_put_audio_mixer),
5476 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5477 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5478 msm_routing_put_audio_mixer),
5479 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5480 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5481 msm_routing_put_audio_mixer),
5482 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5483 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5484 msm_routing_put_audio_mixer),
5485 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5486 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5487 msm_routing_put_audio_mixer),
5488 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5489 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5490 msm_routing_put_audio_mixer),
5491 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5492 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5493 msm_routing_put_audio_mixer),
5494 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5495 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5496 msm_routing_put_audio_mixer),
5497 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5498 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5499 msm_routing_put_audio_mixer),
5500 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5501 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5502 msm_routing_put_audio_mixer),
5503 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5504 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5505 msm_routing_put_audio_mixer),
5506 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5507 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5508 msm_routing_put_audio_mixer),
5509};
5510
Rohit Kumara5077932017-09-10 22:05:05 +05305511static const struct snd_kcontrol_new quin_auxpcm_rx_mixer_controls[] = {
5512 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5513 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5514 msm_routing_put_audio_mixer),
5515 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5516 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5517 msm_routing_put_audio_mixer),
5518 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5519 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5520 msm_routing_put_audio_mixer),
5521 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5522 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5523 msm_routing_put_audio_mixer),
5524 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5525 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5526 msm_routing_put_audio_mixer),
5527 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5528 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5529 msm_routing_put_audio_mixer),
5530 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5531 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5532 msm_routing_put_audio_mixer),
5533 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5534 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5535 msm_routing_put_audio_mixer),
5536 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5537 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5538 msm_routing_put_audio_mixer),
5539 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5540 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5541 msm_routing_put_audio_mixer),
5542 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5543 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5544 msm_routing_put_audio_mixer),
5545 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5546 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5547 msm_routing_put_audio_mixer),
5548 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5549 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5550 msm_routing_put_audio_mixer),
5551 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5552 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5553 msm_routing_put_audio_mixer),
5554 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5555 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5556 msm_routing_put_audio_mixer),
5557 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5558 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5559 msm_routing_put_audio_mixer),
5560};
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305561static const struct snd_kcontrol_new pri_tdm_rx_0_mixer_controls[] = {
5562 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5563 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5564 msm_routing_put_audio_mixer),
5565 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5566 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5567 msm_routing_put_audio_mixer),
5568 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5569 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5570 msm_routing_put_audio_mixer),
5571 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5572 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5573 msm_routing_put_audio_mixer),
5574 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5575 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5576 msm_routing_put_audio_mixer),
5577 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5578 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5579 msm_routing_put_audio_mixer),
5580 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5581 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5582 msm_routing_put_audio_mixer),
5583 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5584 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5585 msm_routing_put_audio_mixer),
5586 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5587 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5588 msm_routing_put_audio_mixer),
5589 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5590 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5591 msm_routing_put_audio_mixer),
5592 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5593 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5594 msm_routing_put_audio_mixer),
5595 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5596 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5597 msm_routing_put_audio_mixer),
5598 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5599 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5600 msm_routing_put_audio_mixer),
5601 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5602 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5603 msm_routing_put_audio_mixer),
5604 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5605 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5606 msm_routing_put_audio_mixer),
5607 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5608 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5609 msm_routing_put_audio_mixer),
5610};
5611
5612static const struct snd_kcontrol_new pri_tdm_rx_1_mixer_controls[] = {
5613 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5614 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5615 msm_routing_put_audio_mixer),
5616 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5617 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5618 msm_routing_put_audio_mixer),
5619 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5620 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5621 msm_routing_put_audio_mixer),
5622 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5623 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5624 msm_routing_put_audio_mixer),
5625 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5626 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5627 msm_routing_put_audio_mixer),
5628 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5629 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5630 msm_routing_put_audio_mixer),
5631 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5632 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5633 msm_routing_put_audio_mixer),
5634 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5635 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5636 msm_routing_put_audio_mixer),
5637 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5638 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5639 msm_routing_put_audio_mixer),
5640 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5641 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5642 msm_routing_put_audio_mixer),
5643 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5644 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5645 msm_routing_put_audio_mixer),
5646 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5647 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5648 msm_routing_put_audio_mixer),
5649 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5650 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5651 msm_routing_put_audio_mixer),
5652 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5653 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5654 msm_routing_put_audio_mixer),
5655 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5656 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5657 msm_routing_put_audio_mixer),
5658 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5659 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5660 msm_routing_put_audio_mixer),
5661};
5662
5663static const struct snd_kcontrol_new pri_tdm_rx_2_mixer_controls[] = {
5664 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5665 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5666 msm_routing_put_audio_mixer),
5667 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5668 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5669 msm_routing_put_audio_mixer),
5670 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5671 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5672 msm_routing_put_audio_mixer),
5673 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5674 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5675 msm_routing_put_audio_mixer),
5676 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5677 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5678 msm_routing_put_audio_mixer),
5679 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5680 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5681 msm_routing_put_audio_mixer),
5682 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5683 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5684 msm_routing_put_audio_mixer),
5685 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5686 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5687 msm_routing_put_audio_mixer),
5688 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5689 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5690 msm_routing_put_audio_mixer),
5691 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5692 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5693 msm_routing_put_audio_mixer),
5694 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5695 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5696 msm_routing_put_audio_mixer),
5697 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5698 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5699 msm_routing_put_audio_mixer),
5700 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5701 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5702 msm_routing_put_audio_mixer),
5703 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5704 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5705 msm_routing_put_audio_mixer),
5706 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5707 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5708 msm_routing_put_audio_mixer),
5709 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5710 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5711 msm_routing_put_audio_mixer),
5712};
5713
5714static const struct snd_kcontrol_new pri_tdm_rx_3_mixer_controls[] = {
5715 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5716 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5717 msm_routing_put_audio_mixer),
5718 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5719 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5720 msm_routing_put_audio_mixer),
5721 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5722 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5723 msm_routing_put_audio_mixer),
5724 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5725 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5726 msm_routing_put_audio_mixer),
5727 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5728 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5729 msm_routing_put_audio_mixer),
5730 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5731 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5732 msm_routing_put_audio_mixer),
5733 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5734 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5735 msm_routing_put_audio_mixer),
5736 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5737 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5738 msm_routing_put_audio_mixer),
5739 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5740 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5741 msm_routing_put_audio_mixer),
5742 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5743 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5744 msm_routing_put_audio_mixer),
5745 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5746 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5747 msm_routing_put_audio_mixer),
5748 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5749 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5750 msm_routing_put_audio_mixer),
5751 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5752 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5753 msm_routing_put_audio_mixer),
5754 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5755 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5756 msm_routing_put_audio_mixer),
5757 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5758 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5759 msm_routing_put_audio_mixer),
5760 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5761 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5762 msm_routing_put_audio_mixer),
5763};
5764
5765static const struct snd_kcontrol_new pri_tdm_tx_0_mixer_controls[] = {
5766 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5767 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5768 msm_routing_put_audio_mixer),
5769 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5770 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5771 msm_routing_put_audio_mixer),
5772 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5773 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5774 msm_routing_put_audio_mixer),
5775 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5776 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5777 msm_routing_put_audio_mixer),
5778 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5779 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5780 msm_routing_put_audio_mixer),
5781 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5782 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5783 msm_routing_put_audio_mixer),
5784 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5785 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5786 msm_routing_put_audio_mixer),
5787 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5788 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5789 msm_routing_put_audio_mixer),
5790 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5791 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5792 msm_routing_put_audio_mixer),
5793 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5794 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5795 msm_routing_put_audio_mixer),
5796 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5797 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5798 msm_routing_put_audio_mixer),
5799 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5800 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5801 msm_routing_put_audio_mixer),
5802 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5803 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5804 msm_routing_put_audio_mixer),
5805 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5806 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5807 msm_routing_put_audio_mixer),
5808 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5809 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5810 msm_routing_put_audio_mixer),
5811 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5812 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5813 msm_routing_put_audio_mixer),
5814};
5815
5816static const struct snd_kcontrol_new sec_tdm_rx_0_mixer_controls[] = {
5817 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5818 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5819 msm_routing_put_audio_mixer),
5820 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5821 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5822 msm_routing_put_audio_mixer),
5823 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5824 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5825 msm_routing_put_audio_mixer),
5826 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5827 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5828 msm_routing_put_audio_mixer),
5829 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5830 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5831 msm_routing_put_audio_mixer),
5832 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5833 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5834 msm_routing_put_audio_mixer),
5835 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5836 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5837 msm_routing_put_audio_mixer),
5838 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5839 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5840 msm_routing_put_audio_mixer),
5841 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5842 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5843 msm_routing_put_audio_mixer),
5844 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5845 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5846 msm_routing_put_audio_mixer),
5847 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5848 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5849 msm_routing_put_audio_mixer),
5850 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5851 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5852 msm_routing_put_audio_mixer),
5853 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5854 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5855 msm_routing_put_audio_mixer),
5856 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5857 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5858 msm_routing_put_audio_mixer),
5859 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5860 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5861 msm_routing_put_audio_mixer),
5862 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5863 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5864 msm_routing_put_audio_mixer),
5865};
5866
5867static const struct snd_kcontrol_new sec_tdm_rx_1_mixer_controls[] = {
5868 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5869 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5870 msm_routing_put_audio_mixer),
5871 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5872 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5873 msm_routing_put_audio_mixer),
5874 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5875 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5876 msm_routing_put_audio_mixer),
5877 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5878 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5879 msm_routing_put_audio_mixer),
5880 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5881 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5882 msm_routing_put_audio_mixer),
5883 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5884 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5885 msm_routing_put_audio_mixer),
5886 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5887 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5888 msm_routing_put_audio_mixer),
5889 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5890 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5891 msm_routing_put_audio_mixer),
5892 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5893 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5894 msm_routing_put_audio_mixer),
5895 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5896 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5897 msm_routing_put_audio_mixer),
5898 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5899 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5900 msm_routing_put_audio_mixer),
5901 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5902 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5903 msm_routing_put_audio_mixer),
5904 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5905 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5906 msm_routing_put_audio_mixer),
5907 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5908 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5909 msm_routing_put_audio_mixer),
5910 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5911 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5912 msm_routing_put_audio_mixer),
5913 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5914 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5915 msm_routing_put_audio_mixer),
5916};
5917
5918static const struct snd_kcontrol_new sec_tdm_rx_2_mixer_controls[] = {
5919 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5920 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5921 msm_routing_put_audio_mixer),
5922 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5923 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5924 msm_routing_put_audio_mixer),
5925 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5926 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5927 msm_routing_put_audio_mixer),
5928 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5929 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5930 msm_routing_put_audio_mixer),
5931 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5932 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5933 msm_routing_put_audio_mixer),
5934 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5935 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5936 msm_routing_put_audio_mixer),
5937 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5938 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5939 msm_routing_put_audio_mixer),
5940 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5941 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5942 msm_routing_put_audio_mixer),
5943 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5944 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5945 msm_routing_put_audio_mixer),
5946 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5947 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5948 msm_routing_put_audio_mixer),
5949 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5950 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5951 msm_routing_put_audio_mixer),
5952 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5953 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5954 msm_routing_put_audio_mixer),
5955 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5956 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5957 msm_routing_put_audio_mixer),
5958 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5959 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5960 msm_routing_put_audio_mixer),
5961 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5962 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5963 msm_routing_put_audio_mixer),
5964 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5965 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5966 msm_routing_put_audio_mixer),
5967};
5968
5969static const struct snd_kcontrol_new sec_tdm_rx_3_mixer_controls[] = {
5970 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5971 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5972 msm_routing_put_audio_mixer),
5973 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5974 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5975 msm_routing_put_audio_mixer),
5976 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5977 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5978 msm_routing_put_audio_mixer),
5979 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5980 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5981 msm_routing_put_audio_mixer),
5982 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5983 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5984 msm_routing_put_audio_mixer),
5985 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5986 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5987 msm_routing_put_audio_mixer),
5988 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5989 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5990 msm_routing_put_audio_mixer),
5991 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5992 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5993 msm_routing_put_audio_mixer),
5994 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5995 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5996 msm_routing_put_audio_mixer),
5997 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5998 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5999 msm_routing_put_audio_mixer),
6000 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6001 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6002 msm_routing_put_audio_mixer),
6003 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6004 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6005 msm_routing_put_audio_mixer),
6006 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6007 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6008 msm_routing_put_audio_mixer),
6009 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6010 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6011 msm_routing_put_audio_mixer),
6012 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6013 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6014 msm_routing_put_audio_mixer),
6015 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_TDM_RX_3,
6016 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6017 msm_routing_put_audio_mixer),
6018};
6019
6020static const struct snd_kcontrol_new sec_tdm_tx_0_mixer_controls[] = {
6021 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6022 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6023 msm_routing_put_audio_mixer),
6024 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6025 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6026 msm_routing_put_audio_mixer),
6027 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6028 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6029 msm_routing_put_audio_mixer),
6030 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6031 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6032 msm_routing_put_audio_mixer),
6033 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6034 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6035 msm_routing_put_audio_mixer),
6036 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6037 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6038 msm_routing_put_audio_mixer),
6039 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6040 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6041 msm_routing_put_audio_mixer),
6042 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6043 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6044 msm_routing_put_audio_mixer),
6045 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6046 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6047 msm_routing_put_audio_mixer),
6048 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6049 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6050 msm_routing_put_audio_mixer),
6051 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6052 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6053 msm_routing_put_audio_mixer),
6054 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6055 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6056 msm_routing_put_audio_mixer),
6057 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6058 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6059 msm_routing_put_audio_mixer),
6060 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6061 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6062 msm_routing_put_audio_mixer),
6063 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6064 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6065 msm_routing_put_audio_mixer),
6066 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6067 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6068 msm_routing_put_audio_mixer),
6069};
6070
6071static const struct snd_kcontrol_new tert_tdm_rx_0_mixer_controls[] = {
6072 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6073 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6074 msm_routing_put_audio_mixer),
6075 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6076 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6077 msm_routing_put_audio_mixer),
6078 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6079 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6080 msm_routing_put_audio_mixer),
6081 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6082 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6083 msm_routing_put_audio_mixer),
6084 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6085 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6086 msm_routing_put_audio_mixer),
6087 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6088 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6089 msm_routing_put_audio_mixer),
6090 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6091 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6092 msm_routing_put_audio_mixer),
6093 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6094 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6095 msm_routing_put_audio_mixer),
6096 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6097 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6098 msm_routing_put_audio_mixer),
6099 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6100 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6101 msm_routing_put_audio_mixer),
6102 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6103 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6104 msm_routing_put_audio_mixer),
6105 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6106 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6107 msm_routing_put_audio_mixer),
6108 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6109 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6110 msm_routing_put_audio_mixer),
6111 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6112 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6113 msm_routing_put_audio_mixer),
6114 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6115 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6116 msm_routing_put_audio_mixer),
6117 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6118 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6119 msm_routing_put_audio_mixer),
6120};
6121
6122static const struct snd_kcontrol_new tert_tdm_tx_0_mixer_controls[] = {
6123 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6124 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6125 msm_routing_put_audio_mixer),
6126 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6127 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6128 msm_routing_put_audio_mixer),
6129 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6130 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6131 msm_routing_put_audio_mixer),
6132 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6133 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6134 msm_routing_put_audio_mixer),
6135 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6136 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6137 msm_routing_put_audio_mixer),
6138 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6139 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6140 msm_routing_put_audio_mixer),
6141 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6142 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6143 msm_routing_put_audio_mixer),
6144 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6145 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6146 msm_routing_put_audio_mixer),
6147 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6148 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6149 msm_routing_put_audio_mixer),
6150 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6151 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6152 msm_routing_put_audio_mixer),
6153 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6154 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6155 msm_routing_put_audio_mixer),
6156 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6157 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6158 msm_routing_put_audio_mixer),
6159 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6160 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6161 msm_routing_put_audio_mixer),
6162 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6163 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6164 msm_routing_put_audio_mixer),
6165 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6166 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6167 msm_routing_put_audio_mixer),
6168 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6169 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6170 msm_routing_put_audio_mixer),
6171};
6172
6173static const struct snd_kcontrol_new tert_tdm_rx_1_mixer_controls[] = {
6174 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6175 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6176 msm_routing_put_audio_mixer),
6177 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6178 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6179 msm_routing_put_audio_mixer),
6180 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6181 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6182 msm_routing_put_audio_mixer),
6183 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6184 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6185 msm_routing_put_audio_mixer),
6186 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6187 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6188 msm_routing_put_audio_mixer),
6189 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6190 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6191 msm_routing_put_audio_mixer),
6192 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6193 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6194 msm_routing_put_audio_mixer),
6195 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6196 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6197 msm_routing_put_audio_mixer),
6198 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6199 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6200 msm_routing_put_audio_mixer),
6201 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6202 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6203 msm_routing_put_audio_mixer),
6204 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6205 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6206 msm_routing_put_audio_mixer),
6207 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6208 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6209 msm_routing_put_audio_mixer),
6210 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6211 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6212 msm_routing_put_audio_mixer),
6213 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6214 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6215 msm_routing_put_audio_mixer),
6216 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6217 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6218 msm_routing_put_audio_mixer),
6219 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6220 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6221 msm_routing_put_audio_mixer),
6222};
6223
6224static const struct snd_kcontrol_new tert_tdm_rx_2_mixer_controls[] = {
6225 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6226 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6227 msm_routing_put_audio_mixer),
6228 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6229 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6230 msm_routing_put_audio_mixer),
6231 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6232 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6233 msm_routing_put_audio_mixer),
6234 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6235 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6236 msm_routing_put_audio_mixer),
6237 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6238 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6239 msm_routing_put_audio_mixer),
6240 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6241 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6242 msm_routing_put_audio_mixer),
6243 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6244 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6245 msm_routing_put_audio_mixer),
6246 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6247 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6248 msm_routing_put_audio_mixer),
6249 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6250 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6251 msm_routing_put_audio_mixer),
6252 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6253 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6254 msm_routing_put_audio_mixer),
6255 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6256 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6257 msm_routing_put_audio_mixer),
6258 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6259 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6260 msm_routing_put_audio_mixer),
6261 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6262 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6263 msm_routing_put_audio_mixer),
6264 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6265 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6266 msm_routing_put_audio_mixer),
6267 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6268 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6269 msm_routing_put_audio_mixer),
6270 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6271 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6272 msm_routing_put_audio_mixer),
6273};
6274
6275static const struct snd_kcontrol_new tert_tdm_rx_3_mixer_controls[] = {
6276 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6277 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6278 msm_routing_put_audio_mixer),
6279 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6280 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6281 msm_routing_put_audio_mixer),
6282 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6283 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6284 msm_routing_put_audio_mixer),
6285 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6286 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6287 msm_routing_put_audio_mixer),
6288 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6289 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6290 msm_routing_put_audio_mixer),
6291 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6292 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6293 msm_routing_put_audio_mixer),
6294 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6295 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6296 msm_routing_put_audio_mixer),
6297 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6298 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6299 msm_routing_put_audio_mixer),
6300 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6301 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6302 msm_routing_put_audio_mixer),
6303 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6304 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6305 msm_routing_put_audio_mixer),
6306 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6307 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6308 msm_routing_put_audio_mixer),
6309 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6310 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6311 msm_routing_put_audio_mixer),
6312 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6313 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6314 msm_routing_put_audio_mixer),
6315 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6316 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6317 msm_routing_put_audio_mixer),
6318 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6319 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6320 msm_routing_put_audio_mixer),
6321 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6322 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6323 msm_routing_put_audio_mixer),
6324};
6325
6326static const struct snd_kcontrol_new tert_tdm_rx_4_mixer_controls[] = {
6327 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6328 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6329 msm_routing_put_audio_mixer),
6330 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6331 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6332 msm_routing_put_audio_mixer),
6333 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6334 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6335 msm_routing_put_audio_mixer),
6336 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6337 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6338 msm_routing_put_audio_mixer),
6339 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6340 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6341 msm_routing_put_audio_mixer),
6342 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6343 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6344 msm_routing_put_audio_mixer),
6345 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6346 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6347 msm_routing_put_audio_mixer),
6348 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6349 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6350 msm_routing_put_audio_mixer),
6351 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6352 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6353 msm_routing_put_audio_mixer),
6354 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6355 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6356 msm_routing_put_audio_mixer),
6357 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6358 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6359 msm_routing_put_audio_mixer),
6360 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6361 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6362 msm_routing_put_audio_mixer),
6363 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6364 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6365 msm_routing_put_audio_mixer),
6366 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6367 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6368 msm_routing_put_audio_mixer),
6369 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6370 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6371 msm_routing_put_audio_mixer),
6372 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6373 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6374 msm_routing_put_audio_mixer),
6375};
6376
6377static const struct snd_kcontrol_new quat_tdm_rx_0_mixer_controls[] = {
6378 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6379 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6380 msm_routing_put_audio_mixer),
6381 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6382 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6383 msm_routing_put_audio_mixer),
6384 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6385 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6386 msm_routing_put_audio_mixer),
6387 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6388 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6389 msm_routing_put_audio_mixer),
6390 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6391 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6392 msm_routing_put_audio_mixer),
6393 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6394 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6395 msm_routing_put_audio_mixer),
6396 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6397 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6398 msm_routing_put_audio_mixer),
6399 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6400 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6401 msm_routing_put_audio_mixer),
6402 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6403 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6404 msm_routing_put_audio_mixer),
6405 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6406 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6407 msm_routing_put_audio_mixer),
6408 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6409 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6410 msm_routing_put_audio_mixer),
6411 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6412 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6413 msm_routing_put_audio_mixer),
6414 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6415 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6416 msm_routing_put_audio_mixer),
6417 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6418 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6419 msm_routing_put_audio_mixer),
6420 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6421 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6422 msm_routing_put_audio_mixer),
6423 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6424 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6425 msm_routing_put_audio_mixer),
6426 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6427 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6428 msm_routing_put_audio_mixer),
6429};
6430
6431static const struct snd_kcontrol_new quat_tdm_tx_0_mixer_controls[] = {
6432 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6433 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6434 msm_routing_put_audio_mixer),
6435 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6436 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6437 msm_routing_put_audio_mixer),
6438 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6439 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6440 msm_routing_put_audio_mixer),
6441 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6442 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6443 msm_routing_put_audio_mixer),
6444 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6445 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6446 msm_routing_put_audio_mixer),
6447 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6448 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6449 msm_routing_put_audio_mixer),
6450 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6451 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6452 msm_routing_put_audio_mixer),
6453 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6454 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6455 msm_routing_put_audio_mixer),
6456 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6457 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6458 msm_routing_put_audio_mixer),
6459 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6460 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6461 msm_routing_put_audio_mixer),
6462 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6463 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6464 msm_routing_put_audio_mixer),
6465 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6466 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6467 msm_routing_put_audio_mixer),
6468 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6469 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6470 msm_routing_put_audio_mixer),
6471 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6472 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6473 msm_routing_put_audio_mixer),
6474 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6475 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6476 msm_routing_put_audio_mixer),
6477 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6478 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6479 msm_routing_put_audio_mixer),
6480};
6481
6482static const struct snd_kcontrol_new quat_tdm_rx_1_mixer_controls[] = {
6483 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6484 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6485 msm_routing_put_audio_mixer),
6486 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6487 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6488 msm_routing_put_audio_mixer),
6489 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6490 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6491 msm_routing_put_audio_mixer),
6492 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6493 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6494 msm_routing_put_audio_mixer),
6495 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6496 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6497 msm_routing_put_audio_mixer),
6498 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6499 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6500 msm_routing_put_audio_mixer),
6501 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6502 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6503 msm_routing_put_audio_mixer),
6504 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6505 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6506 msm_routing_put_audio_mixer),
6507 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6508 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6509 msm_routing_put_audio_mixer),
6510 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6511 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6512 msm_routing_put_audio_mixer),
6513 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6514 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6515 msm_routing_put_audio_mixer),
6516 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6517 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6518 msm_routing_put_audio_mixer),
6519 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6520 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6521 msm_routing_put_audio_mixer),
6522 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6523 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6524 msm_routing_put_audio_mixer),
6525 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6526 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6527 msm_routing_put_audio_mixer),
6528 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6529 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6530 msm_routing_put_audio_mixer),
6531 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6532 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6533 msm_routing_put_audio_mixer),
6534};
6535
6536static const struct snd_kcontrol_new quat_tdm_rx_2_mixer_controls[] = {
6537 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6538 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6539 msm_routing_put_audio_mixer),
6540 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6541 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6542 msm_routing_put_audio_mixer),
6543 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6544 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6545 msm_routing_put_audio_mixer),
6546 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6547 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6548 msm_routing_put_audio_mixer),
6549 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6550 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6551 msm_routing_put_audio_mixer),
6552 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6553 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6554 msm_routing_put_audio_mixer),
6555 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6556 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6557 msm_routing_put_audio_mixer),
6558 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6559 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6560 msm_routing_put_audio_mixer),
6561 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6562 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6563 msm_routing_put_audio_mixer),
6564 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6565 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6566 msm_routing_put_audio_mixer),
6567 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6568 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6569 msm_routing_put_audio_mixer),
6570 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6571 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6572 msm_routing_put_audio_mixer),
6573 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6574 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6575 msm_routing_put_audio_mixer),
6576 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6577 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6578 msm_routing_put_audio_mixer),
6579 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6580 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6581 msm_routing_put_audio_mixer),
6582 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6583 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6584 msm_routing_put_audio_mixer),
6585 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6586 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6587 msm_routing_put_audio_mixer),
6588};
6589
6590static const struct snd_kcontrol_new quat_tdm_rx_3_mixer_controls[] = {
6591 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6592 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6593 msm_routing_put_audio_mixer),
6594 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6595 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6596 msm_routing_put_audio_mixer),
6597 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6598 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6599 msm_routing_put_audio_mixer),
6600 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6601 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6602 msm_routing_put_audio_mixer),
6603 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6604 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6605 msm_routing_put_audio_mixer),
6606 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6607 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6608 msm_routing_put_audio_mixer),
6609 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6610 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6611 msm_routing_put_audio_mixer),
6612 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6613 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6614 msm_routing_put_audio_mixer),
6615 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6616 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6617 msm_routing_put_audio_mixer),
6618 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6619 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6620 msm_routing_put_audio_mixer),
6621 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6622 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6623 msm_routing_put_audio_mixer),
6624 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6625 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6626 msm_routing_put_audio_mixer),
6627 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6628 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6629 msm_routing_put_audio_mixer),
6630 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6631 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6632 msm_routing_put_audio_mixer),
6633 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6634 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6635 msm_routing_put_audio_mixer),
6636 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6637 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6638 msm_routing_put_audio_mixer),
6639 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6640 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6641 msm_routing_put_audio_mixer),
6642};
6643
Rohit Kumara5077932017-09-10 22:05:05 +05306644static const struct snd_kcontrol_new quin_tdm_rx_0_mixer_controls[] = {
6645 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6646 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6647 msm_routing_put_audio_mixer),
6648 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6649 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6650 msm_routing_put_audio_mixer),
6651 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6652 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6653 msm_routing_put_audio_mixer),
6654 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6655 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6656 msm_routing_put_audio_mixer),
6657 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6658 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6659 msm_routing_put_audio_mixer),
6660 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6661 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6662 msm_routing_put_audio_mixer),
6663 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6664 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6665 msm_routing_put_audio_mixer),
6666 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6667 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6668 msm_routing_put_audio_mixer),
6669 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6670 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6671 msm_routing_put_audio_mixer),
6672 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6673 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6674 msm_routing_put_audio_mixer),
6675 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6676 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6677 msm_routing_put_audio_mixer),
6678 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6679 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6680 msm_routing_put_audio_mixer),
6681 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6682 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6683 msm_routing_put_audio_mixer),
6684 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6685 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6686 msm_routing_put_audio_mixer),
6687 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6688 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6689 msm_routing_put_audio_mixer),
6690 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6691 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6692 msm_routing_put_audio_mixer),
6693 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6694 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6695 msm_routing_put_audio_mixer),
6696};
6697
6698static const struct snd_kcontrol_new quin_tdm_tx_0_mixer_controls[] = {
6699 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6700 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6701 msm_routing_put_audio_mixer),
6702 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6703 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6704 msm_routing_put_audio_mixer),
6705 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6706 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6707 msm_routing_put_audio_mixer),
6708 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6709 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6710 msm_routing_put_audio_mixer),
6711 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6712 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6713 msm_routing_put_audio_mixer),
6714 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6715 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6716 msm_routing_put_audio_mixer),
6717 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6718 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6719 msm_routing_put_audio_mixer),
6720 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6721 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6722 msm_routing_put_audio_mixer),
6723 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6724 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6725 msm_routing_put_audio_mixer),
6726 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6727 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6728 msm_routing_put_audio_mixer),
6729 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6730 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6731 msm_routing_put_audio_mixer),
6732 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6733 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6734 msm_routing_put_audio_mixer),
6735 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6736 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6737 msm_routing_put_audio_mixer),
6738 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6739 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6740 msm_routing_put_audio_mixer),
6741 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6742 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6743 msm_routing_put_audio_mixer),
6744 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6745 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6746 msm_routing_put_audio_mixer),
6747};
6748
6749static const struct snd_kcontrol_new quin_tdm_rx_1_mixer_controls[] = {
6750 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6751 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6752 msm_routing_put_audio_mixer),
6753 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6754 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6755 msm_routing_put_audio_mixer),
6756 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6757 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6758 msm_routing_put_audio_mixer),
6759 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6760 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6761 msm_routing_put_audio_mixer),
6762 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6763 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6764 msm_routing_put_audio_mixer),
6765 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6766 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6767 msm_routing_put_audio_mixer),
6768 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6769 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6770 msm_routing_put_audio_mixer),
6771 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6772 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6773 msm_routing_put_audio_mixer),
6774 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6775 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6776 msm_routing_put_audio_mixer),
6777 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6778 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6779 msm_routing_put_audio_mixer),
6780 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6781 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6782 msm_routing_put_audio_mixer),
6783 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6784 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6785 msm_routing_put_audio_mixer),
6786 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6787 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6788 msm_routing_put_audio_mixer),
6789 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6790 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6791 msm_routing_put_audio_mixer),
6792 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6793 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6794 msm_routing_put_audio_mixer),
6795 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6796 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6797 msm_routing_put_audio_mixer),
6798 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6799 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6800 msm_routing_put_audio_mixer),
6801};
6802
6803static const struct snd_kcontrol_new quin_tdm_rx_2_mixer_controls[] = {
6804 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6805 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6806 msm_routing_put_audio_mixer),
6807 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6808 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6809 msm_routing_put_audio_mixer),
6810 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6811 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6812 msm_routing_put_audio_mixer),
6813 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6814 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6815 msm_routing_put_audio_mixer),
6816 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6817 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6818 msm_routing_put_audio_mixer),
6819 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6820 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6821 msm_routing_put_audio_mixer),
6822 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6823 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6824 msm_routing_put_audio_mixer),
6825 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6826 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6827 msm_routing_put_audio_mixer),
6828 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6829 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6830 msm_routing_put_audio_mixer),
6831 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6832 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6833 msm_routing_put_audio_mixer),
6834 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6835 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6836 msm_routing_put_audio_mixer),
6837 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6838 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6839 msm_routing_put_audio_mixer),
6840 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6841 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6842 msm_routing_put_audio_mixer),
6843 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6844 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6845 msm_routing_put_audio_mixer),
6846 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6847 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6848 msm_routing_put_audio_mixer),
6849 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6850 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6851 msm_routing_put_audio_mixer),
6852 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6853 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6854 msm_routing_put_audio_mixer),
6855};
6856
6857static const struct snd_kcontrol_new quin_tdm_rx_3_mixer_controls[] = {
6858 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6859 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6860 msm_routing_put_audio_mixer),
6861 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6862 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6863 msm_routing_put_audio_mixer),
6864 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6865 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6866 msm_routing_put_audio_mixer),
6867 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6868 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6869 msm_routing_put_audio_mixer),
6870 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6871 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6872 msm_routing_put_audio_mixer),
6873 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6874 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6875 msm_routing_put_audio_mixer),
6876 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6877 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6878 msm_routing_put_audio_mixer),
6879 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6880 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6881 msm_routing_put_audio_mixer),
6882 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6883 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6884 msm_routing_put_audio_mixer),
6885 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6886 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6887 msm_routing_put_audio_mixer),
6888 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6889 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6890 msm_routing_put_audio_mixer),
6891 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6892 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6893 msm_routing_put_audio_mixer),
6894 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6895 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6896 msm_routing_put_audio_mixer),
6897 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6898 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6899 msm_routing_put_audio_mixer),
6900 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6901 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6902 msm_routing_put_audio_mixer),
6903 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6904 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6905 msm_routing_put_audio_mixer),
6906 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6907 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6908 msm_routing_put_audio_mixer),
6909};
6910
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306911static const struct snd_kcontrol_new mmul1_mixer_controls[] = {
6912 SOC_SINGLE_EXT("PRI_TX", MSM_BACKEND_DAI_PRI_I2S_TX,
6913 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6914 msm_routing_put_audio_mixer),
6915 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
6916 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6917 msm_routing_put_audio_mixer),
6918 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
6919 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6920 msm_routing_put_audio_mixer),
6921 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
6922 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6923 msm_routing_put_audio_mixer),
6924 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
6925 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6926 msm_routing_put_audio_mixer),
6927 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
6928 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6929 msm_routing_put_audio_mixer),
6930 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
6931 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6932 msm_routing_put_audio_mixer),
6933 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
6934 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6935 msm_routing_put_audio_mixer),
6936 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
6937 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6938 msm_routing_put_audio_mixer),
6939 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
6940 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6941 msm_routing_put_audio_mixer),
6942 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
6943 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6944 msm_routing_put_audio_mixer),
6945 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
6946 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6947 msm_routing_put_audio_mixer),
6948 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
6949 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6950 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05306951 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
6952 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6953 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306954 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
6955 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6956 msm_routing_put_audio_mixer),
6957 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
6958 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6959 msm_routing_put_audio_mixer),
6960 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
6961 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6962 msm_routing_put_audio_mixer),
6963 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
6964 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6965 msm_routing_put_audio_mixer),
6966 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
6967 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6968 msm_routing_put_audio_mixer),
6969 SOC_SINGLE_EXT("SLIM_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
6970 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6971 msm_routing_put_audio_mixer),
6972 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
6973 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6974 msm_routing_put_audio_mixer),
6975 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_TX,
6976 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6977 msm_routing_put_audio_mixer),
6978 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
6979 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6980 msm_routing_put_audio_mixer),
6981 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
6982 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6983 msm_routing_put_audio_mixer),
6984 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
6985 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6986 msm_routing_put_audio_mixer),
6987 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
6988 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6989 msm_routing_put_audio_mixer),
6990 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6991 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6992 msm_routing_put_audio_mixer),
6993 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
6994 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6995 msm_routing_put_audio_mixer),
6996 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
6997 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6998 msm_routing_put_audio_mixer),
6999 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7000 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7001 msm_routing_put_audio_mixer),
7002 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7003 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7004 msm_routing_put_audio_mixer),
7005 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7006 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7007 msm_routing_put_audio_mixer),
7008 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7009 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7010 msm_routing_put_audio_mixer),
7011 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7012 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7013 msm_routing_put_audio_mixer),
7014 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7015 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7016 msm_routing_put_audio_mixer),
7017 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7018 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7019 msm_routing_put_audio_mixer),
7020 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7021 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7022 msm_routing_put_audio_mixer),
7023 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7024 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7025 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307026 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7027 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7028 msm_routing_put_audio_mixer),
7029 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7030 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7031 msm_routing_put_audio_mixer),
7032 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7033 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7034 msm_routing_put_audio_mixer),
7035 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7036 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7037 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307038 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
7039 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7040 msm_routing_put_audio_mixer),
7041 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
7042 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7043 msm_routing_put_audio_mixer),
7044 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7045 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
7046 msm_routing_put_audio_mixer),
7047};
7048
7049static const struct snd_kcontrol_new mmul2_mixer_controls[] = {
7050 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7051 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7052 msm_routing_put_audio_mixer),
7053 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
7054 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7055 msm_routing_put_audio_mixer),
7056 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7057 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7058 msm_routing_put_audio_mixer),
7059 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7060 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7061 msm_routing_put_audio_mixer),
7062 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7063 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7064 msm_routing_put_audio_mixer),
7065 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7066 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7067 msm_routing_put_audio_mixer),
7068 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7069 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7070 msm_routing_put_audio_mixer),
7071 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7072 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7073 msm_routing_put_audio_mixer),
7074 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7075 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7076 msm_routing_put_audio_mixer),
7077 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
7078 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7079 msm_routing_put_audio_mixer),
7080 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
7081 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7082 msm_routing_put_audio_mixer),
7083 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_TX,
7084 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7085 msm_routing_put_audio_mixer),
7086 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7087 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7088 msm_routing_put_audio_mixer),
7089 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7090 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7091 msm_routing_put_audio_mixer),
7092 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7093 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7094 msm_routing_put_audio_mixer),
7095 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7096 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7097 msm_routing_put_audio_mixer),
7098 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7099 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7100 msm_routing_put_audio_mixer),
7101 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7102 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7103 msm_routing_put_audio_mixer),
7104 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7105 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7106 msm_routing_put_audio_mixer),
7107 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7108 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7109 msm_routing_put_audio_mixer),
7110 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7111 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7112 msm_routing_put_audio_mixer),
7113 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7114 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7115 msm_routing_put_audio_mixer),
7116 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7117 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7118 msm_routing_put_audio_mixer),
7119 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7120 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7121 msm_routing_put_audio_mixer),
7122 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7123 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7124 msm_routing_put_audio_mixer),
7125 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7126 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7127 msm_routing_put_audio_mixer),
7128 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7129 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7130 msm_routing_put_audio_mixer),
7131 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7132 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7133 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307134 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7135 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7136 msm_routing_put_audio_mixer),
7137 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7138 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7139 msm_routing_put_audio_mixer),
7140 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7141 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7142 msm_routing_put_audio_mixer),
7143 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7144 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7145 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307146 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
7147 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7148 msm_routing_put_audio_mixer),
7149 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7150 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7151 msm_routing_put_audio_mixer),
7152};
7153
7154static const struct snd_kcontrol_new mmul3_mixer_controls[] = {
7155 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7156 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7157 msm_routing_put_audio_mixer),
7158 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7159 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7160 msm_routing_put_audio_mixer),
7161 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
7162 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7163 msm_routing_put_audio_mixer),
7164 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7165 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7166 msm_routing_put_audio_mixer),
7167 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7168 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7169 msm_routing_put_audio_mixer),
7170 SOC_SINGLE_EXT("AUX_PCM_TX", MSM_BACKEND_DAI_AUXPCM_TX,
7171 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7172 msm_routing_put_audio_mixer),
7173 SOC_SINGLE_EXT("SEC_AUX_PCM_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
7174 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7175 msm_routing_put_audio_mixer),
7176 SOC_SINGLE_EXT("TERT_AUX_PCM_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
7177 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7178 msm_routing_put_audio_mixer),
7179 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
7180 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7181 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307182 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
7183 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7184 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307185 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7186 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7187 msm_routing_put_audio_mixer),
7188 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7189 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7190 msm_routing_put_audio_mixer),
7191 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7192 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7193 msm_routing_put_audio_mixer),
7194 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7195 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7196 msm_routing_put_audio_mixer),
7197 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7198 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7199 msm_routing_put_audio_mixer),
7200 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7201 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7202 msm_routing_put_audio_mixer),
7203 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7204 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7205 msm_routing_put_audio_mixer),
7206 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7207 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7208 msm_routing_put_audio_mixer),
7209 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7210 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7211 msm_routing_put_audio_mixer),
7212 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7213 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7214 msm_routing_put_audio_mixer),
7215 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7216 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7217 msm_routing_put_audio_mixer),
7218 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7219 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7220 msm_routing_put_audio_mixer),
7221 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7222 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7223 msm_routing_put_audio_mixer),
7224 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7225 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7226 msm_routing_put_audio_mixer),
7227 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7228 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7229 msm_routing_put_audio_mixer),
7230 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7231 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7232 msm_routing_put_audio_mixer),
7233 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7234 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7235 msm_routing_put_audio_mixer),
7236 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7237 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7238 msm_routing_put_audio_mixer),
7239 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7240 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7241 msm_routing_put_audio_mixer),
7242 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7243 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7244 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307245 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7246 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7247 msm_routing_put_audio_mixer),
7248 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7249 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7250 msm_routing_put_audio_mixer),
7251 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7252 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7253 msm_routing_put_audio_mixer),
7254 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7255 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7256 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307257};
7258
7259static const struct snd_kcontrol_new mmul4_mixer_controls[] = {
7260 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7261 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7262 msm_routing_put_audio_mixer),
7263 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7264 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7265 msm_routing_put_audio_mixer),
7266 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7267 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7268 msm_routing_put_audio_mixer),
7269 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7270 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7271 msm_routing_put_audio_mixer),
7272 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7273 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7274 msm_routing_put_audio_mixer),
7275 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7276 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7277 msm_routing_put_audio_mixer),
7278 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7279 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7280 msm_routing_put_audio_mixer),
7281 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7282 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7283 msm_routing_put_audio_mixer),
7284 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7285 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7286 msm_routing_put_audio_mixer),
7287 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7288 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7289 msm_routing_put_audio_mixer),
7290 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7291 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7292 msm_routing_put_audio_mixer),
7293 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7294 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7295 msm_routing_put_audio_mixer),
7296 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7297 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7298 msm_routing_put_audio_mixer),
7299 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7300 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7301 msm_routing_put_audio_mixer),
7302 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7303 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7304 msm_routing_put_audio_mixer),
7305 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7306 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7307 msm_routing_put_audio_mixer),
7308 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7309 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7310 msm_routing_put_audio_mixer),
7311 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7312 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7313 msm_routing_put_audio_mixer),
7314 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7315 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7316 msm_routing_put_audio_mixer),
7317 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7318 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7319 msm_routing_put_audio_mixer),
7320 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7321 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7322 msm_routing_put_audio_mixer),
7323 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7324 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7325 msm_routing_put_audio_mixer),
7326 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7327 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7328 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307329 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7330 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7331 msm_routing_put_audio_mixer),
7332 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7333 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7334 msm_routing_put_audio_mixer),
7335 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7336 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7337 msm_routing_put_audio_mixer),
7338 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7339 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7340 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307341 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7342 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7343 msm_routing_put_audio_mixer),
7344 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7345 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7346 msm_routing_put_audio_mixer),
7347 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7348 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7349 msm_routing_put_audio_mixer),
7350 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7351 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7352 msm_routing_put_audio_mixer),
7353 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7354 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7355 msm_routing_put_audio_mixer),
7356 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7357 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7358 msm_routing_put_audio_mixer),
7359};
7360
7361static const struct snd_kcontrol_new mmul5_mixer_controls[] = {
7362 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7363 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7364 msm_routing_put_audio_mixer),
7365 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7366 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7367 msm_routing_put_audio_mixer),
7368 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
7369 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7370 msm_routing_put_audio_mixer),
7371 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7372 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7373 msm_routing_put_audio_mixer),
7374 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7375 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7376 msm_routing_put_audio_mixer),
7377 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
7378 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7379 msm_routing_put_audio_mixer),
7380 SOC_SINGLE_EXT("SEC_AUX_PCM_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
7381 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7382 msm_routing_put_audio_mixer),
7383 SOC_SINGLE_EXT("TERT_AUX_PCM_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
7384 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7385 msm_routing_put_audio_mixer),
7386 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
7387 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7388 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307389 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
7390 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7391 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307392 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7393 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7394 msm_routing_put_audio_mixer),
7395 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7396 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7397 msm_routing_put_audio_mixer),
7398 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7399 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7400 msm_routing_put_audio_mixer),
7401 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7402 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7403 msm_routing_put_audio_mixer),
7404 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7405 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7406 msm_routing_put_audio_mixer),
7407 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7408 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7409 msm_routing_put_audio_mixer),
7410 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7411 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7412 msm_routing_put_audio_mixer),
7413 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7414 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7415 msm_routing_put_audio_mixer),
7416 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7417 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7418 msm_routing_put_audio_mixer),
7419 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7420 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7421 msm_routing_put_audio_mixer),
7422 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7423 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7424 msm_routing_put_audio_mixer),
7425 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7426 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7427 msm_routing_put_audio_mixer),
7428 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7429 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7430 msm_routing_put_audio_mixer),
7431 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7432 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7433 msm_routing_put_audio_mixer),
7434 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7435 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7436 msm_routing_put_audio_mixer),
7437 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7438 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7439 msm_routing_put_audio_mixer),
7440 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7441 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7442 msm_routing_put_audio_mixer),
7443 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7444 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7445 msm_routing_put_audio_mixer),
7446 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7447 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7448 msm_routing_put_audio_mixer),
7449 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7450 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7451 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307452 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7453 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7454 msm_routing_put_audio_mixer),
7455 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7456 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7457 msm_routing_put_audio_mixer),
7458 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7459 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7460 msm_routing_put_audio_mixer),
7461 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7462 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7463 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307464 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7465 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7466 msm_routing_put_audio_mixer),
7467 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7468 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7469 msm_routing_put_audio_mixer),
7470 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
7471 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7472 msm_routing_put_audio_mixer),
7473 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
7474 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7475 msm_routing_put_audio_mixer),
7476 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7477 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7478 msm_routing_put_audio_mixer),
7479};
7480
7481static const struct snd_kcontrol_new mmul6_mixer_controls[] = {
7482 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7483 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7484 msm_routing_put_audio_mixer),
7485 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7486 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7487 msm_routing_put_audio_mixer),
7488 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7489 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7490 msm_routing_put_audio_mixer),
7491 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7492 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7493 msm_routing_put_audio_mixer),
7494 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7495 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7496 msm_routing_put_audio_mixer),
7497 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7498 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7499 msm_routing_put_audio_mixer),
7500 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7501 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7502 msm_routing_put_audio_mixer),
7503 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7504 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7505 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307506 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_TX,
7507 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7508 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307509 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
7510 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7511 msm_routing_put_audio_mixer),
7512 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
7513 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7514 msm_routing_put_audio_mixer),
7515 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
7516 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7517 msm_routing_put_audio_mixer),
7518 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
7519 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7520 msm_routing_put_audio_mixer),
7521 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7522 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7523 msm_routing_put_audio_mixer),
7524 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7525 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7526 msm_routing_put_audio_mixer),
7527 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7528 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7529 msm_routing_put_audio_mixer),
7530 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7531 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7532 msm_routing_put_audio_mixer),
7533 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7534 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7535 msm_routing_put_audio_mixer),
7536 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7537 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7538 msm_routing_put_audio_mixer),
7539 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7540 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7541 msm_routing_put_audio_mixer),
7542 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7543 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7544 msm_routing_put_audio_mixer),
7545 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7546 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7547 msm_routing_put_audio_mixer),
7548 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7549 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7550 msm_routing_put_audio_mixer),
7551 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7552 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7553 msm_routing_put_audio_mixer),
7554 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7555 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7556 msm_routing_put_audio_mixer),
7557 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7558 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7559 msm_routing_put_audio_mixer),
7560 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7561 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7562 msm_routing_put_audio_mixer),
7563 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7564 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7565 msm_routing_put_audio_mixer),
7566 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7567 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7568 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307569 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7570 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7571 msm_routing_put_audio_mixer),
7572 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7573 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7574 msm_routing_put_audio_mixer),
7575 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7576 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7577 msm_routing_put_audio_mixer),
7578 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7579 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7580 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307581 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7582 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7583 msm_routing_put_audio_mixer),
7584};
7585
7586static const struct snd_kcontrol_new mmul8_mixer_controls[] = {
7587 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7588 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7589 msm_routing_put_audio_mixer),
7590 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7591 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7592 msm_routing_put_audio_mixer),
7593 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7594 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7595 msm_routing_put_audio_mixer),
7596 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7597 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7598 msm_routing_put_audio_mixer),
7599 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7600 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7601 msm_routing_put_audio_mixer),
7602 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7603 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7604 msm_routing_put_audio_mixer),
7605 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7606 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7607 msm_routing_put_audio_mixer),
7608 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7609 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7610 msm_routing_put_audio_mixer),
7611 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7612 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7613 msm_routing_put_audio_mixer),
7614 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7615 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7616 msm_routing_put_audio_mixer),
7617 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7618 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7619 msm_routing_put_audio_mixer),
7620 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7621 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7622 msm_routing_put_audio_mixer),
7623 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
7624 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7625 msm_routing_put_audio_mixer),
7626 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7627 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7628 msm_routing_put_audio_mixer),
7629 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7630 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7631 msm_routing_put_audio_mixer),
7632 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7633 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7634 msm_routing_put_audio_mixer),
7635 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7636 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7637 msm_routing_put_audio_mixer),
7638 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7639 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7640 msm_routing_put_audio_mixer),
7641 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7642 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7643 msm_routing_put_audio_mixer),
7644 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7645 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7646 msm_routing_put_audio_mixer),
7647 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7648 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7649 msm_routing_put_audio_mixer),
7650 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7651 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7652 msm_routing_put_audio_mixer),
7653 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7654 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7655 msm_routing_put_audio_mixer),
7656 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7657 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7658 msm_routing_put_audio_mixer),
7659 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7660 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7661 msm_routing_put_audio_mixer),
7662 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7663 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7664 msm_routing_put_audio_mixer),
7665 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7666 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7667 msm_routing_put_audio_mixer),
7668 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7669 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7670 msm_routing_put_audio_mixer),
7671 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7672 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7673 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307674 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7675 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7676 msm_routing_put_audio_mixer),
7677 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7678 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7679 msm_routing_put_audio_mixer),
7680 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7681 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7682 msm_routing_put_audio_mixer),
7683 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7684 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7685 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307686 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
7687 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7688 msm_routing_put_audio_mixer),
7689 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7690 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7691 msm_routing_put_audio_mixer),
7692};
7693
Asish Bhattacharya34504582017-08-08 12:55:01 +05307694static const struct snd_kcontrol_new mmul16_mixer_controls[] = {
7695 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7696 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7697 msm_routing_put_audio_mixer),
7698 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7699 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7700 msm_routing_put_audio_mixer),
7701 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7702 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7703 msm_routing_put_audio_mixer),
7704 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7705 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7706 msm_routing_put_audio_mixer),
7707 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7708 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7709 msm_routing_put_audio_mixer),
7710 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7711 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7712 msm_routing_put_audio_mixer),
7713 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7714 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7715 msm_routing_put_audio_mixer),
7716 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7717 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7718 msm_routing_put_audio_mixer),
7719 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7720 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7721 msm_routing_put_audio_mixer),
7722 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7723 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7724 msm_routing_put_audio_mixer),
7725 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7726 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7727 msm_routing_put_audio_mixer),
7728 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7729 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7730 msm_routing_put_audio_mixer),
7731 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
7732 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7733 msm_routing_put_audio_mixer),
7734 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7735 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7736 msm_routing_put_audio_mixer),
7737 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7738 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7739 msm_routing_put_audio_mixer),
7740 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7741 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7742 msm_routing_put_audio_mixer),
7743 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7744 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7745 msm_routing_put_audio_mixer),
7746 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7747 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7748 msm_routing_put_audio_mixer),
7749 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7750 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7751 msm_routing_put_audio_mixer),
7752 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7753 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7754 msm_routing_put_audio_mixer),
7755 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7756 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7757 msm_routing_put_audio_mixer),
7758 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7759 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7760 msm_routing_put_audio_mixer),
7761 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7762 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7763 msm_routing_put_audio_mixer),
7764 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7765 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7766 msm_routing_put_audio_mixer),
7767 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7768 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7769 msm_routing_put_audio_mixer),
7770 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7771 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7772 msm_routing_put_audio_mixer),
7773 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7774 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7775 msm_routing_put_audio_mixer),
7776 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7777 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7778 msm_routing_put_audio_mixer),
7779 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7780 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7781 msm_routing_put_audio_mixer),
7782 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
7783 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7784 msm_routing_put_audio_mixer),
7785 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7786 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7787 msm_routing_put_audio_mixer),
7788 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
7789 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7790 msm_routing_put_audio_mixer),
7791 SOC_SINGLE_EXT("AUX_PCM_TX", MSM_BACKEND_DAI_AUXPCM_TX,
7792 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7793 msm_routing_put_audio_mixer),
7794 SOC_SINGLE_EXT("SEC_AUX_PCM_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
7795 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7796 msm_routing_put_audio_mixer),
7797 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
7798 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7799 msm_routing_put_audio_mixer),
7800};
7801
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307802static const struct snd_kcontrol_new mmul9_mixer_controls[] = {
7803 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7804 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7805 msm_routing_put_audio_mixer),
7806 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7807 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7808 msm_routing_put_audio_mixer),
7809 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7810 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7811 msm_routing_put_audio_mixer),
7812 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7813 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7814 msm_routing_put_audio_mixer),
7815 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7816 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7817 msm_routing_put_audio_mixer),
7818 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7819 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7820 msm_routing_put_audio_mixer),
7821 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7822 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7823 msm_routing_put_audio_mixer),
7824 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
7825 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7826 msm_routing_put_audio_mixer),
7827 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7828 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7829 msm_routing_put_audio_mixer),
7830 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7831 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7832 msm_routing_put_audio_mixer),
7833 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7834 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7835 msm_routing_put_audio_mixer),
7836 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7837 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7838 msm_routing_put_audio_mixer),
7839 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7840 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7841 msm_routing_put_audio_mixer),
7842 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7843 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7844 msm_routing_put_audio_mixer),
7845 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7846 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7847 msm_routing_put_audio_mixer),
7848 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7849 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7850 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307851 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7852 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7853 msm_routing_put_audio_mixer),
7854 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7855 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7856 msm_routing_put_audio_mixer),
7857 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7858 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7859 msm_routing_put_audio_mixer),
7860 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7861 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7862 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307863};
7864
Laxminath Kasam38070be2017-08-17 18:21:59 +05307865static const struct snd_kcontrol_new mmul10_mixer_controls[] = {
7866 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7867 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7868 msm_routing_put_audio_mixer),
7869 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7870 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7871 msm_routing_put_audio_mixer),
7872 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7873 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7874 msm_routing_put_audio_mixer),
7875 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7876 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7877 msm_routing_put_audio_mixer),
7878 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7879 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7880 msm_routing_put_audio_mixer),
7881 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7882 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7883 msm_routing_put_audio_mixer),
7884 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7885 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7886 msm_routing_put_audio_mixer),
7887 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
7888 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7889 msm_routing_put_audio_mixer),
Vikram Panduranga72863152017-09-06 15:47:35 -07007890 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
7891 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7892 msm_routing_put_audio_mixer),
Laxminath Kasam38070be2017-08-17 18:21:59 +05307893 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7894 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7895 msm_routing_put_audio_mixer),
7896 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7897 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7898 msm_routing_put_audio_mixer),
7899 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7900 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7901 msm_routing_put_audio_mixer),
7902 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7903 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7904 msm_routing_put_audio_mixer),
7905 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7906 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7907 msm_routing_put_audio_mixer),
7908 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7909 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7910 msm_routing_put_audio_mixer),
7911 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7912 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7913 msm_routing_put_audio_mixer),
7914 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7915 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7916 msm_routing_put_audio_mixer),
7917 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7918 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7919 msm_routing_put_audio_mixer),
Vikram Panduranga016c49f2017-09-11 15:15:56 -07007920 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
7921 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7922 msm_routing_put_audio_mixer),
7923 SOC_SINGLE_EXT("AUX_PCM_TX", MSM_BACKEND_DAI_AUXPCM_TX,
7924 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7925 msm_routing_put_audio_mixer),
7926 SOC_SINGLE_EXT("SEC_AUX_PCM_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
7927 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7928 msm_routing_put_audio_mixer),
7929 SOC_SINGLE_EXT("TERT_AUX_PCM_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
7930 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7931 msm_routing_put_audio_mixer),
7932 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
7933 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7934 msm_routing_put_audio_mixer),
7935 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7936 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7937 msm_routing_put_audio_mixer),
7938 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7939 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7940 msm_routing_put_audio_mixer),
7941 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7942 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7943 msm_routing_put_audio_mixer),
Laxminath Kasam38070be2017-08-17 18:21:59 +05307944};
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307945static const struct snd_kcontrol_new mmul17_mixer_controls[] = {
7946 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7947 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7948 msm_routing_put_audio_mixer),
7949 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7950 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7951 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05307952 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7953 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7954 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307955 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7956 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7957 msm_routing_put_audio_mixer),
7958 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7959 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7960 msm_routing_put_audio_mixer),
7961 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7962 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7963 msm_routing_put_audio_mixer),
7964 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7965 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7966 msm_routing_put_audio_mixer),
7967 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7968 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7969 msm_routing_put_audio_mixer),
7970};
7971
7972static const struct snd_kcontrol_new mmul18_mixer_controls[] = {
7973 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7974 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
7975 msm_routing_put_audio_mixer),
7976 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7977 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
7978 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05307979 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7980 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
7981 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307982 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7983 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
7984 msm_routing_put_audio_mixer),
7985 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7986 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
7987 msm_routing_put_audio_mixer),
7988 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7989 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
7990 msm_routing_put_audio_mixer),
7991 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7992 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
7993 msm_routing_put_audio_mixer),
7994 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7995 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
7996 msm_routing_put_audio_mixer),
7997 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7998 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
7999 msm_routing_put_audio_mixer),
8000};
8001
8002static const struct snd_kcontrol_new mmul19_mixer_controls[] = {
8003 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8004 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
8005 msm_routing_put_audio_mixer),
8006 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
8007 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
8008 msm_routing_put_audio_mixer),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05308009 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
8010 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
8011 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308012 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
8013 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
8014 msm_routing_put_audio_mixer),
8015 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
8016 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
8017 msm_routing_put_audio_mixer),
8018 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
8019 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
8020 msm_routing_put_audio_mixer),
8021 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
8022 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
8023 msm_routing_put_audio_mixer),
8024 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
8025 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
8026 msm_routing_put_audio_mixer),
8027};
8028
8029static const struct snd_kcontrol_new mmul20_mixer_controls[] = {
8030 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
8031 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8032 msm_routing_put_audio_mixer),
8033 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
8034 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8035 msm_routing_put_audio_mixer),
8036 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
8037 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8038 msm_routing_put_audio_mixer),
8039 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
8040 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8041 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308042 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_TX,
8043 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8044 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308045 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
8046 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8047 msm_routing_put_audio_mixer),
8048 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
8049 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8050 msm_routing_put_audio_mixer),
8051 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
8052 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8053 msm_routing_put_audio_mixer),
8054 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
8055 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8056 msm_routing_put_audio_mixer),
8057 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
8058 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8059 msm_routing_put_audio_mixer),
8060 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
8061 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8062 msm_routing_put_audio_mixer),
8063 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
8064 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8065 msm_routing_put_audio_mixer),
8066 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
8067 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8068 msm_routing_put_audio_mixer),
8069 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
8070 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8071 msm_routing_put_audio_mixer),
8072 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
8073 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8074 msm_routing_put_audio_mixer),
8075 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
8076 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8077 msm_routing_put_audio_mixer),
8078 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
8079 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8080 msm_routing_put_audio_mixer),
8081 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
8082 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8083 msm_routing_put_audio_mixer),
8084 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
8085 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8086 msm_routing_put_audio_mixer),
8087 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
8088 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8089 msm_routing_put_audio_mixer),
8090 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
8091 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8092 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308093 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
8094 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8095 msm_routing_put_audio_mixer),
8096 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
8097 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8098 msm_routing_put_audio_mixer),
8099 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
8100 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8101 msm_routing_put_audio_mixer),
8102 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
8103 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
8104 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308105};
8106
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +05308107static const struct snd_kcontrol_new mmul28_mixer_controls[] = {
8108 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8109 MSM_FRONTEND_DAI_MULTIMEDIA28, 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_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
8113 msm_routing_put_audio_mixer),
8114 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
8115 MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
8116 msm_routing_put_audio_mixer),
8117 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
8118 MSM_FRONTEND_DAI_MULTIMEDIA28, 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_MULTIMEDIA28, 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_MULTIMEDIA28, 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_MULTIMEDIA28, 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_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
8131 msm_routing_put_audio_mixer),
8132};
8133
8134static const struct snd_kcontrol_new mmul29_mixer_controls[] = {
8135 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8136 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
8137 msm_routing_put_audio_mixer),
8138 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
8139 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
8140 msm_routing_put_audio_mixer),
8141 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
8142 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
8143 msm_routing_put_audio_mixer),
8144 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
8145 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
8146 msm_routing_put_audio_mixer),
8147 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
8148 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
8149 msm_routing_put_audio_mixer),
8150 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
8151 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
8152 msm_routing_put_audio_mixer),
8153 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
8154 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
8155 msm_routing_put_audio_mixer),
8156 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
8157 MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
8158 msm_routing_put_audio_mixer),
8159};
8160
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308161static const struct snd_kcontrol_new pri_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308162 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_PRI_I2S_RX,
8163 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8164 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308165 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_PRI_I2S_RX,
8166 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8167 msm_routing_put_voice_mixer),
8168 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_PRI_I2S_RX,
8169 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8170 msm_routing_put_voice_mixer),
8171 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_PRI_I2S_RX,
8172 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8173 msm_routing_put_voice_mixer),
8174 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_PRI_I2S_RX,
8175 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8176 msm_routing_put_voice_mixer),
8177};
8178
8179static const struct snd_kcontrol_new sec_i2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308180 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SEC_I2S_RX,
8181 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8182 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308183 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SEC_I2S_RX,
8184 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8185 msm_routing_put_voice_mixer),
8186 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SEC_I2S_RX,
8187 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8188 msm_routing_put_voice_mixer),
8189};
8190
8191static const struct snd_kcontrol_new sec_mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308192 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
8193 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8194 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308195 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
8196 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8197 msm_routing_put_voice_mixer),
8198 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
8199 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8200 msm_routing_put_voice_mixer),
8201 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
8202 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8203 msm_routing_put_voice_mixer),
8204 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
8205 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8206 msm_routing_put_voice_mixer),
8207};
8208
8209static const struct snd_kcontrol_new slimbus_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308210 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8211 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8212 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308213 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8214 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8215 msm_routing_put_voice_mixer),
8216 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8217 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8218 msm_routing_put_voice_mixer),
8219 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8220 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8221 msm_routing_put_voice_mixer),
8222 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8223 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8224 msm_routing_put_voice_mixer),
8225};
8226
8227static const struct snd_kcontrol_new slimbus_6_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308228 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8229 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8230 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308231 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8232 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8233 msm_routing_put_voice_mixer),
8234 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8235 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8236 msm_routing_put_voice_mixer),
8237 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8238 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8239 msm_routing_put_voice_mixer),
8240 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8241 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8242 msm_routing_put_voice_mixer),
8243};
8244
8245static const struct snd_kcontrol_new usb_audio_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308246 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_USB_RX,
8247 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8248 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308249 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_USB_RX,
8250 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8251 msm_routing_put_voice_mixer),
8252 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_USB_RX,
8253 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8254 msm_routing_put_voice_mixer),
8255 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_USB_RX,
8256 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8257 msm_routing_put_voice_mixer),
8258 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_USB_RX,
8259 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8260 msm_routing_put_voice_mixer),
8261};
8262
Aalique Grahamee4fd7d52017-11-28 13:24:13 -08008263static const struct snd_kcontrol_new display_port_rx_voice_mixer_controls[] = {
8264 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
8265 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8266 msm_routing_put_voice_mixer),
Aalique Grahamee4fd7d52017-11-28 13:24:13 -08008267 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
8268 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8269 msm_routing_put_voice_mixer),
8270 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
8271 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8272 msm_routing_put_voice_mixer),
8273 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
8274 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8275 msm_routing_put_voice_mixer),
8276 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
8277 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8278 msm_routing_put_voice_mixer),
8279};
8280
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308281static const struct snd_kcontrol_new bt_sco_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308282 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8283 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8284 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308285 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8286 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8287 msm_routing_put_voice_mixer),
8288 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8289 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8290 msm_routing_put_voice_mixer),
8291 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8292 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8293 msm_routing_put_voice_mixer),
8294 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8295 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8296 msm_routing_put_voice_mixer),
8297};
8298
8299static const struct snd_kcontrol_new mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308300 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_MI2S_RX,
8301 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8302 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308303 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_MI2S_RX,
8304 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8305 msm_routing_put_voice_mixer),
8306 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_MI2S_RX,
8307 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8308 msm_routing_put_voice_mixer),
8309 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_MI2S_RX,
8310 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8311 msm_routing_put_voice_mixer),
8312 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_MI2S_RX,
8313 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8314 msm_routing_put_voice_mixer),
8315};
8316
8317static const struct snd_kcontrol_new pri_mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308318 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_PRI_MI2S_RX,
8319 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8320 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308321 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_PRI_MI2S_RX,
8322 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8323 msm_routing_put_voice_mixer),
8324 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_PRI_MI2S_RX,
8325 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8326 msm_routing_put_voice_mixer),
8327 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_PRI_MI2S_RX,
8328 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8329 msm_routing_put_voice_mixer),
8330 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_PRI_MI2S_RX,
8331 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8332 msm_routing_put_voice_mixer),
8333};
8334
8335static const struct snd_kcontrol_new int0_mi2s_rx_voice_mixer_controls[] = {
8336 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_INT0_MI2S_RX,
8337 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8338 msm_routing_put_voice_mixer),
8339 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_INT0_MI2S_RX,
8340 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8341 msm_routing_put_voice_mixer),
8342 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_INT0_MI2S_RX,
8343 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8344 msm_routing_put_voice_mixer),
8345 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_INT0_MI2S_RX,
8346 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8347 msm_routing_put_voice_mixer),
8348 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_INT0_MI2S_RX,
8349 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8350 msm_routing_put_voice_mixer),
8351};
8352
8353static const struct snd_kcontrol_new int4_mi2s_rx_voice_mixer_controls[] = {
8354 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_INT4_MI2S_RX,
8355 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8356 msm_routing_put_voice_mixer),
8357 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_INT4_MI2S_RX,
8358 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8359 msm_routing_put_voice_mixer),
8360 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_INT4_MI2S_RX,
8361 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8362 msm_routing_put_voice_mixer),
8363 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_INT4_MI2S_RX,
8364 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8365 msm_routing_put_voice_mixer),
8366 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_INT4_MI2S_RX,
8367 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8368 msm_routing_put_voice_mixer),
8369};
8370
8371static const struct snd_kcontrol_new tert_mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308372 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8373 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8374 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308375 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8376 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8377 msm_routing_put_voice_mixer),
8378 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8379 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8380 msm_routing_put_voice_mixer),
8381 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8382 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8383 msm_routing_put_voice_mixer),
8384 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8385 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8386 msm_routing_put_voice_mixer),
8387};
8388
8389static const struct snd_kcontrol_new quat_mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308390 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8391 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8392 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308393 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8394 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8395 msm_routing_put_voice_mixer),
8396 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8397 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8398 msm_routing_put_voice_mixer),
8399 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8400 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8401 msm_routing_put_voice_mixer),
8402 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8403 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8404 msm_routing_put_voice_mixer),
8405};
8406
8407static const struct snd_kcontrol_new quin_mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308408 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8409 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8410 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308411 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8412 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8413 msm_routing_put_voice_mixer),
8414 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8415 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8416 msm_routing_put_voice_mixer),
8417 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8418 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8419 msm_routing_put_voice_mixer),
8420 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8421 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8422 msm_routing_put_voice_mixer),
8423};
8424
8425static const struct snd_kcontrol_new afe_pcm_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308426 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_AFE_PCM_RX,
8427 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8428 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308429 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_AFE_PCM_RX,
8430 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8431 msm_routing_put_voice_mixer),
8432 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_AFE_PCM_RX,
8433 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8434 msm_routing_put_voice_mixer),
8435 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_AFE_PCM_RX,
8436 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8437 msm_routing_put_voice_mixer),
8438 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_AFE_PCM_RX,
8439 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8440 msm_routing_put_voice_mixer),
8441};
8442
8443static const struct snd_kcontrol_new aux_pcm_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308444 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_AUXPCM_RX,
8445 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8446 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308447 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_AUXPCM_RX,
8448 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8449 msm_routing_put_voice_mixer),
8450 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_AUXPCM_RX,
8451 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8452 msm_routing_put_voice_mixer),
8453 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_AUXPCM_RX,
8454 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8455 msm_routing_put_voice_mixer),
8456 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_AUXPCM_RX,
8457 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8458 msm_routing_put_voice_mixer),
8459};
8460
8461static const struct snd_kcontrol_new sec_aux_pcm_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308462 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8463 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8464 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308465 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8466 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8467 msm_routing_put_voice_mixer),
8468 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8469 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8470 msm_routing_put_voice_mixer),
8471 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8472 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8473 msm_routing_put_voice_mixer),
8474 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8475 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8476 msm_routing_put_voice_mixer),
8477};
8478
8479static const struct snd_kcontrol_new tert_aux_pcm_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308480 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8481 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8482 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308483 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8484 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8485 msm_routing_put_voice_mixer),
8486 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8487 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8488 msm_routing_put_voice_mixer),
8489 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8490 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8491 msm_routing_put_voice_mixer),
8492 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8493 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8494 msm_routing_put_voice_mixer),
8495};
8496
8497static const struct snd_kcontrol_new quat_aux_pcm_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308498 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8499 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8500 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308501 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8502 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8503 msm_routing_put_voice_mixer),
8504 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8505 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8506 msm_routing_put_voice_mixer),
8507 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8508 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8509 msm_routing_put_voice_mixer),
8510 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8511 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8512 msm_routing_put_voice_mixer),
8513};
8514
Rohit Kumara5077932017-09-10 22:05:05 +05308515static const struct snd_kcontrol_new quin_aux_pcm_rx_voice_mixer_controls[] = {
Rohit Kumara5077932017-09-10 22:05:05 +05308516 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
8517 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8518 msm_routing_put_voice_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308519 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
8520 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8521 msm_routing_put_voice_mixer),
8522 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
8523 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8524 msm_routing_put_voice_mixer),
8525 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
8526 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8527 msm_routing_put_voice_mixer),
8528 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
8529 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8530 msm_routing_put_voice_mixer),
8531};
8532
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308533static const struct snd_kcontrol_new hdmi_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308534 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_HDMI_RX,
8535 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8536 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308537 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_HDMI_RX,
8538 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8539 msm_routing_put_voice_mixer),
8540 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_HDMI_RX,
8541 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8542 msm_routing_put_voice_mixer),
8543 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_HDMI_RX,
8544 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8545 msm_routing_put_voice_mixer),
8546 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_HDMI_RX,
8547 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8548 msm_routing_put_voice_mixer),
8549};
8550
8551static const struct snd_kcontrol_new slimbus_7_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308552 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8553 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8554 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308555 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8556 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8557 msm_routing_put_voice_mixer),
8558 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8559 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8560 msm_routing_put_voice_mixer),
8561 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8562 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8563 msm_routing_put_voice_mixer),
8564 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8565 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8566 msm_routing_put_voice_mixer),
8567};
8568
8569static const struct snd_kcontrol_new slimbus_8_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308570 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8571 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8572 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308573 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8574 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8575 msm_routing_put_voice_mixer),
8576 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8577 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8578 msm_routing_put_voice_mixer),
8579 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8580 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8581 msm_routing_put_voice_mixer),
8582 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8583 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8584 msm_routing_put_voice_mixer),
8585};
8586
8587static const struct snd_kcontrol_new quat_tdm_rx_2_voice_mixer_controls[] = {
8588 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
8589 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8590 msm_routing_put_voice_mixer),
8591};
8592
8593static const struct snd_kcontrol_new stub_rx_mixer_controls[] = {
kunleizdf5a00a2017-11-27 15:27:36 +08008594 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_EXTPROC_RX,
8595 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8596 msm_routing_put_voice_mixer),
8597 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_EXTPROC_RX,
8598 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8599 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308600};
8601
8602static const struct snd_kcontrol_new slimbus_1_rx_mixer_controls[] = {
kunleizdf5a00a2017-11-27 15:27:36 +08008603 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_1_RX,
8604 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8605 msm_routing_put_voice_mixer),
8606 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_1_RX,
8607 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8608 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308609};
8610
8611static const struct snd_kcontrol_new slimbus_3_rx_mixer_controls[] = {
kunleizdf5a00a2017-11-27 15:27:36 +08008612 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_3_RX,
8613 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8614 msm_routing_put_voice_mixer),
8615 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_3_RX,
8616 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8617 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308618};
8619
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308620static const struct snd_kcontrol_new tx_voicemmode1_mixer_controls[] = {
8621 SOC_SINGLE_EXT("PRI_TX_MMode1", MSM_BACKEND_DAI_PRI_I2S_TX,
8622 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8623 msm_routing_put_voice_mixer),
8624 SOC_SINGLE_EXT("MI2S_TX_MMode1", MSM_BACKEND_DAI_MI2S_TX,
8625 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8626 msm_routing_put_voice_mixer),
8627 SOC_SINGLE_EXT("SLIM_0_TX_MMode1",
8628 MSM_BACKEND_DAI_SLIMBUS_0_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8629 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8630 SOC_SINGLE_EXT("INT_BT_SCO_TX_MMode1",
8631 MSM_BACKEND_DAI_INT_BT_SCO_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8632 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8633 SOC_SINGLE_EXT("AFE_PCM_TX_MMode1",
8634 MSM_BACKEND_DAI_AFE_PCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0,
8635 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8636 SOC_SINGLE_EXT("AUX_PCM_TX_MMode1",
8637 MSM_BACKEND_DAI_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0,
8638 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8639 SOC_SINGLE_EXT("SEC_AUX_PCM_TX_MMode1",
8640 MSM_BACKEND_DAI_SEC_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8641 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8642 SOC_SINGLE_EXT("TERT_AUX_PCM_TX_MMode1",
8643 MSM_BACKEND_DAI_TERT_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8644 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8645 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX_MMode1",
8646 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8647 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308648 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX_MMode1",
8649 MSM_BACKEND_DAI_QUIN_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8650 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308651 SOC_SINGLE_EXT("PRI_MI2S_TX_MMode1",
8652 MSM_BACKEND_DAI_PRI_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0,
8653 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8654 SOC_SINGLE_EXT("TERT_MI2S_TX_MMode1",
8655 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE1,
8656 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8657 SOC_SINGLE_EXT("INT3_MI2S_TX_MMode1",
8658 MSM_BACKEND_DAI_INT3_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE1,
8659 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8660 SOC_SINGLE_EXT("SLIM_7_TX_MMode1",
8661 MSM_BACKEND_DAI_SLIMBUS_7_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8662 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8663 SOC_SINGLE_EXT("SLIM_8_TX_MMode1",
8664 MSM_BACKEND_DAI_SLIMBUS_8_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8665 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8666 SOC_SINGLE_EXT("USB_AUDIO_TX_MMode1", MSM_BACKEND_DAI_USB_TX,
8667 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8668 msm_routing_put_voice_mixer),
8669 SOC_SINGLE_EXT("QUAT_TDM_TX_0_MMode1",
8670 MSM_BACKEND_DAI_QUAT_TDM_TX_0, MSM_FRONTEND_DAI_VOICEMMODE1,
8671 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Aditya Bavanari769c3102018-02-23 16:34:40 +05308672 SOC_SINGLE_EXT("QUAT_MI2S_TX_MMode1",
8673 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0,
8674 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8675 SOC_SINGLE_EXT("QUIN_MI2S_TX_MMode1",
8676 MSM_BACKEND_DAI_QUINARY_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE1,
8677 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308678};
8679
8680static const struct snd_kcontrol_new tx_voicemmode2_mixer_controls[] = {
8681 SOC_SINGLE_EXT("PRI_TX_MMode2", MSM_BACKEND_DAI_PRI_I2S_TX,
8682 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8683 msm_routing_put_voice_mixer),
8684 SOC_SINGLE_EXT("MI2S_TX_MMode2", MSM_BACKEND_DAI_MI2S_TX,
8685 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8686 msm_routing_put_voice_mixer),
8687 SOC_SINGLE_EXT("SLIM_0_TX_MMode2",
8688 MSM_BACKEND_DAI_SLIMBUS_0_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8689 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8690 SOC_SINGLE_EXT("INT_BT_SCO_TX_MMode2",
8691 MSM_BACKEND_DAI_INT_BT_SCO_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8692 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8693 SOC_SINGLE_EXT("AFE_PCM_TX_MMode2",
8694 MSM_BACKEND_DAI_AFE_PCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0,
8695 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8696 SOC_SINGLE_EXT("AUX_PCM_TX_MMode2",
8697 MSM_BACKEND_DAI_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0,
8698 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8699 SOC_SINGLE_EXT("SEC_AUX_PCM_TX_MMode2",
8700 MSM_BACKEND_DAI_SEC_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8701 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8702 SOC_SINGLE_EXT("TERT_AUX_PCM_TX_MMode2",
8703 MSM_BACKEND_DAI_TERT_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8704 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8705 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX_MMode2",
8706 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8707 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308708 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX_MMode2",
8709 MSM_BACKEND_DAI_QUIN_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8710 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308711 SOC_SINGLE_EXT("PRI_MI2S_TX_MMode2",
8712 MSM_BACKEND_DAI_PRI_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0,
8713 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8714 SOC_SINGLE_EXT("TERT_MI2S_TX_MMode2",
8715 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE2,
8716 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8717 SOC_SINGLE_EXT("INT3_MI2S_TX_MMode2",
8718 MSM_BACKEND_DAI_INT3_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE2,
8719 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8720 SOC_SINGLE_EXT("SLIM_7_TX_MMode2",
8721 MSM_BACKEND_DAI_SLIMBUS_7_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8722 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8723 SOC_SINGLE_EXT("SLIM_8_TX_MMode2",
8724 MSM_BACKEND_DAI_SLIMBUS_8_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8725 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8726 SOC_SINGLE_EXT("USB_AUDIO_TX_MMode2",
8727 MSM_BACKEND_DAI_USB_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8728 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Aditya Bavanari769c3102018-02-23 16:34:40 +05308729 SOC_SINGLE_EXT("QUAT_MI2S_TX_MMode2",
8730 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0,
8731 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8732 SOC_SINGLE_EXT("QUIN_MI2S_TX_MMode2",
8733 MSM_BACKEND_DAI_QUINARY_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE2,
8734 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308735};
8736
8737static const struct snd_kcontrol_new tx_voip_mixer_controls[] = {
8738 SOC_SINGLE_EXT("PRI_TX_Voip", MSM_BACKEND_DAI_PRI_I2S_TX,
8739 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8740 msm_routing_put_voice_mixer),
8741 SOC_SINGLE_EXT("MI2S_TX_Voip", MSM_BACKEND_DAI_MI2S_TX,
8742 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8743 msm_routing_put_voice_mixer),
8744 SOC_SINGLE_EXT("SLIM_0_TX_Voip", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8745 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8746 msm_routing_put_voice_mixer),
8747 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX_Voip", MSM_BACKEND_DAI_INT_BT_SCO_TX,
8748 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8749 msm_routing_put_voice_mixer),
8750 SOC_SINGLE_EXT("AFE_PCM_TX_Voip", MSM_BACKEND_DAI_AFE_PCM_TX,
8751 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8752 msm_routing_put_voice_mixer),
8753 SOC_SINGLE_EXT("AUX_PCM_TX_Voip", MSM_BACKEND_DAI_AUXPCM_TX,
8754 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8755 msm_routing_put_voice_mixer),
8756 SOC_SINGLE_EXT("SEC_AUX_PCM_TX_Voip", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
8757 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8758 msm_routing_put_voice_mixer),
8759 SOC_SINGLE_EXT("TERT_AUX_PCM_TX_Voip", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
8760 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8761 msm_routing_put_voice_mixer),
8762 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX_Voip", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
8763 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8764 msm_routing_put_voice_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308765 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX_Voip", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
8766 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8767 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308768 SOC_SINGLE_EXT("PRI_MI2S_TX_Voip", MSM_BACKEND_DAI_PRI_MI2S_TX,
8769 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8770 msm_routing_put_voice_mixer),
8771 SOC_SINGLE_EXT("TERT_MI2S_TX_Voip", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
8772 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8773 msm_routing_put_voice_mixer),
8774 SOC_SINGLE_EXT("INT3_MI2S_TX_Voip", MSM_BACKEND_DAI_INT3_MI2S_TX,
8775 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8776 msm_routing_put_voice_mixer),
8777 SOC_SINGLE_EXT("SLIM_7_TX_Voip", MSM_BACKEND_DAI_SLIMBUS_7_TX,
8778 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8779 msm_routing_put_voice_mixer),
8780 SOC_SINGLE_EXT("SLIM_8_TX_Voip", MSM_BACKEND_DAI_SLIMBUS_8_TX,
8781 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8782 msm_routing_put_voice_mixer),
8783 SOC_SINGLE_EXT("USB_AUDIO_TX_Voip", MSM_BACKEND_DAI_USB_TX,
8784 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8785 msm_routing_put_voice_mixer),
8786};
8787
8788static const struct snd_kcontrol_new tx_voice_stub_mixer_controls[] = {
8789 SOC_SINGLE_EXT("STUB_TX_HL", MSM_BACKEND_DAI_EXTPROC_TX,
8790 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8791 msm_routing_put_voice_stub_mixer),
8792 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
8793 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8794 msm_routing_put_voice_stub_mixer),
8795 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
8796 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8797 msm_routing_put_voice_stub_mixer),
8798 SOC_SINGLE_EXT("STUB_1_TX_HL", MSM_BACKEND_DAI_EXTPROC_EC_TX,
8799 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8800 msm_routing_put_voice_stub_mixer),
8801 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
8802 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8803 msm_routing_put_voice_stub_mixer),
8804 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
8805 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8806 msm_routing_put_voice_stub_mixer),
8807 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
8808 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8809 msm_routing_put_voice_stub_mixer),
8810 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
8811 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8812 msm_routing_put_voice_stub_mixer),
8813 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
8814 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8815 msm_routing_put_voice_stub_mixer),
8816 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
8817 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8818 msm_routing_put_voice_stub_mixer),
8819 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
8820 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8821 msm_routing_put_voice_stub_mixer),
8822 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
8823 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8824 msm_routing_put_voice_stub_mixer),
8825 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
8826 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8827 msm_routing_put_voice_stub_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308828 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
8829 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8830 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308831 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8832 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8833 msm_routing_put_voice_stub_mixer),
8834 SOC_SINGLE_EXT("SLIM_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
8835 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8836 msm_routing_put_voice_stub_mixer),
8837 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
8838 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8839 msm_routing_put_voice_stub_mixer),
8840 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
8841 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8842 msm_routing_put_voice_stub_mixer),
8843 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
8844 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8845 msm_routing_put_voice_stub_mixer),
8846};
8847
8848static const struct snd_kcontrol_new tx_voice2_stub_mixer_controls[] = {
8849 SOC_SINGLE_EXT("STUB_TX_HL", MSM_BACKEND_DAI_EXTPROC_TX,
8850 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8851 msm_routing_put_voice_stub_mixer),
8852 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
8853 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8854 msm_routing_put_voice_stub_mixer),
8855 SOC_SINGLE_EXT("STUB_1_TX_HL", MSM_BACKEND_DAI_EXTPROC_EC_TX,
8856 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8857 msm_routing_put_voice_stub_mixer),
8858 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
8859 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8860 msm_routing_put_voice_stub_mixer),
8861 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
8862 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8863 msm_routing_put_voice_stub_mixer),
8864 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
8865 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8866 msm_routing_put_voice_stub_mixer),
8867 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
8868 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8869 msm_routing_put_voice_stub_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308870 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
8871 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8872 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308873 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8874 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8875 msm_routing_put_voice_stub_mixer),
8876 SOC_SINGLE_EXT("SLIM_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
8877 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8878 msm_routing_put_voice_stub_mixer),
8879 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
8880 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8881 msm_routing_put_voice_stub_mixer),
8882 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
8883 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8884 msm_routing_put_voice_stub_mixer),
8885 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
8886 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8887 msm_routing_put_voice_stub_mixer),
8888 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
8889 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8890 msm_routing_put_voice_stub_mixer),
8891 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
8892 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8893 msm_routing_put_voice_stub_mixer),
8894};
8895
8896static const struct snd_kcontrol_new tx_volte_stub_mixer_controls[] = {
8897 SOC_SINGLE_EXT("STUB_TX_HL", MSM_BACKEND_DAI_EXTPROC_TX,
8898 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8899 msm_routing_put_voice_stub_mixer),
8900 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
8901 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8902 msm_routing_put_voice_stub_mixer),
8903 SOC_SINGLE_EXT("STUB_1_TX_HL", MSM_BACKEND_DAI_EXTPROC_EC_TX,
8904 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8905 msm_routing_put_voice_stub_mixer),
8906 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
8907 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8908 msm_routing_put_voice_stub_mixer),
8909 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
8910 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8911 msm_routing_put_voice_stub_mixer),
8912 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
8913 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8914 msm_routing_put_voice_stub_mixer),
8915 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
8916 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8917 msm_routing_put_voice_stub_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308918 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
8919 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8920 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308921 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8922 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8923 msm_routing_put_voice_stub_mixer),
8924 SOC_SINGLE_EXT("SLIM_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
8925 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8926 msm_routing_put_voice_stub_mixer),
8927 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
8928 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8929 msm_routing_put_voice_stub_mixer),
8930 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
8931 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8932 msm_routing_put_voice_stub_mixer),
8933 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
8934 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8935 msm_routing_put_voice_stub_mixer),
8936 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
8937 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8938 msm_routing_put_voice_stub_mixer),
8939 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
8940 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8941 msm_routing_put_voice_stub_mixer),
8942};
8943
8944static const struct snd_kcontrol_new tx_qchat_mixer_controls[] = {
8945 SOC_SINGLE_EXT("PRI_TX_QCHAT", MSM_BACKEND_DAI_PRI_I2S_TX,
8946 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8947 msm_routing_put_voice_mixer),
8948 SOC_SINGLE_EXT("SLIM_0_TX_QCHAT", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8949 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8950 msm_routing_put_voice_mixer),
8951 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX_QCHAT",
8952 MSM_BACKEND_DAI_INT_BT_SCO_TX, MSM_FRONTEND_DAI_QCHAT, 1, 0,
8953 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8954 SOC_SINGLE_EXT("AFE_PCM_TX_QCHAT", MSM_BACKEND_DAI_AFE_PCM_TX,
8955 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8956 msm_routing_put_voice_mixer),
8957 SOC_SINGLE_EXT("AUX_PCM_TX_QCHAT", MSM_BACKEND_DAI_AUXPCM_TX,
8958 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8959 msm_routing_put_voice_mixer),
8960 SOC_SINGLE_EXT("SEC_AUX_PCM_TX_QCHAT", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
8961 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8962 msm_routing_put_voice_mixer),
8963 SOC_SINGLE_EXT("TERT_AUX_PCM_TX_QCHAT", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
8964 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8965 msm_routing_put_voice_mixer),
8966 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX_QCHAT", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
8967 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8968 msm_routing_put_voice_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308969 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX_QCHAT", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
8970 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8971 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308972 SOC_SINGLE_EXT("MI2S_TX_QCHAT", MSM_BACKEND_DAI_MI2S_TX,
8973 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8974 msm_routing_put_voice_mixer),
8975 SOC_SINGLE_EXT("PRI_MI2S_TX_QCHAT", MSM_BACKEND_DAI_PRI_MI2S_TX,
8976 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8977 msm_routing_put_voice_mixer),
8978 SOC_SINGLE_EXT("TERT_MI2S_TX_QCHAT", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
8979 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8980 msm_routing_put_voice_mixer),
8981 SOC_SINGLE_EXT("INT3_MI2S_TX_QCHAT", MSM_BACKEND_DAI_INT3_MI2S_TX,
8982 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8983 msm_routing_put_voice_mixer),
8984 SOC_SINGLE_EXT("SLIM_7_TX_QCHAT", MSM_BACKEND_DAI_SLIMBUS_7_TX,
8985 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8986 msm_routing_put_voice_mixer),
8987 SOC_SINGLE_EXT("SLIM_8_TX_QCHAT", MSM_BACKEND_DAI_SLIMBUS_8_TX,
8988 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8989 msm_routing_put_voice_mixer),
8990 SOC_SINGLE_EXT("USB_AUDIO_TX_QCHAT", MSM_BACKEND_DAI_USB_TX,
8991 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8992 msm_routing_put_voice_mixer),
8993};
8994
8995static const struct snd_kcontrol_new int0_mi2s_rx_port_mixer_controls[] = {
8996 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
8997 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8998 msm_routing_put_port_mixer),
8999 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9000 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9001 msm_routing_put_port_mixer),
9002 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9003 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9004 msm_routing_put_port_mixer),
9005 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9006 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9007 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309008 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9009 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9010 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309011 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9012 MSM_BACKEND_DAI_INT3_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9013 msm_routing_put_port_mixer),
9014 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9015 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9016 msm_routing_put_port_mixer),
9017 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9018 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
9019 msm_routing_put_port_mixer),
9020 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9021 MSM_BACKEND_DAI_SLIMBUS_7_TX, 1, 0, msm_routing_get_port_mixer,
9022 msm_routing_put_port_mixer),
9023 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
9024 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9025 msm_routing_put_port_mixer),
9026};
9027
9028static const struct snd_kcontrol_new int4_mi2s_rx_port_mixer_controls[] = {
9029 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9030 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9031 msm_routing_put_port_mixer),
9032 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9033 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9034 msm_routing_put_port_mixer),
9035 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9036 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9037 msm_routing_put_port_mixer),
9038 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9039 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9040 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309041 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9042 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9043 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309044 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9045 MSM_BACKEND_DAI_INT3_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9046 msm_routing_put_port_mixer),
9047 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9048 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9049 msm_routing_put_port_mixer),
9050 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9051 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
9052 msm_routing_put_port_mixer),
9053 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9054 MSM_BACKEND_DAI_SLIMBUS_7_TX, 1, 0, msm_routing_get_port_mixer,
9055 msm_routing_put_port_mixer),
9056 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
9057 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9058 msm_routing_put_port_mixer),
9059};
9060
9061static const struct snd_kcontrol_new sbus_0_rx_port_mixer_controls[] = {
9062 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9063 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9064 msm_routing_put_port_mixer),
9065 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9066 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9067 msm_routing_put_port_mixer),
9068 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9069 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9070 msm_routing_put_port_mixer),
9071 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9072 MSM_BACKEND_DAI_SLIMBUS_7_TX, 1, 0, msm_routing_get_port_mixer,
9073 msm_routing_put_port_mixer),
9074 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9075 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9076 msm_routing_put_port_mixer),
9077 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9078 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9079 msm_routing_put_port_mixer),
9080 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9081 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9082 msm_routing_put_port_mixer),
9083 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9084 MSM_BACKEND_DAI_TERT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9085 msm_routing_put_port_mixer),
9086 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9087 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9088 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309089 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9090 MSM_BACKEND_DAI_QUIN_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9091 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309092 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9093 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9094 msm_routing_put_port_mixer),
9095 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9096 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9097 msm_routing_put_port_mixer),
9098 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9099 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9100 msm_routing_put_port_mixer),
9101 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9102 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9103 msm_routing_put_port_mixer),
9104 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9105 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9106 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309107 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9108 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9109 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309110 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9111 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
9112 msm_routing_put_port_mixer),
9113 SOC_SINGLE_EXT("PRI_MI2S_RX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9114 MSM_BACKEND_DAI_PRI_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
9115 msm_routing_put_port_mixer),
9116 SOC_SINGLE_EXT("SEC_MI2S_RX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9117 MSM_BACKEND_DAI_SECONDARY_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
9118 msm_routing_put_port_mixer),
9119 SOC_SINGLE_EXT("TERT_MI2S_RX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9120 MSM_BACKEND_DAI_TERTIARY_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
9121 msm_routing_put_port_mixer),
9122 SOC_SINGLE_EXT("QUAT_MI2S_RX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9123 MSM_BACKEND_DAI_QUATERNARY_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
9124 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309125 SOC_SINGLE_EXT("QUIN_MI2S_RX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
9126 MSM_BACKEND_DAI_QUINARY_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
9127 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309128};
9129
9130static const struct snd_kcontrol_new aux_pcm_rx_port_mixer_controls[] = {
9131 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_RX,
9132 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9133 msm_routing_put_port_mixer),
9134 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_AUXPCM_RX,
9135 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9136 msm_routing_put_port_mixer),
9137 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_AUXPCM_RX,
9138 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9139 msm_routing_put_port_mixer),
9140 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_RX,
9141 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9142 msm_routing_put_port_mixer),
9143 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_AUXPCM_RX,
9144 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0, msm_routing_get_port_mixer,
9145 msm_routing_put_port_mixer),
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -08009146 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_AUXPCM_RX,
9147 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9148 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309149};
9150
9151static const struct snd_kcontrol_new sec_auxpcm_rx_port_mixer_controls[] = {
9152 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
9153 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9154 msm_routing_put_port_mixer),
9155 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
9156 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9157 msm_routing_put_port_mixer),
9158 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
9159 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9160 msm_routing_put_port_mixer),
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -08009161 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
9162 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9163 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309164};
9165
9166static const struct snd_kcontrol_new tert_auxpcm_rx_port_mixer_controls[] = {
9167 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
9168 MSM_BACKEND_DAI_TERT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9169 msm_routing_put_port_mixer),
9170 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
9171 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9172 msm_routing_put_port_mixer),
9173 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
9174 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9175 msm_routing_put_port_mixer),
9176};
9177
9178static const struct snd_kcontrol_new quat_auxpcm_rx_port_mixer_controls[] = {
9179 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
9180 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9181 msm_routing_put_port_mixer),
9182 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
9183 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9184 msm_routing_put_port_mixer),
9185 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
9186 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9187 msm_routing_put_port_mixer),
9188};
9189
Rohit Kumara5077932017-09-10 22:05:05 +05309190static const struct snd_kcontrol_new quin_auxpcm_rx_port_mixer_controls[] = {
9191 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
9192 MSM_BACKEND_DAI_QUIN_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9193 msm_routing_put_port_mixer),
9194 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
9195 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9196 msm_routing_put_port_mixer),
9197 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
9198 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9199 msm_routing_put_port_mixer),
9200};
9201
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309202static const struct snd_kcontrol_new sbus_1_rx_port_mixer_controls[] = {
9203 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9204 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
9205 msm_routing_put_port_mixer),
9206 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9207 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0, msm_routing_get_port_mixer,
9208 msm_routing_put_port_mixer),
9209 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9210 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9211 msm_routing_put_port_mixer),
9212 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9213 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9214 msm_routing_put_port_mixer),
9215 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9216 MSM_BACKEND_DAI_TERT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9217 msm_routing_put_port_mixer),
9218 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9219 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9220 msm_routing_put_port_mixer),
9221};
9222
9223static const struct snd_kcontrol_new sbus_3_rx_port_mixer_controls[] = {
9224 SOC_SINGLE_EXT("INTERNAL_BT_SCO_RX", MSM_BACKEND_DAI_SLIMBUS_3_RX,
9225 MSM_BACKEND_DAI_INT_BT_SCO_RX, 1, 0, msm_routing_get_port_mixer,
9226 msm_routing_put_port_mixer),
9227 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_3_RX,
9228 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9229 msm_routing_put_port_mixer),
9230 SOC_SINGLE_EXT("AFE_PCM_RX", MSM_BACKEND_DAI_SLIMBUS_3_RX,
9231 MSM_BACKEND_DAI_AFE_PCM_RX, 1, 0, msm_routing_get_port_mixer,
9232 msm_routing_put_port_mixer),
9233 SOC_SINGLE_EXT("AUX_PCM_RX", MSM_BACKEND_DAI_SLIMBUS_3_RX,
9234 MSM_BACKEND_DAI_AUXPCM_RX, 1, 0, msm_routing_get_port_mixer,
9235 msm_routing_put_port_mixer),
9236 SOC_SINGLE_EXT("SLIM_0_RX", MSM_BACKEND_DAI_SLIMBUS_3_RX,
9237 MSM_BACKEND_DAI_SLIMBUS_0_RX, 1, 0, msm_routing_get_port_mixer,
9238 msm_routing_put_port_mixer),
9239};
9240
9241static const struct snd_kcontrol_new sbus_6_rx_port_mixer_controls[] = {
9242 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9243 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9244 msm_routing_put_port_mixer),
9245 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9246 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9247 msm_routing_put_port_mixer),
9248 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9249 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9250 msm_routing_put_port_mixer),
9251 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9252 MSM_BACKEND_DAI_SLIMBUS_7_TX, 1, 0, msm_routing_get_port_mixer,
9253 msm_routing_put_port_mixer),
9254 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9255 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9256 msm_routing_put_port_mixer),
9257 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9258 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9259 msm_routing_put_port_mixer),
9260 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9261 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9262 msm_routing_put_port_mixer),
9263 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9264 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9265 msm_routing_put_port_mixer),
9266 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9267 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9268 msm_routing_put_port_mixer),
9269 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9270 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9271 msm_routing_put_port_mixer),
9272 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9273 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9274 msm_routing_put_port_mixer),
9275 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9276 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
9277 msm_routing_put_port_mixer),
9278};
9279
9280static const struct snd_kcontrol_new bt_sco_rx_port_mixer_controls[] = {
9281 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_INT_BT_SCO_RX,
9282 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9283 msm_routing_put_port_mixer),
9284 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_INT_BT_SCO_RX,
9285 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9286 msm_routing_put_port_mixer),
9287};
9288
9289static const struct snd_kcontrol_new afe_pcm_rx_port_mixer_controls[] = {
9290 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_AFE_PCM_RX,
9291 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9292 msm_routing_put_port_mixer),
9293 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_AFE_PCM_RX,
9294 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9295 msm_routing_put_port_mixer),
9296};
9297
9298
9299static const struct snd_kcontrol_new hdmi_rx_port_mixer_controls[] = {
9300 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_HDMI_RX,
9301 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9302 msm_routing_put_port_mixer),
9303};
9304
9305static const struct snd_kcontrol_new display_port_rx_port_mixer_controls[] = {
9306 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
9307 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9308 msm_routing_put_port_mixer),
9309};
9310
9311static const struct snd_kcontrol_new sec_i2s_rx_port_mixer_controls[] = {
9312 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_SEC_I2S_RX,
9313 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9314 msm_routing_put_port_mixer),
9315};
9316
9317static const struct snd_kcontrol_new mi2s_rx_port_mixer_controls[] = {
9318 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_MI2S_RX,
9319 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9320 msm_routing_put_port_mixer),
9321 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_RX,
9322 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9323 msm_routing_put_port_mixer),
9324};
9325
9326static const struct snd_kcontrol_new primary_mi2s_rx_port_mixer_controls[] = {
9327 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9328 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9329 msm_routing_put_port_mixer),
9330 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9331 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9332 msm_routing_put_port_mixer),
9333 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9334 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9335 msm_routing_put_port_mixer),
9336 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9337 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9338 msm_routing_put_port_mixer),
9339 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9340 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
9341 msm_routing_put_port_mixer),
9342 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9343 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9344 msm_routing_put_port_mixer),
9345 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9346 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9347 msm_routing_put_port_mixer),
9348 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9349 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9350 msm_routing_put_port_mixer),
9351 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9352 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9353 msm_routing_put_port_mixer),
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -08009354 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9355 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9356 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309357};
9358
9359static const struct snd_kcontrol_new usb_rx_port_mixer_controls[] = {
9360 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_RX,
9361 MSM_BACKEND_DAI_USB_TX, 1, 0, msm_routing_get_port_mixer,
9362 msm_routing_put_port_mixer),
9363};
9364
9365static const struct snd_kcontrol_new quat_mi2s_rx_port_mixer_controls[] = {
9366 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9367 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9368 msm_routing_put_port_mixer),
9369 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9370 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9371 msm_routing_put_port_mixer),
9372 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9373 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9374 msm_routing_put_port_mixer),
9375 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9376 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9377 msm_routing_put_port_mixer),
9378 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9379 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9380 msm_routing_put_port_mixer),
9381 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9382 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9383 msm_routing_put_port_mixer),
9384 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9385 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9386 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309387 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9388 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9389 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309390 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9391 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9392 msm_routing_put_port_mixer),
9393};
9394
Rohit Kumara5077932017-09-10 22:05:05 +05309395static const struct snd_kcontrol_new quin_mi2s_rx_port_mixer_controls[] = {
9396 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9397 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9398 msm_routing_put_port_mixer),
9399 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9400 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9401 msm_routing_put_port_mixer),
9402 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9403 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9404 msm_routing_put_port_mixer),
9405 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9406 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9407 msm_routing_put_port_mixer),
9408 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9409 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9410 msm_routing_put_port_mixer),
9411 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9412 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9413 msm_routing_put_port_mixer),
9414 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9415 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9416 msm_routing_put_port_mixer),
9417};
9418
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309419static const struct snd_kcontrol_new pri_tdm_rx_0_port_mixer_controls[] = {
9420 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9421 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9422 msm_routing_get_port_mixer,
9423 msm_routing_put_port_mixer),
9424 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9425 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9426 msm_routing_get_port_mixer,
9427 msm_routing_put_port_mixer),
9428 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9429 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9430 msm_routing_get_port_mixer,
9431 msm_routing_put_port_mixer),
9432 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9433 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9434 msm_routing_get_port_mixer,
9435 msm_routing_put_port_mixer),
9436 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9437 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9438 msm_routing_get_port_mixer,
9439 msm_routing_put_port_mixer),
9440 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9441 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9442 msm_routing_get_port_mixer,
9443 msm_routing_put_port_mixer),
9444 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9445 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9446 msm_routing_get_port_mixer,
9447 msm_routing_put_port_mixer),
9448 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9449 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9450 msm_routing_get_port_mixer,
9451 msm_routing_put_port_mixer),
9452 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9453 MSM_BACKEND_DAI_PRI_TDM_TX_0, 1, 0,
9454 msm_routing_get_port_mixer,
9455 msm_routing_put_port_mixer),
9456 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9457 MSM_BACKEND_DAI_PRI_TDM_TX_1, 1, 0,
9458 msm_routing_get_port_mixer,
9459 msm_routing_put_port_mixer),
9460 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9461 MSM_BACKEND_DAI_PRI_TDM_TX_2, 1, 0,
9462 msm_routing_get_port_mixer,
9463 msm_routing_put_port_mixer),
9464 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9465 MSM_BACKEND_DAI_PRI_TDM_TX_3, 1, 0,
9466 msm_routing_get_port_mixer,
9467 msm_routing_put_port_mixer),
9468 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9469 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9470 msm_routing_get_port_mixer,
9471 msm_routing_put_port_mixer),
9472 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9473 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9474 msm_routing_get_port_mixer,
9475 msm_routing_put_port_mixer),
9476 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9477 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9478 msm_routing_get_port_mixer,
9479 msm_routing_put_port_mixer),
9480 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9481 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9482 msm_routing_get_port_mixer,
9483 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309484 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9485 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9486 msm_routing_get_port_mixer,
9487 msm_routing_put_port_mixer),
9488 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9489 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9490 msm_routing_get_port_mixer,
9491 msm_routing_put_port_mixer),
9492 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9493 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9494 msm_routing_get_port_mixer,
9495 msm_routing_put_port_mixer),
9496 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9497 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9498 msm_routing_get_port_mixer,
9499 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309500};
9501
9502static const struct snd_kcontrol_new pri_tdm_rx_1_port_mixer_controls[] = {
9503 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9504 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9505 msm_routing_get_port_mixer,
9506 msm_routing_put_port_mixer),
9507 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9508 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9509 msm_routing_get_port_mixer,
9510 msm_routing_put_port_mixer),
9511 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9512 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9513 msm_routing_get_port_mixer,
9514 msm_routing_put_port_mixer),
9515 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9516 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9517 msm_routing_get_port_mixer,
9518 msm_routing_put_port_mixer),
9519 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9520 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9521 msm_routing_get_port_mixer,
9522 msm_routing_put_port_mixer),
9523 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9524 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9525 msm_routing_get_port_mixer,
9526 msm_routing_put_port_mixer),
9527 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9528 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9529 msm_routing_get_port_mixer,
9530 msm_routing_put_port_mixer),
9531 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9532 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9533 msm_routing_get_port_mixer,
9534 msm_routing_put_port_mixer),
9535 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9536 MSM_BACKEND_DAI_PRI_TDM_TX_0, 1, 0,
9537 msm_routing_get_port_mixer,
9538 msm_routing_put_port_mixer),
9539 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9540 MSM_BACKEND_DAI_PRI_TDM_TX_1, 1, 0,
9541 msm_routing_get_port_mixer,
9542 msm_routing_put_port_mixer),
9543 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9544 MSM_BACKEND_DAI_PRI_TDM_TX_2, 1, 0,
9545 msm_routing_get_port_mixer,
9546 msm_routing_put_port_mixer),
9547 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9548 MSM_BACKEND_DAI_PRI_TDM_TX_3, 1, 0,
9549 msm_routing_get_port_mixer,
9550 msm_routing_put_port_mixer),
9551 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9552 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9553 msm_routing_get_port_mixer,
9554 msm_routing_put_port_mixer),
9555 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9556 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9557 msm_routing_get_port_mixer,
9558 msm_routing_put_port_mixer),
9559 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9560 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9561 msm_routing_get_port_mixer,
9562 msm_routing_put_port_mixer),
9563 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9564 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9565 msm_routing_get_port_mixer,
9566 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309567 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9568 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9569 msm_routing_get_port_mixer,
9570 msm_routing_put_port_mixer),
9571 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9572 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9573 msm_routing_get_port_mixer,
9574 msm_routing_put_port_mixer),
9575 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9576 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9577 msm_routing_get_port_mixer,
9578 msm_routing_put_port_mixer),
9579 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9580 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9581 msm_routing_get_port_mixer,
9582 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309583};
9584
9585static const struct snd_kcontrol_new pri_tdm_rx_2_port_mixer_controls[] = {
9586 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9587 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9588 msm_routing_get_port_mixer,
9589 msm_routing_put_port_mixer),
9590 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9591 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9592 msm_routing_get_port_mixer,
9593 msm_routing_put_port_mixer),
9594 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9595 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9596 msm_routing_get_port_mixer,
9597 msm_routing_put_port_mixer),
9598 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9599 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9600 msm_routing_get_port_mixer,
9601 msm_routing_put_port_mixer),
9602 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9603 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9604 msm_routing_get_port_mixer,
9605 msm_routing_put_port_mixer),
9606 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9607 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9608 msm_routing_get_port_mixer,
9609 msm_routing_put_port_mixer),
9610 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9611 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9612 msm_routing_get_port_mixer,
9613 msm_routing_put_port_mixer),
9614 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9615 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9616 msm_routing_get_port_mixer,
9617 msm_routing_put_port_mixer),
9618 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9619 MSM_BACKEND_DAI_PRI_TDM_TX_0, 1, 0,
9620 msm_routing_get_port_mixer,
9621 msm_routing_put_port_mixer),
9622 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9623 MSM_BACKEND_DAI_PRI_TDM_TX_1, 1, 0,
9624 msm_routing_get_port_mixer,
9625 msm_routing_put_port_mixer),
9626 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9627 MSM_BACKEND_DAI_PRI_TDM_TX_2, 1, 0,
9628 msm_routing_get_port_mixer,
9629 msm_routing_put_port_mixer),
9630 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9631 MSM_BACKEND_DAI_PRI_TDM_TX_3, 1, 0,
9632 msm_routing_get_port_mixer,
9633 msm_routing_put_port_mixer),
9634 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9635 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9636 msm_routing_get_port_mixer,
9637 msm_routing_put_port_mixer),
9638 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9639 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9640 msm_routing_get_port_mixer,
9641 msm_routing_put_port_mixer),
9642 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9643 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9644 msm_routing_get_port_mixer,
9645 msm_routing_put_port_mixer),
9646 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9647 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9648 msm_routing_get_port_mixer,
9649 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309650 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9651 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9652 msm_routing_get_port_mixer,
9653 msm_routing_put_port_mixer),
9654 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9655 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9656 msm_routing_get_port_mixer,
9657 msm_routing_put_port_mixer),
9658 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9659 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9660 msm_routing_get_port_mixer,
9661 msm_routing_put_port_mixer),
9662 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9663 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9664 msm_routing_get_port_mixer,
9665 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309666};
9667
9668static const struct snd_kcontrol_new pri_tdm_rx_3_port_mixer_controls[] = {
9669 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9670 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9671 msm_routing_get_port_mixer,
9672 msm_routing_put_port_mixer),
9673 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9674 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9675 msm_routing_get_port_mixer,
9676 msm_routing_put_port_mixer),
9677 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9678 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9679 msm_routing_get_port_mixer,
9680 msm_routing_put_port_mixer),
9681 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9682 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9683 msm_routing_get_port_mixer,
9684 msm_routing_put_port_mixer),
9685 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9686 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9687 msm_routing_get_port_mixer,
9688 msm_routing_put_port_mixer),
9689 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9690 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9691 msm_routing_get_port_mixer,
9692 msm_routing_put_port_mixer),
9693 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9694 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9695 msm_routing_get_port_mixer,
9696 msm_routing_put_port_mixer),
9697 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9698 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9699 msm_routing_get_port_mixer,
9700 msm_routing_put_port_mixer),
9701 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9702 MSM_BACKEND_DAI_PRI_TDM_TX_0, 1, 0,
9703 msm_routing_get_port_mixer,
9704 msm_routing_put_port_mixer),
9705 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9706 MSM_BACKEND_DAI_PRI_TDM_TX_1, 1, 0,
9707 msm_routing_get_port_mixer,
9708 msm_routing_put_port_mixer),
9709 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9710 MSM_BACKEND_DAI_PRI_TDM_TX_2, 1, 0,
9711 msm_routing_get_port_mixer,
9712 msm_routing_put_port_mixer),
9713 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9714 MSM_BACKEND_DAI_PRI_TDM_TX_3, 1, 0,
9715 msm_routing_get_port_mixer,
9716 msm_routing_put_port_mixer),
9717 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9718 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9719 msm_routing_get_port_mixer,
9720 msm_routing_put_port_mixer),
9721 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9722 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9723 msm_routing_get_port_mixer,
9724 msm_routing_put_port_mixer),
9725 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9726 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9727 msm_routing_get_port_mixer,
9728 msm_routing_put_port_mixer),
9729 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9730 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9731 msm_routing_get_port_mixer,
9732 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309733 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9734 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9735 msm_routing_get_port_mixer,
9736 msm_routing_put_port_mixer),
9737 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9738 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9739 msm_routing_get_port_mixer,
9740 msm_routing_put_port_mixer),
9741 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9742 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9743 msm_routing_get_port_mixer,
9744 msm_routing_put_port_mixer),
9745 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9746 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9747 msm_routing_get_port_mixer,
9748 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309749};
9750
9751static const struct snd_kcontrol_new sec_tdm_rx_0_port_mixer_controls[] = {
9752 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9753 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9754 msm_routing_get_port_mixer,
9755 msm_routing_put_port_mixer),
9756 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9757 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9758 msm_routing_get_port_mixer,
9759 msm_routing_put_port_mixer),
9760 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9761 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9762 msm_routing_get_port_mixer,
9763 msm_routing_put_port_mixer),
9764 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9765 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9766 msm_routing_get_port_mixer,
9767 msm_routing_put_port_mixer),
9768 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9769 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9770 msm_routing_get_port_mixer,
9771 msm_routing_put_port_mixer),
9772 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9773 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9774 msm_routing_get_port_mixer,
9775 msm_routing_put_port_mixer),
9776 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9777 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9778 msm_routing_get_port_mixer,
9779 msm_routing_put_port_mixer),
9780 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9781 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9782 msm_routing_get_port_mixer,
9783 msm_routing_put_port_mixer),
9784 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9785 MSM_BACKEND_DAI_SEC_TDM_TX_0, 1, 0,
9786 msm_routing_get_port_mixer,
9787 msm_routing_put_port_mixer),
9788 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9789 MSM_BACKEND_DAI_SEC_TDM_TX_1, 1, 0,
9790 msm_routing_get_port_mixer,
9791 msm_routing_put_port_mixer),
9792 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9793 MSM_BACKEND_DAI_SEC_TDM_TX_2, 1, 0,
9794 msm_routing_get_port_mixer,
9795 msm_routing_put_port_mixer),
9796 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9797 MSM_BACKEND_DAI_SEC_TDM_TX_3, 1, 0,
9798 msm_routing_get_port_mixer,
9799 msm_routing_put_port_mixer),
9800 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9801 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9802 msm_routing_get_port_mixer,
9803 msm_routing_put_port_mixer),
9804 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9805 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9806 msm_routing_get_port_mixer,
9807 msm_routing_put_port_mixer),
9808 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9809 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9810 msm_routing_get_port_mixer,
9811 msm_routing_put_port_mixer),
9812 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9813 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9814 msm_routing_get_port_mixer,
9815 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309816 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9817 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9818 msm_routing_get_port_mixer,
9819 msm_routing_put_port_mixer),
9820 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9821 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9822 msm_routing_get_port_mixer,
9823 msm_routing_put_port_mixer),
9824 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9825 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9826 msm_routing_get_port_mixer,
9827 msm_routing_put_port_mixer),
9828 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9829 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9830 msm_routing_get_port_mixer,
9831 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309832};
9833
9834static const struct snd_kcontrol_new sec_tdm_rx_1_port_mixer_controls[] = {
9835 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9836 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9837 msm_routing_get_port_mixer,
9838 msm_routing_put_port_mixer),
9839 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9840 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9841 msm_routing_get_port_mixer,
9842 msm_routing_put_port_mixer),
9843 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9844 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9845 msm_routing_get_port_mixer,
9846 msm_routing_put_port_mixer),
9847 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9848 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9849 msm_routing_get_port_mixer,
9850 msm_routing_put_port_mixer),
9851 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9852 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9853 msm_routing_get_port_mixer,
9854 msm_routing_put_port_mixer),
9855 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9856 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9857 msm_routing_get_port_mixer,
9858 msm_routing_put_port_mixer),
9859 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9860 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9861 msm_routing_get_port_mixer,
9862 msm_routing_put_port_mixer),
9863 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9864 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9865 msm_routing_get_port_mixer,
9866 msm_routing_put_port_mixer),
9867 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9868 MSM_BACKEND_DAI_SEC_TDM_TX_0, 1, 0,
9869 msm_routing_get_port_mixer,
9870 msm_routing_put_port_mixer),
9871 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9872 MSM_BACKEND_DAI_SEC_TDM_TX_1, 1, 0,
9873 msm_routing_get_port_mixer,
9874 msm_routing_put_port_mixer),
9875 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9876 MSM_BACKEND_DAI_SEC_TDM_TX_2, 1, 0,
9877 msm_routing_get_port_mixer,
9878 msm_routing_put_port_mixer),
9879 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9880 MSM_BACKEND_DAI_SEC_TDM_TX_3, 1, 0,
9881 msm_routing_get_port_mixer,
9882 msm_routing_put_port_mixer),
9883 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9884 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9885 msm_routing_get_port_mixer,
9886 msm_routing_put_port_mixer),
9887 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9888 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9889 msm_routing_get_port_mixer,
9890 msm_routing_put_port_mixer),
9891 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9892 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9893 msm_routing_get_port_mixer,
9894 msm_routing_put_port_mixer),
9895 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9896 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9897 msm_routing_get_port_mixer,
9898 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309899 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9900 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9901 msm_routing_get_port_mixer,
9902 msm_routing_put_port_mixer),
9903 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9904 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9905 msm_routing_get_port_mixer,
9906 msm_routing_put_port_mixer),
9907 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9908 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9909 msm_routing_get_port_mixer,
9910 msm_routing_put_port_mixer),
9911 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9912 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9913 msm_routing_get_port_mixer,
9914 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309915};
9916
9917static const struct snd_kcontrol_new sec_tdm_rx_2_port_mixer_controls[] = {
9918 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9919 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9920 msm_routing_get_port_mixer,
9921 msm_routing_put_port_mixer),
9922 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9923 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9924 msm_routing_get_port_mixer,
9925 msm_routing_put_port_mixer),
9926 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9927 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9928 msm_routing_get_port_mixer,
9929 msm_routing_put_port_mixer),
9930 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9931 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9932 msm_routing_get_port_mixer,
9933 msm_routing_put_port_mixer),
9934 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9935 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9936 msm_routing_get_port_mixer,
9937 msm_routing_put_port_mixer),
9938 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9939 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9940 msm_routing_get_port_mixer,
9941 msm_routing_put_port_mixer),
9942 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9943 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9944 msm_routing_get_port_mixer,
9945 msm_routing_put_port_mixer),
9946 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9947 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9948 msm_routing_get_port_mixer,
9949 msm_routing_put_port_mixer),
9950 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9951 MSM_BACKEND_DAI_SEC_TDM_TX_0, 1, 0,
9952 msm_routing_get_port_mixer,
9953 msm_routing_put_port_mixer),
9954 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9955 MSM_BACKEND_DAI_SEC_TDM_TX_1, 1, 0,
9956 msm_routing_get_port_mixer,
9957 msm_routing_put_port_mixer),
9958 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9959 MSM_BACKEND_DAI_SEC_TDM_TX_2, 1, 0,
9960 msm_routing_get_port_mixer,
9961 msm_routing_put_port_mixer),
9962 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9963 MSM_BACKEND_DAI_SEC_TDM_TX_3, 1, 0,
9964 msm_routing_get_port_mixer,
9965 msm_routing_put_port_mixer),
9966 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9967 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9968 msm_routing_get_port_mixer,
9969 msm_routing_put_port_mixer),
9970 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9971 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9972 msm_routing_get_port_mixer,
9973 msm_routing_put_port_mixer),
9974 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9975 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9976 msm_routing_get_port_mixer,
9977 msm_routing_put_port_mixer),
9978 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9979 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9980 msm_routing_get_port_mixer,
9981 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309982 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9983 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9984 msm_routing_get_port_mixer,
9985 msm_routing_put_port_mixer),
9986 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9987 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9988 msm_routing_get_port_mixer,
9989 msm_routing_put_port_mixer),
9990 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9991 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9992 msm_routing_get_port_mixer,
9993 msm_routing_put_port_mixer),
9994 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9995 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9996 msm_routing_get_port_mixer,
9997 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309998};
9999
10000static const struct snd_kcontrol_new sec_tdm_rx_3_port_mixer_controls[] = {
10001 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10002 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10003 msm_routing_get_port_mixer,
10004 msm_routing_put_port_mixer),
10005 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10006 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10007 msm_routing_get_port_mixer,
10008 msm_routing_put_port_mixer),
10009 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10010 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
10011 msm_routing_get_port_mixer,
10012 msm_routing_put_port_mixer),
10013 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10014 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10015 msm_routing_get_port_mixer,
10016 msm_routing_put_port_mixer),
10017 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10018 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10019 msm_routing_get_port_mixer,
10020 msm_routing_put_port_mixer),
10021 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10022 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10023 msm_routing_get_port_mixer,
10024 msm_routing_put_port_mixer),
10025 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10026 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10027 msm_routing_get_port_mixer,
10028 msm_routing_put_port_mixer),
10029 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10030 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10031 msm_routing_get_port_mixer,
10032 msm_routing_put_port_mixer),
10033 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10034 MSM_BACKEND_DAI_SEC_TDM_TX_0, 1, 0,
10035 msm_routing_get_port_mixer,
10036 msm_routing_put_port_mixer),
10037 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10038 MSM_BACKEND_DAI_SEC_TDM_TX_1, 1, 0,
10039 msm_routing_get_port_mixer,
10040 msm_routing_put_port_mixer),
10041 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10042 MSM_BACKEND_DAI_SEC_TDM_TX_2, 1, 0,
10043 msm_routing_get_port_mixer,
10044 msm_routing_put_port_mixer),
10045 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10046 MSM_BACKEND_DAI_SEC_TDM_TX_3, 1, 0,
10047 msm_routing_get_port_mixer,
10048 msm_routing_put_port_mixer),
10049 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10050 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10051 msm_routing_get_port_mixer,
10052 msm_routing_put_port_mixer),
10053 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10054 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10055 msm_routing_get_port_mixer,
10056 msm_routing_put_port_mixer),
10057 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10058 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10059 msm_routing_get_port_mixer,
10060 msm_routing_put_port_mixer),
10061 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10062 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10063 msm_routing_get_port_mixer,
10064 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010065 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10066 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10067 msm_routing_get_port_mixer,
10068 msm_routing_put_port_mixer),
10069 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10070 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10071 msm_routing_get_port_mixer,
10072 msm_routing_put_port_mixer),
10073 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10074 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10075 msm_routing_get_port_mixer,
10076 msm_routing_put_port_mixer),
10077 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_3,
10078 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10079 msm_routing_get_port_mixer,
10080 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010081};
10082
10083static const struct snd_kcontrol_new tert_tdm_rx_0_port_mixer_controls[] = {
10084 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10085 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10086 msm_routing_get_port_mixer,
10087 msm_routing_put_port_mixer),
10088 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10089 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10090 msm_routing_get_port_mixer,
10091 msm_routing_put_port_mixer),
10092 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10093 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
10094 msm_routing_get_port_mixer,
10095 msm_routing_put_port_mixer),
10096 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10097 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10098 msm_routing_get_port_mixer,
10099 msm_routing_put_port_mixer),
10100 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10101 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10102 msm_routing_get_port_mixer,
10103 msm_routing_put_port_mixer),
10104 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10105 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10106 msm_routing_get_port_mixer,
10107 msm_routing_put_port_mixer),
10108 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10109 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10110 msm_routing_get_port_mixer,
10111 msm_routing_put_port_mixer),
10112 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10113 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10114 msm_routing_get_port_mixer,
10115 msm_routing_put_port_mixer),
10116 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10117 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10118 msm_routing_get_port_mixer,
10119 msm_routing_put_port_mixer),
10120 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10121 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10122 msm_routing_get_port_mixer,
10123 msm_routing_put_port_mixer),
10124 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10125 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10126 msm_routing_get_port_mixer,
10127 msm_routing_put_port_mixer),
10128 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10129 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10130 msm_routing_get_port_mixer,
10131 msm_routing_put_port_mixer),
10132 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10133 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10134 msm_routing_get_port_mixer,
10135 msm_routing_put_port_mixer),
10136 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10137 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10138 msm_routing_get_port_mixer,
10139 msm_routing_put_port_mixer),
10140 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10141 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10142 msm_routing_get_port_mixer,
10143 msm_routing_put_port_mixer),
10144 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10145 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10146 msm_routing_get_port_mixer,
10147 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010148 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10149 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10150 msm_routing_get_port_mixer,
10151 msm_routing_put_port_mixer),
10152 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10153 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10154 msm_routing_get_port_mixer,
10155 msm_routing_put_port_mixer),
10156 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10157 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10158 msm_routing_get_port_mixer,
10159 msm_routing_put_port_mixer),
10160 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_0,
10161 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10162 msm_routing_get_port_mixer,
10163 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010164};
10165
10166static const struct snd_kcontrol_new tert_tdm_rx_1_port_mixer_controls[] = {
10167 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10168 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10169 msm_routing_get_port_mixer,
10170 msm_routing_put_port_mixer),
10171 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10172 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10173 msm_routing_get_port_mixer,
10174 msm_routing_put_port_mixer),
10175 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10176 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
10177 msm_routing_get_port_mixer,
10178 msm_routing_put_port_mixer),
10179 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10180 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10181 msm_routing_get_port_mixer,
10182 msm_routing_put_port_mixer),
10183 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10184 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10185 msm_routing_get_port_mixer,
10186 msm_routing_put_port_mixer),
10187 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10188 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10189 msm_routing_get_port_mixer,
10190 msm_routing_put_port_mixer),
10191 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10192 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10193 msm_routing_get_port_mixer,
10194 msm_routing_put_port_mixer),
10195 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10196 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10197 msm_routing_get_port_mixer,
10198 msm_routing_put_port_mixer),
10199 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10200 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10201 msm_routing_get_port_mixer,
10202 msm_routing_put_port_mixer),
10203 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10204 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10205 msm_routing_get_port_mixer,
10206 msm_routing_put_port_mixer),
10207 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10208 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10209 msm_routing_get_port_mixer,
10210 msm_routing_put_port_mixer),
10211 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10212 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10213 msm_routing_get_port_mixer,
10214 msm_routing_put_port_mixer),
10215 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10216 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10217 msm_routing_get_port_mixer,
10218 msm_routing_put_port_mixer),
10219 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10220 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10221 msm_routing_get_port_mixer,
10222 msm_routing_put_port_mixer),
10223 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10224 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10225 msm_routing_get_port_mixer,
10226 msm_routing_put_port_mixer),
10227 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10228 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10229 msm_routing_get_port_mixer,
10230 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010231 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10232 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10233 msm_routing_get_port_mixer,
10234 msm_routing_put_port_mixer),
10235 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10236 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10237 msm_routing_get_port_mixer,
10238 msm_routing_put_port_mixer),
10239 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10240 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10241 msm_routing_get_port_mixer,
10242 msm_routing_put_port_mixer),
10243 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10244 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10245 msm_routing_get_port_mixer,
10246 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010247};
10248
10249static const struct snd_kcontrol_new tert_tdm_rx_2_port_mixer_controls[] = {
10250 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10251 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10252 msm_routing_get_port_mixer,
10253 msm_routing_put_port_mixer),
10254 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10255 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10256 msm_routing_get_port_mixer,
10257 msm_routing_put_port_mixer),
10258 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10259 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
10260 msm_routing_get_port_mixer,
10261 msm_routing_put_port_mixer),
10262 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10263 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10264 msm_routing_get_port_mixer,
10265 msm_routing_put_port_mixer),
10266 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10267 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10268 msm_routing_get_port_mixer,
10269 msm_routing_put_port_mixer),
10270 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10271 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10272 msm_routing_get_port_mixer,
10273 msm_routing_put_port_mixer),
10274 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10275 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10276 msm_routing_get_port_mixer,
10277 msm_routing_put_port_mixer),
10278 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10279 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10280 msm_routing_get_port_mixer,
10281 msm_routing_put_port_mixer),
10282 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10283 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10284 msm_routing_get_port_mixer,
10285 msm_routing_put_port_mixer),
10286 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10287 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10288 msm_routing_get_port_mixer,
10289 msm_routing_put_port_mixer),
10290 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10291 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10292 msm_routing_get_port_mixer,
10293 msm_routing_put_port_mixer),
10294 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10295 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10296 msm_routing_get_port_mixer,
10297 msm_routing_put_port_mixer),
10298 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10299 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10300 msm_routing_get_port_mixer,
10301 msm_routing_put_port_mixer),
10302 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10303 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10304 msm_routing_get_port_mixer,
10305 msm_routing_put_port_mixer),
10306 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10307 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10308 msm_routing_get_port_mixer,
10309 msm_routing_put_port_mixer),
10310 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10311 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10312 msm_routing_get_port_mixer,
10313 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010314 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10315 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10316 msm_routing_get_port_mixer,
10317 msm_routing_put_port_mixer),
10318 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10319 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10320 msm_routing_get_port_mixer,
10321 msm_routing_put_port_mixer),
10322 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10323 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10324 msm_routing_get_port_mixer,
10325 msm_routing_put_port_mixer),
10326 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10327 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10328 msm_routing_get_port_mixer,
10329 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010330};
10331
10332static const struct snd_kcontrol_new tert_tdm_rx_3_port_mixer_controls[] = {
10333 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10334 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10335 msm_routing_get_port_mixer,
10336 msm_routing_put_port_mixer),
10337 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10338 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10339 msm_routing_get_port_mixer,
10340 msm_routing_put_port_mixer),
10341 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10342 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
10343 msm_routing_get_port_mixer,
10344 msm_routing_put_port_mixer),
10345 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10346 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10347 msm_routing_get_port_mixer,
10348 msm_routing_put_port_mixer),
10349 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10350 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10351 msm_routing_get_port_mixer,
10352 msm_routing_put_port_mixer),
10353 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10354 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10355 msm_routing_get_port_mixer,
10356 msm_routing_put_port_mixer),
10357 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10358 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10359 msm_routing_get_port_mixer,
10360 msm_routing_put_port_mixer),
10361 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10362 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10363 msm_routing_get_port_mixer,
10364 msm_routing_put_port_mixer),
10365 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10366 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10367 msm_routing_get_port_mixer,
10368 msm_routing_put_port_mixer),
10369 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10370 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10371 msm_routing_get_port_mixer,
10372 msm_routing_put_port_mixer),
10373 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10374 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10375 msm_routing_get_port_mixer,
10376 msm_routing_put_port_mixer),
10377 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10378 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10379 msm_routing_get_port_mixer,
10380 msm_routing_put_port_mixer),
10381 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10382 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10383 msm_routing_get_port_mixer,
10384 msm_routing_put_port_mixer),
10385 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10386 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10387 msm_routing_get_port_mixer,
10388 msm_routing_put_port_mixer),
10389 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10390 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10391 msm_routing_get_port_mixer,
10392 msm_routing_put_port_mixer),
10393 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10394 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10395 msm_routing_get_port_mixer,
10396 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010397 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10398 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10399 msm_routing_get_port_mixer,
10400 msm_routing_put_port_mixer),
10401 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10402 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10403 msm_routing_get_port_mixer,
10404 msm_routing_put_port_mixer),
10405 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10406 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10407 msm_routing_get_port_mixer,
10408 msm_routing_put_port_mixer),
10409 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10410 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10411 msm_routing_get_port_mixer,
10412 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010413};
10414
10415static const struct snd_kcontrol_new quat_tdm_rx_0_port_mixer_controls[] = {
10416 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10417 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10418 msm_routing_get_port_mixer,
10419 msm_routing_put_port_mixer),
10420 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10421 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10422 msm_routing_get_port_mixer,
10423 msm_routing_put_port_mixer),
10424 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10425 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10426 msm_routing_get_port_mixer,
10427 msm_routing_put_port_mixer),
10428 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10429 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10430 msm_routing_get_port_mixer,
10431 msm_routing_put_port_mixer),
10432 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10433 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10434 msm_routing_get_port_mixer,
10435 msm_routing_put_port_mixer),
10436 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10437 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10438 msm_routing_get_port_mixer,
10439 msm_routing_put_port_mixer),
10440 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10441 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10442 msm_routing_get_port_mixer,
10443 msm_routing_put_port_mixer),
10444 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10445 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10446 msm_routing_get_port_mixer,
10447 msm_routing_put_port_mixer),
10448 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10449 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10450 msm_routing_get_port_mixer,
10451 msm_routing_put_port_mixer),
10452 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10453 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10454 msm_routing_get_port_mixer,
10455 msm_routing_put_port_mixer),
10456 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10457 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10458 msm_routing_get_port_mixer,
10459 msm_routing_put_port_mixer),
10460 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10461 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10462 msm_routing_get_port_mixer,
10463 msm_routing_put_port_mixer),
10464 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10465 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10466 msm_routing_get_port_mixer,
10467 msm_routing_put_port_mixer),
10468 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10469 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10470 msm_routing_get_port_mixer,
10471 msm_routing_put_port_mixer),
10472 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10473 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10474 msm_routing_get_port_mixer,
10475 msm_routing_put_port_mixer),
10476 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10477 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10478 msm_routing_get_port_mixer,
10479 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010480 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10481 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10482 msm_routing_get_port_mixer,
10483 msm_routing_put_port_mixer),
10484 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10485 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10486 msm_routing_get_port_mixer,
10487 msm_routing_put_port_mixer),
10488 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10489 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10490 msm_routing_get_port_mixer,
10491 msm_routing_put_port_mixer),
10492 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10493 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10494 msm_routing_get_port_mixer,
10495 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010496};
10497
10498static const struct snd_kcontrol_new quat_tdm_rx_1_port_mixer_controls[] = {
10499 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10500 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10501 msm_routing_get_port_mixer,
10502 msm_routing_put_port_mixer),
10503 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10504 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10505 msm_routing_get_port_mixer,
10506 msm_routing_put_port_mixer),
10507 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10508 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10509 msm_routing_get_port_mixer,
10510 msm_routing_put_port_mixer),
10511 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10512 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10513 msm_routing_get_port_mixer,
10514 msm_routing_put_port_mixer),
10515 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10516 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10517 msm_routing_get_port_mixer,
10518 msm_routing_put_port_mixer),
10519 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10520 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10521 msm_routing_get_port_mixer,
10522 msm_routing_put_port_mixer),
10523 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10524 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10525 msm_routing_get_port_mixer,
10526 msm_routing_put_port_mixer),
10527 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10528 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10529 msm_routing_get_port_mixer,
10530 msm_routing_put_port_mixer),
10531 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10532 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10533 msm_routing_get_port_mixer,
10534 msm_routing_put_port_mixer),
10535 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10536 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10537 msm_routing_get_port_mixer,
10538 msm_routing_put_port_mixer),
10539 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10540 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10541 msm_routing_get_port_mixer,
10542 msm_routing_put_port_mixer),
10543 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10544 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10545 msm_routing_get_port_mixer,
10546 msm_routing_put_port_mixer),
10547 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10548 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10549 msm_routing_get_port_mixer,
10550 msm_routing_put_port_mixer),
10551 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10552 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10553 msm_routing_get_port_mixer,
10554 msm_routing_put_port_mixer),
10555 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10556 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10557 msm_routing_get_port_mixer,
10558 msm_routing_put_port_mixer),
10559 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10560 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10561 msm_routing_get_port_mixer,
10562 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010563 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10564 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10565 msm_routing_get_port_mixer,
10566 msm_routing_put_port_mixer),
10567 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10568 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10569 msm_routing_get_port_mixer,
10570 msm_routing_put_port_mixer),
10571 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10572 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10573 msm_routing_get_port_mixer,
10574 msm_routing_put_port_mixer),
10575 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10576 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10577 msm_routing_get_port_mixer,
10578 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010579};
10580
10581static const struct snd_kcontrol_new quat_tdm_rx_2_port_mixer_controls[] = {
10582 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10583 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10584 msm_routing_get_port_mixer,
10585 msm_routing_put_port_mixer),
10586 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10587 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10588 msm_routing_get_port_mixer,
10589 msm_routing_put_port_mixer),
10590 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10591 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10592 msm_routing_get_port_mixer,
10593 msm_routing_put_port_mixer),
10594 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10595 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10596 msm_routing_get_port_mixer,
10597 msm_routing_put_port_mixer),
10598 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10599 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10600 msm_routing_get_port_mixer,
10601 msm_routing_put_port_mixer),
10602 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10603 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10604 msm_routing_get_port_mixer,
10605 msm_routing_put_port_mixer),
10606 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10607 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10608 msm_routing_get_port_mixer,
10609 msm_routing_put_port_mixer),
10610 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10611 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10612 msm_routing_get_port_mixer,
10613 msm_routing_put_port_mixer),
10614 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10615 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10616 msm_routing_get_port_mixer,
10617 msm_routing_put_port_mixer),
10618 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10619 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10620 msm_routing_get_port_mixer,
10621 msm_routing_put_port_mixer),
10622 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10623 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10624 msm_routing_get_port_mixer,
10625 msm_routing_put_port_mixer),
10626 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10627 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10628 msm_routing_get_port_mixer,
10629 msm_routing_put_port_mixer),
10630 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10631 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10632 msm_routing_get_port_mixer,
10633 msm_routing_put_port_mixer),
10634 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10635 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10636 msm_routing_get_port_mixer,
10637 msm_routing_put_port_mixer),
10638 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10639 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10640 msm_routing_get_port_mixer,
10641 msm_routing_put_port_mixer),
10642 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10643 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10644 msm_routing_get_port_mixer,
10645 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010646 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10647 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10648 msm_routing_get_port_mixer,
10649 msm_routing_put_port_mixer),
10650 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10651 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10652 msm_routing_get_port_mixer,
10653 msm_routing_put_port_mixer),
10654 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10655 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10656 msm_routing_get_port_mixer,
10657 msm_routing_put_port_mixer),
10658 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10659 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10660 msm_routing_get_port_mixer,
10661 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010662};
10663
10664static const struct snd_kcontrol_new quat_tdm_rx_3_port_mixer_controls[] = {
10665 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10666 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10667 msm_routing_get_port_mixer,
10668 msm_routing_put_port_mixer),
10669 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10670 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10671 msm_routing_get_port_mixer,
10672 msm_routing_put_port_mixer),
10673 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10674 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10675 msm_routing_get_port_mixer,
10676 msm_routing_put_port_mixer),
10677 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10678 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10679 msm_routing_get_port_mixer,
10680 msm_routing_put_port_mixer),
10681 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10682 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10683 msm_routing_get_port_mixer,
10684 msm_routing_put_port_mixer),
10685 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10686 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10687 msm_routing_get_port_mixer,
10688 msm_routing_put_port_mixer),
10689 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10690 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10691 msm_routing_get_port_mixer,
10692 msm_routing_put_port_mixer),
10693 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10694 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10695 msm_routing_get_port_mixer,
10696 msm_routing_put_port_mixer),
10697 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10698 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10699 msm_routing_get_port_mixer,
10700 msm_routing_put_port_mixer),
10701 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10702 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10703 msm_routing_get_port_mixer,
10704 msm_routing_put_port_mixer),
10705 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10706 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10707 msm_routing_get_port_mixer,
10708 msm_routing_put_port_mixer),
10709 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10710 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10711 msm_routing_get_port_mixer,
10712 msm_routing_put_port_mixer),
10713 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10714 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10715 msm_routing_get_port_mixer,
10716 msm_routing_put_port_mixer),
10717 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10718 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10719 msm_routing_get_port_mixer,
10720 msm_routing_put_port_mixer),
10721 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10722 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10723 msm_routing_get_port_mixer,
10724 msm_routing_put_port_mixer),
10725 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10726 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10727 msm_routing_get_port_mixer,
10728 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010729 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10730 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10731 msm_routing_get_port_mixer,
10732 msm_routing_put_port_mixer),
10733 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10734 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10735 msm_routing_get_port_mixer,
10736 msm_routing_put_port_mixer),
10737 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10738 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10739 msm_routing_get_port_mixer,
10740 msm_routing_put_port_mixer),
10741 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10742 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10743 msm_routing_get_port_mixer,
10744 msm_routing_put_port_mixer),
10745};
10746
10747static const struct snd_kcontrol_new quin_tdm_rx_0_port_mixer_controls[] = {
10748 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10749 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10750 msm_routing_get_port_mixer,
10751 msm_routing_put_port_mixer),
10752 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10753 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10754 msm_routing_get_port_mixer,
10755 msm_routing_put_port_mixer),
10756 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10757 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10758 msm_routing_get_port_mixer,
10759 msm_routing_put_port_mixer),
10760 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10761 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10762 msm_routing_get_port_mixer,
10763 msm_routing_put_port_mixer),
10764 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10765 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10766 msm_routing_get_port_mixer,
10767 msm_routing_put_port_mixer),
10768 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10769 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10770 msm_routing_get_port_mixer,
10771 msm_routing_put_port_mixer),
10772 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10773 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10774 msm_routing_get_port_mixer,
10775 msm_routing_put_port_mixer),
10776 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10777 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10778 msm_routing_get_port_mixer,
10779 msm_routing_put_port_mixer),
10780 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10781 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10782 msm_routing_get_port_mixer,
10783 msm_routing_put_port_mixer),
10784 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10785 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10786 msm_routing_get_port_mixer,
10787 msm_routing_put_port_mixer),
10788 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10789 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10790 msm_routing_get_port_mixer,
10791 msm_routing_put_port_mixer),
10792 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10793 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10794 msm_routing_get_port_mixer,
10795 msm_routing_put_port_mixer),
10796 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10797 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10798 msm_routing_get_port_mixer,
10799 msm_routing_put_port_mixer),
10800 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10801 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10802 msm_routing_get_port_mixer,
10803 msm_routing_put_port_mixer),
10804 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10805 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10806 msm_routing_get_port_mixer,
10807 msm_routing_put_port_mixer),
10808 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10809 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10810 msm_routing_get_port_mixer,
10811 msm_routing_put_port_mixer),
10812 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10813 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10814 msm_routing_get_port_mixer,
10815 msm_routing_put_port_mixer),
10816 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10817 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10818 msm_routing_get_port_mixer,
10819 msm_routing_put_port_mixer),
10820 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10821 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10822 msm_routing_get_port_mixer,
10823 msm_routing_put_port_mixer),
10824 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10825 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10826 msm_routing_get_port_mixer,
10827 msm_routing_put_port_mixer),
10828};
10829
10830static const struct snd_kcontrol_new quin_tdm_rx_1_port_mixer_controls[] = {
10831 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10832 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10833 msm_routing_get_port_mixer,
10834 msm_routing_put_port_mixer),
10835 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10836 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10837 msm_routing_get_port_mixer,
10838 msm_routing_put_port_mixer),
10839 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10840 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10841 msm_routing_get_port_mixer,
10842 msm_routing_put_port_mixer),
10843 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10844 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10845 msm_routing_get_port_mixer,
10846 msm_routing_put_port_mixer),
10847 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10848 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10849 msm_routing_get_port_mixer,
10850 msm_routing_put_port_mixer),
10851 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10852 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10853 msm_routing_get_port_mixer,
10854 msm_routing_put_port_mixer),
10855 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10856 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10857 msm_routing_get_port_mixer,
10858 msm_routing_put_port_mixer),
10859 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10860 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10861 msm_routing_get_port_mixer,
10862 msm_routing_put_port_mixer),
10863 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10864 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10865 msm_routing_get_port_mixer,
10866 msm_routing_put_port_mixer),
10867 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10868 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10869 msm_routing_get_port_mixer,
10870 msm_routing_put_port_mixer),
10871 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10872 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10873 msm_routing_get_port_mixer,
10874 msm_routing_put_port_mixer),
10875 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10876 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10877 msm_routing_get_port_mixer,
10878 msm_routing_put_port_mixer),
10879 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10880 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10881 msm_routing_get_port_mixer,
10882 msm_routing_put_port_mixer),
10883 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10884 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10885 msm_routing_get_port_mixer,
10886 msm_routing_put_port_mixer),
10887 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10888 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10889 msm_routing_get_port_mixer,
10890 msm_routing_put_port_mixer),
10891 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10892 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10893 msm_routing_get_port_mixer,
10894 msm_routing_put_port_mixer),
10895 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10896 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10897 msm_routing_get_port_mixer,
10898 msm_routing_put_port_mixer),
10899 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10900 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10901 msm_routing_get_port_mixer,
10902 msm_routing_put_port_mixer),
10903 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10904 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10905 msm_routing_get_port_mixer,
10906 msm_routing_put_port_mixer),
10907 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10908 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10909 msm_routing_get_port_mixer,
10910 msm_routing_put_port_mixer),
10911};
10912
10913static const struct snd_kcontrol_new quin_tdm_rx_2_port_mixer_controls[] = {
10914 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10915 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10916 msm_routing_get_port_mixer,
10917 msm_routing_put_port_mixer),
10918 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10919 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10920 msm_routing_get_port_mixer,
10921 msm_routing_put_port_mixer),
10922 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10923 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10924 msm_routing_get_port_mixer,
10925 msm_routing_put_port_mixer),
10926 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10927 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10928 msm_routing_get_port_mixer,
10929 msm_routing_put_port_mixer),
10930 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10931 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10932 msm_routing_get_port_mixer,
10933 msm_routing_put_port_mixer),
10934 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10935 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10936 msm_routing_get_port_mixer,
10937 msm_routing_put_port_mixer),
10938 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10939 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10940 msm_routing_get_port_mixer,
10941 msm_routing_put_port_mixer),
10942 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10943 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10944 msm_routing_get_port_mixer,
10945 msm_routing_put_port_mixer),
10946 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10947 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10948 msm_routing_get_port_mixer,
10949 msm_routing_put_port_mixer),
10950 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10951 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10952 msm_routing_get_port_mixer,
10953 msm_routing_put_port_mixer),
10954 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10955 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10956 msm_routing_get_port_mixer,
10957 msm_routing_put_port_mixer),
10958 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10959 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10960 msm_routing_get_port_mixer,
10961 msm_routing_put_port_mixer),
10962 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10963 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10964 msm_routing_get_port_mixer,
10965 msm_routing_put_port_mixer),
10966 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10967 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10968 msm_routing_get_port_mixer,
10969 msm_routing_put_port_mixer),
10970 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10971 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10972 msm_routing_get_port_mixer,
10973 msm_routing_put_port_mixer),
10974 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10975 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10976 msm_routing_get_port_mixer,
10977 msm_routing_put_port_mixer),
10978 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10979 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10980 msm_routing_get_port_mixer,
10981 msm_routing_put_port_mixer),
10982 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10983 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10984 msm_routing_get_port_mixer,
10985 msm_routing_put_port_mixer),
10986 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10987 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10988 msm_routing_get_port_mixer,
10989 msm_routing_put_port_mixer),
10990 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10991 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10992 msm_routing_get_port_mixer,
10993 msm_routing_put_port_mixer),
10994};
10995
10996static const struct snd_kcontrol_new quin_tdm_rx_3_port_mixer_controls[] = {
10997 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10998 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10999 msm_routing_get_port_mixer,
11000 msm_routing_put_port_mixer),
11001 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11002 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
11003 msm_routing_get_port_mixer,
11004 msm_routing_put_port_mixer),
11005 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11006 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
11007 msm_routing_get_port_mixer,
11008 msm_routing_put_port_mixer),
11009 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11010 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
11011 msm_routing_get_port_mixer,
11012 msm_routing_put_port_mixer),
11013 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11014 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
11015 msm_routing_get_port_mixer,
11016 msm_routing_put_port_mixer),
11017 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11018 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
11019 msm_routing_get_port_mixer,
11020 msm_routing_put_port_mixer),
11021 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11022 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
11023 msm_routing_get_port_mixer,
11024 msm_routing_put_port_mixer),
11025 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11026 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
11027 msm_routing_get_port_mixer,
11028 msm_routing_put_port_mixer),
11029 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11030 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
11031 msm_routing_get_port_mixer,
11032 msm_routing_put_port_mixer),
11033 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11034 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
11035 msm_routing_get_port_mixer,
11036 msm_routing_put_port_mixer),
11037 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11038 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
11039 msm_routing_get_port_mixer,
11040 msm_routing_put_port_mixer),
11041 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11042 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
11043 msm_routing_get_port_mixer,
11044 msm_routing_put_port_mixer),
11045 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11046 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
11047 msm_routing_get_port_mixer,
11048 msm_routing_put_port_mixer),
11049 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11050 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
11051 msm_routing_get_port_mixer,
11052 msm_routing_put_port_mixer),
11053 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11054 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
11055 msm_routing_get_port_mixer,
11056 msm_routing_put_port_mixer),
11057 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11058 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
11059 msm_routing_get_port_mixer,
11060 msm_routing_put_port_mixer),
11061 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11062 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
11063 msm_routing_get_port_mixer,
11064 msm_routing_put_port_mixer),
11065 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11066 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
11067 msm_routing_get_port_mixer,
11068 msm_routing_put_port_mixer),
11069 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11070 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
11071 msm_routing_get_port_mixer,
11072 msm_routing_put_port_mixer),
11073 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
11074 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
11075 msm_routing_get_port_mixer,
11076 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011077};
11078
11079static const struct snd_kcontrol_new tert_mi2s_rx_port_mixer_controls[] = {
11080 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
11081 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11082 msm_routing_put_port_mixer),
11083 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
11084 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11085 msm_routing_put_port_mixer),
11086 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
11087 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
11088 msm_routing_put_port_mixer),
11089 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
11090 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11091 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053011092 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
11093 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11094 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011095 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
11096 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11097 msm_routing_put_port_mixer),
11098 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
11099 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
11100 msm_routing_put_port_mixer),
11101};
11102
11103static const struct snd_kcontrol_new sec_mi2s_rx_port_mixer_controls[] = {
11104 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11105 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11106 msm_routing_put_port_mixer),
11107 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11108 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11109 msm_routing_put_port_mixer),
11110 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11111 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11112 msm_routing_put_port_mixer),
11113 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11114 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11115 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053011116 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11117 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
11118 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011119 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11120 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
11121 msm_routing_put_port_mixer),
11122 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11123 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
11124 msm_routing_put_port_mixer),
11125 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11126 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
11127 msm_routing_put_port_mixer),
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -080011128 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
11129 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
11130 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011131};
11132
11133static const struct snd_kcontrol_new lsm1_mixer_controls[] = {
11134 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11135 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11136 msm_routing_put_listen_mixer),
11137 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11138 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11139 msm_routing_put_listen_mixer),
11140 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11141 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11142 msm_routing_put_listen_mixer),
11143 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11144 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11145 msm_routing_put_listen_mixer),
11146 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11147 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11148 msm_routing_put_listen_mixer),
11149 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11150 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11151 msm_routing_put_listen_mixer),
11152 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11153 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11154 msm_routing_put_listen_mixer),
11155 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11156 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
11157 msm_routing_put_listen_mixer),
11158};
11159
11160static const struct snd_kcontrol_new lsm2_mixer_controls[] = {
11161 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11162 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11163 msm_routing_put_listen_mixer),
11164 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11165 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11166 msm_routing_put_listen_mixer),
11167 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11168 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11169 msm_routing_put_listen_mixer),
11170 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11171 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11172 msm_routing_put_listen_mixer),
11173 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11174 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11175 msm_routing_put_listen_mixer),
11176 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11177 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11178 msm_routing_put_listen_mixer),
11179 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11180 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11181 msm_routing_put_listen_mixer),
11182 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11183 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
11184 msm_routing_put_listen_mixer),
11185};
11186
11187static const struct snd_kcontrol_new lsm3_mixer_controls[] = {
11188 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11189 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11190 msm_routing_put_listen_mixer),
11191 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11192 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11193 msm_routing_put_listen_mixer),
11194 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11195 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11196 msm_routing_put_listen_mixer),
11197 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11198 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11199 msm_routing_put_listen_mixer),
11200 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11201 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11202 msm_routing_put_listen_mixer),
11203 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11204 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11205 msm_routing_put_listen_mixer),
11206 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11207 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11208 msm_routing_put_listen_mixer),
11209 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11210 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11211 msm_routing_put_listen_mixer),
11212};
11213
11214static const struct snd_kcontrol_new lsm4_mixer_controls[] = {
11215 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11216 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11217 msm_routing_put_listen_mixer),
11218 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11219 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11220 msm_routing_put_listen_mixer),
11221 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11222 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11223 msm_routing_put_listen_mixer),
11224 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11225 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11226 msm_routing_put_listen_mixer),
11227 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11228 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11229 msm_routing_put_listen_mixer),
11230 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11231 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11232 msm_routing_put_listen_mixer),
11233 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11234 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11235 msm_routing_put_listen_mixer),
11236 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11237 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11238 msm_routing_put_listen_mixer),
11239};
11240
11241static const struct snd_kcontrol_new lsm5_mixer_controls[] = {
11242 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11243 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11244 msm_routing_put_listen_mixer),
11245 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11246 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11247 msm_routing_put_listen_mixer),
11248 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11249 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11250 msm_routing_put_listen_mixer),
11251 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11252 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11253 msm_routing_put_listen_mixer),
11254 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11255 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11256 msm_routing_put_listen_mixer),
11257 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11258 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11259 msm_routing_put_listen_mixer),
11260 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11261 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11262 msm_routing_put_listen_mixer),
11263 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11264 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11265 msm_routing_put_listen_mixer),
11266};
11267
11268static const struct snd_kcontrol_new lsm6_mixer_controls[] = {
11269 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11270 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11271 msm_routing_put_listen_mixer),
11272 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11273 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11274 msm_routing_put_listen_mixer),
11275 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11276 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11277 msm_routing_put_listen_mixer),
11278 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11279 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11280 msm_routing_put_listen_mixer),
11281 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11282 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11283 msm_routing_put_listen_mixer),
11284 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11285 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11286 msm_routing_put_listen_mixer),
11287 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11288 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11289 msm_routing_put_listen_mixer),
11290 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11291 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11292 msm_routing_put_listen_mixer),
11293};
11294
11295static const struct snd_kcontrol_new lsm7_mixer_controls[] = {
11296 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11297 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11298 msm_routing_put_listen_mixer),
11299 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11300 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11301 msm_routing_put_listen_mixer),
11302 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11303 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11304 msm_routing_put_listen_mixer),
11305 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11306 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11307 msm_routing_put_listen_mixer),
11308 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11309 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11310 msm_routing_put_listen_mixer),
11311 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11312 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11313 msm_routing_put_listen_mixer),
11314 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11315 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11316 msm_routing_put_listen_mixer),
11317 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11318 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11319 msm_routing_put_listen_mixer),
11320};
11321
11322static const struct snd_kcontrol_new lsm8_mixer_controls[] = {
11323 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11324 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11325 msm_routing_put_listen_mixer),
11326 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11327 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11328 msm_routing_put_listen_mixer),
11329 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11330 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11331 msm_routing_put_listen_mixer),
11332 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11333 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11334 msm_routing_put_listen_mixer),
11335 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11336 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11337 msm_routing_put_listen_mixer),
11338 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11339 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11340 msm_routing_put_listen_mixer),
11341 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11342 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11343 msm_routing_put_listen_mixer),
11344 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11345 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11346 msm_routing_put_listen_mixer),
11347};
11348
11349static const struct snd_kcontrol_new slim_fm_switch_mixer_controls =
11350 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11351 0, 1, 0, msm_routing_get_switch_mixer,
11352 msm_routing_put_switch_mixer);
11353
11354static const struct snd_kcontrol_new slim1_fm_switch_mixer_controls =
11355 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11356 0, 1, 0, msm_routing_get_switch_mixer,
11357 msm_routing_put_switch_mixer);
11358
11359static const struct snd_kcontrol_new slim3_fm_switch_mixer_controls =
11360 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11361 0, 1, 0, msm_routing_get_switch_mixer,
11362 msm_routing_put_switch_mixer);
11363
11364static const struct snd_kcontrol_new slim4_fm_switch_mixer_controls =
11365 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11366 0, 1, 0, msm_routing_get_switch_mixer,
11367 msm_routing_put_switch_mixer);
11368
11369static const struct snd_kcontrol_new slim6_fm_switch_mixer_controls =
11370 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11371 0, 1, 0, msm_routing_get_switch_mixer,
11372 msm_routing_put_switch_mixer);
11373
11374static const struct snd_kcontrol_new pcm_rx_switch_mixer_controls =
11375 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11376 0, 1, 0, msm_routing_get_fm_pcmrx_switch_mixer,
11377 msm_routing_put_fm_pcmrx_switch_mixer);
11378
11379static const struct snd_kcontrol_new int0_mi2s_rx_switch_mixer_controls =
11380 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11381 0, 1, 0, msm_routing_get_int0_mi2s_switch_mixer,
11382 msm_routing_put_int0_mi2s_switch_mixer);
11383
11384static const struct snd_kcontrol_new int4_mi2s_rx_switch_mixer_controls =
11385 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11386 0, 1, 0, msm_routing_get_int4_mi2s_switch_mixer,
11387 msm_routing_put_int4_mi2s_switch_mixer);
11388
11389static const struct snd_kcontrol_new pri_mi2s_rx_switch_mixer_controls =
11390 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11391 0, 1, 0, msm_routing_get_pri_mi2s_switch_mixer,
11392 msm_routing_put_pri_mi2s_switch_mixer);
11393
11394static const struct snd_kcontrol_new sec_mi2s_rx_switch_mixer_controls =
11395 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11396 0, 1, 0, msm_routing_get_sec_mi2s_switch_mixer,
11397 msm_routing_put_sec_mi2s_switch_mixer);
11398
11399static const struct snd_kcontrol_new tert_mi2s_rx_switch_mixer_controls =
11400 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11401 0, 1, 0, msm_routing_get_tert_mi2s_switch_mixer,
11402 msm_routing_put_tert_mi2s_switch_mixer);
11403
11404static const struct snd_kcontrol_new quat_mi2s_rx_switch_mixer_controls =
11405 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11406 0, 1, 0, msm_routing_get_quat_mi2s_switch_mixer,
11407 msm_routing_put_quat_mi2s_switch_mixer);
11408
Rohit Kumara5077932017-09-10 22:05:05 +053011409static const struct snd_kcontrol_new quin_mi2s_rx_switch_mixer_controls =
11410 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11411 0, 1, 0, msm_routing_get_quin_mi2s_switch_mixer,
11412 msm_routing_put_quin_mi2s_switch_mixer);
11413
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011414static const struct snd_kcontrol_new hfp_pri_aux_switch_mixer_controls =
11415 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11416 0, 1, 0, msm_routing_get_hfp_switch_mixer,
11417 msm_routing_put_hfp_switch_mixer);
11418
11419static const struct snd_kcontrol_new hfp_aux_switch_mixer_controls =
11420 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11421 0, 1, 0, msm_routing_get_hfp_switch_mixer,
11422 msm_routing_put_hfp_switch_mixer);
11423
11424static const struct snd_kcontrol_new hfp_int_switch_mixer_controls =
11425 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11426 0, 1, 0, msm_routing_get_hfp_switch_mixer,
11427 msm_routing_put_hfp_switch_mixer);
11428
11429static const struct snd_kcontrol_new hfp_slim7_switch_mixer_controls =
11430 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11431 0, 1, 0, msm_routing_get_hfp_switch_mixer,
11432 msm_routing_put_hfp_switch_mixer);
11433
11434static const struct snd_kcontrol_new usb_switch_mixer_controls =
11435 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11436 0, 1, 0, msm_routing_get_usb_switch_mixer,
11437 msm_routing_put_usb_switch_mixer);
11438
11439static const struct soc_enum lsm_port_enum =
11440 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(lsm_port_text), lsm_port_text);
11441
11442static const char * const lsm_func_text[] = {
11443 "None", "AUDIO", "BEACON", "ULTRASOUND", "SWAUDIO",
11444};
11445static const struct soc_enum lsm_func_enum =
11446 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(lsm_func_text), lsm_func_text);
11447
11448static const struct snd_kcontrol_new lsm_controls[] = {
11449 /* kcontrol of lsm_function */
11450 SOC_ENUM_EXT(SLIMBUS_0_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11451 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11452 SOC_ENUM_EXT(SLIMBUS_1_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11453 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11454 SOC_ENUM_EXT(SLIMBUS_2_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11455 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11456 SOC_ENUM_EXT(SLIMBUS_3_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11457 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11458 SOC_ENUM_EXT(SLIMBUS_4_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11459 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11460 SOC_ENUM_EXT(SLIMBUS_5_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11461 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11462 SOC_ENUM_EXT(TERT_MI2S_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11463 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11464 SOC_ENUM_EXT(QUAT_MI2S_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11465 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11466 SOC_ENUM_EXT(INT3_MI2S_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11467 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11468 /* kcontrol of lsm_port */
11469 SOC_ENUM_EXT("LSM1 Port", lsm_port_enum,
11470 msm_routing_lsm_port_get,
11471 msm_routing_lsm_port_put),
11472 SOC_ENUM_EXT("LSM2 Port", lsm_port_enum,
11473 msm_routing_lsm_port_get,
11474 msm_routing_lsm_port_put),
11475 SOC_ENUM_EXT("LSM3 Port", lsm_port_enum,
11476 msm_routing_lsm_port_get,
11477 msm_routing_lsm_port_put),
11478 SOC_ENUM_EXT("LSM4 Port", lsm_port_enum,
11479 msm_routing_lsm_port_get,
11480 msm_routing_lsm_port_put),
11481 SOC_ENUM_EXT("LSM5 Port", lsm_port_enum,
11482 msm_routing_lsm_port_get,
11483 msm_routing_lsm_port_put),
11484 SOC_ENUM_EXT("LSM6 Port", lsm_port_enum,
11485 msm_routing_lsm_port_get,
11486 msm_routing_lsm_port_put),
11487 SOC_ENUM_EXT("LSM7 Port", lsm_port_enum,
11488 msm_routing_lsm_port_get,
11489 msm_routing_lsm_port_put),
11490 SOC_ENUM_EXT("LSM8 Port", lsm_port_enum,
11491 msm_routing_lsm_port_get,
11492 msm_routing_lsm_port_put),
11493};
11494
11495static const char * const aanc_slim_0_rx_text[] = {
11496 "ZERO", "SLIMBUS_0_TX", "SLIMBUS_1_TX", "SLIMBUS_2_TX", "SLIMBUS_3_TX",
11497 "SLIMBUS_4_TX", "SLIMBUS_5_TX", "SLIMBUS_6_TX"
11498};
11499
11500static const struct soc_enum aanc_slim_0_rx_enum =
11501 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(aanc_slim_0_rx_text),
11502 aanc_slim_0_rx_text);
11503
11504static const struct snd_kcontrol_new aanc_slim_0_rx_mux[] = {
11505 SOC_ENUM_EXT("AANC_SLIM_0_RX MUX", aanc_slim_0_rx_enum,
11506 msm_routing_slim_0_rx_aanc_mux_get,
11507 msm_routing_slim_0_rx_aanc_mux_put)
11508};
11509
11510static int msm_routing_get_stereo_to_custom_stereo_control(
11511 struct snd_kcontrol *kcontrol,
11512 struct snd_ctl_elem_value *ucontrol)
11513{
11514 ucontrol->value.integer.value[0] = is_custom_stereo_on;
11515 return 0;
11516}
11517
11518static int msm_routing_put_stereo_to_custom_stereo_control(
11519 struct snd_kcontrol *kcontrol,
11520 struct snd_ctl_elem_value *ucontrol)
11521{
11522 int flag = 0, i = 0, rc = 0, idx = 0;
11523 int be_index = 0, port_id, topo_id;
11524 unsigned int session_id = 0;
11525 uint16_t op_FL_ip_FL_weight = 0;
11526 uint16_t op_FL_ip_FR_weight = 0;
11527 uint16_t op_FR_ip_FL_weight = 0;
11528 uint16_t op_FR_ip_FR_weight = 0;
11529
11530 flag = ucontrol->value.integer.value[0];
11531 pr_debug("%s E flag %d\n", __func__, flag);
11532
11533 if ((is_custom_stereo_on && flag) || (!is_custom_stereo_on && !flag)) {
11534 pr_err("%s: is_custom_stereo_on %d, flag %d\n",
11535 __func__, is_custom_stereo_on, flag);
11536 return 0;
11537 }
11538 is_custom_stereo_on = flag ? true : false;
11539 pr_debug("%s:is_custom_stereo_on %d\n", __func__, is_custom_stereo_on);
11540 for (be_index = 0; be_index < MSM_BACKEND_DAI_MAX; be_index++) {
11541 port_id = msm_bedais[be_index].port_id;
11542 if (!msm_bedais[be_index].active)
11543 continue;
11544 if ((port_id != SLIMBUS_0_RX) &&
11545 (port_id != RT_PROXY_PORT_001_RX) &&
11546 (port_id != AFE_PORT_ID_PRIMARY_MI2S_RX) &&
11547 (port_id != AFE_PORT_ID_INT4_MI2S_RX))
11548 continue;
11549
11550 for_each_set_bit(i, &msm_bedais[be_index].fe_sessions[0],
11551 MSM_FRONTEND_DAI_MM_SIZE) {
11552 if (fe_dai_map[i][SESSION_TYPE_RX].perf_mode !=
11553 LEGACY_PCM_MODE)
11554 goto skip_send_custom_stereo;
11555 session_id =
11556 fe_dai_map[i][SESSION_TYPE_RX].strm_id;
11557 if (is_custom_stereo_on) {
11558 op_FL_ip_FL_weight =
11559 Q14_GAIN_ZERO_POINT_FIVE;
11560 op_FL_ip_FR_weight =
11561 Q14_GAIN_ZERO_POINT_FIVE;
11562 op_FR_ip_FL_weight =
11563 Q14_GAIN_ZERO_POINT_FIVE;
11564 op_FR_ip_FR_weight =
11565 Q14_GAIN_ZERO_POINT_FIVE;
11566 } else {
11567 op_FL_ip_FL_weight = Q14_GAIN_UNITY;
11568 op_FL_ip_FR_weight = 0;
11569 op_FR_ip_FL_weight = 0;
11570 op_FR_ip_FR_weight = Q14_GAIN_UNITY;
11571 }
11572 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++) {
11573 unsigned long copp =
11574 session_copp_map[i]
11575 [SESSION_TYPE_RX][be_index];
11576 if (!test_bit(idx, &copp))
11577 goto skip_send_custom_stereo;
11578 topo_id = adm_get_topology_for_port_copp_idx(
11579 msm_bedais[be_index].port_id, idx);
11580 if (topo_id < 0)
11581 pr_debug("%s:Err:custom stereo topo %d",
11582 __func__, topo_id);
11583 pr_debug("idx %d\n", idx);
11584 if (topo_id == DS2_ADM_COPP_TOPOLOGY_ID)
11585 rc = msm_ds2_dap_set_custom_stereo_onoff
11586 (msm_bedais[be_index].port_id,
11587 idx, is_custom_stereo_on);
11588 else if (topo_id == DOLBY_ADM_COPP_TOPOLOGY_ID)
11589 rc = dolby_dap_set_custom_stereo_onoff(
11590 msm_bedais[be_index].port_id,
11591 idx, is_custom_stereo_on);
11592 else
11593 rc = msm_qti_pp_send_stereo_to_custom_stereo_cmd
11594 (msm_bedais[be_index].port_id,
11595 idx, session_id,
11596 op_FL_ip_FL_weight,
11597 op_FL_ip_FR_weight,
11598 op_FR_ip_FL_weight,
11599 op_FR_ip_FR_weight);
11600 if (rc < 0)
11601skip_send_custom_stereo:
11602 pr_err("%s: err setting custom stereo\n",
11603 __func__);
11604 }
11605
11606 }
11607 }
11608 return 0;
11609}
11610
11611static const struct snd_kcontrol_new stereo_to_custom_stereo_controls[] = {
11612 SOC_SINGLE_EXT("Set Custom Stereo OnOff", SND_SOC_NOPM, 0,
11613 1, 0, msm_routing_get_stereo_to_custom_stereo_control,
11614 msm_routing_put_stereo_to_custom_stereo_control),
11615};
11616
11617static int msm_routing_get_app_type_cfg_control(struct snd_kcontrol *kcontrol,
11618 struct snd_ctl_elem_value *ucontrol)
11619{
11620 return 0;
11621}
11622
11623static int msm_routing_put_app_type_cfg_control(struct snd_kcontrol *kcontrol,
11624 struct snd_ctl_elem_value *ucontrol)
11625{
11626 int i = 0, j;
11627 int num_app_types = ucontrol->value.integer.value[i++];
11628
11629 pr_debug("%s\n", __func__);
11630
11631 memset(app_type_cfg, 0, MAX_APP_TYPES*
11632 sizeof(struct msm_pcm_routing_app_type_data));
11633 if (num_app_types > MAX_APP_TYPES) {
11634 pr_err("%s: number of app types exceed the max supported\n",
11635 __func__);
11636 return -EINVAL;
11637 }
11638 for (j = 0; j < num_app_types; j++) {
11639 app_type_cfg[j].app_type =
11640 ucontrol->value.integer.value[i++];
11641 app_type_cfg[j].sample_rate =
11642 ucontrol->value.integer.value[i++];
11643 app_type_cfg[j].bit_width =
11644 ucontrol->value.integer.value[i++];
11645 }
11646
11647 return 0;
11648}
11649
11650static int msm_routing_put_app_type_gain_control(struct snd_kcontrol *kcontrol,
11651 struct snd_ctl_elem_value *ucontrol)
11652{
11653 int j, fe_id, be_id, port_type;
11654 int ret = 0;
11655 unsigned long copp;
11656 struct msm_pcm_routing_bdai_data *bedai;
11657 int dir = ucontrol->value.integer.value[0] ? SESSION_TYPE_TX :
11658 SESSION_TYPE_RX;
11659 int app_type = ucontrol->value.integer.value[1];
11660 int gain = (ucontrol->value.integer.value[2] +
11661 ucontrol->value.integer.value[3])/2;
11662
11663 port_type = (dir == SESSION_TYPE_RX) ? MSM_AFE_PORT_TYPE_RX :
11664 MSM_AFE_PORT_TYPE_TX;
11665
11666 mutex_lock(&routing_lock);
11667 for (be_id = 0; be_id < MSM_BACKEND_DAI_MAX; be_id++) {
11668 if (is_be_dai_extproc(be_id))
11669 continue;
11670
11671 bedai = &msm_bedais[be_id];
11672 if (afe_get_port_type(bedai->port_id) != port_type)
11673 continue;
11674
11675 if (!bedai->active)
11676 continue;
11677
11678 for (fe_id = 0; fe_id < MSM_FRONTEND_DAI_MAX; fe_id++) {
11679 if (!test_bit(fe_id, &bedai->fe_sessions[0]))
11680 continue;
11681
11682 if (app_type !=
11683 fe_dai_app_type_cfg[fe_id][dir][be_id].app_type)
11684 continue;
11685
11686 copp = session_copp_map[fe_id][dir][be_id];
11687 for (j = 0; j < MAX_COPPS_PER_PORT; j++) {
11688 if (!test_bit(j, &copp))
11689 continue;
11690 ret |= adm_set_volume(bedai->port_id, j, gain);
11691 }
11692 }
11693 }
11694 mutex_unlock(&routing_lock);
11695 return ret ? -EINVAL : 0;
11696}
11697
11698static const struct snd_kcontrol_new app_type_cfg_controls[] = {
11699 SOC_SINGLE_MULTI_EXT("App Type Config", SND_SOC_NOPM, 0,
11700 0xFFFFFFFF, 0, 128, msm_routing_get_app_type_cfg_control,
11701 msm_routing_put_app_type_cfg_control),
11702 SOC_SINGLE_MULTI_EXT("App Type Gain", SND_SOC_NOPM, 0,
11703 0x2000, 0, 4, NULL, msm_routing_put_app_type_gain_control)
11704};
11705
Vikram Pandurangaee9c03a2017-09-07 15:06:17 -070011706static int msm_routing_put_module_cfg_control(struct snd_kcontrol *kcontrol,
11707 struct snd_ctl_elem_value *ucontrol)
11708{
11709 int copp_idx, fe_id, be_id, port_type;
11710 int ret = 0;
11711 unsigned long copp;
11712 struct msm_pcm_routing_bdai_data *bedai;
11713 char *param_data = NULL;
11714 uint32_t *update_param_data = NULL;
11715 uint32_t param_size = sizeof(uint32_t) +
11716 sizeof(struct adm_param_data_v5);
11717 int dir = ucontrol->value.integer.value[0] ? SESSION_TYPE_TX :
11718 SESSION_TYPE_RX;
11719 int app_type = ucontrol->value.integer.value[1];
11720 int module_id = ucontrol->value.integer.value[2];
11721 int instance_id = ucontrol->value.integer.value[3];
11722 int param_id = ucontrol->value.integer.value[4];
11723 int param_value = ucontrol->value.integer.value[5];
11724
11725 port_type = (dir == SESSION_TYPE_RX) ? MSM_AFE_PORT_TYPE_RX :
11726 MSM_AFE_PORT_TYPE_TX;
11727 pr_debug("%s app_type:%d mod_id:%d instance_id:%d param_id:%d value:%d\n",
11728 __func__, app_type, module_id,
11729 instance_id, param_id, param_value);
11730
11731 param_data = kzalloc(param_size, GFP_KERNEL);
11732 if (!param_data)
11733 return -ENOMEM;
11734
11735 update_param_data = (uint32_t *)param_data;
11736 *update_param_data++ = module_id;
11737 *update_param_data++ = param_id;
11738 *update_param_data++ = sizeof(uint32_t);
11739 *update_param_data++ = param_value;
11740
11741 mutex_lock(&routing_lock);
11742 for (be_id = 0; be_id < MSM_BACKEND_DAI_MAX; be_id++) {
11743 if (is_be_dai_extproc(be_id))
11744 continue;
11745
11746 bedai = &msm_bedais[be_id];
11747 if (afe_get_port_type(bedai->port_id) != port_type)
11748 continue;
11749
11750 if (!bedai->active)
11751 continue;
11752
11753 for (fe_id = 0; fe_id < MSM_FRONTEND_DAI_MAX; fe_id++) {
11754 if (!test_bit(fe_id, &bedai->fe_sessions[0]))
11755 continue;
11756
11757 if (app_type !=
11758 fe_dai_app_type_cfg[fe_id][dir][be_id].app_type)
11759 continue;
11760
11761 copp = session_copp_map[fe_id][dir][be_id];
11762 for (copp_idx = 0; copp_idx < MAX_COPPS_PER_PORT;
11763 copp_idx++) {
11764 if (!test_bit(copp_idx, &copp))
11765 continue;
11766
11767 ret = adm_send_params_v5(bedai->port_id,
11768 copp_idx,
11769 param_data,
11770 param_size);
11771 if (ret) {
11772 pr_err("%s: Setting param failed with err=%d\n",
11773 __func__, ret);
11774 ret = -EINVAL;
11775 goto done;
11776 }
11777 }
11778 }
11779 }
11780done:
11781 mutex_unlock(&routing_lock);
11782 kfree(param_data);
11783 return ret;
11784}
11785
11786static const struct snd_kcontrol_new module_cfg_controls[] = {
11787 SOC_SINGLE_MULTI_EXT("Audio Effect", SND_SOC_NOPM, 0,
11788 0x2000, 0, 6, NULL, msm_routing_put_module_cfg_control)
11789};
11790
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011791static int msm_routing_get_lsm_app_type_cfg_control(
11792 struct snd_kcontrol *kcontrol,
11793 struct snd_ctl_elem_value *ucontrol)
11794{
11795 return 0;
11796}
11797
11798static int msm_routing_put_lsm_app_type_cfg_control(
11799 struct snd_kcontrol *kcontrol,
11800 struct snd_ctl_elem_value *ucontrol)
11801{
11802 int i = 0, j;
11803 int num_app_types = ucontrol->value.integer.value[i++];
11804
11805 memset(lsm_app_type_cfg, 0, MAX_APP_TYPES*
11806 sizeof(struct msm_pcm_routing_app_type_data));
11807 if (num_app_types > MAX_APP_TYPES) {
11808 pr_err("%s: number of app types exceed the max supported\n",
11809 __func__);
11810 return -EINVAL;
11811 }
11812 for (j = 0; j < num_app_types; j++) {
11813 lsm_app_type_cfg[j].app_type =
11814 ucontrol->value.integer.value[i++];
11815 lsm_app_type_cfg[j].sample_rate =
11816 ucontrol->value.integer.value[i++];
11817 lsm_app_type_cfg[j].bit_width =
11818 ucontrol->value.integer.value[i++];
11819 }
11820
11821 return 0;
11822}
11823
11824static const struct snd_kcontrol_new lsm_app_type_cfg_controls[] = {
11825 SOC_SINGLE_MULTI_EXT("Listen App Type Config", SND_SOC_NOPM, 0,
11826 0xFFFFFFFF, 0, 128, msm_routing_get_lsm_app_type_cfg_control,
11827 msm_routing_put_lsm_app_type_cfg_control),
11828};
11829
11830static int msm_routing_get_use_ds1_or_ds2_control(
11831 struct snd_kcontrol *kcontrol,
11832 struct snd_ctl_elem_value *ucontrol)
11833{
11834 ucontrol->value.integer.value[0] = is_ds2_on;
11835 return 0;
11836}
11837
11838static int msm_routing_put_use_ds1_or_ds2_control(
11839 struct snd_kcontrol *kcontrol,
11840 struct snd_ctl_elem_value *ucontrol)
11841{
11842 is_ds2_on = ucontrol->value.integer.value[0];
11843 return 0;
11844}
11845
11846static const struct snd_kcontrol_new use_ds1_or_ds2_controls[] = {
11847 SOC_SINGLE_EXT("DS2 OnOff", SND_SOC_NOPM, 0,
11848 1, 0, msm_routing_get_use_ds1_or_ds2_control,
11849 msm_routing_put_use_ds1_or_ds2_control),
11850};
11851
11852int msm_routing_get_rms_value_control(struct snd_kcontrol *kcontrol,
11853 struct snd_ctl_elem_value *ucontrol) {
11854 int rc = 0;
11855 int be_idx = 0;
11856 char *param_value;
11857 int *update_param_value;
11858 uint32_t param_length = sizeof(uint32_t);
11859 uint32_t param_payload_len = RMS_PAYLOAD_LEN * sizeof(uint32_t);
11860
11861 param_value = kzalloc(param_length + param_payload_len, GFP_KERNEL);
11862 if (!param_value)
11863 return -ENOMEM;
11864
11865 for (be_idx = 0; be_idx < MSM_BACKEND_DAI_MAX; be_idx++)
11866 if (msm_bedais[be_idx].port_id == SLIMBUS_0_TX)
11867 break;
11868 if ((be_idx < MSM_BACKEND_DAI_MAX) && msm_bedais[be_idx].active) {
11869 rc = adm_get_params(SLIMBUS_0_TX, 0,
11870 RMS_MODULEID_APPI_PASSTHRU,
11871 RMS_PARAM_FIRST_SAMPLE,
11872 param_length + param_payload_len,
11873 param_value);
11874 if (rc) {
11875 pr_err("%s: get parameters failed:%d\n", __func__, rc);
11876 kfree(param_value);
11877 return -EINVAL;
11878 }
11879 update_param_value = (int *)param_value;
11880 ucontrol->value.integer.value[0] = update_param_value[0];
11881
11882 pr_debug("%s: FROM DSP value[0] 0x%x\n",
11883 __func__, update_param_value[0]);
11884 }
11885 kfree(param_value);
11886 return 0;
11887}
11888
11889static int msm_voc_session_id_put(struct snd_kcontrol *kcontrol,
11890 struct snd_ctl_elem_value *ucontrol)
11891{
11892 voc_session_id = ucontrol->value.integer.value[0];
11893
11894 pr_debug("%s: voc_session_id=%u\n", __func__, voc_session_id);
11895
11896 return 0;
11897}
11898
11899static int msm_voc_session_id_get(struct snd_kcontrol *kcontrol,
11900 struct snd_ctl_elem_value *ucontrol)
11901{
11902 ucontrol->value.integer.value[0] = voc_session_id;
11903
11904 return 0;
11905}
11906
11907static struct snd_kcontrol_new msm_voc_session_controls[] = {
11908 SOC_SINGLE_MULTI_EXT("Voc VSID", SND_SOC_NOPM, 0,
11909 0xFFFFFFFF, 0, 1, msm_voc_session_id_get,
11910 msm_voc_session_id_put),
11911};
11912
11913static int msm_sound_focus_info(struct snd_kcontrol *kcontrol,
11914 struct snd_ctl_elem_info *uinfo)
11915{
11916 uinfo->type = SNDRV_CTL_ELEM_TYPE_BYTES;
11917 uinfo->count = sizeof(struct sound_focus_param);
11918
11919 return 0;
11920}
11921
11922static int msm_voice_sound_focus_put(struct snd_kcontrol *kcontrol,
11923 struct snd_ctl_elem_value *ucontrol)
11924{
11925 int ret = 0;
11926 struct sound_focus_param soundFocusData;
11927
11928 memcpy((void *)&soundFocusData, ucontrol->value.bytes.data,
11929 sizeof(struct sound_focus_param));
11930 ret = voc_set_sound_focus(soundFocusData);
11931 if (ret) {
11932 pr_err("%s: Error setting Sound Focus Params, err=%d\n",
11933 __func__, ret);
11934
11935 ret = -EINVAL;
11936 }
11937
11938 return ret;
11939}
11940
11941static int msm_voice_sound_focus_get(struct snd_kcontrol *kcontrol,
11942 struct snd_ctl_elem_value *ucontrol)
11943{
11944 int ret = 0;
11945 struct sound_focus_param soundFocusData;
11946
11947 memset(&soundFocusData, 0, sizeof(struct sound_focus_param));
11948
11949 ret = voc_get_sound_focus(&soundFocusData);
11950 if (ret) {
11951 pr_err("%s: Error getting Sound Focus Params, err=%d\n",
11952 __func__, ret);
11953
11954 ret = -EINVAL;
11955 goto done;
11956 }
11957 memcpy(ucontrol->value.bytes.data, (void *)&soundFocusData,
11958 sizeof(struct sound_focus_param));
11959
11960done:
11961 return ret;
11962}
11963
11964static int msm_source_tracking_info(struct snd_kcontrol *kcontrol,
11965 struct snd_ctl_elem_info *uinfo)
11966{
11967 uinfo->type = SNDRV_CTL_ELEM_TYPE_BYTES;
11968 uinfo->count = sizeof(struct source_tracking_param);
11969
11970 return 0;
11971}
11972
11973static int msm_voice_source_tracking_get(struct snd_kcontrol *kcontrol,
11974 struct snd_ctl_elem_value *ucontrol)
11975{
11976 int ret = 0;
11977 struct source_tracking_param sourceTrackingData;
11978
11979 memset(&sourceTrackingData, 0, sizeof(struct source_tracking_param));
11980
11981 ret = voc_get_source_tracking(&sourceTrackingData);
11982 if (ret) {
11983 pr_err("%s: Error getting Source Tracking Params, err=%d\n",
11984 __func__, ret);
11985
11986 ret = -EINVAL;
11987 goto done;
11988 }
11989 memcpy(ucontrol->value.bytes.data, (void *)&sourceTrackingData,
11990 sizeof(struct source_tracking_param));
11991
11992done:
11993 return ret;
11994}
11995
11996static int msm_audio_get_copp_idx_from_port_id(int port_id, int session_type,
11997 int *copp_idx)
11998{
11999 int i, idx, be_idx;
12000 int ret = 0;
12001 unsigned long copp;
12002
12003 pr_debug("%s: Enter, port_id=%d\n", __func__, port_id);
12004
12005 ret = q6audio_validate_port(port_id);
12006 if (ret < 0) {
12007 pr_err("%s: port validation failed id 0x%x ret %d\n",
12008 __func__, port_id, ret);
12009
12010 ret = -EINVAL;
12011 goto done;
12012 }
12013
12014 for (be_idx = 0; be_idx < MSM_BACKEND_DAI_MAX; be_idx++) {
12015 if (msm_bedais[be_idx].port_id == port_id)
12016 break;
12017 }
12018 if (be_idx >= MSM_BACKEND_DAI_MAX) {
12019 pr_err("%s: Invalid be id %d\n", __func__, be_idx);
12020
12021 ret = -EINVAL;
12022 goto done;
12023 }
12024
12025 for_each_set_bit(i, &msm_bedais[be_idx].fe_sessions[0],
12026 MSM_FRONTEND_DAI_MM_SIZE) {
12027 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++) {
12028 copp = session_copp_map[i]
12029 [session_type][be_idx];
12030 if (test_bit(idx, &copp))
12031 break;
12032 }
12033 if (idx >= MAX_COPPS_PER_PORT)
12034 continue;
12035 else
12036 break;
12037 }
12038 if (i >= MSM_FRONTEND_DAI_MM_SIZE) {
12039 pr_err("%s: Invalid FE, exiting\n", __func__);
12040
12041 ret = -EINVAL;
12042 goto done;
12043 }
12044 *copp_idx = idx;
12045 pr_debug("%s: copp_idx=%d\n", __func__, *copp_idx);
12046
12047done:
12048 return ret;
12049}
12050
12051static int msm_audio_sound_focus_derive_port_id(struct snd_kcontrol *kcontrol,
12052 const char *prefix, int *port_id)
12053{
12054 int ret = 0;
12055
12056 pr_debug("%s: Enter, prefix:%s\n", __func__, prefix);
12057
12058 /*
12059 * Mixer control name will be like "Sound Focus Audio Tx SLIMBUS_0"
12060 * where the prefix is "Sound Focus Audio Tx ". Skip the prefix
12061 * and compare the string with the backend name to derive the port id.
12062 */
12063 if (!strcmp(kcontrol->id.name + strlen(prefix),
12064 "SLIMBUS_0")) {
12065 *port_id = SLIMBUS_0_TX;
12066 } else if (!strcmp(kcontrol->id.name + strlen(prefix),
12067 "TERT_MI2S")) {
12068 *port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
12069 } else if (!strcmp(kcontrol->id.name + strlen(prefix),
12070 "INT3_MI2S")) {
12071 *port_id = AFE_PORT_ID_INT3_MI2S_TX;
12072 } else {
12073 pr_err("%s: mixer ctl name=%s, could not derive valid port id\n",
12074 __func__, kcontrol->id.name);
12075
12076 ret = -EINVAL;
12077 goto done;
12078 }
12079 pr_debug("%s: mixer ctl name=%s, derived port_id=%d\n",
12080 __func__, kcontrol->id.name, *port_id);
12081
12082done:
12083 return ret;
12084}
12085
12086static int msm_audio_sound_focus_put(struct snd_kcontrol *kcontrol,
12087 struct snd_ctl_elem_value *ucontrol)
12088{
12089 int ret = 0;
12090 struct sound_focus_param soundFocusData;
12091 int port_id, copp_idx;
12092
12093 ret = msm_audio_sound_focus_derive_port_id(kcontrol,
12094 "Sound Focus Audio Tx ", &port_id);
12095 if (ret != 0) {
12096 pr_err("%s: Error in deriving port id, err=%d\n",
12097 __func__, ret);
12098
12099 ret = -EINVAL;
12100 goto done;
12101 }
12102
12103 ret = msm_audio_get_copp_idx_from_port_id(port_id, SESSION_TYPE_TX,
12104 &copp_idx);
12105 if (ret) {
12106 pr_err("%s: Could not get copp idx for port_id=%d\n",
12107 __func__, port_id);
12108
12109 ret = -EINVAL;
12110 goto done;
12111 }
12112
12113 memcpy((void *)&soundFocusData, ucontrol->value.bytes.data,
12114 sizeof(struct sound_focus_param));
12115
12116 ret = adm_set_sound_focus(port_id, copp_idx, soundFocusData);
12117 if (ret) {
12118 pr_err("%s: Error setting Sound Focus Params, err=%d\n",
12119 __func__, ret);
12120
12121 ret = -EINVAL;
12122 goto done;
12123 }
12124
12125done:
12126 return ret;
12127}
12128
12129static int msm_audio_sound_focus_get(struct snd_kcontrol *kcontrol,
12130 struct snd_ctl_elem_value *ucontrol)
12131{
12132 int ret = 0;
12133 struct sound_focus_param soundFocusData;
12134 int port_id, copp_idx;
12135
12136 ret = msm_audio_sound_focus_derive_port_id(kcontrol,
12137 "Sound Focus Audio Tx ", &port_id);
12138 if (ret) {
12139 pr_err("%s: Error in deriving port id, err=%d\n",
12140 __func__, ret);
12141
12142 ret = -EINVAL;
12143 goto done;
12144 }
12145
12146 ret = msm_audio_get_copp_idx_from_port_id(port_id, SESSION_TYPE_TX,
12147 &copp_idx);
12148 if (ret) {
12149 pr_err("%s: Could not get copp idx for port_id=%d\n",
12150 __func__, port_id);
12151
12152 ret = -EINVAL;
12153 goto done;
12154 }
12155
12156 ret = adm_get_sound_focus(port_id, copp_idx, &soundFocusData);
12157 if (ret) {
12158 pr_err("%s: Error getting Sound Focus Params, err=%d\n",
12159 __func__, ret);
12160
12161 ret = -EINVAL;
12162 goto done;
12163 }
12164
12165 memcpy(ucontrol->value.bytes.data, (void *)&soundFocusData,
12166 sizeof(struct sound_focus_param));
12167
12168done:
12169 return ret;
12170}
12171
12172static int msm_audio_source_tracking_get(struct snd_kcontrol *kcontrol,
12173 struct snd_ctl_elem_value *ucontrol)
12174{
12175 int ret = 0;
12176 struct source_tracking_param sourceTrackingData;
12177 int port_id, copp_idx;
12178
12179 ret = msm_audio_sound_focus_derive_port_id(kcontrol,
12180 "Source Tracking Audio Tx ", &port_id);
12181 if (ret) {
12182 pr_err("%s: Error in deriving port id, err=%d\n",
12183 __func__, ret);
12184
12185 ret = -EINVAL;
12186 goto done;
12187 }
12188
12189 ret = msm_audio_get_copp_idx_from_port_id(port_id, SESSION_TYPE_TX,
12190 &copp_idx);
12191 if (ret) {
12192 pr_err("%s: Could not get copp idx for port_id=%d\n",
12193 __func__, port_id);
12194
12195 ret = -EINVAL;
12196 goto done;
12197 }
12198
12199 ret = adm_get_source_tracking(port_id, copp_idx, &sourceTrackingData);
12200 if (ret) {
12201 pr_err("%s: Error getting Source Tracking Params, err=%d\n",
12202 __func__, ret);
12203
12204 ret = -EINVAL;
12205 goto done;
12206 }
12207
12208 memcpy(ucontrol->value.bytes.data, (void *)&sourceTrackingData,
12209 sizeof(struct source_tracking_param));
12210
12211done:
12212 return ret;
12213}
12214
12215static const struct snd_kcontrol_new msm_source_tracking_controls[] = {
12216 {
12217 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12218 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12219 .name = "Sound Focus Voice Tx SLIMBUS_0",
12220 .info = msm_sound_focus_info,
12221 .get = msm_voice_sound_focus_get,
12222 .put = msm_voice_sound_focus_put,
12223 },
12224 {
12225 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12226 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12227 .name = "Source Tracking Voice Tx SLIMBUS_0",
12228 .info = msm_source_tracking_info,
12229 .get = msm_voice_source_tracking_get,
12230 },
12231 {
12232 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12233 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12234 .name = "Sound Focus Audio Tx SLIMBUS_0",
12235 .info = msm_sound_focus_info,
12236 .get = msm_audio_sound_focus_get,
12237 .put = msm_audio_sound_focus_put,
12238 },
12239 {
12240 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12241 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12242 .name = "Source Tracking Audio Tx SLIMBUS_0",
12243 .info = msm_source_tracking_info,
12244 .get = msm_audio_source_tracking_get,
12245 },
12246 {
12247 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12248 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12249 .name = "Sound Focus Voice Tx TERT_MI2S",
12250 .info = msm_sound_focus_info,
12251 .get = msm_voice_sound_focus_get,
12252 .put = msm_voice_sound_focus_put,
12253 },
12254 {
12255 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12256 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12257 .name = "Source Tracking Voice Tx TERT_MI2S",
12258 .info = msm_source_tracking_info,
12259 .get = msm_voice_source_tracking_get,
12260 },
12261 {
12262 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12263 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12264 .name = "Sound Focus Audio Tx TERT_MI2S",
12265 .info = msm_sound_focus_info,
12266 .get = msm_audio_sound_focus_get,
12267 .put = msm_audio_sound_focus_put,
12268 },
12269 {
12270 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12271 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12272 .name = "Source Tracking Audio Tx TERT_MI2S",
12273 .info = msm_source_tracking_info,
12274 .get = msm_audio_source_tracking_get,
12275 },
12276 {
12277 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12278 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12279 .name = "Sound Focus Voice Tx INT3_MI2S",
12280 .info = msm_sound_focus_info,
12281 .get = msm_voice_sound_focus_get,
12282 .put = msm_voice_sound_focus_put,
12283 },
12284 {
12285 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12286 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12287 .name = "Source Tracking Voice Tx INT3_MI2S",
12288 .info = msm_source_tracking_info,
12289 .get = msm_voice_source_tracking_get,
12290 },
12291 {
12292 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12293 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12294 .name = "Sound Focus Audio Tx INT3_MI2S",
12295 .info = msm_sound_focus_info,
12296 .get = msm_audio_sound_focus_get,
12297 .put = msm_audio_sound_focus_put,
12298 },
12299 {
12300 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12301 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12302 .name = "Source Tracking Audio Tx INT3_MI2S",
12303 .info = msm_source_tracking_info,
12304 .get = msm_audio_source_tracking_get,
12305 },
12306};
12307
12308static int spkr_prot_put_vi_lch_port(struct snd_kcontrol *kcontrol,
12309 struct snd_ctl_elem_value *ucontrol)
12310{
12311 int ret = 0;
12312 int item;
12313 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
12314
12315 pr_debug("%s item is %d\n", __func__,
12316 ucontrol->value.enumerated.item[0]);
12317 mutex_lock(&routing_lock);
12318 item = ucontrol->value.enumerated.item[0];
12319 if (item < e->items) {
12320 pr_debug("%s RX DAI ID %d TX DAI id %d\n",
12321 __func__, e->shift_l, e->values[item]);
12322 if (e->shift_l < MSM_BACKEND_DAI_MAX &&
12323 e->values[item] < MSM_BACKEND_DAI_MAX)
12324 /* Enable feedback TX path */
12325 ret = afe_spk_prot_feed_back_cfg(
12326 msm_bedais[e->values[item]].port_id,
12327 msm_bedais[e->shift_l].port_id, 1, 0, 1);
12328 else {
12329 pr_debug("%s values are out of range item %d\n",
12330 __func__, e->values[item]);
12331 /* Disable feedback TX path */
12332 if (e->values[item] == MSM_BACKEND_DAI_MAX)
12333 ret = afe_spk_prot_feed_back_cfg(0, 0, 0, 0, 0);
12334 else
12335 ret = -EINVAL;
12336 }
12337 } else {
12338 pr_err("%s item value is out of range item\n", __func__);
12339 ret = -EINVAL;
12340 }
12341 mutex_unlock(&routing_lock);
12342 return ret;
12343}
12344
12345static int spkr_prot_put_vi_rch_port(struct snd_kcontrol *kcontrol,
12346 struct snd_ctl_elem_value *ucontrol)
12347{
12348 int ret = 0;
12349 int item;
12350 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
12351
12352 pr_debug("%s item is %d\n", __func__,
12353 ucontrol->value.enumerated.item[0]);
12354 mutex_lock(&routing_lock);
12355 item = ucontrol->value.enumerated.item[0];
12356 if (item < e->items) {
12357 pr_debug("%s RX DAI ID %d TX DAI id %d\n",
12358 __func__, e->shift_l, e->values[item]);
12359 if (e->shift_l < MSM_BACKEND_DAI_MAX &&
12360 e->values[item] < MSM_BACKEND_DAI_MAX)
12361 /* Enable feedback TX path */
12362 ret = afe_spk_prot_feed_back_cfg(
12363 msm_bedais[e->values[item]].port_id,
12364 msm_bedais[e->shift_l].port_id,
12365 1, 1, 1);
12366 else {
12367 pr_debug("%s values are out of range item %d\n",
12368 __func__, e->values[item]);
12369 /* Disable feedback TX path */
12370 if (e->values[item] == MSM_BACKEND_DAI_MAX)
12371 ret = afe_spk_prot_feed_back_cfg(0,
12372 0, 0, 0, 0);
12373 else
12374 ret = -EINVAL;
12375 }
12376 } else {
12377 pr_err("%s item value is out of range item\n", __func__);
12378 ret = -EINVAL;
12379 }
12380 mutex_unlock(&routing_lock);
12381 return ret;
12382}
12383
12384static int spkr_prot_get_vi_lch_port(struct snd_kcontrol *kcontrol,
12385 struct snd_ctl_elem_value *ucontrol)
12386{
12387 pr_debug("%s\n", __func__);
12388 return 0;
12389}
12390
12391static int spkr_prot_get_vi_rch_port(struct snd_kcontrol *kcontrol,
12392 struct snd_ctl_elem_value *ucontrol)
12393{
12394 pr_debug("%s\n", __func__);
12395 ucontrol->value.enumerated.item[0] = 0;
12396 return 0;
12397}
12398
12399static const char * const slim0_rx_vi_fb_tx_lch_mux_text[] = {
12400 "ZERO", "SLIM4_TX"
12401};
12402
12403static const char * const slim0_rx_vi_fb_tx_rch_mux_text[] = {
12404 "ZERO", "SLIM4_TX"
12405};
12406
12407static const char * const mi2s_rx_vi_fb_tx_mux_text[] = {
12408 "ZERO", "SENARY_TX"
12409};
12410
12411static const char * const int4_mi2s_rx_vi_fb_tx_mono_mux_text[] = {
12412 "ZERO", "INT5_MI2S_TX"
12413};
12414
12415static const char * const int4_mi2s_rx_vi_fb_tx_stereo_mux_text[] = {
12416 "ZERO", "INT5_MI2S_TX"
12417};
12418
12419static const int const slim0_rx_vi_fb_tx_lch_value[] = {
12420 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_SLIMBUS_4_TX
12421};
12422
12423static const int const slim0_rx_vi_fb_tx_rch_value[] = {
12424 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_SLIMBUS_4_TX
12425};
12426
12427static const int const mi2s_rx_vi_fb_tx_value[] = {
12428 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_SENARY_MI2S_TX
12429};
12430
12431static const int const int4_mi2s_rx_vi_fb_tx_mono_ch_value[] = {
12432 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_INT5_MI2S_TX
12433};
12434
12435static const int const int4_mi2s_rx_vi_fb_tx_stereo_ch_value[] = {
12436 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_INT5_MI2S_TX
12437};
12438
12439static const struct soc_enum slim0_rx_vi_fb_lch_mux_enum =
12440 SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_SLIMBUS_0_RX, 0, 0,
12441 ARRAY_SIZE(slim0_rx_vi_fb_tx_lch_mux_text),
12442 slim0_rx_vi_fb_tx_lch_mux_text, slim0_rx_vi_fb_tx_lch_value);
12443
12444static const struct soc_enum slim0_rx_vi_fb_rch_mux_enum =
12445 SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_SLIMBUS_0_RX, 0, 0,
12446 ARRAY_SIZE(slim0_rx_vi_fb_tx_rch_mux_text),
12447 slim0_rx_vi_fb_tx_rch_mux_text, slim0_rx_vi_fb_tx_rch_value);
12448
12449static const struct soc_enum mi2s_rx_vi_fb_mux_enum =
12450 SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_PRI_MI2S_RX, 0, 0,
12451 ARRAY_SIZE(mi2s_rx_vi_fb_tx_mux_text),
12452 mi2s_rx_vi_fb_tx_mux_text, mi2s_rx_vi_fb_tx_value);
12453
12454static const struct soc_enum int4_mi2s_rx_vi_fb_mono_ch_mux_enum =
12455 SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_INT4_MI2S_RX, 0, 0,
12456 ARRAY_SIZE(int4_mi2s_rx_vi_fb_tx_mono_mux_text),
12457 int4_mi2s_rx_vi_fb_tx_mono_mux_text,
12458 int4_mi2s_rx_vi_fb_tx_mono_ch_value);
12459
12460static const struct soc_enum int4_mi2s_rx_vi_fb_stereo_ch_mux_enum =
12461 SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_INT4_MI2S_RX, 0, 0,
12462 ARRAY_SIZE(int4_mi2s_rx_vi_fb_tx_stereo_mux_text),
12463 int4_mi2s_rx_vi_fb_tx_stereo_mux_text,
12464 int4_mi2s_rx_vi_fb_tx_stereo_ch_value);
12465
12466static const struct snd_kcontrol_new slim0_rx_vi_fb_lch_mux =
12467 SOC_DAPM_ENUM_EXT("SLIM0_RX_VI_FB_LCH_MUX",
12468 slim0_rx_vi_fb_lch_mux_enum, spkr_prot_get_vi_lch_port,
12469 spkr_prot_put_vi_lch_port);
12470
12471static const struct snd_kcontrol_new slim0_rx_vi_fb_rch_mux =
12472 SOC_DAPM_ENUM_EXT("SLIM0_RX_VI_FB_RCH_MUX",
12473 slim0_rx_vi_fb_rch_mux_enum, spkr_prot_get_vi_rch_port,
12474 spkr_prot_put_vi_rch_port);
12475
12476static const struct snd_kcontrol_new mi2s_rx_vi_fb_mux =
12477 SOC_DAPM_ENUM_EXT("PRI_MI2S_RX_VI_FB_MUX",
12478 mi2s_rx_vi_fb_mux_enum, spkr_prot_get_vi_lch_port,
12479 spkr_prot_put_vi_lch_port);
12480
12481static const struct snd_kcontrol_new int4_mi2s_rx_vi_fb_mono_ch_mux =
12482 SOC_DAPM_ENUM_EXT("INT4_MI2S_RX_VI_FB_MONO_CH_MUX",
12483 int4_mi2s_rx_vi_fb_mono_ch_mux_enum, spkr_prot_get_vi_lch_port,
12484 spkr_prot_put_vi_lch_port);
12485
12486static const struct snd_kcontrol_new int4_mi2s_rx_vi_fb_stereo_ch_mux =
12487 SOC_DAPM_ENUM_EXT("INT4_MI2S_RX_VI_FB_STEREO_CH_MUX",
12488 int4_mi2s_rx_vi_fb_stereo_ch_mux_enum, spkr_prot_get_vi_rch_port,
12489 spkr_prot_put_vi_rch_port);
12490
12491static const struct snd_soc_dapm_widget msm_qdsp6_widgets[] = {
12492 /* Frontend AIF */
12493 /* Widget name equals to Front-End DAI name<Need confirmation>,
12494 * Stream name must contains substring of front-end dai name
12495 */
12496 SND_SOC_DAPM_AIF_IN("MM_DL1", "MultiMedia1 Playback", 0, 0, 0, 0),
12497 SND_SOC_DAPM_AIF_IN("MM_DL2", "MultiMedia2 Playback", 0, 0, 0, 0),
12498 SND_SOC_DAPM_AIF_IN("MM_DL3", "MultiMedia3 Playback", 0, 0, 0, 0),
12499 SND_SOC_DAPM_AIF_IN("MM_DL4", "MultiMedia4 Playback", 0, 0, 0, 0),
12500 SND_SOC_DAPM_AIF_IN("MM_DL5", "MultiMedia5 Playback", 0, 0, 0, 0),
12501 SND_SOC_DAPM_AIF_IN("MM_DL6", "MultiMedia6 Playback", 0, 0, 0, 0),
12502 SND_SOC_DAPM_AIF_IN("MM_DL7", "MultiMedia7 Playback", 0, 0, 0, 0),
12503 SND_SOC_DAPM_AIF_IN("MM_DL8", "MultiMedia8 Playback", 0, 0, 0, 0),
12504 SND_SOC_DAPM_AIF_IN("MM_DL9", "MultiMedia9 Playback", 0, 0, 0, 0),
12505 SND_SOC_DAPM_AIF_IN("MM_DL10", "MultiMedia10 Playback", 0, 0, 0, 0),
12506 SND_SOC_DAPM_AIF_IN("MM_DL11", "MultiMedia11 Playback", 0, 0, 0, 0),
12507 SND_SOC_DAPM_AIF_IN("MM_DL12", "MultiMedia12 Playback", 0, 0, 0, 0),
12508 SND_SOC_DAPM_AIF_IN("MM_DL13", "MultiMedia13 Playback", 0, 0, 0, 0),
12509 SND_SOC_DAPM_AIF_IN("MM_DL14", "MultiMedia14 Playback", 0, 0, 0, 0),
12510 SND_SOC_DAPM_AIF_IN("MM_DL15", "MultiMedia15 Playback", 0, 0, 0, 0),
12511 SND_SOC_DAPM_AIF_IN("MM_DL16", "MultiMedia16 Playback", 0, 0, 0, 0),
12512 SND_SOC_DAPM_AIF_IN("MM_DL20", "MultiMedia20 Playback", 0, 0, 0, 0),
12513 SND_SOC_DAPM_AIF_IN("VOIP_DL", "VoIP Playback", 0, 0, 0, 0),
12514 SND_SOC_DAPM_AIF_OUT("MM_UL1", "MultiMedia1 Capture", 0, 0, 0, 0),
12515 SND_SOC_DAPM_AIF_OUT("MM_UL2", "MultiMedia2 Capture", 0, 0, 0, 0),
12516 SND_SOC_DAPM_AIF_OUT("MM_UL3", "MultiMedia3 Capture", 0, 0, 0, 0),
12517 SND_SOC_DAPM_AIF_OUT("MM_UL4", "MultiMedia4 Capture", 0, 0, 0, 0),
12518 SND_SOC_DAPM_AIF_OUT("MM_UL5", "MultiMedia5 Capture", 0, 0, 0, 0),
12519 SND_SOC_DAPM_AIF_OUT("MM_UL6", "MultiMedia6 Capture", 0, 0, 0, 0),
12520 SND_SOC_DAPM_AIF_OUT("MM_UL8", "MultiMedia8 Capture", 0, 0, 0, 0),
12521 SND_SOC_DAPM_AIF_OUT("MM_UL9", "MultiMedia9 Capture", 0, 0, 0, 0),
Laxminath Kasam38070be2017-08-17 18:21:59 +053012522 SND_SOC_DAPM_AIF_OUT("MM_UL10", "MultiMedia10 Capture", 0, 0, 0, 0),
Asish Bhattacharya34504582017-08-08 12:55:01 +053012523 SND_SOC_DAPM_AIF_OUT("MM_UL16", "MultiMedia16 Capture", 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012524 SND_SOC_DAPM_AIF_OUT("MM_UL17", "MultiMedia17 Capture", 0, 0, 0, 0),
12525 SND_SOC_DAPM_AIF_OUT("MM_UL18", "MultiMedia18 Capture", 0, 0, 0, 0),
12526 SND_SOC_DAPM_AIF_OUT("MM_UL19", "MultiMedia19 Capture", 0, 0, 0, 0),
12527 SND_SOC_DAPM_AIF_OUT("MM_UL20", "MultiMedia20 Capture", 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012528 SND_SOC_DAPM_AIF_OUT("VOIP_UL", "VoIP Capture", 0, 0, 0, 0),
12529 SND_SOC_DAPM_AIF_IN("VOICEMMODE1_DL",
12530 "VoiceMMode1 Playback", 0, 0, 0, 0),
12531 SND_SOC_DAPM_AIF_OUT("VOICEMMODE1_UL",
12532 "VoiceMMode1 Capture", 0, 0, 0, 0),
12533 SND_SOC_DAPM_AIF_IN("VOICEMMODE2_DL",
12534 "VoiceMMode2 Playback", 0, 0, 0, 0),
12535 SND_SOC_DAPM_AIF_OUT("VOICEMMODE2_UL",
12536 "VoiceMMode2 Capture", 0, 0, 0, 0),
12537 SND_SOC_DAPM_AIF_IN("SLIM0_DL_HL", "SLIMBUS0_HOSTLESS Playback",
12538 0, 0, 0, 0),
12539 SND_SOC_DAPM_AIF_OUT("SLIM0_UL_HL", "SLIMBUS0_HOSTLESS Capture",
12540 0, 0, 0, 0),
12541 SND_SOC_DAPM_AIF_OUT("CPE_LSM_UL_HL", "CPE LSM capture",
12542 0, 0, 0, 0),
12543 SND_SOC_DAPM_AIF_IN("SLIM1_DL_HL", "SLIMBUS1_HOSTLESS Playback",
12544 0, 0, 0, 0),
12545 SND_SOC_DAPM_AIF_OUT("SLIM1_UL_HL", "SLIMBUS1_HOSTLESS Capture",
12546 0, 0, 0, 0),
12547 SND_SOC_DAPM_AIF_IN("SLIM3_DL_HL", "SLIMBUS3_HOSTLESS Playback",
12548 0, 0, 0, 0),
12549 SND_SOC_DAPM_AIF_OUT("SLIM3_UL_HL", "SLIMBUS3_HOSTLESS Capture",
12550 0, 0, 0, 0),
12551 SND_SOC_DAPM_AIF_IN("SLIM4_DL_HL", "SLIMBUS4_HOSTLESS Playback",
12552 0, 0, 0, 0),
12553 SND_SOC_DAPM_AIF_OUT("SLIM4_UL_HL", "SLIMBUS4_HOSTLESS Capture",
12554 0, 0, 0, 0),
12555 SND_SOC_DAPM_AIF_IN("SLIM6_DL_HL", "SLIMBUS6_HOSTLESS Playback",
12556 0, 0, 0, 0),
12557 SND_SOC_DAPM_AIF_OUT("SLIM6_UL_HL", "SLIMBUS6_HOSTLESS Capture",
12558 0, 0, 0, 0),
12559 SND_SOC_DAPM_AIF_IN("SLIM7_DL_HL", "SLIMBUS7_HOSTLESS Playback",
12560 0, 0, 0, 0),
12561 SND_SOC_DAPM_AIF_OUT("SLIM7_UL_HL", "SLIMBUS7_HOSTLESS Capture",
12562 0, 0, 0, 0),
12563 SND_SOC_DAPM_AIF_IN("SLIM8_DL_HL", "SLIMBUS8_HOSTLESS Playback",
12564 0, 0, 0, 0),
12565 SND_SOC_DAPM_AIF_OUT("SLIM8_UL_HL", "SLIMBUS8_HOSTLESS Capture",
12566 0, 0, 0, 0),
12567 SND_SOC_DAPM_AIF_IN("INTFM_DL_HL", "INT_FM_HOSTLESS Playback",
12568 0, 0, 0, 0),
12569 SND_SOC_DAPM_AIF_OUT("INTFM_UL_HL", "INT_FM_HOSTLESS Capture",
12570 0, 0, 0, 0),
12571 SND_SOC_DAPM_AIF_IN("INTHFP_DL_HL", "INT_HFP_BT_HOSTLESS Playback",
12572 0, 0, 0, 0),
12573 SND_SOC_DAPM_AIF_OUT("INTHFP_UL_HL", "INT_HFP_BT_HOSTLESS Capture",
12574 0, 0, 0, 0),
12575 SND_SOC_DAPM_AIF_IN("USBAUDIO_DL_HL", "USBAUDIO_HOSTLESS Playback",
12576 0, 0, 0, 0),
12577 SND_SOC_DAPM_AIF_OUT("USBAUDIO_UL_HL", "USBAUDIO_HOSTLESS Capture",
12578 0, 0, 0, 0),
12579 SND_SOC_DAPM_AIF_IN("HDMI_DL_HL", "HDMI_HOSTLESS Playback", 0, 0, 0, 0),
12580 SND_SOC_DAPM_AIF_IN("SEC_I2S_DL_HL", "SEC_I2S_RX_HOSTLESS Playback",
12581 0, 0, 0, 0),
12582 SND_SOC_DAPM_AIF_IN("INT0_MI2S_DL_HL",
12583 "INT0 MI2S_RX Hostless Playback",
12584 0, 0, 0, 0),
12585 SND_SOC_DAPM_AIF_IN("INT4_MI2S_DL_HL",
12586 "INT4 MI2S_RX Hostless Playback",
12587 0, 0, 0, 0),
12588 SND_SOC_DAPM_AIF_IN("PRI_MI2S_DL_HL",
12589 "Primary MI2S_RX Hostless Playback",
12590 0, 0, 0, 0),
12591 SND_SOC_DAPM_AIF_IN("SEC_MI2S_DL_HL",
12592 "Secondary MI2S_RX Hostless Playback",
12593 0, 0, 0, 0),
12594 SND_SOC_DAPM_AIF_IN("TERT_MI2S_DL_HL",
12595 "Tertiary MI2S_RX Hostless Playback",
12596 0, 0, 0, 0),
12597 SND_SOC_DAPM_AIF_IN("QUAT_MI2S_DL_HL",
12598 "Quaternary MI2S_RX Hostless Playback",
12599 0, 0, 0, 0),
Rohit Kumara5077932017-09-10 22:05:05 +053012600 SND_SOC_DAPM_AIF_IN("QUIN_MI2S_DL_HL",
12601 "Quinary MI2S_RX Hostless Playback",
12602 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012603
12604 SND_SOC_DAPM_AIF_IN("AUXPCM_DL_HL", "AUXPCM_HOSTLESS Playback",
12605 0, 0, 0, 0),
12606 SND_SOC_DAPM_AIF_OUT("AUXPCM_UL_HL", "AUXPCM_HOSTLESS Capture",
12607 0, 0, 0, 0),
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -080012608 SND_SOC_DAPM_AIF_IN("SEC_AUXPCM_DL_HL", "SEC_AUXPCM_HOSTLESS Playback",
12609 0, 0, 0, 0),
12610 SND_SOC_DAPM_AIF_OUT("SEC_AUXPCM_UL_HL", "SEC_AUXPCM_HOSTLESS Capture",
12611 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012612 SND_SOC_DAPM_AIF_OUT("MI2S_UL_HL", "MI2S_TX_HOSTLESS Capture",
12613 0, 0, 0, 0),
12614 SND_SOC_DAPM_AIF_OUT("INT3_MI2S_UL_HL",
12615 "INT3 MI2S_TX Hostless Capture",
12616 0, 0, 0, 0),
12617 SND_SOC_DAPM_AIF_OUT("TERT_MI2S_UL_HL",
12618 "Tertiary MI2S_TX Hostless Capture",
12619 0, 0, 0, 0),
12620 SND_SOC_DAPM_AIF_OUT("SEC_MI2S_UL_HL",
12621 "Secondary MI2S_TX Hostless Capture",
12622 0, 0, 0, 0),
12623 SND_SOC_DAPM_AIF_OUT("PRI_MI2S_UL_HL",
12624 "Primary MI2S_TX Hostless Capture",
12625 0, 0, 0, 0),
12626 SND_SOC_DAPM_AIF_OUT("MI2S_DL_HL", "MI2S_RX_HOSTLESS Playback",
12627 0, 0, 0, 0),
12628 SND_SOC_DAPM_AIF_IN("DTMF_DL_HL", "DTMF_RX_HOSTLESS Playback",
12629 0, 0, 0, 0),
12630 SND_SOC_DAPM_AIF_OUT("QUAT_MI2S_UL_HL",
12631 "Quaternary MI2S_TX Hostless Capture",
12632 0, 0, 0, 0),
Rohit Kumara5077932017-09-10 22:05:05 +053012633 SND_SOC_DAPM_AIF_OUT("QUIN_MI2S_UL_HL",
12634 "Quinary MI2S_TX Hostless Capture",
12635 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012636
12637 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_0_DL_HL",
12638 "Primary TDM0 Hostless Playback",
12639 0, 0, 0, 0),
12640 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_0_UL_HL",
12641 "Primary TDM0 Hostless Capture",
12642 0, 0, 0, 0),
12643 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_1_DL_HL",
12644 "Primary TDM1 Hostless Playback",
12645 0, 0, 0, 0),
12646 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_1_UL_HL",
12647 "Primary TDM1 Hostless Capture",
12648 0, 0, 0, 0),
12649 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_2_DL_HL",
12650 "Primary TDM2 Hostless Playback",
12651 0, 0, 0, 0),
12652 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_2_UL_HL",
12653 "Primary TDM2 Hostless Capture",
12654 0, 0, 0, 0),
12655 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_3_DL_HL",
12656 "Primary TDM3 Hostless Playback",
12657 0, 0, 0, 0),
12658 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_3_UL_HL",
12659 "Primary TDM3 Hostless Capture",
12660 0, 0, 0, 0),
12661 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_4_DL_HL",
12662 "Primary TDM4 Hostless Playback",
12663 0, 0, 0, 0),
12664 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_4_UL_HL",
12665 "Primary TDM4 Hostless Capture",
12666 0, 0, 0, 0),
12667 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_5_DL_HL",
12668 "Primary TDM5 Hostless Playback",
12669 0, 0, 0, 0),
12670 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_5_UL_HL",
12671 "Primary TDM5 Hostless Capture",
12672 0, 0, 0, 0),
12673 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_6_DL_HL",
12674 "Primary TDM6 Hostless Playback",
12675 0, 0, 0, 0),
12676 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_6_UL_HL",
12677 "Primary TDM6 Hostless Capture",
12678 0, 0, 0, 0),
12679 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_7_DL_HL",
12680 "Primary TDM7 Hostless Playback",
12681 0, 0, 0, 0),
12682 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_7_UL_HL",
12683 "Primary TDM7 Hostless Capture",
12684 0, 0, 0, 0),
12685 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_0_DL_HL",
12686 "Secondary TDM0 Hostless Playback",
12687 0, 0, 0, 0),
12688 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_0_UL_HL",
12689 "Secondary TDM0 Hostless Capture",
12690 0, 0, 0, 0),
12691 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_1_DL_HL",
12692 "Secondary TDM1 Hostless Playback",
12693 0, 0, 0, 0),
12694 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_1_UL_HL",
12695 "Secondary TDM1 Hostless Capture",
12696 0, 0, 0, 0),
12697 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_2_DL_HL",
12698 "Secondary TDM2 Hostless Playback",
12699 0, 0, 0, 0),
12700 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_2_UL_HL",
12701 "Secondary TDM2 Hostless Capture",
12702 0, 0, 0, 0),
12703 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_3_DL_HL",
12704 "Secondary TDM3 Hostless Playback",
12705 0, 0, 0, 0),
12706 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_3_UL_HL",
12707 "Secondary TDM3 Hostless Capture",
12708 0, 0, 0, 0),
12709 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_4_DL_HL",
12710 "Secondary TDM4 Hostless Playback",
12711 0, 0, 0, 0),
12712 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_4_UL_HL",
12713 "Secondary TDM4 Hostless Capture",
12714 0, 0, 0, 0),
12715 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_5_DL_HL",
12716 "Secondary TDM5 Hostless Playback",
12717 0, 0, 0, 0),
12718 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_5_UL_HL",
12719 "Secondary TDM5 Hostless Capture",
12720 0, 0, 0, 0),
12721 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_6_DL_HL",
12722 "Secondary TDM6 Hostless Playback",
12723 0, 0, 0, 0),
12724 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_6_UL_HL",
12725 "Secondary TDM6 Hostless Capture",
12726 0, 0, 0, 0),
12727 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_7_DL_HL",
12728 "Secondary TDM7 Hostless Playback",
12729 0, 0, 0, 0),
12730 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_7_UL_HL",
12731 "Secondary TDM7 Hostless Capture",
12732 0, 0, 0, 0),
12733 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_0_DL_HL",
12734 "Tertiary TDM0 Hostless Playback",
12735 0, 0, 0, 0),
12736 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_0_UL_HL",
12737 "Tertiary TDM0 Hostless Capture",
12738 0, 0, 0, 0),
12739 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_1_DL_HL",
12740 "Tertiary TDM1 Hostless Playback",
12741 0, 0, 0, 0),
12742 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_1_UL_HL",
12743 "Tertiary TDM1 Hostless Capture",
12744 0, 0, 0, 0),
12745 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_2_DL_HL",
12746 "Tertiary TDM2 Hostless Playback",
12747 0, 0, 0, 0),
12748 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_2_UL_HL",
12749 "Tertiary TDM2 Hostless Capture",
12750 0, 0, 0, 0),
12751 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_3_DL_HL",
12752 "Tertiary TDM3 Hostless Playback",
12753 0, 0, 0, 0),
12754 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_3_UL_HL",
12755 "Tertiary TDM3 Hostless Capture",
12756 0, 0, 0, 0),
12757 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_4_DL_HL",
12758 "Tertiary TDM4 Hostless Playback",
12759 0, 0, 0, 0),
12760 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_4_UL_HL",
12761 "Tertiary TDM4 Hostless Capture",
12762 0, 0, 0, 0),
12763 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_5_DL_HL",
12764 "Tertiary TDM5 Hostless Playback",
12765 0, 0, 0, 0),
12766 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_5_UL_HL",
12767 "Tertiary TDM5 Hostless Capture",
12768 0, 0, 0, 0),
12769 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_6_DL_HL",
12770 "Tertiary TDM6 Hostless Playback",
12771 0, 0, 0, 0),
12772 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_6_UL_HL",
12773 "Tertiary TDM6 Hostless Capture",
12774 0, 0, 0, 0),
12775 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_7_DL_HL",
12776 "Tertiary TDM7 Hostless Playback",
12777 0, 0, 0, 0),
12778 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_7_UL_HL",
12779 "Tertiary TDM7 Hostless Capture",
12780 0, 0, 0, 0),
12781 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_0_DL_HL",
12782 "Quaternary TDM0 Hostless Playback",
12783 0, 0, 0, 0),
12784 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_0_UL_HL",
12785 "Quaternary TDM0 Hostless Capture",
12786 0, 0, 0, 0),
12787 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_1_DL_HL",
12788 "Quaternary TDM1 Hostless Playback",
12789 0, 0, 0, 0),
12790 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_1_UL_HL",
12791 "Quaternary TDM1 Hostless Capture",
12792 0, 0, 0, 0),
12793 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_2_DL_HL",
12794 "Quaternary TDM2 Hostless Playback",
12795 0, 0, 0, 0),
12796 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_2_UL_HL",
12797 "Quaternary TDM2 Hostless Capture",
12798 0, 0, 0, 0),
12799 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_3_DL_HL",
12800 "Quaternary TDM3 Hostless Playback",
12801 0, 0, 0, 0),
12802 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_3_UL_HL",
12803 "Quaternary TDM3 Hostless Capture",
12804 0, 0, 0, 0),
12805 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_4_DL_HL",
12806 "Quaternary TDM4 Hostless Playback",
12807 0, 0, 0, 0),
12808 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_4_UL_HL",
12809 "Quaternary TDM4 Hostless Capture",
12810 0, 0, 0, 0),
12811 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_5_DL_HL",
12812 "Quaternary TDM5 Hostless Playback",
12813 0, 0, 0, 0),
12814 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_5_UL_HL",
12815 "Quaternary TDM5 Hostless Capture",
12816 0, 0, 0, 0),
12817 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_6_DL_HL",
12818 "Quaternary TDM6 Hostless Playback",
12819 0, 0, 0, 0),
12820 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_6_UL_HL",
12821 "Quaternary TDM6 Hostless Capture",
12822 0, 0, 0, 0),
12823 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_7_DL_HL",
12824 "Quaternary TDM7 Hostless Playback",
12825 0, 0, 0, 0),
12826 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_7_UL_HL",
12827 "Quaternary TDM7 Hostless Capture",
12828 0, 0, 0, 0),
Rohit Kumara5077932017-09-10 22:05:05 +053012829 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_0_DL_HL",
12830 "Quinary TDM0 Hostless Playback",
12831 0, 0, 0, 0),
12832 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_0_UL_HL",
12833 "Quinary TDM0 Hostless Capture",
12834 0, 0, 0, 0),
12835 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_1_DL_HL",
12836 "Quinary TDM1 Hostless Playback",
12837 0, 0, 0, 0),
12838 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_1_UL_HL",
12839 "Quinary TDM1 Hostless Capture",
12840 0, 0, 0, 0),
12841 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_2_DL_HL",
12842 "Quinary TDM2 Hostless Playback",
12843 0, 0, 0, 0),
12844 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_2_UL_HL",
12845 "Quinary TDM2 Hostless Capture",
12846 0, 0, 0, 0),
12847 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_3_DL_HL",
12848 "Quinary TDM3 Hostless Playback",
12849 0, 0, 0, 0),
12850 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_3_UL_HL",
12851 "Quinary TDM3 Hostless Capture",
12852 0, 0, 0, 0),
12853 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_4_DL_HL",
12854 "Quinary TDM4 Hostless Playback",
12855 0, 0, 0, 0),
12856 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_4_UL_HL",
12857 "Quinary TDM4 Hostless Capture",
12858 0, 0, 0, 0),
12859 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_5_DL_HL",
12860 "Quinary TDM5 Hostless Playback",
12861 0, 0, 0, 0),
12862 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_5_UL_HL",
12863 "Quinary TDM5 Hostless Capture",
12864 0, 0, 0, 0),
12865 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_6_DL_HL",
12866 "Quinary TDM6 Hostless Playback",
12867 0, 0, 0, 0),
12868 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_6_UL_HL",
12869 "Quinary TDM6 Hostless Capture",
12870 0, 0, 0, 0),
12871 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_7_DL_HL",
12872 "Quinary TDM7 Hostless Playback",
12873 0, 0, 0, 0),
12874 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_7_UL_HL",
12875 "Quinary TDM7 Hostless Capture",
12876 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012877
12878 /* LSM */
12879 SND_SOC_DAPM_AIF_OUT("LSM1_UL_HL", "Listen 1 Audio Service Capture",
12880 0, 0, 0, 0),
12881 SND_SOC_DAPM_AIF_OUT("LSM2_UL_HL", "Listen 2 Audio Service Capture",
12882 0, 0, 0, 0),
12883 SND_SOC_DAPM_AIF_OUT("LSM3_UL_HL", "Listen 3 Audio Service Capture",
12884 0, 0, 0, 0),
12885 SND_SOC_DAPM_AIF_OUT("LSM4_UL_HL", "Listen 4 Audio Service Capture",
12886 0, 0, 0, 0),
12887 SND_SOC_DAPM_AIF_OUT("LSM5_UL_HL", "Listen 5 Audio Service Capture",
12888 0, 0, 0, 0),
12889 SND_SOC_DAPM_AIF_OUT("LSM6_UL_HL", "Listen 6 Audio Service Capture",
12890 0, 0, 0, 0),
12891 SND_SOC_DAPM_AIF_OUT("LSM7_UL_HL", "Listen 7 Audio Service Capture",
12892 0, 0, 0, 0),
12893 SND_SOC_DAPM_AIF_OUT("LSM8_UL_HL", "Listen 8 Audio Service Capture",
12894 0, 0, 0, 0),
12895 SND_SOC_DAPM_AIF_IN("QCHAT_DL", "QCHAT Playback", 0, 0, 0, 0),
12896 SND_SOC_DAPM_AIF_OUT("QCHAT_UL", "QCHAT Capture", 0, 0, 0, 0),
12897 /* Backend AIF */
12898 /* Stream name equals to backend dai link stream name */
12899 SND_SOC_DAPM_AIF_OUT("PRI_I2S_RX", "Primary I2S Playback", 0, 0, 0, 0),
12900 SND_SOC_DAPM_AIF_OUT("SEC_I2S_RX", "Secondary I2S Playback",
12901 0, 0, 0, 0),
12902 SND_SOC_DAPM_AIF_OUT("SPDIF_RX", "SPDIF Playback", 0, 0, 0, 0),
12903 SND_SOC_DAPM_AIF_OUT("SLIMBUS_0_RX", "Slimbus Playback", 0, 0, 0, 0),
12904 SND_SOC_DAPM_AIF_OUT("SLIMBUS_2_RX", "Slimbus2 Playback", 0, 0, 0, 0),
12905 SND_SOC_DAPM_AIF_OUT("SLIMBUS_5_RX", "Slimbus5 Playback", 0, 0, 0, 0),
12906 SND_SOC_DAPM_AIF_OUT("HDMI", "HDMI Playback", 0, 0, 0, 0),
12907 SND_SOC_DAPM_AIF_OUT("DISPLAY_PORT", "Display Port Playback",
12908 0, 0, 0, 0),
12909 SND_SOC_DAPM_AIF_OUT("MI2S_RX", "MI2S Playback", 0, 0, 0, 0),
12910 SND_SOC_DAPM_AIF_OUT("QUAT_MI2S_RX", "Quaternary MI2S Playback",
12911 0, 0, 0, 0),
12912 SND_SOC_DAPM_AIF_OUT("TERT_MI2S_RX", "Tertiary MI2S Playback",
12913 0, 0, 0, 0),
12914 SND_SOC_DAPM_AIF_OUT("SEC_MI2S_RX", "Secondary MI2S Playback",
12915 0, 0, 0, 0),
12916 SND_SOC_DAPM_AIF_OUT("SEC_MI2S_RX_SD1",
12917 "Secondary MI2S Playback SD1",
12918 0, 0, 0, 0),
12919 SND_SOC_DAPM_AIF_OUT("PRI_MI2S_RX", "Primary MI2S Playback",
12920 0, 0, 0, 0),
12921 SND_SOC_DAPM_AIF_OUT("INT0_MI2S_RX", "INT0 MI2S Playback",
12922 0, 0, 0, 0),
Laxminath Kasam52697fe2017-11-29 15:44:14 +053012923 SND_SOC_DAPM_AIF_OUT("INT2_MI2S_RX", "INT2 MI2S Playback",
12924 0, 0, 0, 0),
12925 SND_SOC_DAPM_AIF_OUT("INT3_MI2S_RX", "INT3 MI2S Playback",
12926 0, 0, 0, 0),
12927 SND_SOC_DAPM_AIF_OUT("INT5_MI2S_RX", "INT5 MI2S Playback",
12928 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012929 SND_SOC_DAPM_AIF_OUT("INT4_MI2S_RX", "INT4 MI2S Playback",
12930 0, 0, 0, 0),
Laxminath Kasam52697fe2017-11-29 15:44:14 +053012931 SND_SOC_DAPM_AIF_OUT("INT4_MI2S_TX", "INT4 MI2S Capture",
12932 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012933 SND_SOC_DAPM_AIF_OUT("QUIN_MI2S_RX", "Quinary MI2S Playback",
12934 0, 0, 0, 0),
12935 SND_SOC_DAPM_AIF_IN("PRI_I2S_TX", "Primary I2S Capture", 0, 0, 0, 0),
12936 SND_SOC_DAPM_AIF_IN("MI2S_TX", "MI2S Capture", 0, 0, 0, 0),
12937 SND_SOC_DAPM_AIF_IN("QUAT_MI2S_TX", "Quaternary MI2S Capture",
12938 0, 0, 0, 0),
12939 SND_SOC_DAPM_AIF_IN("PRI_MI2S_TX", "Primary MI2S Capture",
12940 0, 0, 0, 0),
12941 SND_SOC_DAPM_AIF_IN("TERT_MI2S_TX", "Tertiary MI2S Capture",
12942 0, 0, 0, 0),
Laxminath Kasam52697fe2017-11-29 15:44:14 +053012943 SND_SOC_DAPM_AIF_OUT("INT0_MI2S_TX", "INT0 MI2S Capture",
12944 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012945 SND_SOC_DAPM_AIF_IN("INT2_MI2S_TX", "INT2 MI2S Capture",
12946 0, 0, 0, 0),
12947 SND_SOC_DAPM_AIF_IN("INT3_MI2S_TX", "INT3 MI2S Capture",
12948 0, 0, 0, 0),
12949 SND_SOC_DAPM_AIF_IN("SEC_MI2S_TX", "Secondary MI2S Capture",
12950 0, 0, 0, 0),
12951 SND_SOC_DAPM_AIF_IN("SLIMBUS_0_TX", "Slimbus Capture", 0, 0, 0, 0),
12952 SND_SOC_DAPM_AIF_IN("SLIMBUS_2_TX", "Slimbus2 Capture", 0, 0, 0, 0),
12953 SND_SOC_DAPM_AIF_IN("QUIN_MI2S_TX", "Quinary MI2S Capture",
12954 0, 0, 0, 0),
12955 SND_SOC_DAPM_AIF_IN("SENARY_MI2S_TX", "Senary MI2S Capture",
12956 0, 0, 0, 0),
12957 SND_SOC_DAPM_AIF_OUT("INT_BT_SCO_RX", "Internal BT-SCO Playback",
12958 0, 0, 0, 0),
12959 SND_SOC_DAPM_AIF_IN("INT_BT_SCO_TX", "Internal BT-SCO Capture",
12960 0, 0, 0, 0),
12961 SND_SOC_DAPM_AIF_OUT("INT_BT_A2DP_RX", "Internal BT-A2DP Playback",
12962 0, 0, 0, 0),
12963 SND_SOC_DAPM_AIF_OUT("INT_FM_RX", "Internal FM Playback",
12964 0, 0, 0, 0),
12965 SND_SOC_DAPM_AIF_IN("INT_FM_TX", "Internal FM Capture",
12966 0, 0, 0, 0),
12967 SND_SOC_DAPM_AIF_OUT("PCM_RX", "AFE Playback",
12968 0, 0, 0, 0),
12969 SND_SOC_DAPM_AIF_IN("PCM_TX", "AFE Capture",
12970 0, 0, 0, 0),
12971 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_0", "Primary TDM0 Playback",
12972 0, 0, 0, 0),
12973 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_0", "Primary TDM0 Capture",
12974 0, 0, 0, 0),
12975 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_1", "Primary TDM1 Playback",
12976 0, 0, 0, 0),
12977 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_1", "Primary TDM1 Capture",
12978 0, 0, 0, 0),
12979 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_2", "Primary TDM2 Playback",
12980 0, 0, 0, 0),
12981 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_2", "Primary TDM2 Capture",
12982 0, 0, 0, 0),
12983 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_3", "Primary TDM3 Playback",
12984 0, 0, 0, 0),
12985 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_3", "Primary TDM3 Capture",
12986 0, 0, 0, 0),
12987 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_4", "Primary TDM4 Playback",
12988 0, 0, 0, 0),
12989 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_4", "Primary TDM4 Capture",
12990 0, 0, 0, 0),
12991 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_5", "Primary TDM5 Playback",
12992 0, 0, 0, 0),
12993 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_5", "Primary TDM5 Capture",
12994 0, 0, 0, 0),
12995 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_6", "Primary TDM6 Playback",
12996 0, 0, 0, 0),
12997 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_6", "Primary TDM6 Capture",
12998 0, 0, 0, 0),
12999 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_7", "Primary TDM7 Playback",
13000 0, 0, 0, 0),
13001 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_7", "Primary TDM7 Capture",
13002 0, 0, 0, 0),
13003 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_0", "Secondary TDM0 Playback",
13004 0, 0, 0, 0),
13005 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_0", "Secondary TDM0 Capture",
13006 0, 0, 0, 0),
13007 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_1", "Secondary TDM1 Playback",
13008 0, 0, 0, 0),
13009 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_1", "Secondary TDM1 Capture",
13010 0, 0, 0, 0),
13011 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_2", "Secondary TDM2 Playback",
13012 0, 0, 0, 0),
13013 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_2", "Secondary TDM2 Capture",
13014 0, 0, 0, 0),
13015 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_3", "Secondary TDM3 Playback",
13016 0, 0, 0, 0),
13017 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_3", "Secondary TDM3 Capture",
13018 0, 0, 0, 0),
13019 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_4", "Secondary TDM4 Playback",
13020 0, 0, 0, 0),
13021 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_4", "Secondary TDM4 Capture",
13022 0, 0, 0, 0),
13023 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_5", "Secondary TDM5 Playback",
13024 0, 0, 0, 0),
13025 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_5", "Secondary TDM5 Capture",
13026 0, 0, 0, 0),
13027 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_6", "Secondary TDM6 Playback",
13028 0, 0, 0, 0),
13029 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_6", "Secondary TDM6 Capture",
13030 0, 0, 0, 0),
13031 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_7", "Secondary TDM7 Playback",
13032 0, 0, 0, 0),
13033 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_7", "Secondary TDM7 Capture",
13034 0, 0, 0, 0),
13035 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_0", "Tertiary TDM0 Playback",
13036 0, 0, 0, 0),
13037 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_0", "Tertiary TDM0 Capture",
13038 0, 0, 0, 0),
13039 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_1", "Tertiary TDM1 Playback",
13040 0, 0, 0, 0),
13041 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_1", "Tertiary TDM1 Capture",
13042 0, 0, 0, 0),
13043 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_2", "Tertiary TDM2 Playback",
13044 0, 0, 0, 0),
13045 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_2", "Tertiary TDM2 Capture",
13046 0, 0, 0, 0),
13047 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_3", "Tertiary TDM3 Playback",
13048 0, 0, 0, 0),
13049 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_3", "Tertiary TDM3 Capture",
13050 0, 0, 0, 0),
13051 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_4", "Tertiary TDM4 Playback",
13052 0, 0, 0, 0),
13053 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_4", "Tertiary TDM4 Capture",
13054 0, 0, 0, 0),
13055 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_5", "Tertiary TDM5 Playback",
13056 0, 0, 0, 0),
13057 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_5", "Tertiary TDM5 Capture",
13058 0, 0, 0, 0),
13059 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_6", "Tertiary TDM6 Playback",
13060 0, 0, 0, 0),
13061 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_6", "Tertiary TDM6 Capture",
13062 0, 0, 0, 0),
13063 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_7", "Tertiary TDM7 Playback",
13064 0, 0, 0, 0),
13065 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_7", "Tertiary TDM7 Capture",
13066 0, 0, 0, 0),
13067 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_0", "Quaternary TDM0 Playback",
13068 0, 0, 0, 0),
13069 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_0", "Quaternary TDM0 Capture",
13070 0, 0, 0, 0),
13071 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_1", "Quaternary TDM1 Playback",
13072 0, 0, 0, 0),
13073 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_1", "Quaternary TDM1 Capture",
13074 0, 0, 0, 0),
13075 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_2", "Quaternary TDM2 Playback",
13076 0, 0, 0, 0),
13077 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_2", "Quaternary TDM2 Capture",
13078 0, 0, 0, 0),
13079 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_3", "Quaternary TDM3 Playback",
13080 0, 0, 0, 0),
13081 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_3", "Quaternary TDM3 Capture",
13082 0, 0, 0, 0),
13083 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_4", "Quaternary TDM4 Playback",
13084 0, 0, 0, 0),
13085 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_4", "Quaternary TDM4 Capture",
13086 0, 0, 0, 0),
13087 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_5", "Quaternary TDM5 Playback",
13088 0, 0, 0, 0),
13089 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_5", "Quaternary TDM5 Capture",
13090 0, 0, 0, 0),
13091 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_6", "Quaternary TDM6 Playback",
13092 0, 0, 0, 0),
13093 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_6", "Quaternary TDM6 Capture",
13094 0, 0, 0, 0),
13095 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_7", "Quaternary TDM7 Playback",
13096 0, 0, 0, 0),
13097 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_7", "Quaternary TDM7 Capture",
13098 0, 0, 0, 0),
Rohit Kumara5077932017-09-10 22:05:05 +053013099 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_0", "Quinary TDM0 Playback",
13100 0, 0, 0, 0),
13101 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_0", "Quinary TDM0 Capture",
13102 0, 0, 0, 0),
13103 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_1", "Quinary TDM1 Playback",
13104 0, 0, 0, 0),
13105 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_1", "Quinary TDM1 Capture",
13106 0, 0, 0, 0),
13107 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_2", "Quinary TDM2 Playback",
13108 0, 0, 0, 0),
13109 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_2", "Quinary TDM2 Capture",
13110 0, 0, 0, 0),
13111 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_3", "Quinary TDM3 Playback",
13112 0, 0, 0, 0),
13113 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_3", "Quinary TDM3 Capture",
13114 0, 0, 0, 0),
13115 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_4", "Quinary TDM4 Playback",
13116 0, 0, 0, 0),
13117 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_4", "Quinary TDM4 Capture",
13118 0, 0, 0, 0),
13119 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_5", "Quinary TDM5 Playback",
13120 0, 0, 0, 0),
13121 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_5", "Quinary TDM5 Capture",
13122 0, 0, 0, 0),
13123 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_6", "Quinary TDM6 Playback",
13124 0, 0, 0, 0),
13125 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_6", "Quinary TDM6 Capture",
13126 0, 0, 0, 0),
13127 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_7", "Quinary TDM7 Playback",
13128 0, 0, 0, 0),
13129 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_7", "Quinary TDM7 Capture",
13130 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013131 /* incall */
13132 SND_SOC_DAPM_AIF_OUT("VOICE_PLAYBACK_TX", "Voice Farend Playback",
13133 0, 0, 0, 0),
13134 SND_SOC_DAPM_AIF_OUT("VOICE2_PLAYBACK_TX", "Voice2 Farend Playback",
13135 0, 0, 0, 0),
13136 SND_SOC_DAPM_AIF_OUT("SLIMBUS_4_RX", "Slimbus4 Playback",
13137 0, 0, 0, 0),
13138 SND_SOC_DAPM_AIF_IN("INCALL_RECORD_TX", "Voice Uplink Capture",
13139 0, 0, 0, 0),
13140 SND_SOC_DAPM_AIF_IN("INCALL_RECORD_RX", "Voice Downlink Capture",
13141 0, 0, 0, 0),
13142 SND_SOC_DAPM_AIF_IN("SLIMBUS_4_TX", "Slimbus4 Capture",
13143 0, 0, 0, 0),
13144 SND_SOC_DAPM_AIF_IN("SENARY_TX", "Senary_mi2s Capture",
13145 0, 0, 0, 0),
13146 SND_SOC_DAPM_AIF_IN("INT5_MI2S_TX", "INT5 MI2S Capture",
13147 0, 0, 0, 0),
13148 SND_SOC_DAPM_AIF_IN("SLIMBUS_5_TX", "Slimbus5 Capture", 0, 0, 0, 0),
13149
13150 SND_SOC_DAPM_AIF_OUT("AUX_PCM_RX", "AUX PCM Playback", 0, 0, 0, 0),
13151 SND_SOC_DAPM_AIF_IN("AUX_PCM_TX", "AUX PCM Capture", 0, 0, 0, 0),
13152 SND_SOC_DAPM_AIF_OUT("SEC_AUX_PCM_RX", "Sec AUX PCM Playback",
13153 0, 0, 0, 0),
13154 SND_SOC_DAPM_AIF_IN("SEC_AUX_PCM_TX", "Sec AUX PCM Capture",
13155 0, 0, 0, 0),
13156 SND_SOC_DAPM_AIF_OUT("TERT_AUX_PCM_RX", "Tert AUX PCM Playback",
13157 0, 0, 0, 0),
13158 SND_SOC_DAPM_AIF_IN("TERT_AUX_PCM_TX", "Tert AUX PCM Capture",
13159 0, 0, 0, 0),
13160 SND_SOC_DAPM_AIF_OUT("QUAT_AUX_PCM_RX", "Quat AUX PCM Playback",
13161 0, 0, 0, 0),
13162 SND_SOC_DAPM_AIF_IN("QUAT_AUX_PCM_TX", "Quat AUX PCM Capture",
13163 0, 0, 0, 0),
Rohit Kumara5077932017-09-10 22:05:05 +053013164 SND_SOC_DAPM_AIF_OUT("QUIN_AUX_PCM_RX", "Quin AUX PCM Playback",
13165 0, 0, 0, 0),
13166 SND_SOC_DAPM_AIF_IN("QUIN_AUX_PCM_TX", "Quin AUX PCM Capture",
13167 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013168 SND_SOC_DAPM_AIF_IN("VOICE_STUB_DL", "VOICE_STUB Playback", 0, 0, 0, 0),
13169 SND_SOC_DAPM_AIF_OUT("VOICE_STUB_UL", "VOICE_STUB Capture", 0, 0, 0, 0),
13170 SND_SOC_DAPM_AIF_IN("VOICE2_STUB_DL", "VOICE2_STUB Playback",
13171 0, 0, 0, 0),
13172 SND_SOC_DAPM_AIF_OUT("VOICE2_STUB_UL", "VOICE2_STUB Capture",
13173 0, 0, 0, 0),
13174 SND_SOC_DAPM_AIF_IN("VOLTE_STUB_DL", "VOLTE_STUB Playback", 0, 0, 0, 0),
13175 SND_SOC_DAPM_AIF_OUT("VOLTE_STUB_UL", "VOLTE_STUB Capture", 0, 0, 0, 0),
13176 SND_SOC_DAPM_AIF_OUT("STUB_RX", "Stub Playback", 0, 0, 0, 0),
13177 SND_SOC_DAPM_AIF_IN("STUB_TX", "Stub Capture", 0, 0, 0, 0),
13178 SND_SOC_DAPM_AIF_OUT("SLIMBUS_1_RX", "Slimbus1 Playback", 0, 0, 0, 0),
13179 SND_SOC_DAPM_AIF_IN("SLIMBUS_1_TX", "Slimbus1 Capture", 0, 0, 0, 0),
13180 SND_SOC_DAPM_AIF_IN("STUB_1_TX", "Stub1 Capture", 0, 0, 0, 0),
13181 SND_SOC_DAPM_AIF_OUT("SLIMBUS_3_RX", "Slimbus3 Playback", 0, 0, 0, 0),
13182 SND_SOC_DAPM_AIF_IN("SLIMBUS_3_TX", "Slimbus3 Capture", 0, 0, 0, 0),
13183 /* In- call recording */
13184 SND_SOC_DAPM_AIF_OUT("SLIMBUS_6_RX", "Slimbus6 Playback", 0, 0, 0, 0),
13185 SND_SOC_DAPM_AIF_IN("SLIMBUS_6_TX", "Slimbus6 Capture", 0, 0, 0, 0),
13186
13187 SND_SOC_DAPM_AIF_OUT("SLIMBUS_7_RX", "Slimbus7 Playback", 0, 0, 0, 0),
13188 SND_SOC_DAPM_AIF_IN("SLIMBUS_7_TX", "Slimbus7 Capture", 0, 0, 0, 0),
13189
13190 SND_SOC_DAPM_AIF_OUT("SLIMBUS_8_RX", "Slimbus8 Playback", 0, 0, 0, 0),
13191 SND_SOC_DAPM_AIF_IN("SLIMBUS_8_TX", "Slimbus8 Capture", 0, 0, 0, 0),
13192 SND_SOC_DAPM_AIF_OUT("USB_AUDIO_RX", "USB Audio Playback", 0, 0, 0, 0),
13193 SND_SOC_DAPM_AIF_IN("USB_AUDIO_TX", "USB Audio Capture", 0, 0, 0, 0),
13194
13195 /* Switch Definitions */
13196 SND_SOC_DAPM_SWITCH("SLIMBUS_DL_HL", SND_SOC_NOPM, 0, 0,
13197 &slim_fm_switch_mixer_controls),
13198 SND_SOC_DAPM_SWITCH("SLIMBUS1_DL_HL", SND_SOC_NOPM, 0, 0,
13199 &slim1_fm_switch_mixer_controls),
13200 SND_SOC_DAPM_SWITCH("SLIMBUS3_DL_HL", SND_SOC_NOPM, 0, 0,
13201 &slim3_fm_switch_mixer_controls),
13202 SND_SOC_DAPM_SWITCH("SLIMBUS4_DL_HL", SND_SOC_NOPM, 0, 0,
13203 &slim4_fm_switch_mixer_controls),
13204 SND_SOC_DAPM_SWITCH("SLIMBUS6_DL_HL", SND_SOC_NOPM, 0, 0,
13205 &slim6_fm_switch_mixer_controls),
13206 SND_SOC_DAPM_SWITCH("PCM_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13207 &pcm_rx_switch_mixer_controls),
13208 SND_SOC_DAPM_SWITCH("INT0_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13209 &int0_mi2s_rx_switch_mixer_controls),
13210 SND_SOC_DAPM_SWITCH("INT4_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13211 &int4_mi2s_rx_switch_mixer_controls),
13212 SND_SOC_DAPM_SWITCH("PRI_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13213 &pri_mi2s_rx_switch_mixer_controls),
13214 SND_SOC_DAPM_SWITCH("SEC_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13215 &sec_mi2s_rx_switch_mixer_controls),
13216 SND_SOC_DAPM_SWITCH("TERT_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13217 &tert_mi2s_rx_switch_mixer_controls),
13218 SND_SOC_DAPM_SWITCH("QUAT_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13219 &quat_mi2s_rx_switch_mixer_controls),
Rohit Kumara5077932017-09-10 22:05:05 +053013220 SND_SOC_DAPM_SWITCH("QUIN_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13221 &quin_mi2s_rx_switch_mixer_controls),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013222 SND_SOC_DAPM_SWITCH("HFP_PRI_AUX_UL_HL", SND_SOC_NOPM, 0, 0,
13223 &hfp_pri_aux_switch_mixer_controls),
13224 SND_SOC_DAPM_SWITCH("HFP_AUX_UL_HL", SND_SOC_NOPM, 0, 0,
13225 &hfp_aux_switch_mixer_controls),
13226 SND_SOC_DAPM_SWITCH("HFP_INT_UL_HL", SND_SOC_NOPM, 0, 0,
13227 &hfp_int_switch_mixer_controls),
13228 SND_SOC_DAPM_SWITCH("HFP_SLIM7_UL_HL", SND_SOC_NOPM, 0, 0,
13229 &hfp_slim7_switch_mixer_controls),
13230 SND_SOC_DAPM_SWITCH("USB_DL_HL", SND_SOC_NOPM, 0, 0,
13231 &usb_switch_mixer_controls),
13232
13233 /* Mixer definitions */
13234 SND_SOC_DAPM_MIXER("PRI_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13235 pri_i2s_rx_mixer_controls, ARRAY_SIZE(pri_i2s_rx_mixer_controls)),
13236 SND_SOC_DAPM_MIXER("SEC_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13237 sec_i2s_rx_mixer_controls, ARRAY_SIZE(sec_i2s_rx_mixer_controls)),
13238 SND_SOC_DAPM_MIXER("SLIMBUS_0_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13239 slimbus_rx_mixer_controls, ARRAY_SIZE(slimbus_rx_mixer_controls)),
13240 SND_SOC_DAPM_MIXER("SLIMBUS_2_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13241 slimbus_2_rx_mixer_controls, ARRAY_SIZE(slimbus_2_rx_mixer_controls)),
13242 SND_SOC_DAPM_MIXER("SLIMBUS_5_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13243 slimbus_5_rx_mixer_controls, ARRAY_SIZE(slimbus_5_rx_mixer_controls)),
13244 SND_SOC_DAPM_MIXER("SLIMBUS_7_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13245 slimbus_7_rx_mixer_controls, ARRAY_SIZE(slimbus_7_rx_mixer_controls)),
13246 SND_SOC_DAPM_MIXER("HDMI Mixer", SND_SOC_NOPM, 0, 0,
13247 hdmi_mixer_controls, ARRAY_SIZE(hdmi_mixer_controls)),
13248 SND_SOC_DAPM_MIXER("DISPLAY_PORT Mixer", SND_SOC_NOPM, 0, 0,
13249 display_port_mixer_controls, ARRAY_SIZE(display_port_mixer_controls)),
13250 SND_SOC_DAPM_MIXER("SPDIF_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13251 spdif_rx_mixer_controls, ARRAY_SIZE(spdif_rx_mixer_controls)),
13252 SND_SOC_DAPM_MIXER("MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13253 mi2s_rx_mixer_controls, ARRAY_SIZE(mi2s_rx_mixer_controls)),
13254 SND_SOC_DAPM_MIXER("QUAT_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13255 quaternary_mi2s_rx_mixer_controls,
13256 ARRAY_SIZE(quaternary_mi2s_rx_mixer_controls)),
13257 SND_SOC_DAPM_MIXER("TERT_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13258 tertiary_mi2s_rx_mixer_controls,
13259 ARRAY_SIZE(tertiary_mi2s_rx_mixer_controls)),
13260 SND_SOC_DAPM_MIXER("SEC_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13261 secondary_mi2s_rx_mixer_controls,
13262 ARRAY_SIZE(secondary_mi2s_rx_mixer_controls)),
13263 SND_SOC_DAPM_MIXER("SEC_MI2S_RX_SD1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13264 secondary_mi2s_rx2_mixer_controls,
13265 ARRAY_SIZE(secondary_mi2s_rx2_mixer_controls)),
13266 SND_SOC_DAPM_MIXER("PRI_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13267 primary_mi2s_rx_mixer_controls,
13268 ARRAY_SIZE(primary_mi2s_rx_mixer_controls)),
13269 SND_SOC_DAPM_MIXER("INT0_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13270 int0_mi2s_rx_mixer_controls,
13271 ARRAY_SIZE(int0_mi2s_rx_mixer_controls)),
13272 SND_SOC_DAPM_MIXER("INT4_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13273 int4_mi2s_rx_mixer_controls,
13274 ARRAY_SIZE(int4_mi2s_rx_mixer_controls)),
13275 SND_SOC_DAPM_MIXER("QUIN_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13276 quinary_mi2s_rx_mixer_controls,
13277 ARRAY_SIZE(quinary_mi2s_rx_mixer_controls)),
13278 SND_SOC_DAPM_MIXER("PRI_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13279 pri_tdm_rx_0_mixer_controls,
13280 ARRAY_SIZE(pri_tdm_rx_0_mixer_controls)),
13281 SND_SOC_DAPM_MIXER("PRI_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13282 pri_tdm_rx_1_mixer_controls,
13283 ARRAY_SIZE(pri_tdm_rx_1_mixer_controls)),
13284 SND_SOC_DAPM_MIXER("PRI_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13285 pri_tdm_rx_2_mixer_controls,
13286 ARRAY_SIZE(pri_tdm_rx_2_mixer_controls)),
13287 SND_SOC_DAPM_MIXER("PRI_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
13288 pri_tdm_rx_3_mixer_controls,
13289 ARRAY_SIZE(pri_tdm_rx_3_mixer_controls)),
13290 SND_SOC_DAPM_MIXER("PRI_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13291 pri_tdm_tx_0_mixer_controls,
13292 ARRAY_SIZE(pri_tdm_tx_0_mixer_controls)),
13293 SND_SOC_DAPM_MIXER("SEC_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13294 sec_tdm_rx_0_mixer_controls,
13295 ARRAY_SIZE(sec_tdm_rx_0_mixer_controls)),
13296 SND_SOC_DAPM_MIXER("SEC_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13297 sec_tdm_rx_1_mixer_controls,
13298 ARRAY_SIZE(sec_tdm_rx_1_mixer_controls)),
13299 SND_SOC_DAPM_MIXER("SEC_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13300 sec_tdm_rx_2_mixer_controls,
13301 ARRAY_SIZE(sec_tdm_rx_2_mixer_controls)),
13302 SND_SOC_DAPM_MIXER("SEC_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
13303 sec_tdm_rx_3_mixer_controls,
13304 ARRAY_SIZE(sec_tdm_rx_3_mixer_controls)),
13305 SND_SOC_DAPM_MIXER("SEC_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13306 sec_tdm_tx_0_mixer_controls,
13307 ARRAY_SIZE(sec_tdm_tx_0_mixer_controls)),
13308 SND_SOC_DAPM_MIXER("TERT_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13309 tert_tdm_rx_0_mixer_controls,
13310 ARRAY_SIZE(tert_tdm_rx_0_mixer_controls)),
13311 SND_SOC_DAPM_MIXER("TERT_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13312 tert_tdm_tx_0_mixer_controls,
13313 ARRAY_SIZE(tert_tdm_tx_0_mixer_controls)),
13314 SND_SOC_DAPM_MIXER("TERT_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13315 tert_tdm_rx_1_mixer_controls,
13316 ARRAY_SIZE(tert_tdm_rx_1_mixer_controls)),
13317 SND_SOC_DAPM_MIXER("TERT_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13318 tert_tdm_rx_2_mixer_controls,
13319 ARRAY_SIZE(tert_tdm_rx_2_mixer_controls)),
13320 SND_SOC_DAPM_MIXER("TERT_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
13321 tert_tdm_rx_3_mixer_controls,
13322 ARRAY_SIZE(tert_tdm_rx_3_mixer_controls)),
13323 SND_SOC_DAPM_MIXER("TERT_TDM_RX_4 Audio Mixer", SND_SOC_NOPM, 0, 0,
13324 tert_tdm_rx_4_mixer_controls,
13325 ARRAY_SIZE(tert_tdm_rx_4_mixer_controls)),
13326 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13327 quat_tdm_rx_0_mixer_controls,
13328 ARRAY_SIZE(quat_tdm_rx_0_mixer_controls)),
13329 SND_SOC_DAPM_MIXER("QUAT_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13330 quat_tdm_tx_0_mixer_controls,
13331 ARRAY_SIZE(quat_tdm_tx_0_mixer_controls)),
13332 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13333 quat_tdm_rx_1_mixer_controls,
13334 ARRAY_SIZE(quat_tdm_rx_1_mixer_controls)),
13335 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13336 quat_tdm_rx_2_mixer_controls,
13337 ARRAY_SIZE(quat_tdm_rx_2_mixer_controls)),
13338 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
13339 quat_tdm_rx_3_mixer_controls,
13340 ARRAY_SIZE(quat_tdm_rx_3_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013341 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13342 quin_tdm_rx_0_mixer_controls,
13343 ARRAY_SIZE(quin_tdm_rx_0_mixer_controls)),
13344 SND_SOC_DAPM_MIXER("QUIN_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13345 quin_tdm_tx_0_mixer_controls,
13346 ARRAY_SIZE(quin_tdm_tx_0_mixer_controls)),
13347 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13348 quin_tdm_rx_1_mixer_controls,
13349 ARRAY_SIZE(quin_tdm_rx_1_mixer_controls)),
13350 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13351 quin_tdm_rx_2_mixer_controls,
13352 ARRAY_SIZE(quin_tdm_rx_2_mixer_controls)),
13353 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
13354 quin_tdm_rx_3_mixer_controls,
13355 ARRAY_SIZE(quin_tdm_rx_3_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013356 SND_SOC_DAPM_MIXER("MultiMedia1 Mixer", SND_SOC_NOPM, 0, 0,
13357 mmul1_mixer_controls, ARRAY_SIZE(mmul1_mixer_controls)),
13358 SND_SOC_DAPM_MIXER("MultiMedia2 Mixer", SND_SOC_NOPM, 0, 0,
13359 mmul2_mixer_controls, ARRAY_SIZE(mmul2_mixer_controls)),
13360 SND_SOC_DAPM_MIXER("MultiMedia3 Mixer", SND_SOC_NOPM, 0, 0,
13361 mmul3_mixer_controls, ARRAY_SIZE(mmul3_mixer_controls)),
13362 SND_SOC_DAPM_MIXER("MultiMedia4 Mixer", SND_SOC_NOPM, 0, 0,
13363 mmul4_mixer_controls, ARRAY_SIZE(mmul4_mixer_controls)),
13364 SND_SOC_DAPM_MIXER("MultiMedia5 Mixer", SND_SOC_NOPM, 0, 0,
13365 mmul5_mixer_controls, ARRAY_SIZE(mmul5_mixer_controls)),
13366 SND_SOC_DAPM_MIXER("MultiMedia6 Mixer", SND_SOC_NOPM, 0, 0,
13367 mmul6_mixer_controls, ARRAY_SIZE(mmul6_mixer_controls)),
13368 SND_SOC_DAPM_MIXER("MultiMedia8 Mixer", SND_SOC_NOPM, 0, 0,
13369 mmul8_mixer_controls, ARRAY_SIZE(mmul8_mixer_controls)),
13370 SND_SOC_DAPM_MIXER("MultiMedia9 Mixer", SND_SOC_NOPM, 0, 0,
13371 mmul9_mixer_controls, ARRAY_SIZE(mmul9_mixer_controls)),
Laxminath Kasam38070be2017-08-17 18:21:59 +053013372 SND_SOC_DAPM_MIXER("MultiMedia10 Mixer", SND_SOC_NOPM, 0, 0,
13373 mmul10_mixer_controls, ARRAY_SIZE(mmul10_mixer_controls)),
Asish Bhattacharya34504582017-08-08 12:55:01 +053013374 SND_SOC_DAPM_MIXER("MultiMedia16 Mixer", SND_SOC_NOPM, 0, 0,
13375 mmul16_mixer_controls, ARRAY_SIZE(mmul16_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013376 SND_SOC_DAPM_MIXER("MultiMedia17 Mixer", SND_SOC_NOPM, 0, 0,
13377 mmul17_mixer_controls, ARRAY_SIZE(mmul17_mixer_controls)),
13378 SND_SOC_DAPM_MIXER("MultiMedia18 Mixer", SND_SOC_NOPM, 0, 0,
13379 mmul18_mixer_controls, ARRAY_SIZE(mmul18_mixer_controls)),
13380 SND_SOC_DAPM_MIXER("MultiMedia19 Mixer", SND_SOC_NOPM, 0, 0,
13381 mmul19_mixer_controls, ARRAY_SIZE(mmul19_mixer_controls)),
13382 SND_SOC_DAPM_MIXER("MultiMedia20 Mixer", SND_SOC_NOPM, 0, 0,
13383 mmul20_mixer_controls, ARRAY_SIZE(mmul20_mixer_controls)),
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053013384 SND_SOC_DAPM_MIXER("MultiMedia28 Mixer", SND_SOC_NOPM, 0, 0,
13385 mmul28_mixer_controls, ARRAY_SIZE(mmul28_mixer_controls)),
13386 SND_SOC_DAPM_MIXER("MultiMedia29 Mixer", SND_SOC_NOPM, 0, 0,
13387 mmul29_mixer_controls, ARRAY_SIZE(mmul29_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013388 SND_SOC_DAPM_MIXER("AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13389 auxpcm_rx_mixer_controls, ARRAY_SIZE(auxpcm_rx_mixer_controls)),
13390 SND_SOC_DAPM_MIXER("SEC_AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13391 sec_auxpcm_rx_mixer_controls, ARRAY_SIZE(sec_auxpcm_rx_mixer_controls)),
13392 SND_SOC_DAPM_MIXER("TERT_AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13393 tert_auxpcm_rx_mixer_controls,
13394 ARRAY_SIZE(tert_auxpcm_rx_mixer_controls)),
13395 SND_SOC_DAPM_MIXER("QUAT_AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13396 quat_auxpcm_rx_mixer_controls,
13397 ARRAY_SIZE(quat_auxpcm_rx_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013398 SND_SOC_DAPM_MIXER("QUIN_AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13399 quin_auxpcm_rx_mixer_controls,
13400 ARRAY_SIZE(quin_auxpcm_rx_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013401 /* incall */
13402 SND_SOC_DAPM_MIXER("Incall_Music Audio Mixer", SND_SOC_NOPM, 0, 0,
13403 incall_music_delivery_mixer_controls,
13404 ARRAY_SIZE(incall_music_delivery_mixer_controls)),
13405 SND_SOC_DAPM_MIXER("Incall_Music_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13406 incall_music2_delivery_mixer_controls,
13407 ARRAY_SIZE(incall_music2_delivery_mixer_controls)),
13408 SND_SOC_DAPM_MIXER("SLIMBUS_4_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13409 slimbus_4_rx_mixer_controls,
13410 ARRAY_SIZE(slimbus_4_rx_mixer_controls)),
13411 SND_SOC_DAPM_MIXER("SLIMBUS_6_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13412 slimbus_6_rx_mixer_controls,
13413 ARRAY_SIZE(slimbus_6_rx_mixer_controls)),
13414 SND_SOC_DAPM_MIXER("USB_AUDIO_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13415 usb_audio_rx_mixer_controls,
13416 ARRAY_SIZE(usb_audio_rx_mixer_controls)),
13417 /* Voice Mixer */
13418 SND_SOC_DAPM_MIXER("PRI_RX_Voice Mixer",
13419 SND_SOC_NOPM, 0, 0, pri_rx_voice_mixer_controls,
13420 ARRAY_SIZE(pri_rx_voice_mixer_controls)),
13421 SND_SOC_DAPM_MIXER("SEC_RX_Voice Mixer",
13422 SND_SOC_NOPM, 0, 0,
13423 sec_i2s_rx_voice_mixer_controls,
13424 ARRAY_SIZE(sec_i2s_rx_voice_mixer_controls)),
13425 SND_SOC_DAPM_MIXER("SEC_MI2S_RX_Voice Mixer",
13426 SND_SOC_NOPM, 0, 0,
13427 sec_mi2s_rx_voice_mixer_controls,
13428 ARRAY_SIZE(sec_mi2s_rx_voice_mixer_controls)),
13429 SND_SOC_DAPM_MIXER("SLIM_0_RX_Voice Mixer",
13430 SND_SOC_NOPM, 0, 0,
13431 slimbus_rx_voice_mixer_controls,
13432 ARRAY_SIZE(slimbus_rx_voice_mixer_controls)),
13433 SND_SOC_DAPM_MIXER("INTERNAL_BT_SCO_RX_Voice Mixer",
13434 SND_SOC_NOPM, 0, 0,
13435 bt_sco_rx_voice_mixer_controls,
13436 ARRAY_SIZE(bt_sco_rx_voice_mixer_controls)),
13437 SND_SOC_DAPM_MIXER("AFE_PCM_RX_Voice Mixer",
13438 SND_SOC_NOPM, 0, 0,
13439 afe_pcm_rx_voice_mixer_controls,
13440 ARRAY_SIZE(afe_pcm_rx_voice_mixer_controls)),
13441 SND_SOC_DAPM_MIXER("AUX_PCM_RX_Voice Mixer",
13442 SND_SOC_NOPM, 0, 0,
13443 aux_pcm_rx_voice_mixer_controls,
13444 ARRAY_SIZE(aux_pcm_rx_voice_mixer_controls)),
13445 SND_SOC_DAPM_MIXER("SEC_AUX_PCM_RX_Voice Mixer",
13446 SND_SOC_NOPM, 0, 0,
13447 sec_aux_pcm_rx_voice_mixer_controls,
13448 ARRAY_SIZE(sec_aux_pcm_rx_voice_mixer_controls)),
13449 SND_SOC_DAPM_MIXER("TERT_AUX_PCM_RX_Voice Mixer",
13450 SND_SOC_NOPM, 0, 0,
13451 tert_aux_pcm_rx_voice_mixer_controls,
13452 ARRAY_SIZE(tert_aux_pcm_rx_voice_mixer_controls)),
13453 SND_SOC_DAPM_MIXER("QUAT_AUX_PCM_RX_Voice Mixer",
13454 SND_SOC_NOPM, 0, 0,
13455 quat_aux_pcm_rx_voice_mixer_controls,
13456 ARRAY_SIZE(quat_aux_pcm_rx_voice_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013457 SND_SOC_DAPM_MIXER("QUIN_AUX_PCM_RX_Voice Mixer",
13458 SND_SOC_NOPM, 0, 0,
13459 quin_aux_pcm_rx_voice_mixer_controls,
13460 ARRAY_SIZE(quin_aux_pcm_rx_voice_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013461 SND_SOC_DAPM_MIXER("HDMI_RX_Voice Mixer",
13462 SND_SOC_NOPM, 0, 0,
13463 hdmi_rx_voice_mixer_controls,
13464 ARRAY_SIZE(hdmi_rx_voice_mixer_controls)),
13465 SND_SOC_DAPM_MIXER("MI2S_RX_Voice Mixer",
13466 SND_SOC_NOPM, 0, 0,
13467 mi2s_rx_voice_mixer_controls,
13468 ARRAY_SIZE(mi2s_rx_voice_mixer_controls)),
13469 SND_SOC_DAPM_MIXER("PRI_MI2S_RX_Voice Mixer",
13470 SND_SOC_NOPM, 0, 0,
13471 pri_mi2s_rx_voice_mixer_controls,
13472 ARRAY_SIZE(pri_mi2s_rx_voice_mixer_controls)),
13473 SND_SOC_DAPM_MIXER("INT0_MI2S_RX_Voice Mixer",
13474 SND_SOC_NOPM, 0, 0,
13475 int0_mi2s_rx_voice_mixer_controls,
13476 ARRAY_SIZE(int0_mi2s_rx_voice_mixer_controls)),
13477 SND_SOC_DAPM_MIXER("INT4_MI2S_RX_Voice Mixer",
13478 SND_SOC_NOPM, 0, 0,
13479 int4_mi2s_rx_voice_mixer_controls,
13480 ARRAY_SIZE(int4_mi2s_rx_voice_mixer_controls)),
13481 SND_SOC_DAPM_MIXER("TERT_MI2S_RX_Voice Mixer",
13482 SND_SOC_NOPM, 0, 0,
13483 tert_mi2s_rx_voice_mixer_controls,
13484 ARRAY_SIZE(tert_mi2s_rx_voice_mixer_controls)),
13485 SND_SOC_DAPM_MIXER("QUAT_MI2S_RX_Voice Mixer",
13486 SND_SOC_NOPM, 0, 0,
13487 quat_mi2s_rx_voice_mixer_controls,
13488 ARRAY_SIZE(quat_mi2s_rx_voice_mixer_controls)),
13489 SND_SOC_DAPM_MIXER("QUIN_MI2S_RX_Voice Mixer",
13490 SND_SOC_NOPM, 0, 0,
13491 quin_mi2s_rx_voice_mixer_controls,
13492 ARRAY_SIZE(quin_mi2s_rx_voice_mixer_controls)),
13493 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_2_Voice Mixer",
13494 SND_SOC_NOPM, 0, 0,
13495 quat_tdm_rx_2_voice_mixer_controls,
13496 ARRAY_SIZE(quat_tdm_rx_2_voice_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013497 SND_SOC_DAPM_MIXER("Voip_Tx Mixer",
13498 SND_SOC_NOPM, 0, 0, tx_voip_mixer_controls,
13499 ARRAY_SIZE(tx_voip_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013500 SND_SOC_DAPM_MIXER("VoiceMMode1_Tx Mixer",
13501 SND_SOC_NOPM, 0, 0, tx_voicemmode1_mixer_controls,
13502 ARRAY_SIZE(tx_voicemmode1_mixer_controls)),
13503 SND_SOC_DAPM_MIXER("VoiceMMode2_Tx Mixer",
13504 SND_SOC_NOPM, 0, 0, tx_voicemmode2_mixer_controls,
13505 ARRAY_SIZE(tx_voicemmode2_mixer_controls)),
13506 SND_SOC_DAPM_MIXER("INTERNAL_BT_SCO_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13507 int_bt_sco_rx_mixer_controls, ARRAY_SIZE(int_bt_sco_rx_mixer_controls)),
13508 SND_SOC_DAPM_MIXER("INTERNAL_A2DP_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13509 int_bt_a2dp_rx_mixer_controls,
13510 ARRAY_SIZE(int_bt_a2dp_rx_mixer_controls)),
13511 SND_SOC_DAPM_MIXER("INTERNAL_FM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13512 int_fm_rx_mixer_controls, ARRAY_SIZE(int_fm_rx_mixer_controls)),
13513 SND_SOC_DAPM_MIXER("AFE_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13514 afe_pcm_rx_mixer_controls, ARRAY_SIZE(afe_pcm_rx_mixer_controls)),
13515 SND_SOC_DAPM_MIXER("Voice Stub Tx Mixer", SND_SOC_NOPM, 0, 0,
13516 tx_voice_stub_mixer_controls, ARRAY_SIZE(tx_voice_stub_mixer_controls)),
13517 SND_SOC_DAPM_MIXER("Voice2 Stub Tx Mixer", SND_SOC_NOPM, 0, 0,
13518 tx_voice2_stub_mixer_controls,
13519 ARRAY_SIZE(tx_voice2_stub_mixer_controls)),
13520 SND_SOC_DAPM_MIXER("VoLTE Stub Tx Mixer", SND_SOC_NOPM, 0, 0,
13521 tx_volte_stub_mixer_controls, ARRAY_SIZE(tx_volte_stub_mixer_controls)),
13522 SND_SOC_DAPM_MIXER("STUB_RX Mixer", SND_SOC_NOPM, 0, 0,
13523 stub_rx_mixer_controls, ARRAY_SIZE(stub_rx_mixer_controls)),
13524 SND_SOC_DAPM_MIXER("SLIMBUS_1_RX Mixer", SND_SOC_NOPM, 0, 0,
13525 slimbus_1_rx_mixer_controls, ARRAY_SIZE(slimbus_1_rx_mixer_controls)),
13526 SND_SOC_DAPM_MIXER("SLIMBUS_3_RX_Voice Mixer", SND_SOC_NOPM, 0, 0,
13527 slimbus_3_rx_mixer_controls, ARRAY_SIZE(slimbus_3_rx_mixer_controls)),
13528 SND_SOC_DAPM_MIXER("SLIM_6_RX_Voice Mixer",
13529 SND_SOC_NOPM, 0, 0,
13530 slimbus_6_rx_voice_mixer_controls,
13531 ARRAY_SIZE(slimbus_6_rx_voice_mixer_controls)),
13532 SND_SOC_DAPM_MIXER("SLIM_7_RX_Voice Mixer", SND_SOC_NOPM, 0, 0,
13533 slimbus_7_rx_voice_mixer_controls,
13534 ARRAY_SIZE(slimbus_7_rx_voice_mixer_controls)),
13535 SND_SOC_DAPM_MIXER("SLIM_8_RX_Voice Mixer", SND_SOC_NOPM, 0, 0,
13536 slimbus_8_rx_voice_mixer_controls,
13537 ARRAY_SIZE(slimbus_8_rx_voice_mixer_controls)),
13538 /* port mixer */
13539 SND_SOC_DAPM_MIXER("SLIMBUS_0_RX Port Mixer",
13540 SND_SOC_NOPM, 0, 0, sbus_0_rx_port_mixer_controls,
13541 ARRAY_SIZE(sbus_0_rx_port_mixer_controls)),
13542 SND_SOC_DAPM_MIXER("AUX_PCM_RX Port Mixer",
13543 SND_SOC_NOPM, 0, 0, aux_pcm_rx_port_mixer_controls,
13544 ARRAY_SIZE(aux_pcm_rx_port_mixer_controls)),
13545 SND_SOC_DAPM_MIXER("SEC_AUXPCM_RX Port Mixer",
13546 SND_SOC_NOPM, 0, 0, sec_auxpcm_rx_port_mixer_controls,
13547 ARRAY_SIZE(sec_auxpcm_rx_port_mixer_controls)),
13548 SND_SOC_DAPM_MIXER("TERT_AUXPCM_RX Port Mixer",
13549 SND_SOC_NOPM, 0, 0, tert_auxpcm_rx_port_mixer_controls,
13550 ARRAY_SIZE(tert_auxpcm_rx_port_mixer_controls)),
13551 SND_SOC_DAPM_MIXER("QUAT_AUXPCM_RX Port Mixer",
13552 SND_SOC_NOPM, 0, 0, quat_auxpcm_rx_port_mixer_controls,
13553 ARRAY_SIZE(quat_auxpcm_rx_port_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013554 SND_SOC_DAPM_MIXER("QUIN_AUXPCM_RX Port Mixer",
13555 SND_SOC_NOPM, 0, 0, quin_auxpcm_rx_port_mixer_controls,
13556 ARRAY_SIZE(quin_auxpcm_rx_port_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013557 SND_SOC_DAPM_MIXER("SLIMBUS_1_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13558 sbus_1_rx_port_mixer_controls,
13559 ARRAY_SIZE(sbus_1_rx_port_mixer_controls)),
13560 SND_SOC_DAPM_MIXER("INTERNAL_BT_SCO_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13561 bt_sco_rx_port_mixer_controls,
13562 ARRAY_SIZE(bt_sco_rx_port_mixer_controls)),
13563 SND_SOC_DAPM_MIXER("AFE_PCM_RX Port Mixer",
13564 SND_SOC_NOPM, 0, 0, afe_pcm_rx_port_mixer_controls,
13565 ARRAY_SIZE(afe_pcm_rx_port_mixer_controls)),
13566 SND_SOC_DAPM_MIXER("HDMI_RX Port Mixer",
13567 SND_SOC_NOPM, 0, 0, hdmi_rx_port_mixer_controls,
13568 ARRAY_SIZE(hdmi_rx_port_mixer_controls)),
13569 SND_SOC_DAPM_MIXER("DISPLAY_PORT_RX Port Mixer",
13570 SND_SOC_NOPM, 0, 0, display_port_rx_port_mixer_controls,
13571 ARRAY_SIZE(display_port_rx_port_mixer_controls)),
13572 SND_SOC_DAPM_MIXER("SEC_I2S_RX Port Mixer",
13573 SND_SOC_NOPM, 0, 0, sec_i2s_rx_port_mixer_controls,
13574 ARRAY_SIZE(sec_i2s_rx_port_mixer_controls)),
13575 SND_SOC_DAPM_MIXER("SLIMBUS_3_RX Port Mixer",
13576 SND_SOC_NOPM, 0, 0, sbus_3_rx_port_mixer_controls,
13577 ARRAY_SIZE(sbus_3_rx_port_mixer_controls)),
13578 SND_SOC_DAPM_MIXER("SLIMBUS_6_RX Port Mixer",
13579 SND_SOC_NOPM, 0, 0, sbus_6_rx_port_mixer_controls,
13580 ARRAY_SIZE(sbus_6_rx_port_mixer_controls)),
13581 SND_SOC_DAPM_MIXER("MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13582 mi2s_rx_port_mixer_controls, ARRAY_SIZE(mi2s_rx_port_mixer_controls)),
13583 SND_SOC_DAPM_MIXER("PRI_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13584 primary_mi2s_rx_port_mixer_controls,
13585 ARRAY_SIZE(primary_mi2s_rx_port_mixer_controls)),
13586 SND_SOC_DAPM_MIXER("SEC_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13587 sec_mi2s_rx_port_mixer_controls,
13588 ARRAY_SIZE(sec_mi2s_rx_port_mixer_controls)),
13589 SND_SOC_DAPM_MIXER("TERT_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13590 tert_mi2s_rx_port_mixer_controls,
13591 ARRAY_SIZE(tert_mi2s_rx_port_mixer_controls)),
13592 SND_SOC_DAPM_MIXER("QUAT_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13593 quat_mi2s_rx_port_mixer_controls,
13594 ARRAY_SIZE(quat_mi2s_rx_port_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013595 SND_SOC_DAPM_MIXER("QUIN_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13596 quin_mi2s_rx_port_mixer_controls,
13597 ARRAY_SIZE(quin_mi2s_rx_port_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013598 SND_SOC_DAPM_MIXER("PRI_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
13599 pri_tdm_rx_0_port_mixer_controls,
13600 ARRAY_SIZE(pri_tdm_rx_0_port_mixer_controls)),
13601 SND_SOC_DAPM_MIXER("PRI_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
13602 pri_tdm_rx_1_port_mixer_controls,
13603 ARRAY_SIZE(pri_tdm_rx_1_port_mixer_controls)),
13604 SND_SOC_DAPM_MIXER("PRI_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
13605 pri_tdm_rx_2_port_mixer_controls,
13606 ARRAY_SIZE(pri_tdm_rx_2_port_mixer_controls)),
13607 SND_SOC_DAPM_MIXER("PRI_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
13608 pri_tdm_rx_3_port_mixer_controls,
13609 ARRAY_SIZE(pri_tdm_rx_3_port_mixer_controls)),
13610 SND_SOC_DAPM_MIXER("SEC_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
13611 sec_tdm_rx_0_port_mixer_controls,
13612 ARRAY_SIZE(sec_tdm_rx_0_port_mixer_controls)),
13613 SND_SOC_DAPM_MIXER("SEC_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
13614 sec_tdm_rx_1_port_mixer_controls,
13615 ARRAY_SIZE(sec_tdm_rx_1_port_mixer_controls)),
13616 SND_SOC_DAPM_MIXER("SEC_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
13617 sec_tdm_rx_2_port_mixer_controls,
13618 ARRAY_SIZE(sec_tdm_rx_2_port_mixer_controls)),
13619 SND_SOC_DAPM_MIXER("SEC_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
13620 sec_tdm_rx_3_port_mixer_controls,
13621 ARRAY_SIZE(sec_tdm_rx_3_port_mixer_controls)),
13622 SND_SOC_DAPM_MIXER("TERT_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
13623 tert_tdm_rx_0_port_mixer_controls,
13624 ARRAY_SIZE(tert_tdm_rx_0_port_mixer_controls)),
13625 SND_SOC_DAPM_MIXER("TERT_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
13626 tert_tdm_rx_1_port_mixer_controls,
13627 ARRAY_SIZE(tert_tdm_rx_1_port_mixer_controls)),
13628 SND_SOC_DAPM_MIXER("TERT_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
13629 tert_tdm_rx_2_port_mixer_controls,
13630 ARRAY_SIZE(tert_tdm_rx_2_port_mixer_controls)),
13631 SND_SOC_DAPM_MIXER("TERT_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
13632 tert_tdm_rx_3_port_mixer_controls,
13633 ARRAY_SIZE(tert_tdm_rx_3_port_mixer_controls)),
13634 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
13635 quat_tdm_rx_0_port_mixer_controls,
13636 ARRAY_SIZE(quat_tdm_rx_0_port_mixer_controls)),
13637 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
13638 quat_tdm_rx_1_port_mixer_controls,
13639 ARRAY_SIZE(quat_tdm_rx_1_port_mixer_controls)),
13640 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
13641 quat_tdm_rx_2_port_mixer_controls,
13642 ARRAY_SIZE(quat_tdm_rx_2_port_mixer_controls)),
13643 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
13644 quat_tdm_rx_3_port_mixer_controls,
13645 ARRAY_SIZE(quat_tdm_rx_3_port_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013646 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
13647 quin_tdm_rx_0_port_mixer_controls,
13648 ARRAY_SIZE(quin_tdm_rx_0_port_mixer_controls)),
13649 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
13650 quin_tdm_rx_1_port_mixer_controls,
13651 ARRAY_SIZE(quin_tdm_rx_1_port_mixer_controls)),
13652 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
13653 quin_tdm_rx_2_port_mixer_controls,
13654 ARRAY_SIZE(quin_tdm_rx_2_port_mixer_controls)),
13655 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
13656 quin_tdm_rx_3_port_mixer_controls,
13657 ARRAY_SIZE(quin_tdm_rx_3_port_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013658 SND_SOC_DAPM_MIXER("INT0_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13659 int0_mi2s_rx_port_mixer_controls,
13660 ARRAY_SIZE(int0_mi2s_rx_port_mixer_controls)),
13661 SND_SOC_DAPM_MIXER("INT4_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13662 int4_mi2s_rx_port_mixer_controls,
13663 ARRAY_SIZE(int4_mi2s_rx_port_mixer_controls)),
13664 SND_SOC_DAPM_MIXER("QCHAT_Tx Mixer",
13665 SND_SOC_NOPM, 0, 0, tx_qchat_mixer_controls,
13666 ARRAY_SIZE(tx_qchat_mixer_controls)),
13667 SND_SOC_DAPM_MIXER("USB_AUDIO_RX_Voice Mixer",
13668 SND_SOC_NOPM, 0, 0, usb_audio_rx_voice_mixer_controls,
13669 ARRAY_SIZE(usb_audio_rx_voice_mixer_controls)),
13670 SND_SOC_DAPM_MIXER("USB_AUDIO_RX Port Mixer",
13671 SND_SOC_NOPM, 0, 0, usb_rx_port_mixer_controls,
13672 ARRAY_SIZE(usb_rx_port_mixer_controls)),
Aalique Grahamee4fd7d52017-11-28 13:24:13 -080013673 SND_SOC_DAPM_MIXER("DISPLAY_PORT_RX_Voice Mixer",
13674 SND_SOC_NOPM, 0, 0, display_port_rx_voice_mixer_controls,
13675 ARRAY_SIZE(display_port_rx_voice_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013676 /* lsm mixer definitions */
13677 SND_SOC_DAPM_MIXER("LSM1 Mixer", SND_SOC_NOPM, 0, 0,
13678 lsm1_mixer_controls, ARRAY_SIZE(lsm1_mixer_controls)),
13679 SND_SOC_DAPM_MIXER("LSM2 Mixer", SND_SOC_NOPM, 0, 0,
13680 lsm2_mixer_controls, ARRAY_SIZE(lsm2_mixer_controls)),
13681 SND_SOC_DAPM_MIXER("LSM3 Mixer", SND_SOC_NOPM, 0, 0,
13682 lsm3_mixer_controls, ARRAY_SIZE(lsm3_mixer_controls)),
13683 SND_SOC_DAPM_MIXER("LSM4 Mixer", SND_SOC_NOPM, 0, 0,
13684 lsm4_mixer_controls, ARRAY_SIZE(lsm4_mixer_controls)),
13685 SND_SOC_DAPM_MIXER("LSM5 Mixer", SND_SOC_NOPM, 0, 0,
13686 lsm5_mixer_controls, ARRAY_SIZE(lsm5_mixer_controls)),
13687 SND_SOC_DAPM_MIXER("LSM6 Mixer", SND_SOC_NOPM, 0, 0,
13688 lsm6_mixer_controls, ARRAY_SIZE(lsm6_mixer_controls)),
13689 SND_SOC_DAPM_MIXER("LSM7 Mixer", SND_SOC_NOPM, 0, 0,
13690 lsm7_mixer_controls, ARRAY_SIZE(lsm7_mixer_controls)),
13691 SND_SOC_DAPM_MIXER("LSM8 Mixer", SND_SOC_NOPM, 0, 0,
13692 lsm8_mixer_controls, ARRAY_SIZE(lsm8_mixer_controls)),
13693 /* Virtual Pins to force backends ON atm */
13694 SND_SOC_DAPM_OUTPUT("BE_OUT"),
13695 SND_SOC_DAPM_INPUT("BE_IN"),
13696
13697 SND_SOC_DAPM_MUX("SLIM0_RX_VI_FB_LCH_MUX", SND_SOC_NOPM, 0, 0,
13698 &slim0_rx_vi_fb_lch_mux),
13699 SND_SOC_DAPM_MUX("SLIM0_RX_VI_FB_RCH_MUX", SND_SOC_NOPM, 0, 0,
13700 &slim0_rx_vi_fb_rch_mux),
13701 SND_SOC_DAPM_MUX("PRI_MI2S_RX_VI_FB_MUX", SND_SOC_NOPM, 0, 0,
13702 &mi2s_rx_vi_fb_mux),
13703 SND_SOC_DAPM_MUX("INT4_MI2S_RX_VI_FB_MONO_CH_MUX", SND_SOC_NOPM, 0, 0,
13704 &int4_mi2s_rx_vi_fb_mono_ch_mux),
13705 SND_SOC_DAPM_MUX("INT4_MI2S_RX_VI_FB_STEREO_CH_MUX", SND_SOC_NOPM, 0, 0,
13706 &int4_mi2s_rx_vi_fb_stereo_ch_mux),
13707
13708 SND_SOC_DAPM_MUX("VOC_EXT_EC MUX", SND_SOC_NOPM, 0, 0,
13709 &voc_ext_ec_mux),
13710 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL1 MUX", SND_SOC_NOPM, 0, 0,
13711 &ext_ec_ref_mux_ul1),
13712 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL2 MUX", SND_SOC_NOPM, 0, 0,
13713 &ext_ec_ref_mux_ul2),
13714 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL3 MUX", SND_SOC_NOPM, 0, 0,
13715 &ext_ec_ref_mux_ul3),
13716 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL4 MUX", SND_SOC_NOPM, 0, 0,
13717 &ext_ec_ref_mux_ul4),
13718 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL5 MUX", SND_SOC_NOPM, 0, 0,
13719 &ext_ec_ref_mux_ul5),
13720 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL6 MUX", SND_SOC_NOPM, 0, 0,
13721 &ext_ec_ref_mux_ul6),
13722 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL8 MUX", SND_SOC_NOPM, 0, 0,
13723 &ext_ec_ref_mux_ul8),
13724 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL9 MUX", SND_SOC_NOPM, 0, 0,
13725 &ext_ec_ref_mux_ul9),
Laxminath Kasam38070be2017-08-17 18:21:59 +053013726 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL10 MUX", SND_SOC_NOPM, 0, 0,
13727 &ext_ec_ref_mux_ul10),
Asish Bhattacharya34504582017-08-08 12:55:01 +053013728 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL16 MUX", SND_SOC_NOPM, 0, 0,
13729 &ext_ec_ref_mux_ul16),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013730 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL17 MUX", SND_SOC_NOPM, 0, 0,
13731 &ext_ec_ref_mux_ul17),
13732 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL18 MUX", SND_SOC_NOPM, 0, 0,
13733 &ext_ec_ref_mux_ul18),
13734 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL19 MUX", SND_SOC_NOPM, 0, 0,
13735 &ext_ec_ref_mux_ul19),
13736};
13737
13738static const struct snd_soc_dapm_route intercon[] = {
13739 {"PRI_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13740 {"PRI_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13741 {"PRI_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13742 {"PRI_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13743 {"PRI_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13744 {"PRI_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13745 {"PRI_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13746 {"PRI_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13747 {"PRI_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
13748 {"PRI_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13749 {"PRI_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13750 {"PRI_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13751 {"PRI_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13752 {"PRI_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13753 {"PRI_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13754 {"PRI_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13755 {"PRI_I2S_RX", NULL, "PRI_RX Audio Mixer"},
13756
13757 {"SEC_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13758 {"SEC_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13759 {"SEC_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13760 {"SEC_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13761 {"SEC_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13762 {"SEC_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13763 {"SEC_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13764 {"SEC_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13765 {"SEC_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
13766 {"SEC_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13767 {"SEC_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13768 {"SEC_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13769 {"SEC_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13770 {"SEC_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13771 {"SEC_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13772 {"SEC_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13773 {"SEC_I2S_RX", NULL, "SEC_RX Audio Mixer"},
13774
13775 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13776 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13777 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13778 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13779 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13780 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13781 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13782 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13783 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
13784 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13785 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13786 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13787 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13788 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13789 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13790 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13791 {"SLIMBUS_0_RX", NULL, "SLIMBUS_0_RX Audio Mixer"},
13792
13793 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13794 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13795 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13796 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13797 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13798 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13799 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13800 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13801 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
13802 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13803 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13804 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13805 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13806 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13807 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13808 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13809 {"SLIMBUS_2_RX", NULL, "SLIMBUS_2_RX Audio Mixer"},
13810
13811 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13812 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13813 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13814 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13815 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13816 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13817 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13818 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13819 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
13820 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13821 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13822 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13823 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13824 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13825 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13826 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13827 {"SLIMBUS_5_RX", NULL, "SLIMBUS_5_RX Audio Mixer"},
13828
13829 {"HDMI Mixer", "MultiMedia1", "MM_DL1"},
13830 {"HDMI Mixer", "MultiMedia2", "MM_DL2"},
13831 {"HDMI Mixer", "MultiMedia3", "MM_DL3"},
13832 {"HDMI Mixer", "MultiMedia4", "MM_DL4"},
13833 {"HDMI Mixer", "MultiMedia5", "MM_DL5"},
13834 {"HDMI Mixer", "MultiMedia6", "MM_DL6"},
13835 {"HDMI Mixer", "MultiMedia7", "MM_DL7"},
13836 {"HDMI Mixer", "MultiMedia8", "MM_DL8"},
13837 {"HDMI Mixer", "MultiMedia9", "MM_DL9"},
13838 {"HDMI Mixer", "MultiMedia10", "MM_DL10"},
13839 {"HDMI Mixer", "MultiMedia11", "MM_DL11"},
13840 {"HDMI Mixer", "MultiMedia12", "MM_DL12"},
13841 {"HDMI Mixer", "MultiMedia13", "MM_DL13"},
13842 {"HDMI Mixer", "MultiMedia14", "MM_DL14"},
13843 {"HDMI Mixer", "MultiMedia15", "MM_DL15"},
13844 {"HDMI Mixer", "MultiMedia16", "MM_DL16"},
13845 {"HDMI", NULL, "HDMI Mixer"},
13846
13847 {"DISPLAY_PORT Mixer", "MultiMedia1", "MM_DL1"},
13848 {"DISPLAY_PORT Mixer", "MultiMedia2", "MM_DL2"},
13849 {"DISPLAY_PORT Mixer", "MultiMedia3", "MM_DL3"},
13850 {"DISPLAY_PORT Mixer", "MultiMedia4", "MM_DL4"},
13851 {"DISPLAY_PORT Mixer", "MultiMedia5", "MM_DL5"},
13852 {"DISPLAY_PORT Mixer", "MultiMedia6", "MM_DL6"},
13853 {"DISPLAY_PORT Mixer", "MultiMedia7", "MM_DL7"},
13854 {"DISPLAY_PORT Mixer", "MultiMedia8", "MM_DL8"},
13855 {"DISPLAY_PORT Mixer", "MultiMedia9", "MM_DL9"},
13856 {"DISPLAY_PORT Mixer", "MultiMedia10", "MM_DL10"},
13857 {"DISPLAY_PORT Mixer", "MultiMedia11", "MM_DL11"},
13858 {"DISPLAY_PORT Mixer", "MultiMedia12", "MM_DL12"},
13859 {"DISPLAY_PORT Mixer", "MultiMedia13", "MM_DL13"},
13860 {"DISPLAY_PORT Mixer", "MultiMedia14", "MM_DL14"},
13861 {"DISPLAY_PORT Mixer", "MultiMedia15", "MM_DL15"},
13862 {"DISPLAY_PORT Mixer", "MultiMedia16", "MM_DL16"},
13863 {"DISPLAY_PORT", NULL, "DISPLAY_PORT Mixer"},
13864
13865 {"SPDIF_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13866 {"SPDIF_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13867 {"SPDIF_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13868 {"SPDIF_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13869 {"SPDIF_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13870 {"SPDIF_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13871 {"SPDIF_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13872 {"SPDIF_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13873 {"SPDIF_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
13874 {"SPDIF_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13875 {"SPDIF_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13876 {"SPDIF_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13877 {"SPDIF_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13878 {"SPDIF_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13879 {"SPDIF_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13880 {"SPDIF_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13881 {"SPDIF_RX", NULL, "SPDIF_RX Audio Mixer"},
13882
13883 /* incall */
13884 {"Incall_Music Audio Mixer", "MultiMedia1", "MM_DL1"},
13885 {"Incall_Music Audio Mixer", "MultiMedia2", "MM_DL2"},
13886 {"Incall_Music Audio Mixer", "MultiMedia5", "MM_DL5"},
13887 {"Incall_Music Audio Mixer", "MultiMedia9", "MM_DL9"},
13888 {"VOICE_PLAYBACK_TX", NULL, "Incall_Music Audio Mixer"},
13889 {"Incall_Music_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
13890 {"Incall_Music_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
13891 {"Incall_Music_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
13892 {"Incall_Music_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
13893 {"VOICE2_PLAYBACK_TX", NULL, "Incall_Music_2 Audio Mixer"},
13894 {"SLIMBUS_4_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13895 {"SLIMBUS_4_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13896 {"SLIMBUS_4_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13897 {"SLIMBUS_4_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
13898 {"SLIMBUS_4_RX", NULL, "SLIMBUS_4_RX Audio Mixer"},
13899
13900 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13901 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13902 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13903 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13904 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13905 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13906 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13907 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13908 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
13909 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13910 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13911 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13912 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13913 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13914 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13915 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13916 {"SLIMBUS_6_RX", NULL, "SLIMBUS_6_RX Audio Mixer"},
13917
13918 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13919 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13920 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13921 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13922 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13923 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13924 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13925 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13926 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
13927 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13928 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13929 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13930 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13931 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13932 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13933 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13934 {"SLIMBUS_7_RX", NULL, "SLIMBUS_7_RX Audio Mixer"},
13935
13936 {"USB_AUDIO_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13937 {"USB_AUDIO_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13938 {"USB_AUDIO_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13939 {"USB_AUDIO_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13940 {"USB_AUDIO_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13941 {"USB_AUDIO_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13942 {"USB_AUDIO_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13943 {"USB_AUDIO_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13944 {"USB_AUDIO_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
13945 {"USB_AUDIO_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13946 {"USB_AUDIO_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13947 {"USB_AUDIO_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13948 {"USB_AUDIO_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13949 {"USB_AUDIO_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13950 {"USB_AUDIO_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13951 {"USB_AUDIO_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13952 {"USB_AUDIO_RX", NULL, "USB_AUDIO_RX Audio Mixer"},
13953
13954 {"MultiMedia1 Mixer", "VOC_REC_UL", "INCALL_RECORD_TX"},
13955 {"MultiMedia4 Mixer", "VOC_REC_UL", "INCALL_RECORD_TX"},
13956 {"MultiMedia8 Mixer", "VOC_REC_UL", "INCALL_RECORD_TX"},
13957 {"MultiMedia1 Mixer", "VOC_REC_DL", "INCALL_RECORD_RX"},
13958 {"MultiMedia4 Mixer", "VOC_REC_DL", "INCALL_RECORD_RX"},
13959 {"MultiMedia8 Mixer", "VOC_REC_DL", "INCALL_RECORD_RX"},
13960 {"MultiMedia1 Mixer", "SLIM_4_TX", "SLIMBUS_4_TX"},
13961 {"MultiMedia1 Mixer", "SLIM_6_TX", "SLIMBUS_6_TX"},
13962 {"MultiMedia1 Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
13963 {"MultiMedia1 Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
13964 {"MultiMedia8 Mixer", "SLIM_6_TX", "SLIMBUS_6_TX"},
13965 {"MultiMedia8 Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
13966 {"MultiMedia4 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
13967 {"MultiMedia17 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
13968 {"MultiMedia18 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
13969 {"MultiMedia19 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053013970 {"MultiMedia28 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
13971 {"MultiMedia29 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013972 {"MultiMedia8 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
13973 {"MultiMedia2 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
13974 {"MultiMedia4 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
13975 {"MultiMedia17 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
13976 {"MultiMedia18 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
13977 {"MultiMedia19 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053013978 {"MultiMedia28 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
13979 {"MultiMedia29 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013980 {"MultiMedia8 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053013981 {"MultiMedia17 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
13982 {"MultiMedia18 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
13983 {"MultiMedia19 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
13984 {"MultiMedia28 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
13985 {"MultiMedia29 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
13986 {"MultiMedia17 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013987 {"MultiMedia18 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053013988 {"MultiMedia19 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
13989 {"MultiMedia28 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
13990 {"MultiMedia29 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013991 {"MultiMedia8 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
13992 {"MultiMedia3 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
13993 {"MultiMedia5 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053013994 {"MultiMedia10 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053013995 {"MultiMedia16 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013996 {"MultiMedia5 Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
13997 {"MultiMedia5 Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053013998 {"MultiMedia10 Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013999 {"MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14000 {"MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14001 {"MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14002 {"MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14003 {"MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14004 {"MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14005 {"MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14006 {"MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14007 {"MI2S_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14008 {"MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14009 {"MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14010 {"MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14011 {"MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14012 {"MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14013 {"MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14014 {"MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14015 {"MI2S_RX", NULL, "MI2S_RX Audio Mixer"},
14016
14017 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14018 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14019 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14020 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14021 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14022 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14023 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14024 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14025 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14026 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14027 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14028 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14029 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14030 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14031 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14032 {"QUAT_MI2S_RX", NULL, "QUAT_MI2S_RX Audio Mixer"},
14033
14034 {"TERT_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14035 {"TERT_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14036 {"TERT_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14037 {"TERT_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14038 {"TERT_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14039 {"TERT_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14040 {"TERT_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14041 {"TERT_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14042 {"TERT_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14043 {"TERT_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14044 {"TERT_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14045 {"TERT_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14046 {"TERT_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14047 {"TERT_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14048 {"TERT_MI2S_RX", NULL, "TERT_MI2S_RX Audio Mixer"},
14049
14050 {"SEC_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14051 {"SEC_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14052 {"SEC_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14053 {"SEC_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14054 {"SEC_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14055 {"SEC_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14056 {"SEC_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14057 {"SEC_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14058 {"SEC_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14059 {"SEC_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14060 {"SEC_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14061 {"SEC_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14062 {"SEC_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14063 {"SEC_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14064 {"SEC_MI2S_RX", NULL, "SEC_MI2S_RX Audio Mixer"},
14065
14066 {"SEC_MI2S_RX_SD1 Audio Mixer", "MultiMedia6", "MM_DL6"},
14067 {"SEC_MI2S_RX_SD1", NULL, "SEC_MI2S_RX_SD1 Audio Mixer"},
14068
14069 {"SEC_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14070 {"SEC_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
14071
14072 {"PRI_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14073 {"PRI_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14074 {"PRI_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14075 {"PRI_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14076 {"PRI_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14077 {"PRI_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14078 {"PRI_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14079 {"PRI_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14080 {"PRI_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14081 {"PRI_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14082 {"PRI_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14083 {"PRI_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14084 {"PRI_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14085 {"PRI_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14086 {"PRI_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14087 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX Audio Mixer"},
14088
14089 {"INT0_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14090 {"INT0_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14091 {"INT0_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14092 {"INT0_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14093 {"INT0_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14094 {"INT0_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14095 {"INT0_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14096 {"INT0_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14097 {"INT0_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14098 {"INT0_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14099 {"INT0_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14100 {"INT0_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14101 {"INT0_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14102 {"INT0_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14103 {"INT0_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14104 {"INT0_MI2S_RX", NULL, "INT0_MI2S_RX Audio Mixer"},
14105
14106 {"INT4_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14107 {"INT4_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14108 {"INT4_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14109 {"INT4_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14110 {"INT4_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14111 {"INT4_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14112 {"INT4_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14113 {"INT4_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14114 {"INT4_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14115 {"INT4_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14116 {"INT4_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14117 {"INT4_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14118 {"INT4_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14119 {"INT4_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14120 {"INT4_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14121 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX Audio Mixer"},
14122
14123 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14124 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14125 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14126 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14127 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14128 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14129 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14130 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14131 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14132 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14133 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14134 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14135 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14136 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14137 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14138 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14139 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14140 {"QUIN_MI2S_RX", NULL, "QUIN_MI2S_RX Audio Mixer"},
14141
14142 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14143 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14144 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14145 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14146 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14147 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14148 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14149 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14150 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14151 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14152 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14153 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14154 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14155 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14156 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14157 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14158 {"PRI_TDM_RX_0", NULL, "PRI_TDM_RX_0 Audio Mixer"},
14159
14160 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
14161 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
14162 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
14163 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
14164 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
14165 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
14166 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
14167 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
14168 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
14169 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
14170 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
14171 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
14172 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
14173 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
14174 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
14175 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
14176 {"PRI_TDM_RX_1", NULL, "PRI_TDM_RX_1 Audio Mixer"},
14177
14178 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
14179 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
14180 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
14181 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
14182 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
14183 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
14184 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
14185 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
14186 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
14187 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
14188 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
14189 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
14190 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
14191 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
14192 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
14193 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
14194 {"PRI_TDM_RX_2", NULL, "PRI_TDM_RX_2 Audio Mixer"},
14195
14196 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
14197 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
14198 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
14199 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
14200 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
14201 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
14202 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
14203 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
14204 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
14205 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
14206 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
14207 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
14208 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
14209 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
14210 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
14211 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
14212 {"PRI_TDM_RX_3", NULL, "PRI_TDM_RX_3 Audio Mixer"},
14213
14214 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14215 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14216 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14217 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14218 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14219 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14220 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14221 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14222 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14223 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14224 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14225 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14226 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14227 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14228 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14229 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14230 {"PRI_TDM_TX_0", NULL, "PRI_TDM_TX_0 Audio Mixer"},
14231
14232 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14233 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14234 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14235 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14236 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14237 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14238 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14239 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14240 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14241 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14242 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14243 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14244 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14245 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14246 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14247 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14248 {"SEC_TDM_RX_0", NULL, "SEC_TDM_RX_0 Audio Mixer"},
14249
14250 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
14251 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
14252 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
14253 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
14254 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
14255 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
14256 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
14257 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
14258 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
14259 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
14260 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
14261 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
14262 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
14263 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
14264 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
14265 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
14266 {"SEC_TDM_RX_1", NULL, "SEC_TDM_RX_1 Audio Mixer"},
14267
14268 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
14269 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
14270 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
14271 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
14272 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
14273 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
14274 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
14275 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
14276 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
14277 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
14278 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
14279 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
14280 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
14281 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
14282 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
14283 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
14284 {"SEC_TDM_RX_2", NULL, "SEC_TDM_RX_2 Audio Mixer"},
14285
14286 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
14287 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
14288 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
14289 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
14290 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
14291 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
14292 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
14293 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
14294 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
14295 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
14296 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
14297 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
14298 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
14299 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
14300 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
14301 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
14302 {"SEC_TDM_RX_3", NULL, "SEC_TDM_RX_3 Audio Mixer"},
14303
14304 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14305 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14306 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14307 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14308 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14309 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14310 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14311 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14312 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14313 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14314 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14315 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14316 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14317 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14318 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14319 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14320 {"SEC_TDM_TX_0", NULL, "SEC_TDM_TX_0 Audio Mixer"},
14321
14322 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14323 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14324 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14325 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14326 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14327 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14328 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14329 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14330 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14331 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14332 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14333 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14334 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14335 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14336 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14337 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14338 {"TERT_TDM_RX_0", NULL, "TERT_TDM_RX_0 Audio Mixer"},
14339
14340 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14341 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14342 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14343 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14344 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14345 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14346 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14347 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14348 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14349 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14350 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14351 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14352 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14353 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14354 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14355 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14356 {"TERT_TDM_TX_0", NULL, "TERT_TDM_TX_0 Audio Mixer"},
14357
14358 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
14359 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
14360 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
14361 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
14362 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
14363 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
14364 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
14365 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
14366 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
14367 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
14368 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
14369 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
14370 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
14371 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
14372 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
14373 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
14374 {"TERT_TDM_RX_1", NULL, "TERT_TDM_RX_1 Audio Mixer"},
14375
14376 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
14377 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
14378 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
14379 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
14380 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
14381 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
14382 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
14383 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
14384 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
14385 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
14386 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
14387 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
14388 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
14389 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
14390 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
14391 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
14392 {"TERT_TDM_RX_2", NULL, "TERT_TDM_RX_2 Audio Mixer"},
14393
14394 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
14395 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
14396 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
14397 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
14398 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
14399 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
14400 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
14401 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
14402 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
14403 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
14404 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
14405 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
14406 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
14407 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
14408 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
14409 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
14410 {"TERT_TDM_RX_3", NULL, "TERT_TDM_RX_3 Audio Mixer"},
14411
14412 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia1", "MM_DL1"},
14413 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia2", "MM_DL2"},
14414 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia3", "MM_DL3"},
14415 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia4", "MM_DL4"},
14416 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia5", "MM_DL5"},
14417 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia6", "MM_DL6"},
14418 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia7", "MM_DL7"},
14419 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia8", "MM_DL8"},
14420 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia9", "MM_DL9"},
14421 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia10", "MM_DL10"},
14422 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia11", "MM_DL11"},
14423 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia12", "MM_DL12"},
14424 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia13", "MM_DL13"},
14425 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia14", "MM_DL14"},
14426 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia15", "MM_DL15"},
14427 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia16", "MM_DL16"},
14428 {"TERT_TDM_RX_4", NULL, "TERT_TDM_RX_4 Audio Mixer"},
14429
14430 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14431 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14432 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14433 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14434 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14435 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14436 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14437 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14438 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14439 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14440 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14441 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14442 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14443 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14444 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14445 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14446 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia20", "MM_DL20"},
14447 {"QUAT_TDM_RX_0", NULL, "QUAT_TDM_RX_0 Audio Mixer"},
14448
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014449 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14450 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14451 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14452 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14453 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14454 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14455 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14456 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14457 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14458 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14459 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14460 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14461 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14462 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14463 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14464 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14465 {"QUAT_TDM_TX_0", NULL, "QUAT_TDM_TX_0 Audio Mixer"},
14466
14467 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
14468 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
14469 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
14470 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
14471 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
14472 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
14473 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
14474 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
14475 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
14476 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
14477 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
14478 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
14479 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
14480 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
14481 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
14482 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
14483 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia20", "MM_DL20"},
14484 {"QUAT_TDM_RX_1", NULL, "QUAT_TDM_RX_1 Audio Mixer"},
14485
14486 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
14487 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
14488 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
14489 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
14490 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
14491 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
14492 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
14493 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
14494 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
14495 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
14496 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
14497 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
14498 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
14499 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
14500 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
14501 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
14502 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia20", "MM_DL20"},
14503 {"QUAT_TDM_RX_2", NULL, "QUAT_TDM_RX_2 Audio Mixer"},
14504
14505 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
14506 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
14507 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
14508 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
14509 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
14510 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
14511 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
14512 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
14513 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
14514 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
14515 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
14516 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
14517 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
14518 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
14519 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
14520 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
14521 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia20", "MM_DL20"},
14522 {"QUAT_TDM_RX_3", NULL, "QUAT_TDM_RX_3 Audio Mixer"},
14523
Rohit Kumara5077932017-09-10 22:05:05 +053014524 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14525 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14526 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14527 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14528 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14529 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14530 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14531 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14532 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14533 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14534 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14535 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14536 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14537 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14538 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14539 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14540 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia20", "MM_DL20"},
14541 {"QUIN_TDM_RX_0", NULL, "QUIN_TDM_RX_0 Audio Mixer"},
14542
14543 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14544 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14545 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14546 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14547 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14548 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14549 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14550 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14551 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14552 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14553 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14554 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14555 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14556 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14557 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14558 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14559 {"QUIN_TDM_TX_0", NULL, "QUIN_TDM_TX_0 Audio Mixer"},
14560
14561 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
14562 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
14563 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
14564 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
14565 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
14566 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
14567 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
14568 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
14569 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
14570 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
14571 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
14572 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
14573 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
14574 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
14575 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
14576 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
14577 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia20", "MM_DL20"},
14578 {"QUIN_TDM_RX_1", NULL, "QUIN_TDM_RX_1 Audio Mixer"},
14579
14580 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
14581 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
14582 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
14583 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
14584 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
14585 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
14586 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
14587 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
14588 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
14589 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
14590 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
14591 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
14592 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
14593 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
14594 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
14595 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
14596 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia20", "MM_DL20"},
14597 {"QUIN_TDM_RX_2", NULL, "QUIN_TDM_RX_2 Audio Mixer"},
14598
14599 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
14600 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
14601 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
14602 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
14603 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
14604 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
14605 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
14606 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
14607 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
14608 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
14609 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
14610 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
14611 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
14612 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
14613 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
14614 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
14615 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia20", "MM_DL20"},
14616 {"QUIN_TDM_RX_3", NULL, "QUIN_TDM_RX_3 Audio Mixer"},
14617
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014618 {"MultiMedia1 Mixer", "PRI_TX", "PRI_I2S_TX"},
14619 {"MultiMedia1 Mixer", "MI2S_TX", "MI2S_TX"},
14620 {"MultiMedia2 Mixer", "MI2S_TX", "MI2S_TX"},
14621 {"MultiMedia3 Mixer", "MI2S_TX", "MI2S_TX"},
14622 {"MultiMedia5 Mixer", "MI2S_TX", "MI2S_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014623 {"MultiMedia10 Mixer", "MI2S_TX", "MI2S_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014624 {"MultiMedia16 Mixer", "MI2S_TX", "MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014625 {"MultiMedia1 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14626 {"MultiMedia2 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14627 {"MultiMedia6 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14628 {"MultiMedia1 Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
14629 {"MultiMedia2 Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
14630 {"MultiMedia1 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14631 {"MultiMedia2 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14632 {"MultiMedia1 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
14633 {"MultiMedia2 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
14634 {"MultiMedia1 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14635 {"MultiMedia2 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14636 {"MultiMedia1 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14637 {"MultiMedia1 Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
14638 {"MultiMedia3 Mixer", "AUX_PCM_TX", "AUX_PCM_TX"},
14639 {"MultiMedia5 Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014640 {"MultiMedia10 Mixer", "AUX_PCM_TX", "AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014641 {"MultiMedia1 Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
14642 {"MultiMedia3 Mixer", "SEC_AUX_PCM_TX", "SEC_AUX_PCM_TX"},
14643 {"MultiMedia5 Mixer", "SEC_AUX_PCM_TX", "SEC_AUX_PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014644 {"MultiMedia10 Mixer", "SEC_AUX_PCM_TX", "SEC_AUX_PCM_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014645 {"MultiMedia16 Mixer", "AUX_PCM_TX", "AUX_PCM_TX"},
14646 {"MultiMedia16 Mixer", "SEC_AUX_PCM_TX", "SEC_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014647 {"MultiMedia1 Mixer", "TERT_AUXPCM_UL_TX", "TERT_AUX_PCM_TX"},
14648 {"MultiMedia3 Mixer", "TERT_AUX_PCM_TX", "TERT_AUX_PCM_TX"},
14649 {"MultiMedia5 Mixer", "TERT_AUX_PCM_TX", "TERT_AUX_PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014650 {"MultiMedia10 Mixer", "TERT_AUX_PCM_TX", "TERT_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014651 {"MultiMedia1 Mixer", "QUAT_AUXPCM_UL_TX", "QUAT_AUX_PCM_TX"},
14652 {"MultiMedia3 Mixer", "QUAT_AUX_PCM_TX", "QUAT_AUX_PCM_TX"},
14653 {"MultiMedia5 Mixer", "QUAT_AUX_PCM_TX", "QUAT_AUX_PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014654 {"MultiMedia10 Mixer", "QUAT_AUX_PCM_TX", "QUAT_AUX_PCM_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014655 {"MultiMedia16 Mixer", "QUAT_AUX_PCM_TX", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053014656 {"MultiMedia1 Mixer", "QUIN_AUXPCM_UL_TX", "QUIN_AUX_PCM_TX"},
14657 {"MultiMedia3 Mixer", "QUIN_AUX_PCM_TX", "QUIN_AUX_PCM_TX"},
14658 {"MultiMedia5 Mixer", "QUIN_AUX_PCM_TX", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014659 {"MultiMedia2 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14660 {"MultiMedia2 Mixer", "SLIM_6_TX", "SLIMBUS_6_TX"},
14661 {"MultiMedia2 Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
14662 {"MultiMedia2 Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
14663 {"MultiMedia1 Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
14664 {"MultiMedia1 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14665 {"MultiMedia2 Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
14666 {"MultiMedia6 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14667 {"MultiMedia6 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14668 {"MultiMedia3 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14669 {"MultiMedia5 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014670 {"MultiMedia10 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014671 {"MultiMedia6 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
14672 {"MultiMedia3 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
14673 {"MultiMedia5 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014674 {"MultiMedia10 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014675 {"MultiMedia16 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014676 {"MultiMedia6 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14677 {"MultiMedia3 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14678 {"MultiMedia5 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014679 {"MultiMedia10 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014680 {"MultiMedia16 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053014681 {"MultiMedia17 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14682 {"MultiMedia18 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14683 {"MultiMedia19 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14684 {"MultiMedia28 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14685 {"MultiMedia29 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014686 {"MultiMedia6 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14687 {"MultiMedia6 Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
14688 {"MultiMedia6 Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
14689 {"MultiMedia6 Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053014690 {"MultiMedia6 Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014691
14692 {"MultiMedia1 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
14693 {"MultiMedia1 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
14694 {"MultiMedia1 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
14695 {"MultiMedia1 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
14696 {"MultiMedia1 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
14697 {"MultiMedia1 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
14698 {"MultiMedia1 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
14699 {"MultiMedia1 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
14700 {"MultiMedia1 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14701 {"MultiMedia1 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14702 {"MultiMedia1 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14703 {"MultiMedia1 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14704 {"MultiMedia1 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14705 {"MultiMedia1 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14706 {"MultiMedia1 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14707 {"MultiMedia1 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053014708 {"MultiMedia1 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
14709 {"MultiMedia1 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
14710 {"MultiMedia1 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
14711 {"MultiMedia1 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014712
14713 {"MultiMedia2 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
14714 {"MultiMedia2 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
14715 {"MultiMedia2 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
14716 {"MultiMedia2 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
14717 {"MultiMedia2 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
14718 {"MultiMedia2 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
14719 {"MultiMedia2 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
14720 {"MultiMedia2 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
14721 {"MultiMedia2 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14722 {"MultiMedia2 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14723 {"MultiMedia2 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14724 {"MultiMedia2 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14725 {"MultiMedia2 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14726 {"MultiMedia2 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14727 {"MultiMedia2 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14728 {"MultiMedia2 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053014729 {"MultiMedia2 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
14730 {"MultiMedia2 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
14731 {"MultiMedia2 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
14732 {"MultiMedia2 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014733
14734 {"MultiMedia3 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
14735 {"MultiMedia3 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
14736 {"MultiMedia3 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
14737 {"MultiMedia3 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
14738 {"MultiMedia3 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
14739 {"MultiMedia3 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
14740 {"MultiMedia3 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
14741 {"MultiMedia3 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
14742 {"MultiMedia3 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14743 {"MultiMedia3 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14744 {"MultiMedia3 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14745 {"MultiMedia3 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14746 {"MultiMedia3 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14747 {"MultiMedia3 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14748 {"MultiMedia3 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14749 {"MultiMedia3 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053014750 {"MultiMedia3 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
14751 {"MultiMedia3 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
14752 {"MultiMedia3 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
14753 {"MultiMedia3 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014754
14755 {"MultiMedia4 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
14756 {"MultiMedia4 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
14757 {"MultiMedia4 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
14758 {"MultiMedia4 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
14759 {"MultiMedia4 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
14760 {"MultiMedia4 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
14761 {"MultiMedia4 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
14762 {"MultiMedia4 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
14763 {"MultiMedia4 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14764 {"MultiMedia4 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14765 {"MultiMedia4 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14766 {"MultiMedia4 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14767 {"MultiMedia4 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14768 {"MultiMedia4 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14769 {"MultiMedia4 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14770 {"MultiMedia4 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053014771 {"MultiMedia4 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
14772 {"MultiMedia4 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
14773 {"MultiMedia4 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
14774 {"MultiMedia4 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014775
14776 {"MultiMedia5 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
14777 {"MultiMedia5 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
14778 {"MultiMedia5 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
14779 {"MultiMedia5 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
14780 {"MultiMedia5 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
14781 {"MultiMedia5 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
14782 {"MultiMedia5 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
14783 {"MultiMedia5 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
14784 {"MultiMedia5 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14785 {"MultiMedia5 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14786 {"MultiMedia5 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14787 {"MultiMedia5 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14788 {"MultiMedia5 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14789 {"MultiMedia5 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14790 {"MultiMedia5 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14791 {"MultiMedia5 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053014792 {"MultiMedia5 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
14793 {"MultiMedia5 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
14794 {"MultiMedia5 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
14795 {"MultiMedia5 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014796
14797 {"MultiMedia6 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
14798 {"MultiMedia6 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
14799 {"MultiMedia6 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
14800 {"MultiMedia6 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
14801 {"MultiMedia6 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
14802 {"MultiMedia6 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
14803 {"MultiMedia6 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
14804 {"MultiMedia6 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
14805 {"MultiMedia6 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14806 {"MultiMedia6 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14807 {"MultiMedia6 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14808 {"MultiMedia6 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14809 {"MultiMedia6 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14810 {"MultiMedia6 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14811 {"MultiMedia6 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14812 {"MultiMedia6 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053014813 {"MultiMedia6 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
14814 {"MultiMedia6 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
14815 {"MultiMedia6 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
14816 {"MultiMedia6 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014817
14818 {"MultiMedia8 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
14819 {"MultiMedia8 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
14820 {"MultiMedia8 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
14821 {"MultiMedia8 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
14822 {"MultiMedia8 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
14823 {"MultiMedia8 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
14824 {"MultiMedia8 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
14825 {"MultiMedia8 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
14826 {"MultiMedia8 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14827 {"MultiMedia8 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14828 {"MultiMedia8 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14829 {"MultiMedia8 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14830 {"MultiMedia8 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14831 {"MultiMedia8 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14832 {"MultiMedia8 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14833 {"MultiMedia8 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053014834 {"MultiMedia8 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
14835 {"MultiMedia8 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
14836 {"MultiMedia8 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
14837 {"MultiMedia8 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014838
14839 {"MultiMedia9 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14840 {"MultiMedia9 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14841 {"MultiMedia9 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14842 {"MultiMedia9 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14843 {"MultiMedia9 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14844 {"MultiMedia9 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14845 {"MultiMedia9 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14846 {"MultiMedia9 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053014847 {"MultiMedia9 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
14848 {"MultiMedia9 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
14849 {"MultiMedia9 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
14850 {"MultiMedia9 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014851
Laxminath Kasam38070be2017-08-17 18:21:59 +053014852 {"MultiMedia10 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14853 {"MultiMedia10 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14854 {"MultiMedia10 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14855 {"MultiMedia10 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14856 {"MultiMedia10 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14857 {"MultiMedia10 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14858 {"MultiMedia10 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14859 {"MultiMedia10 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014860 {"MultiMedia20 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14861 {"MultiMedia20 Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
14862 {"MultiMedia20 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14863 {"MultiMedia20 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053014864 {"MultiMedia20 Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014865 {"MultiMedia20 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
14866 {"MultiMedia20 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
14867 {"MultiMedia20 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
14868 {"MultiMedia20 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
14869 {"MultiMedia20 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
14870 {"MultiMedia20 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
14871 {"MultiMedia20 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
14872 {"MultiMedia20 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
14873 {"MultiMedia20 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14874 {"MultiMedia20 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14875 {"MultiMedia20 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14876 {"MultiMedia20 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14877 {"MultiMedia20 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14878 {"MultiMedia20 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14879 {"MultiMedia20 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14880 {"MultiMedia20 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053014881 {"MultiMedia20 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
14882 {"MultiMedia20 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
14883 {"MultiMedia20 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
14884 {"MultiMedia20 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014885
14886 {"MultiMedia1 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
14887 {"MultiMedia2 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
14888 {"MultiMedia4 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
14889 {"MultiMedia5 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
14890 {"MultiMedia6 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
14891 {"MultiMedia8 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014892 {"MultiMedia10 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014893
Asish Bhattacharya34504582017-08-08 12:55:01 +053014894 {"MultiMedia16 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
14895 {"MultiMedia16 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
14896 {"MultiMedia16 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
14897 {"MultiMedia16 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
14898 {"MultiMedia16 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
14899 {"MultiMedia16 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
14900 {"MultiMedia16 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
14901 {"MultiMedia16 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
14902 {"MultiMedia16 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14903 {"MultiMedia16 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14904 {"MultiMedia16 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14905 {"MultiMedia16 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14906 {"MultiMedia16 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14907 {"MultiMedia16 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14908 {"MultiMedia16 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14909 {"MultiMedia16 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
14910 {"MultiMedia16 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
14911
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014912 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14913 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14914 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14915 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14916 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14917 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14918 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14919 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14920 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14921 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14922 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14923 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14924 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14925 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14926 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14927 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14928 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia6", "MM_UL6"},
14929 {"INT_BT_SCO_RX", NULL, "INTERNAL_BT_SCO_RX Audio Mixer"},
14930
14931 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14932 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14933 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14934 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14935 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14936 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14937 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14938 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14939 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14940 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14941 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14942 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14943 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14944 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14945 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14946 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14947 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia6", "MM_UL6"},
14948 {"INT_BT_A2DP_RX", NULL, "INTERNAL_A2DP_RX Audio Mixer"},
14949
14950 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14951 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14952 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14953 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14954 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14955 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14956 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14957 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14958 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14959 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14960 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14961 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14962 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14963 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14964 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14965 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14966 {"INT_FM_RX", NULL, "INTERNAL_FM_RX Audio Mixer"},
14967
14968 {"AFE_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14969 {"AFE_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14970 {"AFE_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14971 {"AFE_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14972 {"AFE_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14973 {"AFE_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14974 {"AFE_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14975 {"AFE_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14976 {"AFE_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14977 {"AFE_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14978 {"AFE_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14979 {"AFE_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14980 {"AFE_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14981 {"AFE_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14982 {"AFE_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14983 {"AFE_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14984 {"PCM_RX", NULL, "AFE_PCM_RX Audio Mixer"},
14985
14986 {"MultiMedia1 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
14987 {"MultiMedia3 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
14988 {"MultiMedia4 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014989 {"MultiMedia10 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014990 {"MultiMedia17 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
14991 {"MultiMedia18 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
14992 {"MultiMedia19 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053014993 {"MultiMedia28 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
14994 {"MultiMedia29 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014995 {"MultiMedia5 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
14996 {"MultiMedia8 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014997 {"MultiMedia16 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014998 {"MultiMedia1 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
14999 {"MultiMedia4 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053015000 {"MultiMedia16 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015001 {"MultiMedia17 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15002 {"MultiMedia18 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15003 {"MultiMedia19 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053015004 {"MultiMedia28 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15005 {"MultiMedia29 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015006 {"MultiMedia5 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15007 {"MultiMedia6 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15008 {"MultiMedia8 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15009
15010 {"MultiMedia1 Mixer", "AFE_PCM_TX", "PCM_TX"},
15011 {"MultiMedia3 Mixer", "AFE_PCM_TX", "PCM_TX"},
15012 {"MultiMedia4 Mixer", "AFE_PCM_TX", "PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053015013 {"MultiMedia10 Mixer", "AFE_PCM_TX", "PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015014 {"MultiMedia17 Mixer", "AFE_PCM_TX", "PCM_TX"},
15015 {"MultiMedia18 Mixer", "AFE_PCM_TX", "PCM_TX"},
15016 {"MultiMedia19 Mixer", "AFE_PCM_TX", "PCM_TX"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053015017 {"MultiMedia28 Mixer", "AFE_PCM_TX", "PCM_TX"},
15018 {"MultiMedia29 Mixer", "AFE_PCM_TX", "PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015019 {"MultiMedia5 Mixer", "AFE_PCM_TX", "PCM_TX"},
15020 {"MultiMedia8 Mixer", "AFE_PCM_TX", "PCM_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053015021 {"MultiMedia16 Mixer", "AFE_PCM_TX", "PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015022 {"MM_UL1", NULL, "MultiMedia1 Mixer"},
15023 {"MultiMedia2 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15024 {"MM_UL2", NULL, "MultiMedia2 Mixer"},
15025 {"MM_UL3", NULL, "MultiMedia3 Mixer"},
15026 {"MM_UL4", NULL, "MultiMedia4 Mixer"},
15027 {"MM_UL5", NULL, "MultiMedia5 Mixer"},
15028 {"MM_UL6", NULL, "MultiMedia6 Mixer"},
15029 {"MM_UL8", NULL, "MultiMedia8 Mixer"},
15030 {"MM_UL9", NULL, "MultiMedia9 Mixer"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053015031 {"MM_UL10", NULL, "MultiMedia10 Mixer"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053015032 {"MM_UL16", NULL, "MultiMedia16 Mixer"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015033 {"MM_UL17", NULL, "MultiMedia17 Mixer"},
15034 {"MM_UL18", NULL, "MultiMedia18 Mixer"},
15035 {"MM_UL19", NULL, "MultiMedia19 Mixer"},
15036 {"MM_UL20", NULL, "MultiMedia20 Mixer"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053015037 {"MM_UL28", NULL, "MultiMedia28 Mixer"},
15038 {"MM_UL29", NULL, "MultiMedia29 Mixer"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015039
15040 {"AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15041 {"AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15042 {"AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15043 {"AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15044 {"AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15045 {"AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15046 {"AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15047 {"AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15048 {"AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15049 {"AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15050 {"AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15051 {"AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15052 {"AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15053 {"AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15054 {"AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15055 {"AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15056 {"AUX_PCM_RX", NULL, "AUX_PCM_RX Audio Mixer"},
15057
15058 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15059 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15060 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15061 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15062 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15063 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15064 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15065 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15066 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15067 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15068 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15069 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15070 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15071 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15072 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15073 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15074 {"SEC_AUX_PCM_RX", NULL, "SEC_AUX_PCM_RX Audio Mixer"},
15075
15076 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15077 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15078 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15079 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15080 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15081 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15082 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15083 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15084 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15085 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15086 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15087 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15088 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15089 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15090 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15091 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15092 {"TERT_AUX_PCM_RX", NULL, "TERT_AUX_PCM_RX Audio Mixer"},
15093
15094 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15095 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15096 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15097 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15098 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15099 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15100 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15101 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15102 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15103 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15104 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15105 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15106 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15107 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15108 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15109 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15110 {"QUAT_AUX_PCM_RX", NULL, "QUAT_AUX_PCM_RX Audio Mixer"},
15111
Rohit Kumara5077932017-09-10 22:05:05 +053015112 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
15113 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
15114 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
15115 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
15116 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
15117 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
15118 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
15119 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
15120 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
15121 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
15122 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
15123 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
15124 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
15125 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
15126 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
15127 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
15128 {"QUIN_AUX_PCM_RX", NULL, "QUIN_AUX_PCM_RX Audio Mixer"},
15129
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015130 {"PRI_RX_Voice Mixer", "Voip", "VOIP_DL"},
15131 {"PRI_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15132 {"PRI_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15133 {"PRI_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15134 {"PRI_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15135 {"PRI_I2S_RX", NULL, "PRI_RX_Voice Mixer"},
15136
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015137 {"SEC_RX_Voice Mixer", "Voip", "VOIP_DL"},
15138 {"SEC_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15139 {"SEC_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15140 {"SEC_I2S_RX", NULL, "SEC_RX_Voice Mixer"},
15141
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015142 {"SEC_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
15143 {"SEC_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15144 {"SEC_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15145 {"SEC_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15146 {"SEC_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15147 {"SEC_MI2S_RX", NULL, "SEC_MI2S_RX_Voice Mixer"},
15148
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015149 {"SLIM_0_RX_Voice Mixer", "Voip", "VOIP_DL"},
15150 {"SLIM_0_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015151 {"SLIM_0_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15152 {"SLIM_0_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15153 {"SLIM_0_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15154 {"SLIMBUS_0_RX", NULL, "SLIM_0_RX_Voice Mixer"},
15155
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015156 {"SLIM_6_RX_Voice Mixer", "Voip", "VOIP_DL"},
15157 {"SLIM_6_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015158 {"SLIM_6_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15159 {"SLIM_6_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15160 {"SLIM_6_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15161 {"SLIMBUS_6_RX", NULL, "SLIM_6_RX_Voice Mixer"},
15162
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015163 {"USB_AUDIO_RX_Voice Mixer", "Voip", "VOIP_DL"},
15164 {"USB_AUDIO_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015165 {"USB_AUDIO_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15166 {"USB_AUDIO_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15167 {"USB_AUDIO_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15168 {"USB_AUDIO_RX", NULL, "USB_AUDIO_RX_Voice Mixer"},
15169
Aalique Grahamee4fd7d52017-11-28 13:24:13 -080015170 {"DISPLAY_PORT_RX_Voice Mixer", "Voip", "VOIP_DL"},
15171 {"DISPLAY_PORT_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Aalique Grahamee4fd7d52017-11-28 13:24:13 -080015172 {"DISPLAY_PORT_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15173 {"DISPLAY_PORT_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15174 {"DISPLAY_PORT_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15175 {"DISPLAY_PORT", NULL, "DISPLAY_PORT_RX_Voice Mixer"},
15176
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015177 {"INTERNAL_BT_SCO_RX_Voice Mixer", "Voip", "VOIP_DL"},
15178 {"INTERNAL_BT_SCO_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15179 {"INTERNAL_BT_SCO_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15180 {"INTERNAL_BT_SCO_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15181 {"INTERNAL_BT_SCO_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015182 {"INT_BT_SCO_RX", NULL, "INTERNAL_BT_SCO_RX_Voice Mixer"},
15183
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015184 {"AFE_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
15185 {"AFE_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15186 {"AFE_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15187 {"AFE_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15188 {"AFE_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15189 {"PCM_RX", NULL, "AFE_PCM_RX_Voice Mixer"},
15190
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015191 {"AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
15192 {"AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015193 {"AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15194 {"AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15195 {"AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15196 {"AUX_PCM_RX", NULL, "AUX_PCM_RX_Voice Mixer"},
15197
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015198 {"SEC_AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
15199 {"SEC_AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015200 {"SEC_AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15201 {"SEC_AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15202 {"SEC_AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15203 {"SEC_AUX_PCM_RX", NULL, "SEC_AUX_PCM_RX_Voice Mixer"},
15204
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015205 {"TERT_AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
15206 {"TERT_AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015207 {"TERT_AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15208 {"TERT_AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15209 {"TERT_AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15210 {"TERT_AUX_PCM_RX", NULL, "TERT_AUX_PCM_RX_Voice Mixer"},
15211
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015212 {"QUAT_AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
15213 {"QUAT_AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015214 {"QUAT_AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15215 {"QUAT_AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15216 {"QUAT_AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15217 {"QUAT_AUX_PCM_RX", NULL, "QUAT_AUX_PCM_RX_Voice Mixer"},
15218
Rohit Kumara5077932017-09-10 22:05:05 +053015219 {"QUIN_AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
15220 {"QUIN_AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Rohit Kumara5077932017-09-10 22:05:05 +053015221 {"QUIN_AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15222 {"QUIN_AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15223 {"QUIN_AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15224 {"QUIN_AUX_PCM_RX", NULL, "QUIN_AUX_PCM_RX_Voice Mixer"},
15225
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015226 {"HDMI_RX_Voice Mixer", "Voip", "VOIP_DL"},
15227 {"HDMI_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15228 {"HDMI_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15229 {"HDMI_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15230 {"HDMI_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15231 {"HDMI", NULL, "HDMI_RX_Voice Mixer"},
15232 {"HDMI", NULL, "HDMI_DL_HL"},
15233
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015234 {"MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015235 {"MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15236 {"MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15237 {"MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
kunleiz8a60b822017-10-11 15:04:02 +080015238 {"MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015239 {"MI2S_RX", NULL, "MI2S_RX_Voice Mixer"},
15240
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015241 {"PRI_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015242 {"PRI_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15243 {"PRI_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15244 {"PRI_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15245 {"PRI_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15246 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX_Voice Mixer"},
15247
15248 {"INT0_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
15249 {"INT0_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15250 {"INT0_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15251 {"INT0_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15252 {"INT0_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15253 {"INT0_MI2S_RX", NULL, "INT0_MI2S_RX_Voice Mixer"},
15254
15255 {"INT4_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
15256 {"INT4_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15257 {"INT4_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15258 {"INT4_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15259 {"INT4_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15260 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX_Voice Mixer"},
15261
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015262 {"TERT_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015263 {"TERT_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15264 {"TERT_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15265 {"TERT_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15266 {"TERT_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15267 {"TERT_MI2S_RX", NULL, "TERT_MI2S_RX_Voice Mixer"},
15268
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015269 {"QUAT_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015270 {"QUAT_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15271 {"QUAT_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15272 {"QUAT_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15273 {"QUAT_MI2S_RX", NULL, "QUAT_MI2S_RX_Voice Mixer"},
15274
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015275 {"QUIN_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015276 {"QUIN_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15277 {"QUIN_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15278 {"QUIN_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15279 {"QUIN_MI2S_RX", NULL, "QUIN_MI2S_RX_Voice Mixer"},
15280
15281 {"QUAT_TDM_RX_2_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15282 {"QUAT_TDM_RX_2", NULL, "QUAT_TDM_RX_2_Voice Mixer"},
15283
15284 {"VOC_EXT_EC MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15285 {"VOC_EXT_EC MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15286 {"VOC_EXT_EC MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15287 {"VOC_EXT_EC MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015288 {"VOC_EXT_EC MUX", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015289 {"VOC_EXT_EC MUX", "SLIM_1_TX", "SLIMBUS_1_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015290 {"VOIP_UL", NULL, "VOC_EXT_EC MUX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015291 {"VOICEMMODE1_UL", NULL, "VOC_EXT_EC MUX"},
15292 {"VOICEMMODE2_UL", NULL, "VOC_EXT_EC MUX"},
15293
15294 {"AUDIO_REF_EC_UL1 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15295 {"AUDIO_REF_EC_UL1 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15296 {"AUDIO_REF_EC_UL1 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15297 {"AUDIO_REF_EC_UL1 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15298 {"AUDIO_REF_EC_UL1 MUX", "SLIM_1_TX", "SLIMBUS_1_TX"},
15299 {"AUDIO_REF_EC_UL1 MUX", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15300 {"AUDIO_REF_EC_UL1 MUX", "QUAT_TDM_RX_0", "QUAT_TDM_RX_0"},
15301 {"AUDIO_REF_EC_UL1 MUX", "QUAT_TDM_RX_1", "QUAT_TDM_RX_1"},
15302 {"AUDIO_REF_EC_UL1 MUX", "QUAT_TDM_RX_2", "QUAT_TDM_RX_2"},
15303 {"AUDIO_REF_EC_UL1 MUX", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15304
15305 {"AUDIO_REF_EC_UL2 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15306 {"AUDIO_REF_EC_UL2 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15307 {"AUDIO_REF_EC_UL2 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15308 {"AUDIO_REF_EC_UL2 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15309
15310 {"AUDIO_REF_EC_UL3 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15311 {"AUDIO_REF_EC_UL3 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15312 {"AUDIO_REF_EC_UL3 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15313 {"AUDIO_REF_EC_UL3 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15314
15315 {"AUDIO_REF_EC_UL4 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15316 {"AUDIO_REF_EC_UL4 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15317 {"AUDIO_REF_EC_UL4 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15318 {"AUDIO_REF_EC_UL4 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15319
15320 {"AUDIO_REF_EC_UL5 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15321 {"AUDIO_REF_EC_UL5 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15322 {"AUDIO_REF_EC_UL5 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15323 {"AUDIO_REF_EC_UL5 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15324
15325 {"AUDIO_REF_EC_UL6 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15326 {"AUDIO_REF_EC_UL6 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15327 {"AUDIO_REF_EC_UL6 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15328 {"AUDIO_REF_EC_UL6 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15329
15330 {"AUDIO_REF_EC_UL8 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15331 {"AUDIO_REF_EC_UL8 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15332 {"AUDIO_REF_EC_UL8 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15333 {"AUDIO_REF_EC_UL8 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15334
15335 {"AUDIO_REF_EC_UL9 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15336 {"AUDIO_REF_EC_UL9 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15337 {"AUDIO_REF_EC_UL9 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15338 {"AUDIO_REF_EC_UL9 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15339
Laxminath Kasam38070be2017-08-17 18:21:59 +053015340 {"AUDIO_REF_EC_UL10 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15341 {"AUDIO_REF_EC_UL10 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15342 {"AUDIO_REF_EC_UL10 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15343 {"AUDIO_REF_EC_UL10 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15344 {"AUDIO_REF_EC_UL10 MUX", "SLIM_1_TX", "SLIMBUS_1_TX"},
15345 {"AUDIO_REF_EC_UL10 MUX", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15346 {"AUDIO_REF_EC_UL10 MUX", "QUAT_TDM_RX_0", "QUAT_TDM_RX_0"},
15347 {"AUDIO_REF_EC_UL10 MUX", "QUAT_TDM_RX_1", "QUAT_TDM_RX_1"},
15348 {"AUDIO_REF_EC_UL10 MUX", "QUAT_TDM_RX_2", "QUAT_TDM_RX_2"},
15349 {"AUDIO_REF_EC_UL10 MUX", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
Vikram Panduranga016c49f2017-09-11 15:15:56 -070015350
15351 {"AUDIO_REF_EC_UL16 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15352 {"AUDIO_REF_EC_UL16 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15353 {"AUDIO_REF_EC_UL16 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15354 {"AUDIO_REF_EC_UL16 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15355
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015356 {"AUDIO_REF_EC_UL17 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15357 {"AUDIO_REF_EC_UL17 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15358 {"AUDIO_REF_EC_UL17 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15359 {"AUDIO_REF_EC_UL17 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15360
15361 {"AUDIO_REF_EC_UL18 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15362 {"AUDIO_REF_EC_UL18 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15363 {"AUDIO_REF_EC_UL18 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15364 {"AUDIO_REF_EC_UL18 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15365
15366 {"AUDIO_REF_EC_UL19 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15367 {"AUDIO_REF_EC_UL19 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15368 {"AUDIO_REF_EC_UL19 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15369 {"AUDIO_REF_EC_UL19 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15370
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053015371 {"AUDIO_REF_EC_UL28 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15372 {"AUDIO_REF_EC_UL28 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15373 {"AUDIO_REF_EC_UL28 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15374 {"AUDIO_REF_EC_UL28 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15375
15376 {"AUDIO_REF_EC_UL29 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15377 {"AUDIO_REF_EC_UL29 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15378 {"AUDIO_REF_EC_UL29 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15379 {"AUDIO_REF_EC_UL29 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Yunfei Zhang3efc4a22017-11-07 16:30:13 +080015380
15381 {"LSM1_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15382 {"LSM2_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15383 {"LSM3_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15384 {"LSM4_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15385 {"LSM5_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15386 {"LSM6_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15387 {"LSM7_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15388 {"LSM8_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15389
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015390 {"MM_UL1", NULL, "AUDIO_REF_EC_UL1 MUX"},
15391 {"MM_UL2", NULL, "AUDIO_REF_EC_UL2 MUX"},
15392 {"MM_UL3", NULL, "AUDIO_REF_EC_UL3 MUX"},
15393 {"MM_UL4", NULL, "AUDIO_REF_EC_UL4 MUX"},
15394 {"MM_UL5", NULL, "AUDIO_REF_EC_UL5 MUX"},
15395 {"MM_UL6", NULL, "AUDIO_REF_EC_UL6 MUX"},
15396 {"MM_UL8", NULL, "AUDIO_REF_EC_UL8 MUX"},
15397 {"MM_UL9", NULL, "AUDIO_REF_EC_UL9 MUX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053015398 {"MM_UL10", NULL, "AUDIO_REF_EC_UL10 MUX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053015399 {"MM_UL16", NULL, "AUDIO_REF_EC_UL16 MUX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015400 {"MM_UL17", NULL, "AUDIO_REF_EC_UL17 MUX"},
15401 {"MM_UL18", NULL, "AUDIO_REF_EC_UL18 MUX"},
15402 {"MM_UL19", NULL, "AUDIO_REF_EC_UL19 MUX"},
Sachin Mohan Gadag265d94d2018-01-04 11:04:00 +053015403 {"MM_UL28", NULL, "AUDIO_REF_EC_UL28 MUX"},
15404 {"MM_UL29", NULL, "AUDIO_REF_EC_UL29 MUX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015405
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015406 {"VoiceMMode1_Tx Mixer", "PRI_TX_MMode1", "PRI_I2S_TX"},
15407 {"VoiceMMode1_Tx Mixer", "PRI_MI2S_TX_MMode1", "PRI_MI2S_TX"},
15408 {"VoiceMMode1_Tx Mixer", "MI2S_TX_MMode1", "MI2S_TX"},
15409 {"VoiceMMode1_Tx Mixer", "TERT_MI2S_TX_MMode1", "TERT_MI2S_TX"},
15410 {"VoiceMMode1_Tx Mixer", "INT3_MI2S_TX_MMode1", "INT3_MI2S_TX"},
15411 {"VoiceMMode1_Tx Mixer", "SLIM_0_TX_MMode1", "SLIMBUS_0_TX"},
15412 {"VoiceMMode1_Tx Mixer", "SLIM_7_TX_MMode1", "SLIMBUS_7_TX"},
15413 {"VoiceMMode1_Tx Mixer", "SLIM_8_TX_MMode1", "SLIMBUS_8_TX"},
15414 {"VoiceMMode1_Tx Mixer", "USB_AUDIO_TX_MMode1", "USB_AUDIO_TX"},
15415 {"VoiceMMode1_Tx Mixer", "INT_BT_SCO_TX_MMode1", "INT_BT_SCO_TX"},
15416 {"VoiceMMode1_Tx Mixer", "AFE_PCM_TX_MMode1", "PCM_TX"},
15417 {"VoiceMMode1_Tx Mixer", "AUX_PCM_TX_MMode1", "AUX_PCM_TX"},
15418 {"VoiceMMode1_Tx Mixer", "SEC_AUX_PCM_TX_MMode1", "SEC_AUX_PCM_TX"},
15419 {"VoiceMMode1_Tx Mixer", "TERT_AUX_PCM_TX_MMode1", "TERT_AUX_PCM_TX"},
15420 {"VoiceMMode1_Tx Mixer", "QUAT_AUX_PCM_TX_MMode1", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015421 {"VoiceMMode1_Tx Mixer", "QUIN_AUX_PCM_TX_MMode1", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015422 {"VoiceMMode1_Tx Mixer", "QUAT_TDM_TX_0_MMode1", "QUAT_TDM_TX_0"},
Aditya Bavanari769c3102018-02-23 16:34:40 +053015423 {"VoiceMMode1_Tx Mixer", "QUAT_MI2S_TX_MMode1", "QUAT_MI2S_TX"},
15424 {"VoiceMMode1_Tx Mixer", "QUIN_MI2S_TX_MMode1", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015425 {"VOICEMMODE1_UL", NULL, "VoiceMMode1_Tx Mixer"},
15426
15427 {"VoiceMMode2_Tx Mixer", "PRI_TX_MMode2", "PRI_I2S_TX"},
15428 {"VoiceMMode2_Tx Mixer", "PRI_MI2S_TX_MMode2", "PRI_MI2S_TX"},
15429 {"VoiceMMode2_Tx Mixer", "MI2S_TX_MMode2", "MI2S_TX"},
15430 {"VoiceMMode2_Tx Mixer", "TERT_MI2S_TX_MMode2", "TERT_MI2S_TX"},
15431 {"VoiceMMode2_Tx Mixer", "INT3_MI2S_TX_MMode2", "INT3_MI2S_TX"},
15432 {"VoiceMMode2_Tx Mixer", "SLIM_0_TX_MMode2", "SLIMBUS_0_TX"},
15433 {"VoiceMMode2_Tx Mixer", "SLIM_7_TX_MMode2", "SLIMBUS_7_TX"},
15434 {"VoiceMMode2_Tx Mixer", "SLIM_8_TX_MMode2", "SLIMBUS_8_TX"},
15435 {"VoiceMMode2_Tx Mixer", "USB_AUDIO_TX_MMode2", "USB_AUDIO_TX"},
15436 {"VoiceMMode2_Tx Mixer", "INT_BT_SCO_TX_MMode2", "INT_BT_SCO_TX"},
15437 {"VoiceMMode2_Tx Mixer", "AFE_PCM_TX_MMode2", "PCM_TX"},
15438 {"VoiceMMode2_Tx Mixer", "AUX_PCM_TX_MMode2", "AUX_PCM_TX"},
15439 {"VoiceMMode2_Tx Mixer", "SEC_AUX_PCM_TX_MMode2", "SEC_AUX_PCM_TX"},
15440 {"VoiceMMode2_Tx Mixer", "TERT_AUX_PCM_TX_MMode2", "TERT_AUX_PCM_TX"},
15441 {"VoiceMMode2_Tx Mixer", "QUAT_AUX_PCM_TX_MMode2", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015442 {"VoiceMMode2_Tx Mixer", "QUIN_AUX_PCM_TX_MMode2", "QUIN_AUX_PCM_TX"},
Aditya Bavanari769c3102018-02-23 16:34:40 +053015443 {"VoiceMMode2_Tx Mixer", "QUAT_MI2S_TX_MMode2", "QUAT_MI2S_TX"},
15444 {"VoiceMMode2_Tx Mixer", "QUIN_MI2S_TX_MMode2", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015445 {"VOICEMMODE2_UL", NULL, "VoiceMMode2_Tx Mixer"},
15446
15447 {"Voip_Tx Mixer", "PRI_TX_Voip", "PRI_I2S_TX"},
15448 {"Voip_Tx Mixer", "MI2S_TX_Voip", "MI2S_TX"},
15449 {"Voip_Tx Mixer", "TERT_MI2S_TX_Voip", "TERT_MI2S_TX"},
15450 {"Voip_Tx Mixer", "INT3_MI2S_TX_Voip", "INT3_MI2S_TX"},
15451 {"Voip_Tx Mixer", "SLIM_0_TX_Voip", "SLIMBUS_0_TX"},
15452 {"Voip_Tx Mixer", "SLIM_7_TX_Voip", "SLIMBUS_7_TX"},
15453 {"Voip_Tx Mixer", "SLIM_8_TX_Voip", "SLIMBUS_8_TX"},
15454 {"Voip_Tx Mixer", "USB_AUDIO_TX_Voip", "USB_AUDIO_TX"},
15455 {"Voip_Tx Mixer", "INTERNAL_BT_SCO_TX_Voip", "INT_BT_SCO_TX"},
15456 {"Voip_Tx Mixer", "AFE_PCM_TX_Voip", "PCM_TX"},
15457 {"Voip_Tx Mixer", "AUX_PCM_TX_Voip", "AUX_PCM_TX"},
15458 {"Voip_Tx Mixer", "SEC_AUX_PCM_TX_Voip", "SEC_AUX_PCM_TX"},
15459 {"Voip_Tx Mixer", "TERT_AUX_PCM_TX_Voip", "TERT_AUX_PCM_TX"},
15460 {"Voip_Tx Mixer", "QUAT_AUX_PCM_TX_Voip", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015461 {"Voip_Tx Mixer", "QUIN_AUX_PCM_TX_Voip", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015462 {"Voip_Tx Mixer", "PRI_MI2S_TX_Voip", "PRI_MI2S_TX"},
15463 {"VOIP_UL", NULL, "Voip_Tx Mixer"},
15464
15465 {"SLIMBUS_DL_HL", "Switch", "SLIM0_DL_HL"},
15466 {"SLIMBUS_0_RX", NULL, "SLIMBUS_DL_HL"},
15467 {"SLIMBUS1_DL_HL", "Switch", "SLIM1_DL_HL"},
15468 {"SLIMBUS_1_RX", NULL, "SLIMBUS1_DL_HL"},
15469 {"SLIMBUS3_DL_HL", "Switch", "SLIM3_DL_HL"},
15470 {"SLIMBUS_3_RX", NULL, "SLIMBUS3_DL_HL"},
15471 {"SLIMBUS4_DL_HL", "Switch", "SLIM4_DL_HL"},
15472 {"SLIMBUS_4_RX", NULL, "SLIMBUS4_DL_HL"},
15473 {"SLIMBUS6_DL_HL", "Switch", "SLIM0_DL_HL"},
15474 {"SLIMBUS_6_RX", NULL, "SLIMBUS6_DL_HL"},
15475 {"SLIM0_UL_HL", NULL, "SLIMBUS_0_TX"},
15476 {"SLIM1_UL_HL", NULL, "SLIMBUS_1_TX"},
15477 {"SLIM3_UL_HL", NULL, "SLIMBUS_3_TX"},
15478 {"SLIM4_UL_HL", NULL, "SLIMBUS_4_TX"},
15479 {"SLIM8_UL_HL", NULL, "SLIMBUS_8_TX"},
15480
15481 {"LSM1 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15482 {"LSM1 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15483 {"LSM1 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15484 {"LSM1 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15485 {"LSM1 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15486 {"LSM1 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15487 {"LSM1 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15488 {"LSM1 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
15489 {"LSM1_UL_HL", NULL, "LSM1 Mixer"},
15490
15491 {"LSM2 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15492 {"LSM2 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15493 {"LSM2 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15494 {"LSM2 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15495 {"LSM2 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15496 {"LSM2 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15497 {"LSM2 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15498 {"LSM2 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
15499 {"LSM2_UL_HL", NULL, "LSM2 Mixer"},
15500
15501
15502 {"LSM3 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15503 {"LSM3 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15504 {"LSM3 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15505 {"LSM3 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15506 {"LSM3 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15507 {"LSM3 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15508 {"LSM3 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15509 {"LSM3 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
15510 {"LSM3_UL_HL", NULL, "LSM3 Mixer"},
15511
15512
15513 {"LSM4 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15514 {"LSM4 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15515 {"LSM4 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15516 {"LSM4 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15517 {"LSM4 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15518 {"LSM4 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15519 {"LSM4 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15520 {"LSM4 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
15521 {"LSM4_UL_HL", NULL, "LSM4 Mixer"},
15522
15523 {"LSM5 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15524 {"LSM5 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15525 {"LSM5 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15526 {"LSM5 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15527 {"LSM5 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15528 {"LSM5 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15529 {"LSM5 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15530 {"LSM5 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
15531 {"LSM5_UL_HL", NULL, "LSM5 Mixer"},
15532
15533 {"LSM6 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15534 {"LSM6 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15535 {"LSM6 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15536 {"LSM6 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15537 {"LSM6 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15538 {"LSM6 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15539 {"LSM6_UL_HL", NULL, "LSM6 Mixer"},
15540
15541 {"LSM7 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15542 {"LSM7 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15543 {"LSM7 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15544 {"LSM7 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15545 {"LSM7 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15546 {"LSM7 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15547 {"LSM7_UL_HL", NULL, "LSM7 Mixer"},
15548
15549 {"LSM8 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15550 {"LSM8 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15551 {"LSM8 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15552 {"LSM8 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15553 {"LSM8 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15554 {"LSM8 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15555 {"LSM8_UL_HL", NULL, "LSM8 Mixer"},
15556
15557
15558 {"CPE_LSM_UL_HL", NULL, "BE_IN"},
15559 {"QCHAT_Tx Mixer", "PRI_TX_QCHAT", "PRI_I2S_TX"},
15560 {"QCHAT_Tx Mixer", "SLIM_0_TX_QCHAT", "SLIMBUS_0_TX"},
15561 {"QCHAT_Tx Mixer", "SLIM_7_TX_QCHAT", "SLIMBUS_7_TX"},
15562 {"QCHAT_Tx Mixer", "SLIM_8_TX_QCHAT", "SLIMBUS_8_TX"},
15563 {"QCHAT_Tx Mixer", "INTERNAL_BT_SCO_TX_QCHAT", "INT_BT_SCO_TX"},
15564 {"QCHAT_Tx Mixer", "AFE_PCM_TX_QCHAT", "PCM_TX"},
15565 {"QCHAT_Tx Mixer", "AUX_PCM_TX_QCHAT", "AUX_PCM_TX"},
15566 {"QCHAT_Tx Mixer", "SEC_AUX_PCM_TX_QCHAT", "SEC_AUX_PCM_TX"},
15567 {"QCHAT_Tx Mixer", "TERT_AUX_PCM_TX_QCHAT", "TERT_AUX_PCM_TX"},
15568 {"QCHAT_Tx Mixer", "QUAT_AUX_PCM_TX_QCHAT", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015569 {"QCHAT_Tx Mixer", "QUIN_AUX_PCM_TX_QCHAT", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015570 {"QCHAT_Tx Mixer", "MI2S_TX_QCHAT", "MI2S_TX"},
15571 {"QCHAT_Tx Mixer", "PRI_MI2S_TX_QCHAT", "PRI_MI2S_TX"},
15572 {"QCHAT_Tx Mixer", "TERT_MI2S_TX_QCHAT", "TERT_MI2S_TX"},
15573 {"QCHAT_Tx Mixer", "INT3_MI2S_TX_QCHAT", "INT3_MI2S_TX"},
15574 {"QCHAT_Tx Mixer", "USB_AUDIO_TX_QCHAT", "USB_AUDIO_TX"},
15575 {"QCHAT_UL", NULL, "QCHAT_Tx Mixer"},
15576
15577 {"INT_FM_RX", NULL, "INTFM_DL_HL"},
15578 {"INTFM_UL_HL", NULL, "INT_FM_TX"},
15579 {"INTHFP_UL_HL", NULL, "HFP_PRI_AUX_UL_HL"},
15580 {"HFP_PRI_AUX_UL_HL", "Switch", "AUX_PCM_TX"},
15581 {"INTHFP_UL_HL", NULL, "HFP_AUX_UL_HL"},
15582 {"HFP_AUX_UL_HL", "Switch", "SEC_AUX_PCM_TX"},
15583 {"INTHFP_UL_HL", NULL, "HFP_INT_UL_HL"},
15584 {"HFP_INT_UL_HL", "Switch", "INT_BT_SCO_TX"},
15585 {"SLIM7_UL_HL", NULL, "HFP_SLIM7_UL_HL"},
15586 {"HFP_SLIM7_UL_HL", "Switch", "SLIMBUS_7_TX"},
15587 {"AUX_PCM_RX", NULL, "AUXPCM_DL_HL"},
15588 {"AUX_PCM_RX", NULL, "INTHFP_DL_HL"},
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -080015589 {"SEC_AUX_PCM_RX", NULL, "SEC_AUXPCM_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015590 {"AUXPCM_UL_HL", NULL, "AUX_PCM_TX"},
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -080015591 {"SEC_AUXPCM_UL_HL", NULL, "SEC_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015592 {"MI2S_RX", NULL, "MI2S_DL_HL"},
15593 {"MI2S_UL_HL", NULL, "MI2S_TX"},
15594 {"PCM_RX_DL_HL", "Switch", "SLIM0_DL_HL"},
15595 {"PCM_RX", NULL, "PCM_RX_DL_HL"},
15596
15597 /* connect to INT4_MI2S_DL_HL since same pcm_id */
15598 {"INT0_MI2S_RX_DL_HL", "Switch", "INT4_MI2S_DL_HL"},
15599 {"INT0_MI2S_RX", NULL, "INT0_MI2S_RX_DL_HL"},
15600 {"INT4_MI2S_RX_DL_HL", "Switch", "INT4_MI2S_DL_HL"},
15601 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX_DL_HL"},
15602 {"PRI_MI2S_RX_DL_HL", "Switch", "PRI_MI2S_DL_HL"},
15603 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX_DL_HL"},
15604 {"SEC_MI2S_RX_DL_HL", "Switch", "SEC_MI2S_DL_HL"},
15605 {"SEC_MI2S_RX", NULL, "SEC_MI2S_RX_DL_HL"},
15606 {"TERT_MI2S_RX_DL_HL", "Switch", "TERT_MI2S_DL_HL"},
15607 {"TERT_MI2S_RX", NULL, "TERT_MI2S_RX_DL_HL"},
15608
15609 {"QUAT_MI2S_RX_DL_HL", "Switch", "QUAT_MI2S_DL_HL"},
15610 {"QUAT_MI2S_RX", NULL, "QUAT_MI2S_RX_DL_HL"},
Rohit Kumara5077932017-09-10 22:05:05 +053015611 {"QUIN_MI2S_RX_DL_HL", "Switch", "QUIN_MI2S_DL_HL"},
15612 {"QUIN_MI2S_RX", NULL, "QUIN_MI2S_RX_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015613 {"MI2S_UL_HL", NULL, "TERT_MI2S_TX"},
15614 {"INT3_MI2S_UL_HL", NULL, "INT3_MI2S_TX"},
15615 {"TERT_MI2S_UL_HL", NULL, "TERT_MI2S_TX"},
15616 {"SEC_I2S_RX", NULL, "SEC_I2S_DL_HL"},
15617 {"PRI_MI2S_UL_HL", NULL, "PRI_MI2S_TX"},
15618 {"SEC_MI2S_UL_HL", NULL, "SEC_MI2S_TX"},
15619 {"SEC_MI2S_RX", NULL, "SEC_MI2S_DL_HL"},
15620 {"PRI_MI2S_RX", NULL, "PRI_MI2S_DL_HL"},
15621 {"TERT_MI2S_RX", NULL, "TERT_MI2S_DL_HL"},
15622 {"QUAT_MI2S_UL_HL", NULL, "QUAT_MI2S_TX"},
15623
15624 {"PRI_TDM_TX_0_UL_HL", NULL, "PRI_TDM_TX_0"},
15625 {"PRI_TDM_TX_1_UL_HL", NULL, "PRI_TDM_TX_1"},
15626 {"PRI_TDM_TX_2_UL_HL", NULL, "PRI_TDM_TX_2"},
15627 {"PRI_TDM_TX_3_UL_HL", NULL, "PRI_TDM_TX_3"},
15628 {"PRI_TDM_RX_0", NULL, "PRI_TDM_RX_0_DL_HL"},
15629 {"PRI_TDM_RX_1", NULL, "PRI_TDM_RX_1_DL_HL"},
15630 {"PRI_TDM_RX_2", NULL, "PRI_TDM_RX_2_DL_HL"},
15631 {"PRI_TDM_RX_3", NULL, "PRI_TDM_RX_3_DL_HL"},
15632 {"SEC_TDM_TX_0_UL_HL", NULL, "SEC_TDM_TX_0"},
15633 {"SEC_TDM_TX_1_UL_HL", NULL, "SEC_TDM_TX_1"},
15634 {"SEC_TDM_TX_2_UL_HL", NULL, "SEC_TDM_TX_2"},
15635 {"SEC_TDM_TX_3_UL_HL", NULL, "SEC_TDM_TX_3"},
15636 {"SEC_TDM_RX_0", NULL, "SEC_TDM_RX_0_DL_HL"},
15637 {"SEC_TDM_RX_1", NULL, "SEC_TDM_RX_1_DL_HL"},
15638 {"SEC_TDM_RX_2", NULL, "SEC_TDM_RX_2_DL_HL"},
15639 {"SEC_TDM_RX_3", NULL, "SEC_TDM_RX_3_DL_HL"},
15640 {"TERT_TDM_TX_0_UL_HL", NULL, "TERT_TDM_TX_0"},
15641 {"TERT_TDM_TX_1_UL_HL", NULL, "TERT_TDM_TX_1"},
15642 {"TERT_TDM_TX_2_UL_HL", NULL, "TERT_TDM_TX_2"},
15643 {"TERT_TDM_TX_3_UL_HL", NULL, "TERT_TDM_TX_3"},
15644 {"TERT_TDM_RX_0", NULL, "TERT_TDM_RX_0_DL_HL"},
15645 {"TERT_TDM_RX_1", NULL, "TERT_TDM_RX_1_DL_HL"},
15646 {"TERT_TDM_RX_2", NULL, "TERT_TDM_RX_2_DL_HL"},
15647 {"TERT_TDM_RX_3", NULL, "TERT_TDM_RX_3_DL_HL"},
15648 {"QUAT_TDM_TX_0_UL_HL", NULL, "QUAT_TDM_TX_0"},
15649 {"QUAT_TDM_TX_1_UL_HL", NULL, "QUAT_TDM_TX_1"},
15650 {"QUAT_TDM_TX_2_UL_HL", NULL, "QUAT_TDM_TX_2"},
15651 {"QUAT_TDM_TX_3_UL_HL", NULL, "QUAT_TDM_TX_3"},
15652 {"QUAT_TDM_RX_0", NULL, "QUAT_TDM_RX_0_DL_HL"},
15653 {"QUAT_TDM_RX_1", NULL, "QUAT_TDM_RX_1_DL_HL"},
15654 {"QUAT_TDM_RX_2", NULL, "QUAT_TDM_RX_2_DL_HL"},
15655 {"QUAT_TDM_RX_3", NULL, "QUAT_TDM_RX_3_DL_HL"},
Rohit Kumara5077932017-09-10 22:05:05 +053015656 {"QUIN_TDM_TX_0_UL_HL", NULL, "QUIN_TDM_TX_0"},
15657 {"QUIN_TDM_TX_1_UL_HL", NULL, "QUIN_TDM_TX_1"},
15658 {"QUIN_TDM_TX_2_UL_HL", NULL, "QUIN_TDM_TX_2"},
15659 {"QUIN_TDM_TX_3_UL_HL", NULL, "QUIN_TDM_TX_3"},
15660 {"QUIN_TDM_RX_0", NULL, "QUIN_TDM_RX_0_DL_HL"},
15661 {"QUIN_TDM_RX_1", NULL, "QUIN_TDM_RX_1_DL_HL"},
15662 {"QUIN_TDM_RX_2", NULL, "QUIN_TDM_RX_2_DL_HL"},
15663 {"QUIN_TDM_RX_3", NULL, "QUIN_TDM_RX_3_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015664
15665 {"PRI_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15666 {"PRI_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15667 {"PRI_TDM_RX_0 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15668 {"PRI_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15669 {"PRI_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15670 {"PRI_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15671 {"PRI_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15672 {"PRI_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15673 {"PRI_TDM_RX_0 Port Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15674 {"PRI_TDM_RX_0 Port Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15675 {"PRI_TDM_RX_0 Port Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15676 {"PRI_TDM_RX_0 Port Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15677 {"PRI_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15678 {"PRI_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15679 {"PRI_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15680 {"PRI_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015681 {"PRI_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15682 {"PRI_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15683 {"PRI_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15684 {"PRI_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015685 {"PRI_TDM_RX_0", NULL, "PRI_TDM_RX_0 Port Mixer"},
15686
15687 {"PRI_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15688 {"PRI_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15689 {"PRI_TDM_RX_1 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15690 {"PRI_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15691 {"PRI_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15692 {"PRI_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15693 {"PRI_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15694 {"PRI_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15695 {"PRI_TDM_RX_1 Port Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15696 {"PRI_TDM_RX_1 Port Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15697 {"PRI_TDM_RX_1 Port Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15698 {"PRI_TDM_RX_1 Port Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15699 {"PRI_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15700 {"PRI_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15701 {"PRI_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15702 {"PRI_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015703 {"PRI_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15704 {"PRI_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15705 {"PRI_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15706 {"PRI_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015707 {"PRI_TDM_RX_1", NULL, "PRI_TDM_RX_1 Port Mixer"},
15708
15709 {"PRI_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15710 {"PRI_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15711 {"PRI_TDM_RX_2 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15712 {"PRI_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15713 {"PRI_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15714 {"PRI_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15715 {"PRI_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15716 {"PRI_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15717 {"PRI_TDM_RX_2 Port Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15718 {"PRI_TDM_RX_2 Port Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15719 {"PRI_TDM_RX_2 Port Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15720 {"PRI_TDM_RX_2 Port Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15721 {"PRI_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15722 {"PRI_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15723 {"PRI_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15724 {"PRI_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015725 {"PRI_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15726 {"PRI_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15727 {"PRI_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15728 {"PRI_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015729 {"PRI_TDM_RX_2", NULL, "PRI_TDM_RX_2 Port Mixer"},
15730
15731 {"PRI_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15732 {"PRI_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15733 {"PRI_TDM_RX_3 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15734 {"PRI_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15735 {"PRI_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15736 {"PRI_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15737 {"PRI_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15738 {"PRI_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15739 {"PRI_TDM_RX_3 Port Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15740 {"PRI_TDM_RX_3 Port Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15741 {"PRI_TDM_RX_3 Port Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15742 {"PRI_TDM_RX_3 Port Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15743 {"PRI_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15744 {"PRI_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15745 {"PRI_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15746 {"PRI_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015747 {"PRI_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15748 {"PRI_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15749 {"PRI_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15750 {"PRI_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015751 {"PRI_TDM_RX_3", NULL, "PRI_TDM_RX_3 Port Mixer"},
15752
15753 {"SEC_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15754 {"SEC_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15755 {"SEC_TDM_RX_0 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15756 {"SEC_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15757 {"SEC_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15758 {"SEC_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15759 {"SEC_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15760 {"SEC_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15761 {"SEC_TDM_RX_0 Port Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15762 {"SEC_TDM_RX_0 Port Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15763 {"SEC_TDM_RX_0 Port Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15764 {"SEC_TDM_RX_0 Port Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15765 {"SEC_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15766 {"SEC_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15767 {"SEC_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15768 {"SEC_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015769 {"SEC_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15770 {"SEC_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15771 {"SEC_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15772 {"SEC_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015773 {"SEC_TDM_RX_0", NULL, "SEC_TDM_RX_0 Port Mixer"},
15774
15775 {"SEC_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15776 {"SEC_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15777 {"SEC_TDM_RX_1 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15778 {"SEC_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15779 {"SEC_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15780 {"SEC_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15781 {"SEC_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15782 {"SEC_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15783 {"SEC_TDM_RX_1 Port Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15784 {"SEC_TDM_RX_1 Port Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15785 {"SEC_TDM_RX_1 Port Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15786 {"SEC_TDM_RX_1 Port Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15787 {"SEC_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15788 {"SEC_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15789 {"SEC_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15790 {"SEC_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015791 {"SEC_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15792 {"SEC_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15793 {"SEC_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15794 {"SEC_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015795 {"SEC_TDM_RX_1", NULL, "SEC_TDM_RX_1 Port Mixer"},
15796
15797 {"SEC_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15798 {"SEC_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15799 {"SEC_TDM_RX_2 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15800 {"SEC_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15801 {"SEC_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15802 {"SEC_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15803 {"SEC_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15804 {"SEC_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15805 {"SEC_TDM_RX_2 Port Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15806 {"SEC_TDM_RX_2 Port Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15807 {"SEC_TDM_RX_2 Port Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15808 {"SEC_TDM_RX_2 Port Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15809 {"SEC_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15810 {"SEC_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15811 {"SEC_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15812 {"SEC_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015813 {"SEC_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15814 {"SEC_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15815 {"SEC_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15816 {"SEC_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015817 {"SEC_TDM_RX_2", NULL, "SEC_TDM_RX_2 Port Mixer"},
15818
15819 {"SEC_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15820 {"SEC_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15821 {"SEC_TDM_RX_3 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15822 {"SEC_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15823 {"SEC_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15824 {"SEC_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15825 {"SEC_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15826 {"SEC_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15827 {"SEC_TDM_RX_3 Port Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15828 {"SEC_TDM_RX_3 Port Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15829 {"SEC_TDM_RX_3 Port Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15830 {"SEC_TDM_RX_3 Port Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15831 {"SEC_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15832 {"SEC_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15833 {"SEC_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15834 {"SEC_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015835 {"SEC_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15836 {"SEC_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15837 {"SEC_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15838 {"SEC_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015839 {"SEC_TDM_RX_3", NULL, "SEC_TDM_RX_3 Port Mixer"},
15840
15841 {"TERT_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15842 {"TERT_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15843 {"TERT_TDM_RX_0 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15844 {"TERT_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15845 {"TERT_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15846 {"TERT_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15847 {"TERT_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15848 {"TERT_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15849 {"TERT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15850 {"TERT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15851 {"TERT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15852 {"TERT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15853 {"TERT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15854 {"TERT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15855 {"TERT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15856 {"TERT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015857 {"TERT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15858 {"TERT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15859 {"TERT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15860 {"TERT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015861 {"TERT_TDM_RX_0", NULL, "TERT_TDM_RX_0 Port Mixer"},
15862
15863 {"TERT_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15864 {"TERT_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15865 {"TERT_TDM_RX_1 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15866 {"TERT_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15867 {"TERT_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15868 {"TERT_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15869 {"TERT_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15870 {"TERT_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15871 {"TERT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15872 {"TERT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15873 {"TERT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15874 {"TERT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15875 {"TERT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15876 {"TERT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15877 {"TERT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15878 {"TERT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015879 {"TERT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15880 {"TERT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15881 {"TERT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15882 {"TERT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015883 {"TERT_TDM_RX_1", NULL, "TERT_TDM_RX_1 Port Mixer"},
15884
15885 {"TERT_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15886 {"TERT_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15887 {"TERT_TDM_RX_2 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15888 {"TERT_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15889 {"TERT_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15890 {"TERT_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15891 {"TERT_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15892 {"TERT_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15893 {"TERT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15894 {"TERT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15895 {"TERT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15896 {"TERT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15897 {"TERT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15898 {"TERT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15899 {"TERT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15900 {"TERT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015901 {"TERT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15902 {"TERT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15903 {"TERT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15904 {"TERT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015905 {"TERT_TDM_RX_2", NULL, "TERT_TDM_RX_2 Port Mixer"},
15906
15907 {"TERT_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15908 {"TERT_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15909 {"TERT_TDM_RX_3 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15910 {"TERT_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15911 {"TERT_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15912 {"TERT_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15913 {"TERT_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15914 {"TERT_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15915 {"TERT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15916 {"TERT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15917 {"TERT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15918 {"TERT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15919 {"TERT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15920 {"TERT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15921 {"TERT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15922 {"TERT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015923 {"TERT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15924 {"TERT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15925 {"TERT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15926 {"TERT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015927 {"TERT_TDM_RX_3", NULL, "TERT_TDM_RX_3 Port Mixer"},
15928
15929 {"QUAT_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15930 {"QUAT_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15931 {"QUAT_TDM_RX_0 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15932 {"QUAT_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15933 {"QUAT_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15934 {"QUAT_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15935 {"QUAT_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15936 {"QUAT_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15937 {"QUAT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15938 {"QUAT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15939 {"QUAT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15940 {"QUAT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15941 {"QUAT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15942 {"QUAT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15943 {"QUAT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15944 {"QUAT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015945 {"QUAT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15946 {"QUAT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15947 {"QUAT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15948 {"QUAT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015949 {"QUAT_TDM_RX_0", NULL, "QUAT_TDM_RX_0 Port Mixer"},
15950
15951 {"QUAT_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15952 {"QUAT_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15953 {"QUAT_TDM_RX_1 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15954 {"QUAT_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15955 {"QUAT_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15956 {"QUAT_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15957 {"QUAT_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15958 {"QUAT_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15959 {"QUAT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15960 {"QUAT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15961 {"QUAT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15962 {"QUAT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15963 {"QUAT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15964 {"QUAT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15965 {"QUAT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15966 {"QUAT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015967 {"QUAT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15968 {"QUAT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15969 {"QUAT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15970 {"QUAT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015971 {"QUAT_TDM_RX_1", NULL, "QUAT_TDM_RX_1 Port Mixer"},
15972
15973 {"QUAT_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15974 {"QUAT_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15975 {"QUAT_TDM_RX_2 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15976 {"QUAT_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15977 {"QUAT_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15978 {"QUAT_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15979 {"QUAT_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15980 {"QUAT_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15981 {"QUAT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15982 {"QUAT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15983 {"QUAT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15984 {"QUAT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15985 {"QUAT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15986 {"QUAT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15987 {"QUAT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15988 {"QUAT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015989 {"QUAT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15990 {"QUAT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15991 {"QUAT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15992 {"QUAT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015993 {"QUAT_TDM_RX_2", NULL, "QUAT_TDM_RX_2 Port Mixer"},
15994
15995 {"QUAT_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15996 {"QUAT_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15997 {"QUAT_TDM_RX_3 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15998 {"QUAT_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15999 {"QUAT_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16000 {"QUAT_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16001 {"QUAT_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16002 {"QUAT_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16003 {"QUAT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16004 {"QUAT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16005 {"QUAT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16006 {"QUAT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16007 {"QUAT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16008 {"QUAT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16009 {"QUAT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16010 {"QUAT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016011 {"QUAT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16012 {"QUAT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16013 {"QUAT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16014 {"QUAT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016015 {"QUAT_TDM_RX_3", NULL, "QUAT_TDM_RX_3 Port Mixer"},
16016
Rohit Kumara5077932017-09-10 22:05:05 +053016017 {"QUIN_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16018 {"QUIN_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16019 {"QUIN_TDM_RX_0 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16020 {"QUIN_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16021 {"QUIN_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16022 {"QUIN_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16023 {"QUIN_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16024 {"QUIN_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16025 {"QUIN_TDM_RX_0 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16026 {"QUIN_TDM_RX_0 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16027 {"QUIN_TDM_RX_0 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16028 {"QUIN_TDM_RX_0 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16029 {"QUIN_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16030 {"QUIN_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16031 {"QUIN_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16032 {"QUIN_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
16033 {"QUIN_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16034 {"QUIN_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16035 {"QUIN_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16036 {"QUIN_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Rohit Kumarc08b14f2017-10-06 10:52:17 +053016037 {"QUIN_TDM_RX_0", NULL, "QUIN_TDM_RX_0 Port Mixer"},
Rohit Kumara5077932017-09-10 22:05:05 +053016038
16039 {"QUIN_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16040 {"QUIN_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16041 {"QUIN_TDM_RX_1 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16042 {"QUIN_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16043 {"QUIN_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16044 {"QUIN_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16045 {"QUIN_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16046 {"QUIN_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16047 {"QUIN_TDM_RX_1 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16048 {"QUIN_TDM_RX_1 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16049 {"QUIN_TDM_RX_1 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16050 {"QUIN_TDM_RX_1 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16051 {"QUIN_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16052 {"QUIN_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16053 {"QUIN_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16054 {"QUIN_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
16055 {"QUIN_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16056 {"QUIN_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16057 {"QUIN_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16058 {"QUIN_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Rohit Kumarc08b14f2017-10-06 10:52:17 +053016059 {"QUIN_TDM_RX_1", NULL, "QUIN_TDM_RX_1 Port Mixer"},
Rohit Kumara5077932017-09-10 22:05:05 +053016060
16061 {"QUIN_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16062 {"QUIN_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16063 {"QUIN_TDM_RX_2 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16064 {"QUIN_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16065 {"QUIN_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16066 {"QUIN_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16067 {"QUIN_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16068 {"QUIN_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16069 {"QUIN_TDM_RX_2 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16070 {"QUIN_TDM_RX_2 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16071 {"QUIN_TDM_RX_2 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16072 {"QUIN_TDM_RX_2 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16073 {"QUIN_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16074 {"QUIN_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16075 {"QUIN_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16076 {"QUIN_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
16077 {"QUIN_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16078 {"QUIN_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16079 {"QUIN_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16080 {"QUIN_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Rohit Kumarc08b14f2017-10-06 10:52:17 +053016081 {"QUIN_TDM_RX_2", NULL, "QUIN_TDM_RX_2 Port Mixer"},
Rohit Kumara5077932017-09-10 22:05:05 +053016082
16083 {"QUIN_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16084 {"QUIN_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16085 {"QUIN_TDM_RX_3 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16086 {"QUIN_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16087 {"QUIN_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16088 {"QUIN_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16089 {"QUIN_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16090 {"QUIN_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16091 {"QUIN_TDM_RX_3 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
16092 {"QUIN_TDM_RX_3 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
16093 {"QUIN_TDM_RX_3 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
16094 {"QUIN_TDM_RX_3 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
16095 {"QUIN_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
16096 {"QUIN_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
16097 {"QUIN_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
16098 {"QUIN_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
16099 {"QUIN_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
16100 {"QUIN_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
16101 {"QUIN_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
16102 {"QUIN_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Rohit Kumarc08b14f2017-10-06 10:52:17 +053016103 {"QUIN_TDM_RX_3", NULL, "QUIN_TDM_RX_3 Port Mixer"},
Rohit Kumara5077932017-09-10 22:05:05 +053016104
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016105 {"INT0_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16106 {"INT0_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16107 {"INT0_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16108 {"INT0_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016109 {"INT0_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016110 {"INT0_MI2S_RX Port Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
16111 {"INT0_MI2S_RX Port Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16112 {"INT0_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16113 {"INT0_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16114 {"INT0_MI2S_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16115 {"INT0_MI2S_RX", NULL, "INT0_MI2S_RX Port Mixer"},
16116
16117 {"INT4_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16118 {"INT4_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16119 {"INT4_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16120 {"INT4_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016121 {"INT4_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016122 {"INT4_MI2S_RX Port Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
16123 {"INT4_MI2S_RX Port Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16124 {"INT4_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16125 {"INT4_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16126 {"INT4_MI2S_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16127 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX Port Mixer"},
16128
16129 {"SLIMBUS_0_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16130 {"SLIMBUS_0_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16131 {"SLIMBUS_0_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16132 {"SLIMBUS_0_RX Port Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16133 {"SLIMBUS_0_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16134 {"SLIMBUS_0_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16135 {"SLIMBUS_0_RX Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16136 {"SLIMBUS_0_RX Port Mixer", "TERT_AUXPCM_UL_TX", "TERT_AUX_PCM_TX"},
16137 {"SLIMBUS_0_RX Port Mixer", "QUAT_AUXPCM_UL_TX", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016138 {"SLIMBUS_0_RX Port Mixer", "QUIN_AUXPCM_UL_TX", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016139 {"SLIMBUS_0_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16140 {"SLIMBUS_0_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16141 {"SLIMBUS_0_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16142 {"SLIMBUS_0_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16143 {"SLIMBUS_0_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016144 {"SLIMBUS_0_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016145 {"SLIMBUS_0_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16146 {"SLIMBUS_0_RX", NULL, "SLIMBUS_0_RX Port Mixer"},
16147 {"AFE_PCM_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16148 {"AFE_PCM_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16149 {"PCM_RX", NULL, "AFE_PCM_RX Port Mixer"},
16150 {"USB_AUDIO_RX Port Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
16151 {"USB_AUDIO_RX", NULL, "USB_AUDIO_RX Port Mixer"},
16152 {"USB_DL_HL", "Switch", "USBAUDIO_DL_HL"},
16153 {"USB_AUDIO_RX", NULL, "USB_DL_HL"},
16154 {"USBAUDIO_UL_HL", NULL, "USB_AUDIO_TX"},
16155
16156
16157 {"AUX_PCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16158 {"AUX_PCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16159 {"AUX_PCM_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16160 {"AUX_PCM_RX Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16161 {"AUX_PCM_RX Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -080016162 {"AUX_PCM_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016163 {"AUX_PCM_RX", NULL, "AUX_PCM_RX Port Mixer"},
16164
16165 {"SEC_AUXPCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16166 {"SEC_AUXPCM_RX Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16167 {"SEC_AUXPCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -080016168 {"SEC_AUXPCM_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016169 {"SEC_AUX_PCM_RX", NULL, "SEC_AUXPCM_RX Port Mixer"},
16170
16171 {"TERT_AUXPCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16172 {"TERT_AUXPCM_RX Port Mixer", "TERT_AUXPCM_UL_TX", "TERT_AUX_PCM_TX"},
16173 {"TERT_AUXPCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16174 {"TERT_AUX_PCM_RX", NULL, "TERT_AUXPCM_RX Port Mixer"},
16175
16176 {"QUAT_AUXPCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16177 {"QUAT_AUXPCM_RX Port Mixer", "QUAT_AUXPCM_UL_TX", "QUAT_AUX_PCM_TX"},
16178 {"QUAT_AUXPCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16179 {"QUAT_AUX_PCM_RX", NULL, "QUAT_AUXPCM_RX Port Mixer"},
16180
Rohit Kumara5077932017-09-10 22:05:05 +053016181 {"QUIN_AUXPCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16182 {"QUIN_AUXPCM_RX Port Mixer", "QUIN_AUXPCM_UL_TX", "QUIN_AUX_PCM_TX"},
16183 {"QUIN_AUXPCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16184 {"QUIN_AUX_PCM_RX", NULL, "QUIN_AUXPCM_RX Port Mixer"},
16185
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016186 {"Voice Stub Tx Mixer", "STUB_TX_HL", "STUB_TX"},
16187 {"Voice Stub Tx Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16188 {"Voice Stub Tx Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16189 {"Voice Stub Tx Mixer", "STUB_1_TX_HL", "STUB_1_TX"},
16190 {"Voice Stub Tx Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16191 {"Voice Stub Tx Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16192 {"Voice Stub Tx Mixer", "TERT_AUXPCM_UL_TX", "TERT_AUX_PCM_TX"},
16193 {"Voice Stub Tx Mixer", "QUAT_AUXPCM_UL_TX", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016194 {"Voice Stub Tx Mixer", "QUIN_AUXPCM_UL_TX", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016195 {"Voice Stub Tx Mixer", "MI2S_TX", "MI2S_TX"},
16196 {"Voice Stub Tx Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16197 {"Voice Stub Tx Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16198 {"Voice Stub Tx Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
16199 {"Voice Stub Tx Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16200 {"Voice Stub Tx Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16201 {"Voice Stub Tx Mixer", "SLIM_3_TX", "SLIMBUS_3_TX"},
16202 {"Voice Stub Tx Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16203 {"Voice Stub Tx Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16204 {"Voice Stub Tx Mixer", "AFE_PCM_TX", "PCM_TX"},
16205 {"VOICE_STUB_UL", NULL, "Voice Stub Tx Mixer"},
16206
16207 {"VoLTE Stub Tx Mixer", "STUB_TX_HL", "STUB_TX"},
16208 {"VoLTE Stub Tx Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16209 {"VoLTE Stub Tx Mixer", "STUB_1_TX_HL", "STUB_1_TX"},
16210 {"VoLTE Stub Tx Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16211 {"VoLTE Stub Tx Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16212 {"VoLTE Stub Tx Mixer", "SLIM_3_TX", "SLIMBUS_3_TX"},
16213 {"VoLTE Stub Tx Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16214 {"VoLTE Stub Tx Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16215 {"VoLTE Stub Tx Mixer", "AFE_PCM_TX", "PCM_TX"},
16216 {"VoLTE Stub Tx Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16217 {"VoLTE Stub Tx Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16218 {"VOLTE_STUB_UL", NULL, "VoLTE Stub Tx Mixer"},
16219
16220 {"Voice2 Stub Tx Mixer", "STUB_TX_HL", "STUB_TX"},
16221 {"Voice2 Stub Tx Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16222 {"Voice2 Stub Tx Mixer", "STUB_1_TX_HL", "STUB_1_TX"},
16223 {"Voice2 Stub Tx Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16224 {"Voice2 Stub Tx Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16225 {"Voice2 Stub Tx Mixer", "SLIM_3_TX", "SLIMBUS_3_TX"},
16226 {"Voice2 Stub Tx Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16227 {"Voice2 Stub Tx Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16228 {"Voice2 Stub Tx Mixer", "AFE_PCM_TX", "PCM_TX"},
16229 {"Voice2 Stub Tx Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16230 {"Voice2 Stub Tx Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16231 {"VOICE2_STUB_UL", NULL, "Voice2 Stub Tx Mixer"},
16232
kunleizdf5a00a2017-11-27 15:27:36 +080016233 {"STUB_RX Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
16234 {"STUB_RX Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016235 {"STUB_RX", NULL, "STUB_RX Mixer"},
kunleizdf5a00a2017-11-27 15:27:36 +080016236
16237 {"SLIMBUS_1_RX Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
16238 {"SLIMBUS_1_RX Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016239 {"SLIMBUS_1_RX", NULL, "SLIMBUS_1_RX Mixer"},
kunleizdf5a00a2017-11-27 15:27:36 +080016240
16241 {"SLIMBUS_3_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
16242 {"SLIMBUS_3_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016243 {"SLIMBUS_3_RX", NULL, "SLIMBUS_3_RX_Voice Mixer"},
16244
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016245 {"SLIM_7_RX_Voice Mixer", "Voip", "VOIP_DL"},
16246 {"SLIM_7_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016247 {"SLIM_7_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
16248 {"SLIM_7_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
16249 {"SLIM_7_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
16250 {"SLIMBUS_7_RX", NULL, "SLIM_7_RX_Voice Mixer"},
16251
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016252 {"SLIM_8_RX_Voice Mixer", "Voip", "VOIP_DL"},
16253 {"SLIM_8_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016254 {"SLIM_8_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
16255 {"SLIM_8_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
16256 {"SLIM_8_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
16257 {"SLIMBUS_8_RX", NULL, "SLIM_8_RX_Voice Mixer"},
16258
16259 {"SLIMBUS_1_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16260 {"SLIMBUS_1_RX Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16261 {"SLIMBUS_1_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16262 {"SLIMBUS_1_RX", NULL, "SLIMBUS_1_RX Port Mixer"},
16263 {"INTERNAL_BT_SCO_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16264 {"INTERNAL_BT_SCO_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16265 {"INT_BT_SCO_RX", NULL, "INTERNAL_BT_SCO_RX Port Mixer"},
16266 {"SLIMBUS_3_RX Port Mixer", "INTERNAL_BT_SCO_RX", "INT_BT_SCO_RX"},
16267 {"SLIMBUS_3_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16268 {"SLIMBUS_3_RX Port Mixer", "AFE_PCM_RX", "PCM_RX"},
16269 {"SLIMBUS_3_RX Port Mixer", "AUX_PCM_RX", "AUX_PCM_RX"},
16270 {"SLIMBUS_3_RX Port Mixer", "SLIM_0_RX", "SLIMBUS_0_RX"},
16271 {"SLIMBUS_3_RX", NULL, "SLIMBUS_3_RX Port Mixer"},
16272
16273 {"SLIMBUS_6_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16274 {"SLIMBUS_6_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16275 {"SLIMBUS_6_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16276 {"SLIMBUS_6_RX Port Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16277 {"SLIMBUS_6_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16278 {"SLIMBUS_6_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16279 {"SLIMBUS_6_RX Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16280 {"SLIMBUS_6_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16281 {"SLIMBUS_6_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16282 {"SLIMBUS_6_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16283 {"SLIMBUS_6_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16284 {"SLIMBUS_6_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16285 {"SLIMBUS_6_RX", NULL, "SLIMBUS_6_RX Port Mixer"},
16286
16287 {"HDMI_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16288 {"HDMI", NULL, "HDMI_RX Port Mixer"},
16289
16290 {"DISPLAY_PORT_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16291 {"DISPLAY_PORT", NULL, "DISPLAY_PORT_RX Port Mixer"},
16292
16293 {"SEC_I2S_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16294 {"SEC_I2S_RX", NULL, "SEC_I2S_RX Port Mixer"},
16295
16296 {"MI2S_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16297 {"MI2S_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16298 {"MI2S_RX", NULL, "MI2S_RX Port Mixer"},
16299
16300 {"PRI_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16301 {"PRI_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16302 {"PRI_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16303 {"PRI_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016304 {"PRI_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016305 {"PRI_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16306 {"PRI_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16307 {"PRI_MI2S_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16308 {"PRI_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -080016309 {"PRI_MI2S_RX Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016310 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX Port Mixer"},
16311
16312 {"SEC_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16313 {"SEC_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16314 {"SEC_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16315 {"SEC_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016316 {"SEC_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016317 {"SEC_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16318 {"SEC_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16319 {"SEC_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -080016320 {"SEC_MI2S_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016321 {"SEC_MI2S_RX", NULL, "SEC_MI2S_RX Port Mixer"},
16322
16323 {"TERT_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16324 {"TERT_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16325 {"TERT_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16326 {"TERT_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016327 {"TERT_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016328 {"TERT_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16329 {"TERT_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16330 {"TERT_MI2S_RX", NULL, "TERT_MI2S_RX Port Mixer"},
16331
16332 {"QUAT_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16333 {"QUAT_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16334 {"QUAT_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16335 {"QUAT_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016336 {"QUAT_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016337 {"QUAT_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16338 {"QUAT_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16339 {"QUAT_MI2S_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16340 {"QUAT_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16341 {"QUAT_MI2S_RX", NULL, "QUAT_MI2S_RX Port Mixer"},
16342
Rohit Kumara5077932017-09-10 22:05:05 +053016343 {"QUIN_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16344 {"QUIN_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16345 {"QUIN_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16346 {"QUIN_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16347 {"QUIN_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
16348 {"QUIN_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16349 {"QUIN_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16350 {"QUIN_MI2S_RX", NULL, "QUIN_MI2S_RX Port Mixer"},
16351
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016352 /* Backend Enablement */
16353
16354 {"BE_OUT", NULL, "PRI_I2S_RX"},
16355 {"BE_OUT", NULL, "SEC_I2S_RX"},
16356 {"BE_OUT", NULL, "SLIMBUS_0_RX"},
16357 {"BE_OUT", NULL, "SLIMBUS_1_RX"},
16358 {"BE_OUT", NULL, "SLIMBUS_2_RX"},
16359 {"BE_OUT", NULL, "SLIMBUS_3_RX"},
16360 {"BE_OUT", NULL, "SLIMBUS_4_RX"},
16361 {"BE_OUT", NULL, "SLIMBUS_5_RX"},
16362 {"BE_OUT", NULL, "SLIMBUS_6_RX"},
16363 {"BE_OUT", NULL, "SLIMBUS_7_RX"},
16364 {"BE_OUT", NULL, "SLIMBUS_8_RX"},
16365 {"BE_OUT", NULL, "USB_AUDIO_RX"},
16366 {"BE_OUT", NULL, "HDMI"},
16367 {"BE_OUT", NULL, "DISPLAY_PORT"},
16368 {"BE_OUT", NULL, "SPDIF_RX"},
16369 {"BE_OUT", NULL, "MI2S_RX"},
16370 {"BE_OUT", NULL, "QUAT_MI2S_RX"},
16371 {"BE_OUT", NULL, "QUIN_MI2S_RX"},
16372 {"BE_OUT", NULL, "TERT_MI2S_RX"},
16373 {"BE_OUT", NULL, "SEC_MI2S_RX"},
16374 {"BE_OUT", NULL, "SEC_MI2S_RX_SD1"},
16375 {"BE_OUT", NULL, "PRI_MI2S_RX"},
16376 {"BE_OUT", NULL, "INT0_MI2S_RX"},
16377 {"BE_OUT", NULL, "INT4_MI2S_RX"},
Laxminath Kasam52697fe2017-11-29 15:44:14 +053016378 {"BE_OUT", NULL, "INT2_MI2S_RX"},
16379 {"BE_OUT", NULL, "INT3_MI2S_RX"},
16380 {"BE_OUT", NULL, "INT5_MI2S_RX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016381 {"BE_OUT", NULL, "INT_BT_SCO_RX"},
16382 {"BE_OUT", NULL, "INT_BT_A2DP_RX"},
16383 {"BE_OUT", NULL, "INT_FM_RX"},
16384 {"BE_OUT", NULL, "PCM_RX"},
16385 {"BE_OUT", NULL, "SLIMBUS_3_RX"},
16386 {"BE_OUT", NULL, "AUX_PCM_RX"},
16387 {"BE_OUT", NULL, "SEC_AUX_PCM_RX"},
16388 {"BE_OUT", NULL, "TERT_AUX_PCM_RX"},
16389 {"BE_OUT", NULL, "QUAT_AUX_PCM_RX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016390 {"BE_OUT", NULL, "QUIN_AUX_PCM_RX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016391 {"BE_OUT", NULL, "INT_BT_SCO_RX"},
16392 {"BE_OUT", NULL, "INT_FM_RX"},
16393 {"BE_OUT", NULL, "PCM_RX"},
16394 {"BE_OUT", NULL, "SLIMBUS_3_RX"},
16395 {"BE_OUT", NULL, "VOICE_PLAYBACK_TX"},
16396 {"BE_OUT", NULL, "VOICE2_PLAYBACK_TX"},
16397 {"BE_OUT", NULL, "PRI_TDM_RX_0"},
16398 {"BE_OUT", NULL, "PRI_TDM_RX_1"},
16399 {"BE_OUT", NULL, "PRI_TDM_RX_2"},
16400 {"BE_OUT", NULL, "PRI_TDM_RX_3"},
16401 {"BE_OUT", NULL, "SEC_TDM_RX_0"},
16402 {"BE_OUT", NULL, "SEC_TDM_RX_1"},
16403 {"BE_OUT", NULL, "SEC_TDM_RX_2"},
16404 {"BE_OUT", NULL, "SEC_TDM_RX_3"},
16405 {"BE_OUT", NULL, "TERT_TDM_RX_0"},
16406 {"BE_OUT", NULL, "TERT_TDM_RX_1"},
16407 {"BE_OUT", NULL, "TERT_TDM_RX_2"},
16408 {"BE_OUT", NULL, "TERT_TDM_RX_3"},
16409 {"BE_OUT", NULL, "TERT_TDM_RX_4"},
16410 {"BE_OUT", NULL, "QUAT_TDM_RX_0"},
16411 {"BE_OUT", NULL, "QUAT_TDM_RX_1"},
16412 {"BE_OUT", NULL, "QUAT_TDM_RX_2"},
16413 {"BE_OUT", NULL, "QUAT_TDM_RX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016414 {"BE_OUT", NULL, "QUIN_TDM_RX_0"},
16415 {"BE_OUT", NULL, "QUIN_TDM_RX_1"},
16416 {"BE_OUT", NULL, "QUIN_TDM_RX_2"},
16417 {"BE_OUT", NULL, "QUIN_TDM_RX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016418
16419 {"PRI_I2S_TX", NULL, "BE_IN"},
16420 {"MI2S_TX", NULL, "BE_IN"},
16421 {"QUAT_MI2S_TX", NULL, "BE_IN"},
16422 {"QUIN_MI2S_TX", NULL, "BE_IN"},
16423 {"PRI_MI2S_TX", NULL, "BE_IN"},
16424 {"TERT_MI2S_TX", NULL, "BE_IN"},
Laxminath Kasam52697fe2017-11-29 15:44:14 +053016425 {"INT0_MI2S_TX", NULL, "BE_IN"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016426 {"INT2_MI2S_TX", NULL, "BE_IN"},
16427 {"INT3_MI2S_TX", NULL, "BE_IN"},
Laxminath Kasam52697fe2017-11-29 15:44:14 +053016428 {"INT4_MI2S_TX", NULL, "BE_IN"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016429 {"INT5_MI2S_TX", NULL, "BE_IN"},
16430 {"SEC_MI2S_TX", NULL, "BE_IN"},
16431 {"SENARY_MI2S_TX", NULL, "BE_IN" },
16432 {"SLIMBUS_0_TX", NULL, "BE_IN" },
16433 {"SLIMBUS_1_TX", NULL, "BE_IN" },
16434 {"SLIMBUS_3_TX", NULL, "BE_IN" },
16435 {"SLIMBUS_4_TX", NULL, "BE_IN" },
16436 {"SLIMBUS_5_TX", NULL, "BE_IN" },
16437 {"SLIMBUS_6_TX", NULL, "BE_IN" },
16438 {"SLIMBUS_7_TX", NULL, "BE_IN" },
16439 {"SLIMBUS_8_TX", NULL, "BE_IN" },
16440 {"USB_AUDIO_TX", NULL, "BE_IN" },
16441 {"INT_BT_SCO_TX", NULL, "BE_IN"},
16442 {"INT_FM_TX", NULL, "BE_IN"},
16443 {"PCM_TX", NULL, "BE_IN"},
16444 {"BE_OUT", NULL, "SLIMBUS_3_RX"},
16445 {"BE_OUT", NULL, "STUB_RX"},
16446 {"STUB_TX", NULL, "BE_IN"},
16447 {"STUB_1_TX", NULL, "BE_IN"},
16448 {"BE_OUT", NULL, "AUX_PCM_RX"},
16449 {"AUX_PCM_TX", NULL, "BE_IN"},
16450 {"SEC_AUX_PCM_TX", NULL, "BE_IN"},
16451 {"TERT_AUX_PCM_TX", NULL, "BE_IN"},
16452 {"QUAT_AUX_PCM_TX", NULL, "BE_IN"},
Rohit Kumara5077932017-09-10 22:05:05 +053016453 {"QUIN_AUX_PCM_TX", NULL, "BE_IN"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016454 {"INCALL_RECORD_TX", NULL, "BE_IN"},
16455 {"INCALL_RECORD_RX", NULL, "BE_IN"},
16456 {"SLIM0_RX_VI_FB_LCH_MUX", "SLIM4_TX", "SLIMBUS_4_TX"},
16457 {"SLIM0_RX_VI_FB_RCH_MUX", "SLIM4_TX", "SLIMBUS_4_TX"},
16458 {"PRI_MI2S_RX_VI_FB_MUX", "SENARY_TX", "SENARY_TX"},
16459 {"INT4_MI2S_RX_VI_FB_MONO_CH_MUX", "INT5_MI2S_TX", "INT5_MI2S_TX"},
16460 {"INT4_MI2S_RX_VI_FB_STEREO_CH_MUX", "INT5_MI2S_TX", "INT5_MI2S_TX"},
16461 {"SLIMBUS_0_RX", NULL, "SLIM0_RX_VI_FB_LCH_MUX"},
16462 {"SLIMBUS_0_RX", NULL, "SLIM0_RX_VI_FB_RCH_MUX"},
16463 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX_VI_FB_MUX"},
16464 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX_VI_FB_MONO_CH_MUX"},
16465 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX_VI_FB_STEREO_CH_MUX"},
16466 {"PRI_TDM_TX_0", NULL, "BE_IN"},
16467 {"PRI_TDM_TX_1", NULL, "BE_IN"},
16468 {"PRI_TDM_TX_2", NULL, "BE_IN"},
16469 {"PRI_TDM_TX_3", NULL, "BE_IN"},
16470 {"SEC_TDM_TX_0", NULL, "BE_IN"},
16471 {"SEC_TDM_TX_1", NULL, "BE_IN"},
16472 {"SEC_TDM_TX_2", NULL, "BE_IN"},
16473 {"SEC_TDM_TX_3", NULL, "BE_IN"},
16474 {"TERT_TDM_TX_0", NULL, "BE_IN"},
16475 {"TERT_TDM_TX_1", NULL, "BE_IN"},
16476 {"TERT_TDM_TX_2", NULL, "BE_IN"},
16477 {"TERT_TDM_TX_3", NULL, "BE_IN"},
16478 {"QUAT_TDM_TX_0", NULL, "BE_IN"},
16479 {"QUAT_TDM_TX_1", NULL, "BE_IN"},
16480 {"QUAT_TDM_TX_2", NULL, "BE_IN"},
16481 {"QUAT_TDM_TX_3", NULL, "BE_IN"},
Rohit Kumara5077932017-09-10 22:05:05 +053016482 {"QUIN_TDM_TX_0", NULL, "BE_IN"},
16483 {"QUIN_TDM_TX_1", NULL, "BE_IN"},
16484 {"QUIN_TDM_TX_2", NULL, "BE_IN"},
16485 {"QUIN_TDM_TX_3", NULL, "BE_IN"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016486};
16487
16488static int msm_pcm_routing_hw_params(struct snd_pcm_substream *substream,
16489 struct snd_pcm_hw_params *params)
16490{
16491 struct snd_soc_pcm_runtime *rtd = substream->private_data;
16492 unsigned int be_id = rtd->dai_link->id;
16493
16494 if (be_id >= MSM_BACKEND_DAI_MAX) {
16495 pr_err("%s: unexpected BE id %d\n", __func__, be_id);
16496 return -EINVAL;
16497 }
16498
16499 mutex_lock(&routing_lock);
16500 msm_bedais[be_id].sample_rate = params_rate(params);
16501 msm_bedais[be_id].channel = params_channels(params);
16502 msm_bedais[be_id].format = params_format(params);
16503 pr_debug("%s: BE Sample Rate (%d) format (%d) BE id %d\n",
16504 __func__, msm_bedais[be_id].sample_rate,
16505 msm_bedais[be_id].format, be_id);
16506 mutex_unlock(&routing_lock);
16507 return 0;
16508}
16509
16510static int msm_pcm_routing_close(struct snd_pcm_substream *substream)
16511{
16512 struct snd_soc_pcm_runtime *rtd = substream->private_data;
16513 unsigned int be_id = rtd->dai_link->id;
16514 int i, session_type, path_type, topology;
16515 struct msm_pcm_routing_bdai_data *bedai;
16516 struct msm_pcm_routing_fdai_data *fdai;
16517
16518 pr_debug("%s: substream->pcm->id:%s\n",
16519 __func__, substream->pcm->id);
16520
16521 if (be_id >= MSM_BACKEND_DAI_MAX) {
16522 pr_err("%s: unexpected BE id %d\n", __func__, be_id);
16523 return -EINVAL;
16524 }
16525
16526 bedai = &msm_bedais[be_id];
16527 session_type = (substream->stream == SNDRV_PCM_STREAM_PLAYBACK ?
16528 0 : 1);
16529 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
16530 path_type = ADM_PATH_PLAYBACK;
16531 else
16532 path_type = ADM_PATH_LIVE_REC;
16533
16534 mutex_lock(&routing_lock);
16535 for_each_set_bit(i, &bedai->fe_sessions[0], MSM_FRONTEND_DAI_MAX) {
16536 if (!is_mm_lsm_fe_id(i))
16537 continue;
16538 fdai = &fe_dai_map[i][session_type];
16539 if (fdai->strm_id != INVALID_SESSION) {
16540 int idx;
16541 int port_id;
16542 unsigned long copp =
16543 session_copp_map[i][session_type][be_id];
16544 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++)
16545 if (test_bit(idx, &copp))
16546 break;
16547 fdai->be_srate = bedai->sample_rate;
16548 port_id = bedai->port_id;
16549 topology = adm_get_topology_for_port_copp_idx(port_id,
16550 idx);
16551 adm_close(bedai->port_id, fdai->perf_mode, idx);
16552 pr_debug("%s: copp:%ld,idx bit fe:%d, type:%d,be:%d topology=0x%x\n",
16553 __func__, copp, i, session_type, be_id,
16554 topology);
16555 clear_bit(idx,
16556 &session_copp_map[i][session_type][be_id]);
16557 if ((fdai->perf_mode == LEGACY_PCM_MODE) &&
16558 (bedai->passthr_mode[i] == LEGACY_PCM))
16559 msm_pcm_routing_deinit_pp(bedai->port_id,
16560 topology);
16561 }
16562 }
16563
16564 bedai->active = 0;
16565 bedai->sample_rate = 0;
16566 bedai->channel = 0;
16567 for (i = 0; i < MSM_FRONTEND_DAI_MAX; i++) {
16568 if (bedai->passthr_mode[i] != LISTEN)
16569 bedai->passthr_mode[i] = LEGACY_PCM;
16570 }
16571 mutex_unlock(&routing_lock);
16572
16573 return 0;
16574}
16575
16576static int msm_pcm_routing_prepare(struct snd_pcm_substream *substream)
16577{
16578 struct snd_soc_pcm_runtime *rtd = substream->private_data;
16579 unsigned int be_id = rtd->dai_link->id;
16580 int i, path_type, topology;
16581 int session_type = INVALID_SESSION;
16582 struct msm_pcm_routing_bdai_data *bedai;
16583 u32 channels, sample_rate;
16584 uint16_t bits_per_sample = 16, voc_path_type;
16585 struct msm_pcm_routing_fdai_data *fdai;
16586 u32 session_id;
16587 struct media_format_info voc_be_media_format;
16588 bool is_lsm;
16589
16590 pr_debug("%s: substream->pcm->id:%s\n",
16591 __func__, substream->pcm->id);
16592
16593 if (be_id >= MSM_BACKEND_DAI_MAX) {
16594 pr_err("%s: unexpected BE id %d\n", __func__, be_id);
16595 return -EINVAL;
16596 }
16597
16598 bedai = &msm_bedais[be_id];
16599
16600 mutex_lock(&routing_lock);
16601 if (bedai->active == 1)
16602 goto done; /* Ignore prepare if back-end already active */
16603
16604 /* AFE port is not active at this point. However, still
16605 * go ahead setting active flag under the notion that
16606 * QDSP6 is able to handle ADM starting before AFE port
16607 * is started.
16608 */
16609 bedai->active = 1;
16610
16611 for_each_set_bit(i, &bedai->fe_sessions[0], MSM_FRONTEND_DAI_MAX) {
16612 if (!(is_mm_lsm_fe_id(i) &&
16613 route_check_fe_id_adm_support(i)))
16614 continue;
16615
16616 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
16617 if (bedai->passthr_mode[i] != LEGACY_PCM)
16618 path_type = ADM_PATH_COMPRESSED_RX;
16619 else
16620 path_type = ADM_PATH_PLAYBACK;
16621 session_type = SESSION_TYPE_RX;
16622 } else {
16623 path_type = ADM_PATH_LIVE_REC;
16624 session_type = SESSION_TYPE_TX;
16625 }
16626
16627 is_lsm = (i >= MSM_FRONTEND_DAI_LSM1) &&
16628 (i <= MSM_FRONTEND_DAI_LSM8);
16629 fdai = &fe_dai_map[i][session_type];
16630 if (fdai->strm_id != INVALID_SESSION) {
16631 int app_type, app_type_idx, copp_idx, acdb_dev_id;
16632
16633 if (session_type == SESSION_TYPE_TX &&
16634 fdai->be_srate &&
16635 (fdai->be_srate != bedai->sample_rate)) {
16636 pr_debug("%s: flush strm %d diff BE rates\n",
16637 __func__,
16638 fdai->strm_id);
16639
16640 if (fdai->event_info.event_func)
16641 fdai->event_info.event_func(
16642 MSM_PCM_RT_EVT_BUF_RECFG,
16643 fdai->event_info.priv_data);
16644 fdai->be_srate = 0; /* might not need it */
16645 }
16646 bits_per_sample = msm_routing_get_bit_width(
16647 bedai->format);
16648
16649 app_type =
16650 fe_dai_app_type_cfg[i][session_type][be_id].app_type;
16651 if (app_type && is_lsm) {
16652 app_type_idx =
16653 msm_pcm_routing_get_lsm_app_type_idx(app_type);
16654 sample_rate =
16655 fe_dai_app_type_cfg[i][session_type][be_id]
16656 .sample_rate;
16657 bits_per_sample =
16658 lsm_app_type_cfg[app_type_idx].bit_width;
16659 } else if (app_type) {
16660 app_type_idx =
16661 msm_pcm_routing_get_app_type_idx(app_type);
16662 sample_rate =
16663 fe_dai_app_type_cfg[i][session_type]
16664 [be_id].sample_rate;
16665 bits_per_sample =
16666 app_type_cfg[app_type_idx].bit_width;
16667 } else
16668 sample_rate = bedai->sample_rate;
16669 /*
16670 * check if ADM needs to be configured with different
16671 * channel mapping than backend
16672 */
16673 if (!bedai->adm_override_ch)
16674 channels = bedai->channel;
16675 else
16676 channels = bedai->adm_override_ch;
16677 acdb_dev_id =
16678 fe_dai_app_type_cfg[i][session_type][be_id].acdb_dev_id;
16679 topology = msm_routing_get_adm_topology(i, session_type,
16680 be_id);
16681 copp_idx = adm_open(bedai->port_id, path_type,
16682 sample_rate, channels, topology,
16683 fdai->perf_mode, bits_per_sample,
16684 app_type, acdb_dev_id);
16685 if ((copp_idx < 0) ||
16686 (copp_idx >= MAX_COPPS_PER_PORT)) {
16687 pr_err("%s: adm open failed\n", __func__);
16688 mutex_unlock(&routing_lock);
16689 return -EINVAL;
16690 }
16691 pr_debug("%s: setting idx bit of fe:%d, type: %d, be:%d\n",
16692 __func__, i, session_type, be_id);
16693 set_bit(copp_idx,
16694 &session_copp_map[i][session_type][be_id]);
16695
16696 if (msm_is_resample_needed(
16697 sample_rate,
16698 bedai->sample_rate))
16699 adm_copp_mfc_cfg(
16700 bedai->port_id, copp_idx,
16701 bedai->sample_rate);
16702
16703 msm_pcm_routing_build_matrix(i, session_type, path_type,
16704 fdai->perf_mode,
16705 bedai->passthr_mode[i]);
16706 if ((fdai->perf_mode == LEGACY_PCM_MODE) &&
16707 (bedai->passthr_mode[i] == LEGACY_PCM))
16708 msm_pcm_routing_cfg_pp(bedai->port_id, copp_idx,
16709 topology, channels);
16710 }
16711 }
16712
16713 for_each_set_bit(i, &bedai->fe_sessions[0], MSM_FRONTEND_DAI_MAX) {
16714 session_id = msm_pcm_routing_get_voc_sessionid(i);
16715 if (session_id) {
16716 pr_debug("%s voice session_id: 0x%x\n", __func__,
16717 session_id);
16718
16719 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
16720 voc_path_type = RX_PATH;
16721 else
16722 voc_path_type = TX_PATH;
16723
16724 voc_set_route_flag(session_id, voc_path_type, 1);
16725
16726 memset(&voc_be_media_format, 0,
16727 sizeof(struct media_format_info));
16728
16729 voc_be_media_format.port_id = bedai->port_id;
16730 voc_be_media_format.num_channels = bedai->channel;
16731 voc_be_media_format.sample_rate = bedai->sample_rate;
16732 voc_be_media_format.bits_per_sample = bedai->format;
16733 /* Defaulting this to 1 for voice call usecases */
16734 voc_be_media_format.channel_mapping[0] = 1;
16735
16736 voc_set_device_config(session_id, voc_path_type,
16737 &voc_be_media_format);
16738
16739 if (voc_get_route_flag(session_id, RX_PATH) &&
16740 voc_get_route_flag(session_id, TX_PATH))
16741 voc_enable_device(session_id);
16742 }
16743 }
16744
16745 /* Check if backend is an external ec ref port and set as needed */
16746 if (unlikely(bedai->port_id == voc_get_ext_ec_ref_port_id())) {
16747
16748 memset(&voc_be_media_format, 0,
16749 sizeof(struct media_format_info));
16750
16751 /* Get format info for ec ref port from msm_bedais[] */
16752 voc_be_media_format.port_id = bedai->port_id;
16753 voc_be_media_format.num_channels = bedai->channel;
16754 voc_be_media_format.bits_per_sample = bedai->format;
16755 voc_be_media_format.sample_rate = bedai->sample_rate;
16756 /* Defaulting this to 1 for voice call usecases */
16757 voc_be_media_format.channel_mapping[0] = 1;
16758 voc_set_ext_ec_ref_media_fmt_info(&voc_be_media_format);
16759 pr_debug("%s: EC Ref media format info set to port_id=%d, num_channels=%d, bits_per_sample=%d, sample_rate=%d\n",
16760 __func__, voc_be_media_format.port_id,
16761 voc_be_media_format.num_channels,
16762 voc_be_media_format.bits_per_sample,
16763 voc_be_media_format.sample_rate);
16764 }
16765
16766done:
16767 mutex_unlock(&routing_lock);
16768
16769 return 0;
16770}
16771
16772static int msm_routing_send_device_pp_params(int port_id, int copp_idx,
16773 int fe_id)
16774{
16775 int index, topo_id, be_idx;
16776 unsigned long pp_config = 0;
16777 bool mute_on;
16778 int latency;
16779 bool compr_passthr_mode = true;
16780
16781 pr_debug("%s: port_id %d, copp_idx %d\n", __func__, port_id, copp_idx);
16782
16783 if (port_id != HDMI_RX && port_id != DISPLAY_PORT_RX) {
16784 pr_err("%s: Device pp params on invalid port %d\n",
16785 __func__, port_id);
16786 return -EINVAL;
16787 }
16788
16789 for (be_idx = 0; be_idx < MSM_BACKEND_DAI_MAX; be_idx++) {
16790 if (port_id == msm_bedais[be_idx].port_id)
16791 break;
16792 }
16793
16794 if (be_idx >= MSM_BACKEND_DAI_MAX) {
16795 pr_debug("%s: Invalid be id %d\n", __func__, be_idx);
16796 return -EINVAL;
16797 }
16798
16799 for (index = 0; index < MSM_BACKEND_DAI_PP_PARAMS_REQ_MAX; index++) {
16800 if (msm_bedais_pp_params[index].port_id == port_id)
16801 break;
16802 }
16803 if (index >= MSM_BACKEND_DAI_PP_PARAMS_REQ_MAX) {
16804 pr_err("%s: Invalid backend pp params index %d\n",
16805 __func__, index);
16806 return -EINVAL;
16807 }
16808
16809 topo_id = adm_get_topology_for_port_copp_idx(port_id, copp_idx);
16810 if (topo_id != COMPRESSED_PASSTHROUGH_DEFAULT_TOPOLOGY) {
16811 pr_err("%s: Invalid passthrough topology 0x%x\n",
16812 __func__, topo_id);
16813 return -EINVAL;
16814 }
16815
16816 if ((msm_bedais[be_idx].passthr_mode[fe_id] == LEGACY_PCM) ||
16817 (msm_bedais[be_idx].passthr_mode[fe_id] == LISTEN))
16818 compr_passthr_mode = false;
16819
16820 pp_config = msm_bedais_pp_params[index].pp_params_config;
16821 if (test_bit(ADM_PP_PARAM_MUTE_BIT, &pp_config)) {
16822 pr_debug("%s: ADM_PP_PARAM_MUTE\n", __func__);
16823 clear_bit(ADM_PP_PARAM_MUTE_BIT, &pp_config);
16824 mute_on = msm_bedais_pp_params[index].mute_on;
16825 if ((msm_bedais[be_idx].active) && compr_passthr_mode)
16826 adm_send_compressed_device_mute(port_id,
16827 copp_idx,
16828 mute_on);
16829 }
16830 if (test_bit(ADM_PP_PARAM_LATENCY_BIT, &pp_config)) {
16831 pr_debug("%s: ADM_PP_PARAM_LATENCY\n", __func__);
16832 clear_bit(ADM_PP_PARAM_LATENCY_BIT,
16833 &pp_config);
16834 latency = msm_bedais_pp_params[index].latency;
16835 if ((msm_bedais[be_idx].active) && compr_passthr_mode)
16836 adm_send_compressed_device_latency(port_id,
16837 copp_idx,
16838 latency);
16839 }
16840 return 0;
16841}
16842
16843static int msm_routing_put_device_pp_params_mixer(struct snd_kcontrol *kcontrol,
16844 struct snd_ctl_elem_value *ucontrol)
16845{
16846 int pp_id = ucontrol->value.integer.value[0];
16847 int port_id = 0;
16848 int index, be_idx, i, topo_id, idx;
16849 bool mute;
16850 int latency;
16851 bool compr_passthr_mode = true;
16852
16853 pr_debug("%s: pp_id: 0x%x\n", __func__, pp_id);
16854
16855 for (be_idx = 0; be_idx < MSM_BACKEND_DAI_MAX; be_idx++) {
16856 port_id = msm_bedais[be_idx].port_id;
16857 if (port_id == HDMI_RX || port_id == DISPLAY_PORT_RX)
16858 break;
16859 }
16860
16861 if (be_idx >= MSM_BACKEND_DAI_MAX) {
16862 pr_debug("%s: Invalid be id %d\n", __func__, be_idx);
16863 return -EINVAL;
16864 }
16865
16866 for (index = 0; index < MSM_BACKEND_DAI_PP_PARAMS_REQ_MAX; index++) {
16867 if (msm_bedais_pp_params[index].port_id == port_id)
16868 break;
16869 }
16870 if (index >= MSM_BACKEND_DAI_PP_PARAMS_REQ_MAX) {
16871 pr_err("%s: Invalid pp params backend index %d\n",
16872 __func__, index);
16873 return -EINVAL;
16874 }
16875
16876 for_each_set_bit(i, &msm_bedais[be_idx].fe_sessions[0],
16877 MSM_FRONTEND_DAI_MM_SIZE) {
16878 if ((msm_bedais[be_idx].passthr_mode[i] == LEGACY_PCM) ||
16879 (msm_bedais[be_idx].passthr_mode[i] == LISTEN))
16880 compr_passthr_mode = false;
16881
16882 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++) {
16883 unsigned long copp =
16884 session_copp_map[i]
16885 [SESSION_TYPE_RX][be_idx];
16886 if (!test_bit(idx, &copp))
16887 continue;
16888 topo_id = adm_get_topology_for_port_copp_idx(port_id,
16889 idx);
16890 if (topo_id != COMPRESSED_PASSTHROUGH_DEFAULT_TOPOLOGY)
16891 continue;
16892 pr_debug("%s: port: 0x%x, copp %ld, be active: %d, passt: %d\n",
16893 __func__, port_id, copp, msm_bedais[be_idx].active,
16894 msm_bedais[be_idx].passthr_mode[i]);
16895 switch (pp_id) {
16896 case ADM_PP_PARAM_MUTE_ID:
16897 pr_debug("%s: ADM_PP_PARAM_MUTE\n", __func__);
16898 mute = ucontrol->value.integer.value[1] ? true : false;
16899 msm_bedais_pp_params[index].mute_on = mute;
16900 set_bit(ADM_PP_PARAM_MUTE_BIT,
16901 &msm_bedais_pp_params[index].pp_params_config);
16902 if ((msm_bedais[be_idx].active) && compr_passthr_mode)
16903 adm_send_compressed_device_mute(port_id,
16904 idx, mute);
16905 break;
16906 case ADM_PP_PARAM_LATENCY_ID:
16907 pr_debug("%s: ADM_PP_PARAM_LATENCY\n", __func__);
16908 msm_bedais_pp_params[index].latency =
16909 ucontrol->value.integer.value[1];
16910 set_bit(ADM_PP_PARAM_LATENCY_BIT,
16911 &msm_bedais_pp_params[index].pp_params_config);
16912 latency = msm_bedais_pp_params[index].latency =
16913 ucontrol->value.integer.value[1];
16914 if ((msm_bedais[be_idx].active) && compr_passthr_mode)
16915 adm_send_compressed_device_latency(port_id,
16916 idx, latency);
16917 break;
16918 default:
16919 pr_info("%s, device pp param %d not supported\n",
16920 __func__, pp_id);
16921 break;
16922 }
16923 }
16924 }
16925 return 0;
16926}
16927
16928static int msm_routing_get_device_pp_params_mixer(struct snd_kcontrol *kcontrol,
16929 struct snd_ctl_elem_value *ucontrol)
16930{
16931 pr_debug("%s:msm_routing_get_device_pp_params_mixer", __func__);
16932 return 0;
16933}
16934
16935static const struct snd_kcontrol_new device_pp_params_mixer_controls[] = {
16936 SOC_SINGLE_MULTI_EXT("Device PP Params", SND_SOC_NOPM, 0, 0xFFFFFFFF,
16937 0, 3, msm_routing_get_device_pp_params_mixer,
16938 msm_routing_put_device_pp_params_mixer),
16939};
16940
16941static int msm_aptx_dec_license_control_get(struct snd_kcontrol *kcontrol,
16942 struct snd_ctl_elem_value *ucontrol)
16943{
16944 ucontrol->value.integer.value[0] =
16945 core_get_license_status(ASM_MEDIA_FMT_APTX);
16946 pr_debug("%s: status %ld\n", __func__,
16947 ucontrol->value.integer.value[0]);
16948 return 0;
16949}
16950
16951static int msm_aptx_dec_license_control_put(struct snd_kcontrol *kcontrol,
16952 struct snd_ctl_elem_value *ucontrol)
16953{
16954 int32_t status = 0;
16955
16956 status = core_set_license(ucontrol->value.integer.value[0],
16957 APTX_CLASSIC_DEC_LICENSE_ID);
16958 pr_debug("%s: status %d\n", __func__, status);
16959 return status;
16960}
16961
16962static const struct snd_kcontrol_new aptx_dec_license_controls[] = {
16963 SOC_SINGLE_EXT("APTX Dec License", SND_SOC_NOPM, 0,
16964 0xFFFF, 0, msm_aptx_dec_license_control_get,
16965 msm_aptx_dec_license_control_put),
16966};
16967
16968static int msm_routing_be_dai_name_table_info(struct snd_kcontrol *kcontrol,
16969 struct snd_ctl_elem_info *uinfo)
16970{
16971 uinfo->type = SNDRV_CTL_ELEM_TYPE_BYTES;
16972 uinfo->count = sizeof(be_dai_name_table);
16973 return 0;
16974}
16975
16976static int msm_routing_be_dai_name_table_tlv_get(struct snd_kcontrol *kcontrol,
16977 unsigned int __user *bytes,
16978 unsigned int size)
16979{
16980 int i;
16981 int ret;
16982
16983 if (size < sizeof(be_dai_name_table)) {
16984 pr_err("%s: invalid size %d requested, returning\n",
16985 __func__, size);
16986 ret = -EINVAL;
16987 goto done;
16988 }
16989
16990 /*
16991 * Fill be_dai_name_table from msm_bedais table to reduce code changes
16992 * needed when adding new backends
16993 */
16994 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
16995 be_dai_name_table[i].be_id = i;
16996 strlcpy(be_dai_name_table[i].be_name,
16997 msm_bedais[i].name,
16998 LPASS_BE_NAME_MAX_LENGTH);
16999 }
17000
17001 ret = copy_to_user(bytes, &be_dai_name_table,
17002 sizeof(be_dai_name_table));
17003 if (ret) {
17004 pr_err("%s: failed to copy be_dai_name_table\n", __func__);
17005 ret = -EFAULT;
17006 }
17007
17008done:
17009 return ret;
17010}
17011
17012static const struct snd_kcontrol_new
17013 msm_routing_be_dai_name_table_mixer_controls[] = {
17014 {
17015 .access = SNDRV_CTL_ELEM_ACCESS_TLV_READ |
17016 SNDRV_CTL_ELEM_ACCESS_TLV_CALLBACK,
17017 .info = msm_routing_be_dai_name_table_info,
17018 .name = "Backend DAI Name Table",
17019 .tlv.c = snd_soc_bytes_tlv_callback,
17020 .private_value = (unsigned long) &(struct soc_bytes_ext) {
17021 .max = sizeof(be_dai_name_table),
17022 .get = msm_routing_be_dai_name_table_tlv_get,
17023 }
17024 },
17025};
17026
17027static int msm_routing_stereo_channel_reverse_control_get(
17028 struct snd_kcontrol *kcontrol,
17029 struct snd_ctl_elem_value *ucontrol)
17030{
17031 ucontrol->value.integer.value[0] = swap_ch;
17032 pr_debug("%s: Swap channel value: %ld\n", __func__,
17033 ucontrol->value.integer.value[0]);
17034 return 0;
17035}
17036
17037static int msm_routing_stereo_channel_reverse_control_put(
17038 struct snd_kcontrol *kcontrol,
17039 struct snd_ctl_elem_value *ucontrol)
17040{
17041 int i, idx, be_index, port_id;
17042 int ret = 0;
17043 unsigned long copp;
17044
17045 pr_debug("%s Swap channel value:%ld\n", __func__,
17046 ucontrol->value.integer.value[0]);
17047
17048 swap_ch = ucontrol->value.integer.value[0];
17049
17050 mutex_lock(&routing_lock);
17051 for (be_index = 0; be_index < MSM_BACKEND_DAI_MAX; be_index++) {
17052 port_id = msm_bedais[be_index].port_id;
17053 if (!msm_bedais[be_index].active)
17054 continue;
17055
17056 for_each_set_bit(i, &msm_bedais[be_index].fe_sessions[0],
17057 MSM_FRONTEND_DAI_MM_SIZE) {
17058 copp = session_copp_map[i][SESSION_TYPE_RX][be_index];
17059 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++) {
17060 if (!test_bit(idx, &copp))
17061 continue;
17062
17063 pr_debug("%s: swap channel control of portid:%d, coppid:%d\n",
17064 __func__, port_id, idx);
17065 ret = adm_swap_speaker_channels(
17066 port_id, idx,
17067 msm_bedais[be_index].sample_rate,
17068 swap_ch);
17069 if (ret) {
17070 pr_err("%s:Swap_channel failed, err=%d\n",
17071 __func__, ret);
17072 goto done;
17073 }
17074 }
17075 }
17076 }
17077done:
17078 mutex_unlock(&routing_lock);
17079 return ret;
17080}
17081
17082static const struct snd_kcontrol_new stereo_channel_reverse_control[] = {
17083 SOC_SINGLE_EXT("Swap channel", SND_SOC_NOPM, 0,
17084 1, 0, msm_routing_stereo_channel_reverse_control_get,
17085 msm_routing_stereo_channel_reverse_control_put),
17086};
17087
17088static const struct snd_pcm_ops msm_routing_pcm_ops = {
17089 .hw_params = msm_pcm_routing_hw_params,
17090 .close = msm_pcm_routing_close,
17091 .prepare = msm_pcm_routing_prepare,
17092};
17093
17094/* Not used but frame seems to require it */
17095static int msm_routing_probe(struct snd_soc_platform *platform)
17096{
17097 snd_soc_dapm_new_controls(&platform->component.dapm, msm_qdsp6_widgets,
17098 ARRAY_SIZE(msm_qdsp6_widgets));
17099 snd_soc_dapm_add_routes(&platform->component.dapm, intercon,
17100 ARRAY_SIZE(intercon));
17101
17102 snd_soc_dapm_new_widgets(platform->component.dapm.card);
17103
17104 snd_soc_add_platform_controls(platform, lsm_controls,
17105 ARRAY_SIZE(lsm_controls));
17106
17107 snd_soc_add_platform_controls(platform, aanc_slim_0_rx_mux,
17108 ARRAY_SIZE(aanc_slim_0_rx_mux));
17109
17110 snd_soc_add_platform_controls(platform, msm_voc_session_controls,
17111 ARRAY_SIZE(msm_voc_session_controls));
17112
17113 snd_soc_add_platform_controls(platform, app_type_cfg_controls,
17114 ARRAY_SIZE(app_type_cfg_controls));
17115
17116 snd_soc_add_platform_controls(platform, lsm_app_type_cfg_controls,
17117 ARRAY_SIZE(lsm_app_type_cfg_controls));
17118
Vikram Pandurangaee9c03a2017-09-07 15:06:17 -070017119 snd_soc_add_platform_controls(platform, module_cfg_controls,
17120 ARRAY_SIZE(module_cfg_controls));
17121
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017122 snd_soc_add_platform_controls(platform,
17123 stereo_to_custom_stereo_controls,
17124 ARRAY_SIZE(stereo_to_custom_stereo_controls));
17125
17126 snd_soc_add_platform_controls(platform, ec_ref_param_controls,
17127 ARRAY_SIZE(ec_ref_param_controls));
17128
17129 snd_soc_add_platform_controls(platform, channel_mixer_controls,
17130 ARRAY_SIZE(channel_mixer_controls));
17131
17132 msm_qti_pp_add_controls(platform);
17133
17134 msm_dts_srs_tm_add_controls(platform);
17135
17136 msm_dolby_dap_add_controls(platform);
17137
17138 snd_soc_add_platform_controls(platform,
17139 use_ds1_or_ds2_controls,
17140 ARRAY_SIZE(use_ds1_or_ds2_controls));
17141
17142 snd_soc_add_platform_controls(platform,
17143 device_pp_params_mixer_controls,
17144 ARRAY_SIZE(device_pp_params_mixer_controls));
17145
17146 snd_soc_add_platform_controls(platform,
17147 msm_routing_be_dai_name_table_mixer_controls,
17148 ARRAY_SIZE(msm_routing_be_dai_name_table_mixer_controls));
17149
17150 snd_soc_add_platform_controls(platform, msm_source_tracking_controls,
17151 ARRAY_SIZE(msm_source_tracking_controls));
17152 snd_soc_add_platform_controls(platform, adm_channel_config_controls,
17153 ARRAY_SIZE(adm_channel_config_controls));
17154
17155 snd_soc_add_platform_controls(platform, aptx_dec_license_controls,
17156 ARRAY_SIZE(aptx_dec_license_controls));
17157 snd_soc_add_platform_controls(platform, stereo_channel_reverse_control,
17158 ARRAY_SIZE(stereo_channel_reverse_control));
17159 return 0;
17160}
17161
17162int msm_routing_pcm_new(struct snd_soc_pcm_runtime *runtime)
17163{
17164 return msm_pcm_routing_hwdep_new(runtime, msm_bedais);
17165}
17166
17167void msm_routing_pcm_free(struct snd_pcm *pcm)
17168{
17169 msm_pcm_routing_hwdep_free(pcm);
17170}
17171
17172static struct snd_soc_platform_driver msm_soc_routing_platform = {
17173 .ops = &msm_routing_pcm_ops,
17174 .probe = msm_routing_probe,
17175 .pcm_new = msm_routing_pcm_new,
17176 .pcm_free = msm_routing_pcm_free,
17177};
17178
17179static int msm_routing_pcm_probe(struct platform_device *pdev)
17180{
17181
17182 dev_dbg(&pdev->dev, "dev name %s\n", dev_name(&pdev->dev));
17183 return snd_soc_register_platform(&pdev->dev,
17184 &msm_soc_routing_platform);
17185}
17186
17187static int msm_routing_pcm_remove(struct platform_device *pdev)
17188{
17189 snd_soc_unregister_platform(&pdev->dev);
17190 return 0;
17191}
17192
17193static const struct of_device_id msm_pcm_routing_dt_match[] = {
17194 {.compatible = "qcom,msm-pcm-routing"},
17195 {}
17196};
17197MODULE_DEVICE_TABLE(of, msm_pcm_routing_dt_match);
17198
17199static struct platform_driver msm_routing_pcm_driver = {
17200 .driver = {
17201 .name = "msm-pcm-routing",
17202 .owner = THIS_MODULE,
17203 .of_match_table = msm_pcm_routing_dt_match,
17204 },
17205 .probe = msm_routing_pcm_probe,
17206 .remove = msm_routing_pcm_remove,
17207};
17208
17209int msm_routing_check_backend_enabled(int fedai_id)
17210{
17211 int i;
17212
17213 if (fedai_id > MSM_FRONTEND_DAI_MM_MAX_ID) {
17214 /* bad ID assigned in machine driver */
17215 pr_err("%s: bad MM ID\n", __func__);
17216 return 0;
17217 }
17218 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
17219 if (test_bit(fedai_id, &msm_bedais[i].fe_sessions[0]))
17220 return msm_bedais[i].active;
17221 }
17222 return 0;
17223}
17224
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053017225static int get_cal_type_index(int32_t cal_type)
17226{
17227 int ret = -EINVAL;
17228
17229 switch (cal_type) {
17230 case ADM_TOPOLOGY_CAL_TYPE:
17231 ret = ADM_TOPOLOGY_CAL_TYPE_IDX;
17232 break;
17233 case ADM_LSM_TOPOLOGY_CAL_TYPE:
17234 ret = ADM_LSM_TOPOLOGY_CAL_TYPE_IDX;
17235 break;
17236 default:
17237 pr_err("%s: Invalid cal type %d\n", __func__, cal_type);
17238 }
17239 return ret;
17240}
17241
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017242static int msm_routing_set_cal(int32_t cal_type,
17243 size_t data_size, void *data)
17244{
17245 int ret = 0;
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053017246 int cal_index;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017247 pr_debug("%s\n", __func__);
17248
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053017249 cal_index = get_cal_type_index(cal_type);
17250 if (cal_index < 0) {
17251 pr_err("%s: Could not get cal index %d\n",
17252 __func__, cal_index);
17253 ret = -EINVAL;
17254 goto done;
17255 }
17256
17257 ret = cal_utils_set_cal(data_size, data, cal_data[cal_index], 0, NULL);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017258 if (ret < 0) {
17259 pr_err("%s: cal_utils_set_cal failed, ret = %d, cal type = %d!\n",
17260 __func__, ret, cal_type);
17261 ret = -EINVAL;
17262 goto done;
17263 }
17264done:
17265 return ret;
17266}
17267
17268static void msm_routing_delete_cal_data(void)
17269{
17270 pr_debug("%s\n", __func__);
17271
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053017272 cal_utils_destroy_cal_types(MAX_ROUTING_CAL_TYPES, &cal_data[0]);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017273}
17274
17275static int msm_routing_init_cal_data(void)
17276{
17277 int ret = 0;
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053017278 struct cal_type_info cal_type_info[] = {
17279 {{ADM_TOPOLOGY_CAL_TYPE,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017280 {NULL, NULL, NULL,
17281 msm_routing_set_cal, NULL, NULL} },
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053017282 {NULL, NULL, cal_utils_match_buf_num} },
17283
17284 {{ADM_LSM_TOPOLOGY_CAL_TYPE,
17285 {NULL, NULL, NULL,
17286 msm_routing_set_cal, NULL, NULL} },
17287 {NULL, NULL, cal_utils_match_buf_num} },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017288 };
17289 pr_debug("%s\n", __func__);
17290
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053017291 ret = cal_utils_create_cal_types(MAX_ROUTING_CAL_TYPES, &cal_data[0],
17292 &cal_type_info[0]);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017293 if (ret < 0) {
17294 pr_err("%s: could not create cal type!\n",
17295 __func__);
17296 ret = -EINVAL;
17297 goto err;
17298 }
17299
17300 return ret;
17301err:
17302 msm_routing_delete_cal_data();
17303 return ret;
17304}
17305
Laxminath Kasam8b1366a2017-10-05 01:44:16 +053017306int __init msm_soc_routing_platform_init(void)
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017307{
17308 mutex_init(&routing_lock);
17309 if (msm_routing_init_cal_data())
17310 pr_err("%s: could not init cal data!\n", __func__);
17311
17312 afe_set_routing_callback(
17313 (routing_cb)msm_pcm_get_dev_acdb_id_by_port_id);
17314
17315 memset(&be_dai_name_table, 0, sizeof(be_dai_name_table));
17316 memset(&last_be_id_configured, 0, sizeof(last_be_id_configured));
17317
17318 return platform_driver_register(&msm_routing_pcm_driver);
17319}
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017320
Asish Bhattacharya5faacb32017-12-04 17:23:15 +053017321void msm_soc_routing_platform_exit(void)
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017322{
17323 msm_routing_delete_cal_data();
17324 memset(&be_dai_name_table, 0, sizeof(be_dai_name_table));
17325 mutex_destroy(&routing_lock);
17326 platform_driver_unregister(&msm_routing_pcm_driver);
17327}
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017328
17329MODULE_DESCRIPTION("MSM routing platform driver");
17330MODULE_LICENSE("GPL v2");