blob: 1205b3833fc9521b0677b91266ef22a063af1ca2 [file] [log] [blame]
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301/* Copyright (c) 2012-2017, The Linux Foundation. All rights reserved.
2 *
3 * This program is free software; you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License version 2 and
5 * only version 2 as published by the Free Software Foundation.
6 *
7 * This program is distributed in the hope that it will be useful,
8 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 * GNU General Public License for more details.
11 */
12
13#include <linux/init.h>
14#include <linux/err.h>
15#include <linux/module.h>
16#include <linux/moduleparam.h>
17#include <linux/platform_device.h>
18#include <linux/bitops.h>
19#include <linux/mutex.h>
20#include <linux/of_device.h>
21#include <linux/slab.h>
22#include <sound/core.h>
23#include <sound/soc.h>
24#include <sound/soc-dapm.h>
25#include <sound/pcm.h>
26#include <sound/initval.h>
27#include <sound/control.h>
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053028#include <sound/tlv.h>
29#include <sound/asound.h>
30#include <sound/pcm_params.h>
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053031#include <sound/hwdep.h>
Laxminath Kasam605b42f2017-08-01 22:02:15 +053032#include <sound/audio_effects.h>
Laxminath Kasam8b1366a2017-10-05 01:44:16 +053033#include <dsp/msm-dts-srs-tm-config.h>
Laxminath Kasam605b42f2017-08-01 22:02:15 +053034#include <dsp/q6voice.h>
35#include <dsp/q6adm-v2.h>
36#include <dsp/q6asm-v2.h>
37#include <dsp/q6afe-v2.h>
38#include <dsp/q6lsm.h>
39#include <dsp/q6core.h>
40#include <dsp/audio_cal_utils.h>
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053041
42#include "msm-pcm-routing-v2.h"
43#include "msm-pcm-routing-devdep.h"
44#include "msm-qti-pp-config.h"
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053045#include "msm-dolby-dap-config.h"
46#include "msm-ds2-dap-config.h"
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053047
48#ifndef CONFIG_DOLBY_DAP
49#undef DOLBY_ADM_COPP_TOPOLOGY_ID
50#define DOLBY_ADM_COPP_TOPOLOGY_ID 0xFFFFFFFE
51#endif
52
53#ifndef CONFIG_DOLBY_DS2
54#undef DS2_ADM_COPP_TOPOLOGY_ID
55#define DS2_ADM_COPP_TOPOLOGY_ID 0xFFFFFFFF
56#endif
57
58static struct mutex routing_lock;
59
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053060static struct cal_type_data *cal_data[MAX_ROUTING_CAL_TYPES];
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053061
62static int fm_switch_enable;
63static int hfp_switch_enable;
64static int int0_mi2s_switch_enable;
65static int int4_mi2s_switch_enable;
66static int pri_mi2s_switch_enable;
67static int sec_mi2s_switch_enable;
68static int tert_mi2s_switch_enable;
69static int quat_mi2s_switch_enable;
Rohit Kumara5077932017-09-10 22:05:05 +053070static int quin_mi2s_switch_enable;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053071static int fm_pcmrx_switch_enable;
72static int usb_switch_enable;
73static int lsm_port_index;
74static int slim0_rx_aanc_fb_port;
75static int msm_route_ec_ref_rx;
76static int msm_ec_ref_ch = 4;
77static int msm_ec_ref_bit_format = SNDRV_PCM_FORMAT_S16_LE;
78static int msm_ec_ref_sampling_rate = 48000;
79static uint32_t voc_session_id = ALL_SESSION_VSID;
80static int msm_route_ext_ec_ref;
81static bool is_custom_stereo_on;
82static bool is_ds2_on;
83static bool swap_ch;
84
85#define WEIGHT_0_DB 0x4000
86/* all the FEs which can support channel mixer */
87static struct msm_pcm_channel_mixer channel_mixer[MSM_FRONTEND_DAI_MM_SIZE];
88/* input BE for each FE */
89static int channel_input[MSM_FRONTEND_DAI_MM_SIZE][ADM_MAX_CHANNELS];
90
91enum {
92 MADNONE,
93 MADAUDIO,
94 MADBEACON,
95 MADULTRASOUND,
96 MADSWAUDIO,
97};
98
99#define ADM_LSM_PORT_INDEX 9
100
101#define SLIMBUS_0_TX_TEXT "SLIMBUS_0_TX"
102#define SLIMBUS_1_TX_TEXT "SLIMBUS_1_TX"
103#define SLIMBUS_2_TX_TEXT "SLIMBUS_2_TX"
104#define SLIMBUS_3_TX_TEXT "SLIMBUS_3_TX"
105#define SLIMBUS_4_TX_TEXT "SLIMBUS_4_TX"
106#define SLIMBUS_5_TX_TEXT "SLIMBUS_5_TX"
107#define TERT_MI2S_TX_TEXT "TERT_MI2S_TX"
108#define QUAT_MI2S_TX_TEXT "QUAT_MI2S_TX"
109#define ADM_LSM_TX_TEXT "ADM_LSM_TX"
110#define INT3_MI2S_TX_TEXT "INT3_MI2S_TX"
111
112#define LSM_FUNCTION_TEXT "LSM Function"
113static const char * const lsm_port_text[] = {
114 "None",
115 SLIMBUS_0_TX_TEXT, SLIMBUS_1_TX_TEXT, SLIMBUS_2_TX_TEXT,
116 SLIMBUS_3_TX_TEXT, SLIMBUS_4_TX_TEXT, SLIMBUS_5_TX_TEXT,
117 TERT_MI2S_TX_TEXT, QUAT_MI2S_TX_TEXT, ADM_LSM_TX_TEXT,
118 INT3_MI2S_TX_TEXT
119};
120
121struct msm_pcm_route_bdai_pp_params {
122 u16 port_id; /* AFE port ID */
123 unsigned long pp_params_config;
124 bool mute_on;
125 int latency;
126};
127
128static struct msm_pcm_route_bdai_pp_params
129 msm_bedais_pp_params[MSM_BACKEND_DAI_PP_PARAMS_REQ_MAX] = {
130 {HDMI_RX, 0, 0, 0},
131 {DISPLAY_PORT_RX, 0, 0, 0},
132};
133
134/*
135 * The be_dai_name_table is passed to HAL so that it can specify the
136 * BE ID for the BE it wants to enable based on the name. Thus there
137 * is a matching table and structure in HAL that need to be updated
138 * if any changes to these are made.
139 */
140struct msm_pcm_route_bdai_name {
141 unsigned int be_id;
142 char be_name[LPASS_BE_NAME_MAX_LENGTH];
143};
144static struct msm_pcm_route_bdai_name be_dai_name_table[MSM_BACKEND_DAI_MAX];
145
146static int msm_routing_send_device_pp_params(int port_id, int copp_idx,
147 int fe_id);
148
149static int msm_routing_get_bit_width(unsigned int format)
150{
151 int bit_width;
152
153 switch (format) {
154 case SNDRV_PCM_FORMAT_S32_LE:
155 bit_width = 32;
156 break;
157 case SNDRV_PCM_FORMAT_S24_LE:
158 case SNDRV_PCM_FORMAT_S24_3LE:
159 bit_width = 24;
160 break;
161 case SNDRV_PCM_FORMAT_S16_LE:
162 default:
163 bit_width = 16;
164 }
165 return bit_width;
166}
167
168static bool msm_is_resample_needed(int input_sr, int output_sr)
169{
170 bool rc = false;
171
172 if (input_sr != output_sr)
173 rc = true;
174
175 pr_debug("perform resampling (%s) for copp rate (%d)afe rate (%d)",
176 (rc ? "oh yes" : "not really"),
177 input_sr, output_sr);
178
179 return rc;
180}
181
182static void msm_pcm_routing_cfg_pp(int port_id, int copp_idx, int topology,
183 int channels)
184{
185 int rc = 0;
186
187 switch (topology) {
188 case SRS_TRUMEDIA_TOPOLOGY_ID:
189 pr_debug("%s: SRS_TRUMEDIA_TOPOLOGY_ID\n", __func__);
190 msm_dts_srs_tm_init(port_id, copp_idx);
191 break;
192 case DS2_ADM_COPP_TOPOLOGY_ID:
193 pr_debug("%s: DS2_ADM_COPP_TOPOLOGY %d\n",
194 __func__, DS2_ADM_COPP_TOPOLOGY_ID);
195 rc = msm_ds2_dap_init(port_id, copp_idx, channels,
196 is_custom_stereo_on);
197 if (rc < 0)
198 pr_err("%s: DS2 topo_id 0x%x, port %d, CS %d rc %d\n",
199 __func__, topology, port_id,
200 is_custom_stereo_on, rc);
201 break;
202 case DOLBY_ADM_COPP_TOPOLOGY_ID:
203 if (is_ds2_on) {
204 pr_debug("%s: DS2_ADM_COPP_TOPOLOGY\n", __func__);
205 rc = msm_ds2_dap_init(port_id, copp_idx, channels,
206 is_custom_stereo_on);
207 if (rc < 0)
208 pr_err("%s:DS2 topo_id 0x%x, port %d, rc %d\n",
209 __func__, topology, port_id, rc);
210 } else {
211 pr_debug("%s: DOLBY_ADM_COPP_TOPOLOGY_ID\n", __func__);
212 rc = msm_dolby_dap_init(port_id, copp_idx, channels,
213 is_custom_stereo_on);
214 if (rc < 0)
215 pr_err("%s: DS1 topo_id 0x%x, port %d, rc %d\n",
216 __func__, topology, port_id, rc);
217 }
218 break;
219 case ADM_CMD_COPP_OPEN_TOPOLOGY_ID_AUDIOSPHERE:
220 pr_debug("%s: TOPOLOGY_ID_AUDIOSPHERE\n", __func__);
221 rc = msm_qti_pp_asphere_init(port_id, copp_idx);
222 if (rc < 0)
223 pr_err("%s: topo_id 0x%x, port %d, copp %d, rc %d\n",
224 __func__, topology, port_id, copp_idx, rc);
225 break;
226 default:
227 /* custom topology specific feature param handlers */
228 break;
229 }
230}
231
232static void msm_pcm_routing_deinit_pp(int port_id, int topology)
233{
234 switch (topology) {
235 case SRS_TRUMEDIA_TOPOLOGY_ID:
236 pr_debug("%s: SRS_TRUMEDIA_TOPOLOGY_ID\n", __func__);
237 msm_dts_srs_tm_deinit(port_id);
238 break;
239 case DS2_ADM_COPP_TOPOLOGY_ID:
240 pr_debug("%s: DS2_ADM_COPP_TOPOLOGY_ID %d\n",
241 __func__, DS2_ADM_COPP_TOPOLOGY_ID);
242 msm_ds2_dap_deinit(port_id);
243 break;
244 case DOLBY_ADM_COPP_TOPOLOGY_ID:
245 if (is_ds2_on) {
246 pr_debug("%s: DS2_ADM_COPP_TOPOLOGY_ID\n", __func__);
247 msm_ds2_dap_deinit(port_id);
248 } else {
249 pr_debug("%s: DOLBY_ADM_COPP_TOPOLOGY_ID\n", __func__);
250 msm_dolby_dap_deinit(port_id);
251 }
252 break;
253 case ADM_CMD_COPP_OPEN_TOPOLOGY_ID_AUDIOSPHERE:
254 pr_debug("%s: TOPOLOGY_ID_AUDIOSPHERE\n", __func__);
255 msm_qti_pp_asphere_deinit(port_id);
256 break;
257 default:
258 /* custom topology specific feature deinit handlers */
259 break;
260 }
261}
262
263static void msm_pcm_routng_cfg_matrix_map_pp(struct route_payload payload,
264 int path_type, int perf_mode)
265{
266 int itr = 0, rc = 0;
267
268 if ((path_type == ADM_PATH_PLAYBACK) &&
269 (perf_mode == LEGACY_PCM_MODE) &&
270 is_custom_stereo_on) {
271 for (itr = 0; itr < payload.num_copps; itr++) {
272 if ((payload.port_id[itr] != SLIMBUS_0_RX) &&
273 (payload.port_id[itr] != RT_PROXY_PORT_001_RX)) {
274 continue;
275 }
276
277 rc = msm_qti_pp_send_stereo_to_custom_stereo_cmd(
278 payload.port_id[itr],
279 payload.copp_idx[itr],
280 payload.session_id,
281 Q14_GAIN_ZERO_POINT_FIVE,
282 Q14_GAIN_ZERO_POINT_FIVE,
283 Q14_GAIN_ZERO_POINT_FIVE,
284 Q14_GAIN_ZERO_POINT_FIVE);
285 if (rc < 0)
286 pr_err("%s: err setting custom stereo\n",
287 __func__);
288 }
289 }
290}
291
292#define SLIMBUS_EXTPROC_RX AFE_PORT_INVALID
293struct msm_pcm_routing_bdai_data msm_bedais[MSM_BACKEND_DAI_MAX] = {
294 { PRIMARY_I2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_PRI_I2S_RX},
295 { PRIMARY_I2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_PRI_I2S_TX},
296 { SLIMBUS_0_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_0_RX},
297 { SLIMBUS_0_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_0_TX},
298 { HDMI_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_HDMI},
299 { INT_BT_SCO_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_INT_BT_SCO_RX},
300 { INT_BT_SCO_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_INT_BT_SCO_TX},
301 { INT_FM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_INT_FM_RX},
302 { INT_FM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_INT_FM_TX},
303 { RT_PROXY_PORT_001_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
304 LPASS_BE_AFE_PCM_RX},
305 { RT_PROXY_PORT_001_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
306 LPASS_BE_AFE_PCM_TX},
307 { AFE_PORT_ID_PRIMARY_PCM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
308 LPASS_BE_AUXPCM_RX},
309 { AFE_PORT_ID_PRIMARY_PCM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
310 LPASS_BE_AUXPCM_TX},
311 { VOICE_PLAYBACK_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
312 LPASS_BE_VOICE_PLAYBACK_TX},
313 { VOICE2_PLAYBACK_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
314 LPASS_BE_VOICE2_PLAYBACK_TX},
315 { VOICE_RECORD_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
316 LPASS_BE_INCALL_RECORD_RX},
317 { VOICE_RECORD_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
318 LPASS_BE_INCALL_RECORD_TX},
319 { MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_MI2S_RX},
320 { MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_MI2S_TX},
321 { SECONDARY_I2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SEC_I2S_RX},
322 { SLIMBUS_1_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_1_RX},
323 { SLIMBUS_1_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_1_TX},
324 { SLIMBUS_2_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_2_RX},
325 { SLIMBUS_2_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_2_TX},
326 { SLIMBUS_3_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_3_RX},
327 { SLIMBUS_3_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_3_TX},
328 { SLIMBUS_4_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_4_RX},
329 { SLIMBUS_4_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_4_TX},
330 { SLIMBUS_5_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_5_RX},
331 { SLIMBUS_5_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_5_TX},
332 { SLIMBUS_6_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_6_RX},
333 { SLIMBUS_6_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_6_TX},
334 { SLIMBUS_7_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_7_RX},
335 { SLIMBUS_7_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_7_TX},
336 { SLIMBUS_8_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_8_RX},
337 { SLIMBUS_8_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_8_TX},
338 { SLIMBUS_EXTPROC_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_STUB_RX},
339 { SLIMBUS_EXTPROC_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_STUB_TX},
340 { SLIMBUS_EXTPROC_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_STUB_1_TX},
341 { AFE_PORT_ID_QUATERNARY_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
342 LPASS_BE_QUAT_MI2S_RX},
343 { AFE_PORT_ID_QUATERNARY_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
344 LPASS_BE_QUAT_MI2S_TX},
345 { AFE_PORT_ID_SECONDARY_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
346 LPASS_BE_SEC_MI2S_RX},
347 { AFE_PORT_ID_SECONDARY_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
348 LPASS_BE_SEC_MI2S_TX},
349 { AFE_PORT_ID_PRIMARY_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
350 LPASS_BE_PRI_MI2S_RX},
351 { AFE_PORT_ID_PRIMARY_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
352 LPASS_BE_PRI_MI2S_TX},
353 { AFE_PORT_ID_TERTIARY_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
354 LPASS_BE_TERT_MI2S_RX},
355 { AFE_PORT_ID_TERTIARY_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
356 LPASS_BE_TERT_MI2S_TX},
357 { AUDIO_PORT_ID_I2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
358 LPASS_BE_AUDIO_I2S_RX},
359 { AFE_PORT_ID_SECONDARY_PCM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
360 LPASS_BE_SEC_AUXPCM_RX},
361 { AFE_PORT_ID_SECONDARY_PCM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
362 LPASS_BE_SEC_AUXPCM_TX},
363 { AFE_PORT_ID_SPDIF_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
364 LPASS_BE_SPDIF_RX},
365 { AFE_PORT_ID_SECONDARY_MI2S_RX_SD1, 0, {0}, {0}, 0, 0, 0, 0, {0},
366 LPASS_BE_SEC_MI2S_RX_SD1},
367 { AFE_PORT_ID_QUINARY_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
368 LPASS_BE_QUIN_MI2S_RX},
369 { AFE_PORT_ID_QUINARY_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
370 LPASS_BE_QUIN_MI2S_TX},
371 { AFE_PORT_ID_SENARY_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
372 LPASS_BE_SENARY_MI2S_TX},
373 { AFE_PORT_ID_PRIMARY_TDM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
374 LPASS_BE_PRI_TDM_RX_0},
375 { AFE_PORT_ID_PRIMARY_TDM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
376 LPASS_BE_PRI_TDM_TX_0},
377 { AFE_PORT_ID_PRIMARY_TDM_RX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
378 LPASS_BE_PRI_TDM_RX_1},
379 { AFE_PORT_ID_PRIMARY_TDM_TX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
380 LPASS_BE_PRI_TDM_TX_1},
381 { AFE_PORT_ID_PRIMARY_TDM_RX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
382 LPASS_BE_PRI_TDM_RX_2},
383 { AFE_PORT_ID_PRIMARY_TDM_TX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
384 LPASS_BE_PRI_TDM_TX_2},
385 { AFE_PORT_ID_PRIMARY_TDM_RX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
386 LPASS_BE_PRI_TDM_RX_3},
387 { AFE_PORT_ID_PRIMARY_TDM_TX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
388 LPASS_BE_PRI_TDM_TX_3},
389 { AFE_PORT_ID_PRIMARY_TDM_RX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
390 LPASS_BE_PRI_TDM_RX_4},
391 { AFE_PORT_ID_PRIMARY_TDM_TX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
392 LPASS_BE_PRI_TDM_TX_4},
393 { AFE_PORT_ID_PRIMARY_TDM_RX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
394 LPASS_BE_PRI_TDM_RX_5},
395 { AFE_PORT_ID_PRIMARY_TDM_TX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
396 LPASS_BE_PRI_TDM_TX_5},
397 { AFE_PORT_ID_PRIMARY_TDM_RX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
398 LPASS_BE_PRI_TDM_RX_6},
399 { AFE_PORT_ID_PRIMARY_TDM_TX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
400 LPASS_BE_PRI_TDM_TX_6},
401 { AFE_PORT_ID_PRIMARY_TDM_RX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
402 LPASS_BE_PRI_TDM_RX_7},
403 { AFE_PORT_ID_PRIMARY_TDM_TX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
404 LPASS_BE_PRI_TDM_TX_7},
405 { AFE_PORT_ID_SECONDARY_TDM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
406 LPASS_BE_SEC_TDM_RX_0},
407 { AFE_PORT_ID_SECONDARY_TDM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
408 LPASS_BE_SEC_TDM_TX_0},
409 { AFE_PORT_ID_SECONDARY_TDM_RX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
410 LPASS_BE_SEC_TDM_RX_1},
411 { AFE_PORT_ID_SECONDARY_TDM_TX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
412 LPASS_BE_SEC_TDM_TX_1},
413 { AFE_PORT_ID_SECONDARY_TDM_RX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
414 LPASS_BE_SEC_TDM_RX_2},
415 { AFE_PORT_ID_SECONDARY_TDM_TX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
416 LPASS_BE_SEC_TDM_TX_2},
417 { AFE_PORT_ID_SECONDARY_TDM_RX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
418 LPASS_BE_SEC_TDM_RX_3},
419 { AFE_PORT_ID_SECONDARY_TDM_TX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
420 LPASS_BE_SEC_TDM_TX_3},
421 { AFE_PORT_ID_SECONDARY_TDM_RX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
422 LPASS_BE_SEC_TDM_RX_4},
423 { AFE_PORT_ID_SECONDARY_TDM_TX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
424 LPASS_BE_SEC_TDM_TX_4},
425 { AFE_PORT_ID_SECONDARY_TDM_RX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
426 LPASS_BE_SEC_TDM_RX_5},
427 { AFE_PORT_ID_SECONDARY_TDM_TX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
428 LPASS_BE_SEC_TDM_TX_5},
429 { AFE_PORT_ID_SECONDARY_TDM_RX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
430 LPASS_BE_SEC_TDM_RX_6},
431 { AFE_PORT_ID_SECONDARY_TDM_TX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
432 LPASS_BE_SEC_TDM_TX_6},
433 { AFE_PORT_ID_SECONDARY_TDM_RX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
434 LPASS_BE_SEC_TDM_RX_7},
435 { AFE_PORT_ID_SECONDARY_TDM_TX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
436 LPASS_BE_SEC_TDM_TX_7},
437 { AFE_PORT_ID_TERTIARY_TDM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
438 LPASS_BE_TERT_TDM_RX_0},
439 { AFE_PORT_ID_TERTIARY_TDM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
440 LPASS_BE_TERT_TDM_TX_0},
441 { AFE_PORT_ID_TERTIARY_TDM_RX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
442 LPASS_BE_TERT_TDM_RX_1},
443 { AFE_PORT_ID_TERTIARY_TDM_TX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
444 LPASS_BE_TERT_TDM_TX_1},
445 { AFE_PORT_ID_TERTIARY_TDM_RX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
446 LPASS_BE_TERT_TDM_RX_2},
447 { AFE_PORT_ID_TERTIARY_TDM_TX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
448 LPASS_BE_TERT_TDM_TX_2},
449 { AFE_PORT_ID_TERTIARY_TDM_RX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
450 LPASS_BE_TERT_TDM_RX_3},
451 { AFE_PORT_ID_TERTIARY_TDM_TX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
452 LPASS_BE_TERT_TDM_TX_3},
453 { AFE_PORT_ID_TERTIARY_TDM_RX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
454 LPASS_BE_TERT_TDM_RX_4},
455 { AFE_PORT_ID_TERTIARY_TDM_TX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
456 LPASS_BE_TERT_TDM_TX_4},
457 { AFE_PORT_ID_TERTIARY_TDM_RX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
458 LPASS_BE_TERT_TDM_RX_5},
459 { AFE_PORT_ID_TERTIARY_TDM_TX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
460 LPASS_BE_TERT_TDM_TX_5},
461 { AFE_PORT_ID_TERTIARY_TDM_RX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
462 LPASS_BE_TERT_TDM_RX_6},
463 { AFE_PORT_ID_TERTIARY_TDM_TX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
464 LPASS_BE_TERT_TDM_TX_6},
465 { AFE_PORT_ID_TERTIARY_TDM_RX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
466 LPASS_BE_TERT_TDM_RX_7},
467 { AFE_PORT_ID_TERTIARY_TDM_TX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
468 LPASS_BE_TERT_TDM_TX_7},
469 { AFE_PORT_ID_QUATERNARY_TDM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
470 LPASS_BE_QUAT_TDM_RX_0},
471 { AFE_PORT_ID_QUATERNARY_TDM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
472 LPASS_BE_QUAT_TDM_TX_0},
473 { AFE_PORT_ID_QUATERNARY_TDM_RX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
474 LPASS_BE_QUAT_TDM_RX_1},
475 { AFE_PORT_ID_QUATERNARY_TDM_TX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
476 LPASS_BE_QUAT_TDM_TX_1},
477 { AFE_PORT_ID_QUATERNARY_TDM_RX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
478 LPASS_BE_QUAT_TDM_RX_2},
479 { AFE_PORT_ID_QUATERNARY_TDM_TX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
480 LPASS_BE_QUAT_TDM_TX_2},
481 { AFE_PORT_ID_QUATERNARY_TDM_RX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
482 LPASS_BE_QUAT_TDM_RX_3},
483 { AFE_PORT_ID_QUATERNARY_TDM_TX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
484 LPASS_BE_QUAT_TDM_TX_3},
485 { AFE_PORT_ID_QUATERNARY_TDM_RX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
486 LPASS_BE_QUAT_TDM_RX_4},
487 { AFE_PORT_ID_QUATERNARY_TDM_TX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
488 LPASS_BE_QUAT_TDM_TX_4},
489 { AFE_PORT_ID_QUATERNARY_TDM_RX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
490 LPASS_BE_QUAT_TDM_RX_5},
491 { AFE_PORT_ID_QUATERNARY_TDM_TX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
492 LPASS_BE_QUAT_TDM_TX_5},
493 { AFE_PORT_ID_QUATERNARY_TDM_RX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
494 LPASS_BE_QUAT_TDM_RX_6},
495 { AFE_PORT_ID_QUATERNARY_TDM_TX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
496 LPASS_BE_QUAT_TDM_TX_6},
497 { AFE_PORT_ID_QUATERNARY_TDM_RX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
498 LPASS_BE_QUAT_TDM_RX_7},
499 { AFE_PORT_ID_QUATERNARY_TDM_TX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
500 LPASS_BE_QUAT_TDM_TX_7},
Rohit Kumara5077932017-09-10 22:05:05 +0530501 { AFE_PORT_ID_QUINARY_TDM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
502 LPASS_BE_QUIN_TDM_RX_0},
503 { AFE_PORT_ID_QUINARY_TDM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
504 LPASS_BE_QUIN_TDM_TX_0},
505 { AFE_PORT_ID_QUINARY_TDM_RX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
506 LPASS_BE_QUIN_TDM_RX_1},
507 { AFE_PORT_ID_QUINARY_TDM_TX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
508 LPASS_BE_QUIN_TDM_TX_1},
509 { AFE_PORT_ID_QUINARY_TDM_RX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
510 LPASS_BE_QUIN_TDM_RX_2},
511 { AFE_PORT_ID_QUINARY_TDM_TX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
512 LPASS_BE_QUIN_TDM_TX_2},
513 { AFE_PORT_ID_QUINARY_TDM_RX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
514 LPASS_BE_QUIN_TDM_RX_3},
515 { AFE_PORT_ID_QUINARY_TDM_TX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
516 LPASS_BE_QUIN_TDM_TX_3},
517 { AFE_PORT_ID_QUINARY_TDM_RX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
518 LPASS_BE_QUIN_TDM_RX_4},
519 { AFE_PORT_ID_QUINARY_TDM_TX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
520 LPASS_BE_QUIN_TDM_TX_4},
521 { AFE_PORT_ID_QUINARY_TDM_RX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
522 LPASS_BE_QUIN_TDM_RX_5},
523 { AFE_PORT_ID_QUINARY_TDM_TX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
524 LPASS_BE_QUIN_TDM_TX_5},
525 { AFE_PORT_ID_QUINARY_TDM_RX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
526 LPASS_BE_QUIN_TDM_RX_6},
527 { AFE_PORT_ID_QUINARY_TDM_TX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
528 LPASS_BE_QUIN_TDM_TX_6},
529 { AFE_PORT_ID_QUINARY_TDM_RX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
530 LPASS_BE_QUIN_TDM_RX_7},
531 { AFE_PORT_ID_QUINARY_TDM_TX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
532 LPASS_BE_QUIN_TDM_TX_7},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530533 { INT_BT_A2DP_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
534 LPASS_BE_INT_BT_A2DP_RX},
535 { AFE_PORT_ID_USB_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
536 LPASS_BE_USB_AUDIO_RX},
537 { AFE_PORT_ID_USB_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
538 LPASS_BE_USB_AUDIO_TX},
539 { DISPLAY_PORT_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
540 LPASS_BE_DISPLAY_PORT},
541 { AFE_PORT_ID_TERTIARY_PCM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
542 LPASS_BE_TERT_AUXPCM_RX},
543 { AFE_PORT_ID_TERTIARY_PCM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
544 LPASS_BE_TERT_AUXPCM_TX},
545 { AFE_PORT_ID_QUATERNARY_PCM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
546 LPASS_BE_QUAT_AUXPCM_RX},
547 { AFE_PORT_ID_QUATERNARY_PCM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
548 LPASS_BE_QUAT_AUXPCM_TX},
Rohit Kumara5077932017-09-10 22:05:05 +0530549 { AFE_PORT_ID_QUINARY_PCM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
550 LPASS_BE_QUIN_AUXPCM_RX},
551 { AFE_PORT_ID_QUINARY_PCM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
552 LPASS_BE_QUIN_AUXPCM_TX},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530553 { AFE_PORT_ID_INT0_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
554 LPASS_BE_INT0_MI2S_RX},
555 { AFE_PORT_ID_INT0_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
556 LPASS_BE_INT0_MI2S_TX},
557 { AFE_PORT_ID_INT1_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
558 LPASS_BE_INT1_MI2S_RX},
559 { AFE_PORT_ID_INT1_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
560 LPASS_BE_INT1_MI2S_TX},
561 { AFE_PORT_ID_INT2_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
562 LPASS_BE_INT2_MI2S_RX},
563 { AFE_PORT_ID_INT2_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
564 LPASS_BE_INT2_MI2S_TX},
565 { AFE_PORT_ID_INT3_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
566 LPASS_BE_INT3_MI2S_RX},
567 { AFE_PORT_ID_INT3_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
568 LPASS_BE_INT3_MI2S_TX},
569 { AFE_PORT_ID_INT4_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
570 LPASS_BE_INT4_MI2S_RX},
571 { AFE_PORT_ID_INT4_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
572 LPASS_BE_INT4_MI2S_TX},
573 { AFE_PORT_ID_INT5_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
574 LPASS_BE_INT5_MI2S_RX},
575 { AFE_PORT_ID_INT5_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
576 LPASS_BE_INT5_MI2S_TX},
577 { AFE_PORT_ID_INT6_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
578 LPASS_BE_INT6_MI2S_RX},
579 { AFE_PORT_ID_INT6_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
580 LPASS_BE_INT6_MI2S_TX},
581};
582
583/* Track ASM playback & capture sessions of DAI
584 * Track LSM listen sessions
585 */
586static struct msm_pcm_routing_fdai_data
587 fe_dai_map[MSM_FRONTEND_DAI_MAX][2] = {
588 /* MULTIMEDIA1 */
589 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
590 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
591 /* MULTIMEDIA2 */
592 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
593 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
594 /* MULTIMEDIA3 */
595 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
596 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
597 /* MULTIMEDIA4 */
598 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
599 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
600 /* MULTIMEDIA5 */
601 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
602 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
603 /* MULTIMEDIA6 */
604 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
605 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
606 /* MULTIMEDIA7*/
607 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
608 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
609 /* MULTIMEDIA8 */
610 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
611 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
612 /* MULTIMEDIA9 */
613 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
614 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
615 /* MULTIMEDIA10 */
616 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
617 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
618 /* MULTIMEDIA11 */
619 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
620 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
621 /* MULTIMEDIA12 */
622 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
623 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
624 /* MULTIMEDIA13 */
625 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
626 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
627 /* MULTIMEDIA14 */
628 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
629 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
630 /* MULTIMEDIA15 */
631 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
632 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
633 /* MULTIMEDIA16 */
634 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
635 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
636 /* MULTIMEDIA17 */
637 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
638 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
639 /* MULTIMEDIA18 */
640 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
641 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
642 /* MULTIMEDIA19 */
643 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
644 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
645 /* MULTIMEDIA20 */
646 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
647 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530648 /* VOIP */
649 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
650 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
651 /* AFE_RX */
652 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
653 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
654 /* AFE_TX */
655 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
656 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
657 /* VOICE_STUB */
658 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
659 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530660 /* DTMF_RX */
661 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
662 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530663 /* QCHAT */
664 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
665 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
666 /* VOLTE_STUB */
667 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
668 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
669 /* LSM1 */
670 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
671 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
672 /* LSM2 */
673 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
674 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
675 /* LSM3 */
676 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
677 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
678 /* LSM4 */
679 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
680 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
681 /* LSM5 */
682 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
683 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
684 /* LSM6 */
685 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
686 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
687 /* LSM7 */
688 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
689 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
690 /* LSM8 */
691 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
692 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
693 /* VOICE2_STUB */
694 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
695 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530696 /* VOICEMMODE1 */
697 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
698 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
699 /* VOICEMMODE2 */
700 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
701 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
702};
703
704static unsigned long session_copp_map[MSM_FRONTEND_DAI_MAX][2]
705 [MSM_BACKEND_DAI_MAX];
706static struct msm_pcm_routing_app_type_data app_type_cfg[MAX_APP_TYPES];
707static struct msm_pcm_routing_app_type_data lsm_app_type_cfg[MAX_APP_TYPES];
708static struct msm_pcm_stream_app_type_cfg
709 fe_dai_app_type_cfg[MSM_FRONTEND_DAI_MAX][2][MSM_BACKEND_DAI_MAX];
710
711static int last_be_id_configured[MSM_FRONTEND_DAI_MAX][MAX_SESSION_TYPES];
712
713/* The caller of this should aqcuire routing lock */
714void msm_pcm_routing_get_bedai_info(int be_idx,
715 struct msm_pcm_routing_bdai_data *be_dai)
716{
717 if (be_idx >= 0 && be_idx < MSM_BACKEND_DAI_MAX)
718 memcpy(be_dai, &msm_bedais[be_idx],
719 sizeof(struct msm_pcm_routing_bdai_data));
720}
721
722/* The caller of this should aqcuire routing lock */
723void msm_pcm_routing_get_fedai_info(int fe_idx, int sess_type,
724 struct msm_pcm_routing_fdai_data *fe_dai)
725{
726 if ((sess_type == SESSION_TYPE_TX) || (sess_type == SESSION_TYPE_RX))
727 memcpy(fe_dai, &fe_dai_map[fe_idx][sess_type],
728 sizeof(struct msm_pcm_routing_fdai_data));
729}
730
731void msm_pcm_routing_acquire_lock(void)
732{
733 mutex_lock(&routing_lock);
734}
735
736void msm_pcm_routing_release_lock(void)
737{
738 mutex_unlock(&routing_lock);
739}
740
741static int msm_pcm_routing_get_app_type_idx(int app_type)
742{
743 int idx;
744
745 pr_debug("%s: app_type: %d\n", __func__, app_type);
746 for (idx = 0; idx < MAX_APP_TYPES; idx++) {
747 if (app_type_cfg[idx].app_type == app_type)
748 return idx;
749 }
750 pr_info("%s: App type not available, fallback to default\n", __func__);
751 return 0;
752}
753
754static int msm_pcm_routing_get_lsm_app_type_idx(int app_type)
755{
756 int idx;
757
758 pr_debug("%s: app_type: %d\n", __func__, app_type);
759 for (idx = 0; idx < MAX_APP_TYPES; idx++) {
760 if (lsm_app_type_cfg[idx].app_type == app_type)
761 return idx;
762 }
763 pr_debug("%s: App type not available, fallback to default\n", __func__);
764 return 0;
765}
766
767static bool is_mm_lsm_fe_id(int fe_id)
768{
769 bool rc = true;
770
771 if (fe_id > MSM_FRONTEND_DAI_MM_MAX_ID &&
772 ((fe_id < MSM_FRONTEND_DAI_LSM1) ||
773 (fe_id > MSM_FRONTEND_DAI_LSM8))) {
774 rc = false;
775 }
776 return rc;
777}
778
779int msm_pcm_routing_reg_stream_app_type_cfg(
780 int fedai_id, int session_type, int be_id,
781 struct msm_pcm_stream_app_type_cfg *cfg_data)
782{
783 int ret = 0;
784
785 if (cfg_data == NULL) {
786 pr_err("%s: Received NULL pointer for cfg_data\n", __func__);
787 ret = -EINVAL;
788 goto done;
789 }
790
791 pr_debug("%s: fedai_id %d, session_type %d, be_id %d, app_type %d, acdb_dev_id %d, sample_rate %d\n",
792 __func__, fedai_id, session_type, be_id,
793 cfg_data->app_type, cfg_data->acdb_dev_id,
794 cfg_data->sample_rate);
795
796 if (!is_mm_lsm_fe_id(fedai_id)) {
797 pr_err("%s: Invalid machine driver ID %d\n",
798 __func__, fedai_id);
799 ret = -EINVAL;
800 goto done;
801 }
802 if (session_type != SESSION_TYPE_RX &&
803 session_type != SESSION_TYPE_TX) {
804 pr_err("%s: Invalid session type %d\n",
805 __func__, session_type);
806 ret = -EINVAL;
807 goto done;
808 }
809 if (be_id < 0 || be_id >= MSM_BACKEND_DAI_MAX) {
810 pr_err("%s: Received out of bounds be_id %d\n",
811 __func__, be_id);
812 ret = -EINVAL;
813 goto done;
814 }
815
816 fe_dai_app_type_cfg[fedai_id][session_type][be_id] = *cfg_data;
817
818 /*
819 * Store the BE ID of the configuration information set as the latest so
820 * the get mixer control knows what to return.
821 */
822 last_be_id_configured[fedai_id][session_type] = be_id;
823
824done:
825 return ret;
826}
827EXPORT_SYMBOL(msm_pcm_routing_reg_stream_app_type_cfg);
828
829/**
830 * msm_pcm_routing_get_stream_app_type_cfg
831 *
832 * Receives fedai_id, session_type, be_id, and populates app_type,
833 * acdb_dev_id, & sample rate. Returns 0 on success. On failure returns
834 * -EINVAL and does not alter passed values.
835 *
836 * fedai_id - Passed value, front end ID for which app type config is wanted
837 * session_type - Passed value, session type for which app type config
838 * is wanted
839 * be_id - Returned value, back end device id the app type config data is for
840 * cfg_data - Returned value, configuration data used by app type config
841 */
842int msm_pcm_routing_get_stream_app_type_cfg(
843 int fedai_id, int session_type, int *bedai_id,
844 struct msm_pcm_stream_app_type_cfg *cfg_data)
845{
846 int be_id;
847 int ret = 0;
848
849 if (bedai_id == NULL) {
850 pr_err("%s: Received NULL pointer for backend ID\n", __func__);
851 ret = -EINVAL;
852 goto done;
853 } else if (cfg_data == NULL) {
854 pr_err("%s: NULL pointer sent for cfg_data\n", __func__);
855 ret = -EINVAL;
856 goto done;
857 } else if (!is_mm_lsm_fe_id(fedai_id)) {
858 pr_err("%s: Invalid FE ID %d\n", __func__, fedai_id);
859 ret = -EINVAL;
860 goto done;
861 } else if (session_type != SESSION_TYPE_RX &&
862 session_type != SESSION_TYPE_TX) {
863 pr_err("%s: Invalid session type %d\n", __func__, session_type);
864 ret = -EINVAL;
865 goto done;
866 }
867
868 be_id = last_be_id_configured[fedai_id][session_type];
869 if (be_id < 0 || be_id >= MSM_BACKEND_DAI_MAX) {
870 pr_err("%s: Invalid BE ID %d\n", __func__, be_id);
871 ret = -EINVAL;
872 goto done;
873 }
874
875 *bedai_id = be_id;
876 *cfg_data = fe_dai_app_type_cfg[fedai_id][session_type][be_id];
877 pr_debug("%s: fedai_id %d, session_type %d, be_id %d, app_type %d, acdb_dev_id %d, sample_rate %d\n",
878 __func__, fedai_id, session_type, *bedai_id,
879 cfg_data->app_type, cfg_data->acdb_dev_id,
880 cfg_data->sample_rate);
881done:
882 return ret;
883}
884EXPORT_SYMBOL(msm_pcm_routing_get_stream_app_type_cfg);
885
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530886static struct cal_block_data *msm_routing_find_topology_by_path(int path,
887 int cal_index)
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530888{
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530889 struct list_head *ptr, *next;
890 struct cal_block_data *cal_block = NULL;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530891 pr_debug("%s\n", __func__);
892
893 list_for_each_safe(ptr, next,
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530894 &cal_data[cal_index]->cal_blocks) {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530895
896 cal_block = list_entry(ptr,
897 struct cal_block_data, list);
898
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530899 if (((struct audio_cal_info_adm_top *)cal_block
900 ->cal_info)->path == path) {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530901 return cal_block;
902 }
903 }
904 pr_debug("%s: Can't find topology for path %d\n", __func__, path);
905 return NULL;
906}
907
908static struct cal_block_data *msm_routing_find_topology(int path,
909 int app_type,
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530910 int acdb_id,
911 int cal_index)
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530912{
913 struct list_head *ptr, *next;
914 struct cal_block_data *cal_block = NULL;
915 struct audio_cal_info_adm_top *cal_info;
916
917 pr_debug("%s\n", __func__);
918
919 list_for_each_safe(ptr, next,
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530920 &cal_data[cal_index]->cal_blocks) {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530921
922 cal_block = list_entry(ptr,
923 struct cal_block_data, list);
924
925 cal_info = (struct audio_cal_info_adm_top *)
926 cal_block->cal_info;
927 if ((cal_info->path == path) &&
928 (cal_info->app_type == app_type) &&
929 (cal_info->acdb_id == acdb_id)) {
930 return cal_block;
931 }
932 }
933 pr_debug("%s: Can't find topology for path %d, app %d, acdb_id %d defaulting to search by path\n",
934 __func__, path, app_type, acdb_id);
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530935 return msm_routing_find_topology_by_path(cal_index, path);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530936}
937
938static int msm_routing_get_adm_topology(int fedai_id, int session_type,
939 int be_id)
940{
941 int topology = NULL_COPP_TOPOLOGY;
942 struct cal_block_data *cal_block = NULL;
943 int app_type = 0, acdb_dev_id = 0;
944
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530945 pr_debug("%s: fedai_id %d, session_type %d, be_id %d\n",
946 __func__, fedai_id, session_type, be_id);
947
948 if (cal_data == NULL)
949 goto done;
950
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530951 app_type = fe_dai_app_type_cfg[fedai_id][session_type][be_id].app_type;
952 acdb_dev_id =
953 fe_dai_app_type_cfg[fedai_id][session_type][be_id].acdb_dev_id;
954
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530955 mutex_lock(&cal_data[ADM_TOPOLOGY_CAL_TYPE_IDX]->lock);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530956 cal_block = msm_routing_find_topology(session_type, app_type,
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530957 acdb_dev_id,
958 ADM_TOPOLOGY_CAL_TYPE_IDX);
959 if (cal_block != NULL)
960 topology = ((struct audio_cal_info_adm_top *)
961 cal_block->cal_info)->topology;
962 mutex_unlock(&cal_data[ADM_TOPOLOGY_CAL_TYPE_IDX]->lock);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530963
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530964 if (cal_block == NULL) {
965 pr_debug("%s: Check for LSM topology\n", __func__);
966 mutex_lock(&cal_data[ADM_LSM_TOPOLOGY_CAL_TYPE_IDX]->lock);
967 cal_block = msm_routing_find_topology(session_type, app_type,
968 acdb_dev_id,
969 ADM_LSM_TOPOLOGY_CAL_TYPE_IDX);
970 if (cal_block != NULL)
971 topology = ((struct audio_cal_info_adm_top *)
972 cal_block->cal_info)->topology;
973 mutex_unlock(&cal_data[ADM_LSM_TOPOLOGY_CAL_TYPE_IDX]->lock);
974 }
975
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530976done:
977 pr_debug("%s: Using topology %d\n", __func__, topology);
978 return topology;
979}
980
981static uint8_t is_be_dai_extproc(int be_dai)
982{
983 if (be_dai == MSM_BACKEND_DAI_EXTPROC_RX ||
984 be_dai == MSM_BACKEND_DAI_EXTPROC_TX ||
985 be_dai == MSM_BACKEND_DAI_EXTPROC_EC_TX)
986 return 1;
987 else
988 return 0;
989}
990
991static void msm_pcm_routing_build_matrix(int fedai_id, int sess_type,
992 int path_type, int perf_mode,
993 uint32_t passthr_mode)
994{
995 int i, port_type, j, num_copps = 0;
996 struct route_payload payload;
997
998 port_type = ((path_type == ADM_PATH_PLAYBACK ||
999 path_type == ADM_PATH_COMPRESSED_RX) ?
1000 MSM_AFE_PORT_TYPE_RX : MSM_AFE_PORT_TYPE_TX);
1001
1002 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
1003 if (!is_be_dai_extproc(i) &&
1004 (afe_get_port_type(msm_bedais[i].port_id) == port_type) &&
1005 (msm_bedais[i].active) &&
1006 (test_bit(fedai_id, &msm_bedais[i].fe_sessions[0]))) {
1007 for (j = 0; j < MAX_COPPS_PER_PORT; j++) {
1008 unsigned long copp =
1009 session_copp_map[fedai_id][sess_type][i];
1010 if (test_bit(j, &copp)) {
1011 payload.port_id[num_copps] =
1012 msm_bedais[i].port_id;
1013 payload.copp_idx[num_copps] = j;
1014 payload.app_type[num_copps] =
1015 fe_dai_app_type_cfg
1016 [fedai_id][sess_type][i]
1017 .app_type;
1018 payload.acdb_dev_id[num_copps] =
1019 fe_dai_app_type_cfg
1020 [fedai_id][sess_type][i]
1021 .acdb_dev_id;
1022 payload.sample_rate[num_copps] =
1023 fe_dai_app_type_cfg
1024 [fedai_id][sess_type][i]
1025 .sample_rate;
1026 num_copps++;
1027 }
1028 }
1029 }
1030 }
1031
1032 if (num_copps) {
1033 payload.num_copps = num_copps;
1034 payload.session_id = fe_dai_map[fedai_id][sess_type].strm_id;
1035 adm_matrix_map(path_type, payload, perf_mode, passthr_mode);
1036 msm_pcm_routng_cfg_matrix_map_pp(payload, path_type, perf_mode);
1037 }
1038}
1039
1040void msm_pcm_routing_reg_psthr_stream(int fedai_id, int dspst_id,
1041 int stream_type)
1042{
1043 int i, session_type, path_type, port_type;
1044 u32 mode = 0;
1045
1046 if (fedai_id > MSM_FRONTEND_DAI_MM_MAX_ID) {
1047 /* bad ID assigned in machine driver */
1048 pr_err("%s: bad MM ID\n", __func__);
1049 return;
1050 }
1051
1052 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK) {
1053 session_type = SESSION_TYPE_RX;
1054 path_type = ADM_PATH_PLAYBACK;
1055 port_type = MSM_AFE_PORT_TYPE_RX;
1056 } else {
1057 session_type = SESSION_TYPE_TX;
1058 path_type = ADM_PATH_LIVE_REC;
1059 port_type = MSM_AFE_PORT_TYPE_TX;
1060 }
1061
1062 mutex_lock(&routing_lock);
1063
1064 fe_dai_map[fedai_id][session_type].strm_id = dspst_id;
1065 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
1066 if (!is_be_dai_extproc(i) &&
1067 (afe_get_port_type(msm_bedais[i].port_id) == port_type) &&
1068 (msm_bedais[i].active) &&
1069 (test_bit(fedai_id, &msm_bedais[i].fe_sessions[0]))) {
1070 mode = afe_get_port_type(msm_bedais[i].port_id);
1071 adm_connect_afe_port(mode, dspst_id,
1072 msm_bedais[i].port_id);
1073 break;
1074 }
1075 }
1076 mutex_unlock(&routing_lock);
1077}
1078
1079static bool route_check_fe_id_adm_support(int fe_id)
1080{
1081 bool rc = true;
1082
1083 if ((fe_id >= MSM_FRONTEND_DAI_LSM1) &&
1084 (fe_id <= MSM_FRONTEND_DAI_LSM8)) {
1085 /* fe id is listen while port is set to afe */
1086 if (lsm_port_index != ADM_LSM_PORT_INDEX) {
1087 pr_debug("%s: fe_id %d, lsm mux slim port %d\n",
1088 __func__, fe_id, lsm_port_index);
1089 rc = false;
1090 }
1091 }
1092
1093 return rc;
1094}
1095
1096int msm_pcm_routing_reg_phy_compr_stream(int fe_id, int perf_mode,
1097 int dspst_id, int stream_type,
1098 uint32_t passthr_mode)
1099{
1100 int i, j, session_type, path_type, port_type, topology;
1101 int num_copps = 0;
1102 struct route_payload payload;
1103 u32 channels, sample_rate;
1104 u16 bit_width = 16;
1105 bool is_lsm;
1106
1107 pr_debug("%s:fe_id[%d] perf_mode[%d] id[%d] stream_type[%d] passt[%d]",
1108 __func__, fe_id, perf_mode, dspst_id,
1109 stream_type, passthr_mode);
1110 if (!is_mm_lsm_fe_id(fe_id)) {
1111 /* bad ID assigned in machine driver */
1112 pr_err("%s: bad MM ID %d\n", __func__, fe_id);
1113 return -EINVAL;
1114 }
1115
1116 if (!route_check_fe_id_adm_support(fe_id)) {
1117 /* ignore adm open if not supported for fe_id */
1118 pr_debug("%s: No ADM support for fe id %d\n", __func__, fe_id);
1119 return 0;
1120 }
1121
1122 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK) {
1123 session_type = SESSION_TYPE_RX;
1124 if (passthr_mode != LEGACY_PCM)
1125 path_type = ADM_PATH_COMPRESSED_RX;
1126 else
1127 path_type = ADM_PATH_PLAYBACK;
1128 port_type = MSM_AFE_PORT_TYPE_RX;
1129 } else if (stream_type == SNDRV_PCM_STREAM_CAPTURE) {
1130 session_type = SESSION_TYPE_TX;
Laxminath Kasam38070be2017-08-17 18:21:59 +05301131 if ((passthr_mode != LEGACY_PCM) && (passthr_mode != LISTEN))
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301132 path_type = ADM_PATH_COMPRESSED_TX;
1133 else
1134 path_type = ADM_PATH_LIVE_REC;
1135 port_type = MSM_AFE_PORT_TYPE_TX;
1136 } else {
1137 pr_err("%s: invalid stream type %d\n", __func__, stream_type);
1138 return -EINVAL;
1139 }
1140
1141 is_lsm = (fe_id >= MSM_FRONTEND_DAI_LSM1) &&
1142 (fe_id <= MSM_FRONTEND_DAI_LSM8);
1143 mutex_lock(&routing_lock);
1144
1145 payload.num_copps = 0; /* only RX needs to use payload */
1146 fe_dai_map[fe_id][session_type].strm_id = dspst_id;
1147 /* re-enable EQ if active */
1148 msm_qti_pp_send_eq_values(fe_id);
1149 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
1150 if (test_bit(fe_id, &msm_bedais[i].fe_sessions[0]))
1151 msm_bedais[i].passthr_mode[fe_id] = passthr_mode;
1152
1153 if (!is_be_dai_extproc(i) &&
1154 (afe_get_port_type(msm_bedais[i].port_id) ==
1155 port_type) &&
1156 (msm_bedais[i].active) &&
1157 (test_bit(fe_id, &msm_bedais[i].fe_sessions[0]))) {
1158 int app_type, app_type_idx, copp_idx, acdb_dev_id;
1159
1160 /*
1161 * check if ADM needs to be configured with different
1162 * channel mapping than backend
1163 */
1164 if (!msm_bedais[i].adm_override_ch)
1165 channels = msm_bedais[i].channel;
1166 else
1167 channels = msm_bedais[i].adm_override_ch;
1168
1169 bit_width = msm_routing_get_bit_width(
1170 msm_bedais[i].format);
1171 app_type =
1172 fe_dai_app_type_cfg[fe_id][session_type][i].app_type;
1173 if (app_type && is_lsm) {
1174 app_type_idx =
1175 msm_pcm_routing_get_lsm_app_type_idx(app_type);
1176 sample_rate =
1177 fe_dai_app_type_cfg[fe_id][session_type][i]
1178 .sample_rate;
1179 bit_width =
1180 lsm_app_type_cfg[app_type_idx].bit_width;
1181 } else if (app_type) {
1182 app_type_idx =
1183 msm_pcm_routing_get_app_type_idx(
1184 app_type);
1185 sample_rate =
1186 fe_dai_app_type_cfg[fe_id][session_type][i].sample_rate;
1187 bit_width =
1188 app_type_cfg[app_type_idx].bit_width;
1189 } else {
1190 sample_rate = msm_bedais[i].sample_rate;
1191 }
1192 acdb_dev_id =
1193 fe_dai_app_type_cfg[fe_id][session_type][i].acdb_dev_id;
1194 topology = msm_routing_get_adm_topology(fe_id,
1195 session_type,
1196 i);
1197 if ((passthr_mode == COMPRESSED_PASSTHROUGH_DSD)
1198 || (passthr_mode ==
1199 COMPRESSED_PASSTHROUGH_GEN))
1200 topology = COMPRESSED_PASSTHROUGH_NONE_TOPOLOGY;
1201 pr_debug("%s: Before adm open topology %d\n", __func__,
1202 topology);
1203
1204 copp_idx =
1205 adm_open(msm_bedais[i].port_id,
1206 path_type, sample_rate, channels,
1207 topology, perf_mode, bit_width,
1208 app_type, acdb_dev_id);
1209 if ((copp_idx < 0) ||
1210 (copp_idx >= MAX_COPPS_PER_PORT)) {
1211 pr_err("%s:adm open failed coppid:%d\n",
1212 __func__, copp_idx);
1213 mutex_unlock(&routing_lock);
1214 return -EINVAL;
1215 }
1216 pr_debug("%s: set idx bit of fe:%d, type: %d, be:%d\n",
1217 __func__, fe_id, session_type, i);
1218 set_bit(copp_idx,
1219 &session_copp_map[fe_id][session_type][i]);
1220
1221 if (msm_is_resample_needed(
1222 sample_rate,
1223 msm_bedais[i].sample_rate))
1224 adm_copp_mfc_cfg(
1225 msm_bedais[i].port_id, copp_idx,
1226 msm_bedais[i].sample_rate);
1227
1228 for (j = 0; j < MAX_COPPS_PER_PORT; j++) {
1229 unsigned long copp =
1230 session_copp_map[fe_id][session_type][i];
1231 if (test_bit(j, &copp)) {
1232 payload.port_id[num_copps] =
1233 msm_bedais[i].port_id;
1234 payload.copp_idx[num_copps] = j;
1235 payload.app_type[num_copps] =
1236 fe_dai_app_type_cfg
1237 [fe_id][session_type][i]
1238 .app_type;
1239 payload.acdb_dev_id[num_copps] =
1240 fe_dai_app_type_cfg
1241 [fe_id][session_type][i]
1242 .acdb_dev_id;
1243 payload.sample_rate[num_copps] =
1244 fe_dai_app_type_cfg
1245 [fe_id][session_type][i]
1246 .sample_rate;
1247 num_copps++;
1248 }
1249 }
1250 if (passthr_mode != COMPRESSED_PASSTHROUGH_DSD
1251 && passthr_mode !=
1252 COMPRESSED_PASSTHROUGH_GEN) {
1253 msm_routing_send_device_pp_params(
1254 msm_bedais[i].port_id,
1255 copp_idx, fe_id);
1256 }
1257 }
1258 }
1259 if (num_copps) {
1260 payload.num_copps = num_copps;
1261 payload.session_id = fe_dai_map[fe_id][session_type].strm_id;
1262 adm_matrix_map(path_type, payload, perf_mode, passthr_mode);
1263 msm_pcm_routng_cfg_matrix_map_pp(payload, path_type, perf_mode);
1264 }
1265 mutex_unlock(&routing_lock);
1266 return 0;
1267}
1268
1269static u32 msm_pcm_routing_get_voc_sessionid(u16 val)
1270{
1271 u32 session_id;
1272
1273 switch (val) {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301274 case MSM_FRONTEND_DAI_QCHAT:
1275 session_id = voc_get_session_id(QCHAT_SESSION_NAME);
1276 break;
1277 case MSM_FRONTEND_DAI_VOIP:
1278 session_id = voc_get_session_id(VOIP_SESSION_NAME);
1279 break;
1280 case MSM_FRONTEND_DAI_VOICEMMODE1:
1281 session_id = voc_get_session_id(VOICEMMODE1_NAME);
1282 break;
1283 case MSM_FRONTEND_DAI_VOICEMMODE2:
1284 session_id = voc_get_session_id(VOICEMMODE2_NAME);
1285 break;
1286 default:
1287 session_id = 0;
1288 }
1289
1290 pr_debug("%s session_id 0x%x", __func__, session_id);
1291 return session_id;
1292}
1293
1294static int msm_pcm_routing_channel_mixer(int fe_id, bool perf_mode,
1295 int dspst_id, int stream_type)
1296{
1297 int copp_idx = 0;
1298 int sess_type = 0;
1299 int i = 0, j = 0, be_id;
1300 int ret = 0;
1301
1302 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
1303 pr_err("%s: invalid FE %d\n", __func__, fe_id);
1304 return 0;
1305 }
1306
1307 if (!(channel_mixer[fe_id].enable)) {
1308 pr_debug("%s: channel mixer not enabled for FE %d\n",
1309 __func__, fe_id);
1310 return 0;
1311 }
1312
1313 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK)
1314 sess_type = SESSION_TYPE_RX;
1315 else
1316 sess_type = SESSION_TYPE_TX;
1317
1318 for (i = 0; i < ADM_MAX_CHANNELS && channel_input[fe_id][i] > 0;
1319 ++i) {
1320 be_id = channel_input[fe_id][i] - 1;
1321 channel_mixer[fe_id].input_channels[i] =
1322 msm_bedais[be_id].channel;
1323
1324 if ((msm_bedais[be_id].active) &&
1325 test_bit(fe_id,
1326 &msm_bedais[be_id].fe_sessions[0])) {
1327 unsigned long copp =
1328 session_copp_map[fe_id][sess_type][be_id];
1329 for (j = 0; j < MAX_COPPS_PER_PORT; j++) {
1330 if (test_bit(j, &copp)) {
1331 copp_idx = j;
1332 break;
1333 }
1334 }
1335
1336 pr_debug("%s: fe %d, be %d, channel %d, copp %d\n",
1337 __func__,
1338 fe_id, be_id, msm_bedais[be_id].channel,
1339 copp_idx);
1340 ret = adm_programable_channel_mixer(
1341 msm_bedais[be_id].port_id,
1342 copp_idx, dspst_id, sess_type,
1343 channel_mixer + fe_id, i);
1344 }
1345 }
1346
1347 return ret;
1348}
1349
1350int msm_pcm_routing_reg_phy_stream(int fedai_id, int perf_mode,
1351 int dspst_id, int stream_type)
1352{
1353 int i, j, session_type, path_type, port_type, topology, num_copps = 0;
1354 struct route_payload payload;
1355 u32 channels, sample_rate;
1356 uint16_t bits_per_sample = 16;
1357 uint32_t passthr_mode = LEGACY_PCM;
1358 int ret = 0;
1359
1360 if (fedai_id > MSM_FRONTEND_DAI_MM_MAX_ID) {
1361 /* bad ID assigned in machine driver */
1362 pr_err("%s: bad MM ID %d\n", __func__, fedai_id);
1363 return -EINVAL;
1364 }
1365
1366 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK) {
1367 session_type = SESSION_TYPE_RX;
1368 path_type = ADM_PATH_PLAYBACK;
1369 port_type = MSM_AFE_PORT_TYPE_RX;
1370 } else {
1371 session_type = SESSION_TYPE_TX;
1372 path_type = ADM_PATH_LIVE_REC;
1373 port_type = MSM_AFE_PORT_TYPE_TX;
1374 }
1375
1376 mutex_lock(&routing_lock);
1377
1378 payload.num_copps = 0; /* only RX needs to use payload */
1379 fe_dai_map[fedai_id][session_type].strm_id = dspst_id;
1380 fe_dai_map[fedai_id][session_type].perf_mode = perf_mode;
1381
1382 /* re-enable EQ if active */
1383 msm_qti_pp_send_eq_values(fedai_id);
1384 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
1385 if (!is_be_dai_extproc(i) &&
1386 (afe_get_port_type(msm_bedais[i].port_id) == port_type) &&
1387 (msm_bedais[i].active) &&
1388 (test_bit(fedai_id, &msm_bedais[i].fe_sessions[0]))) {
1389 int app_type, app_type_idx, copp_idx, acdb_dev_id;
1390 /*
1391 * check if ADM needs to be configured with different
1392 * channel mapping than backend
1393 */
1394 if (!msm_bedais[i].adm_override_ch)
1395 channels = msm_bedais[i].channel;
1396 else
1397 channels = msm_bedais[i].adm_override_ch;
1398 msm_bedais[i].passthr_mode[fedai_id] =
1399 LEGACY_PCM;
1400
1401 bits_per_sample = msm_routing_get_bit_width(
1402 msm_bedais[i].format);
1403
1404 app_type =
1405 fe_dai_app_type_cfg[fedai_id][session_type][i].app_type;
1406 if (app_type) {
1407 app_type_idx =
1408 msm_pcm_routing_get_app_type_idx(app_type);
1409 sample_rate =
1410 fe_dai_app_type_cfg[fedai_id][session_type][i]
1411 .sample_rate;
1412 bits_per_sample =
1413 app_type_cfg[app_type_idx].bit_width;
1414 } else
1415 sample_rate = msm_bedais[i].sample_rate;
1416
1417 acdb_dev_id =
1418 fe_dai_app_type_cfg[fedai_id][session_type][i]
1419 .acdb_dev_id;
1420 topology = msm_routing_get_adm_topology(fedai_id,
1421 session_type,
1422 i);
1423 copp_idx = adm_open(msm_bedais[i].port_id, path_type,
1424 sample_rate, channels, topology,
1425 perf_mode, bits_per_sample,
1426 app_type, acdb_dev_id);
1427 if ((copp_idx < 0) ||
1428 (copp_idx >= MAX_COPPS_PER_PORT)) {
1429 pr_err("%s: adm open failed copp_idx:%d\n",
1430 __func__, copp_idx);
1431 mutex_unlock(&routing_lock);
1432 return -EINVAL;
1433 }
1434 pr_debug("%s: setting idx bit of fe:%d, type: %d, be:%d\n",
1435 __func__, fedai_id, session_type, i);
1436 set_bit(copp_idx,
1437 &session_copp_map[fedai_id][session_type][i]);
1438
1439 if (msm_is_resample_needed(
1440 sample_rate,
1441 msm_bedais[i].sample_rate))
1442 adm_copp_mfc_cfg(
1443 msm_bedais[i].port_id, copp_idx,
1444 msm_bedais[i].sample_rate);
1445
1446 for (j = 0; j < MAX_COPPS_PER_PORT; j++) {
1447 unsigned long copp =
1448 session_copp_map[fedai_id][session_type][i];
1449 if (test_bit(j, &copp)) {
1450 payload.port_id[num_copps] =
1451 msm_bedais[i].port_id;
1452 payload.copp_idx[num_copps] = j;
1453 payload.app_type[num_copps] =
1454 fe_dai_app_type_cfg
1455 [fedai_id][session_type]
1456 [i].app_type;
1457 payload.acdb_dev_id[num_copps] =
1458 fe_dai_app_type_cfg
1459 [fedai_id][session_type]
1460 [i].acdb_dev_id;
1461 payload.sample_rate[num_copps] =
1462 fe_dai_app_type_cfg
1463 [fedai_id][session_type]
1464 [i].sample_rate;
1465 num_copps++;
1466 }
1467 }
1468 if ((perf_mode == LEGACY_PCM_MODE) &&
1469 (msm_bedais[i].passthr_mode[fedai_id] ==
1470 LEGACY_PCM))
1471 msm_pcm_routing_cfg_pp(msm_bedais[i].port_id,
1472 copp_idx, topology,
1473 channels);
1474 }
1475 }
1476 if (num_copps) {
1477 payload.num_copps = num_copps;
1478 payload.session_id = fe_dai_map[fedai_id][session_type].strm_id;
1479 adm_matrix_map(path_type, payload, perf_mode, passthr_mode);
1480 msm_pcm_routng_cfg_matrix_map_pp(payload, path_type, perf_mode);
1481 }
1482
1483 ret = msm_pcm_routing_channel_mixer(fedai_id, perf_mode,
1484 dspst_id, stream_type);
1485 mutex_unlock(&routing_lock);
1486 return ret;
1487}
1488
1489int msm_pcm_routing_reg_phy_stream_v2(int fedai_id, int perf_mode,
1490 int dspst_id, int stream_type,
1491 struct msm_pcm_routing_evt event_info)
1492{
1493 if (msm_pcm_routing_reg_phy_stream(fedai_id, perf_mode, dspst_id,
1494 stream_type)) {
1495 pr_err("%s: failed to reg phy stream\n", __func__);
1496 return -EINVAL;
1497 }
1498
1499 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK)
1500 fe_dai_map[fedai_id][SESSION_TYPE_RX].event_info = event_info;
1501 else
1502 fe_dai_map[fedai_id][SESSION_TYPE_TX].event_info = event_info;
1503 return 0;
1504}
1505
1506void msm_pcm_routing_dereg_phy_stream(int fedai_id, int stream_type)
1507{
1508 int i, port_type, session_type, path_type, topology;
1509 struct msm_pcm_routing_fdai_data *fdai;
1510
1511 if (!is_mm_lsm_fe_id(fedai_id)) {
1512 /* bad ID assigned in machine driver */
1513 pr_err("%s: bad MM ID\n", __func__);
1514 return;
1515 }
1516
1517 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK) {
1518 port_type = MSM_AFE_PORT_TYPE_RX;
1519 session_type = SESSION_TYPE_RX;
1520 path_type = ADM_PATH_PLAYBACK;
1521 } else {
1522 port_type = MSM_AFE_PORT_TYPE_TX;
1523 session_type = SESSION_TYPE_TX;
1524 path_type = ADM_PATH_LIVE_REC;
1525 }
1526
1527 mutex_lock(&routing_lock);
1528 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
1529 if (!is_be_dai_extproc(i) &&
1530 (afe_get_port_type(msm_bedais[i].port_id) == port_type) &&
1531 (msm_bedais[i].active) &&
1532 (test_bit(fedai_id, &msm_bedais[i].fe_sessions[0]))) {
1533 int idx;
1534 unsigned long copp =
1535 session_copp_map[fedai_id][session_type][i];
1536 fdai = &fe_dai_map[fedai_id][session_type];
1537
1538 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++)
1539 if (test_bit(idx, &copp))
1540 break;
1541
1542 if (idx >= MAX_COPPS_PER_PORT || idx < 0) {
1543 pr_debug("%s: copp idx is invalid, exiting\n",
1544 __func__);
1545 continue;
1546 }
1547 topology = adm_get_topology_for_port_copp_idx(
1548 msm_bedais[i].port_id, idx);
1549 adm_close(msm_bedais[i].port_id, fdai->perf_mode, idx);
1550 pr_debug("%s:copp:%ld,idx bit fe:%d,type:%d,be:%d\n",
1551 __func__, copp, fedai_id, session_type, i);
1552 clear_bit(idx,
1553 &session_copp_map[fedai_id][session_type][i]);
1554 if ((topology == DOLBY_ADM_COPP_TOPOLOGY_ID ||
1555 topology == DS2_ADM_COPP_TOPOLOGY_ID) &&
1556 (fdai->perf_mode == LEGACY_PCM_MODE) &&
1557 (msm_bedais[i].passthr_mode[fedai_id] ==
1558 LEGACY_PCM))
1559 msm_pcm_routing_deinit_pp(msm_bedais[i].port_id,
1560 topology);
1561 }
1562 }
1563
1564 fe_dai_map[fedai_id][session_type].strm_id = INVALID_SESSION;
1565 fe_dai_map[fedai_id][session_type].be_srate = 0;
1566 mutex_unlock(&routing_lock);
1567}
1568
1569/* Check if FE/BE route is set */
1570static bool msm_pcm_routing_route_is_set(u16 be_id, u16 fe_id)
1571{
1572 bool rc = false;
1573
1574 if (!is_mm_lsm_fe_id(fe_id)) {
1575 /* recheck FE ID in the mixer control defined in this file */
1576 pr_err("%s: bad MM ID\n", __func__);
1577 return rc;
1578 }
1579
1580 if (test_bit(fe_id, &msm_bedais[be_id].fe_sessions[0]))
1581 rc = true;
1582
1583 return rc;
1584}
1585
1586static void msm_pcm_routing_process_audio(u16 reg, u16 val, int set)
1587{
1588 int session_type, path_type, topology;
1589 u32 channels, sample_rate;
1590 uint16_t bits_per_sample = 16;
1591 struct msm_pcm_routing_fdai_data *fdai;
1592 uint32_t passthr_mode;
1593 bool is_lsm;
1594
1595 pr_debug("%s: reg %x val %x set %x\n", __func__, reg, val, set);
1596
1597 if (!is_mm_lsm_fe_id(val)) {
1598 /* recheck FE ID in the mixer control defined in this file */
1599 pr_err("%s: bad MM ID\n", __func__);
1600 return;
1601 }
1602
1603 if (!route_check_fe_id_adm_support(val)) {
1604 /* ignore adm open if not supported for fe_id */
1605 pr_debug("%s: No ADM support for fe id %d\n", __func__, val);
1606 return;
1607 }
1608
1609 passthr_mode = msm_bedais[reg].passthr_mode[val];
1610 if (afe_get_port_type(msm_bedais[reg].port_id) ==
1611 MSM_AFE_PORT_TYPE_RX) {
1612 session_type = SESSION_TYPE_RX;
1613 if (passthr_mode != LEGACY_PCM)
1614 path_type = ADM_PATH_COMPRESSED_RX;
1615 else
1616 path_type = ADM_PATH_PLAYBACK;
1617 } else {
1618 session_type = SESSION_TYPE_TX;
1619 if (passthr_mode != LEGACY_PCM)
1620 path_type = ADM_PATH_COMPRESSED_TX;
1621 else
1622 path_type = ADM_PATH_LIVE_REC;
1623 }
1624 is_lsm = (val >= MSM_FRONTEND_DAI_LSM1) &&
1625 (val <= MSM_FRONTEND_DAI_LSM8);
1626
1627 mutex_lock(&routing_lock);
1628 if (set) {
1629 if (!test_bit(val, &msm_bedais[reg].fe_sessions[0]) &&
1630 ((msm_bedais[reg].port_id == VOICE_PLAYBACK_TX) ||
1631 (msm_bedais[reg].port_id == VOICE2_PLAYBACK_TX)))
1632 voc_start_playback(set, msm_bedais[reg].port_id);
1633
1634 set_bit(val, &msm_bedais[reg].fe_sessions[0]);
1635 fdai = &fe_dai_map[val][session_type];
1636 if (msm_bedais[reg].active && fdai->strm_id !=
1637 INVALID_SESSION) {
1638 int app_type, app_type_idx, copp_idx, acdb_dev_id;
1639 /*
1640 * check if ADM needs to be configured with different
1641 * channel mapping than backend
1642 */
1643 if (!msm_bedais[reg].adm_override_ch)
1644 channels = msm_bedais[reg].channel;
1645 else
1646 channels = msm_bedais[reg].adm_override_ch;
1647 if (session_type == SESSION_TYPE_TX &&
1648 fdai->be_srate &&
1649 (fdai->be_srate != msm_bedais[reg].sample_rate)) {
1650 pr_debug("%s: flush strm %d diff BE rates\n",
1651 __func__, fdai->strm_id);
1652
1653 if (fdai->event_info.event_func)
1654 fdai->event_info.event_func(
1655 MSM_PCM_RT_EVT_BUF_RECFG,
1656 fdai->event_info.priv_data);
1657 fdai->be_srate = 0; /* might not need it */
1658 }
1659
1660 bits_per_sample = msm_routing_get_bit_width(
1661 msm_bedais[reg].format);
1662
1663 app_type =
1664 fe_dai_app_type_cfg[val][session_type][reg].app_type;
1665 if (app_type && is_lsm) {
1666 app_type_idx =
1667 msm_pcm_routing_get_lsm_app_type_idx(app_type);
1668 sample_rate =
1669 fe_dai_app_type_cfg[val][session_type][reg]
1670 .sample_rate;
1671 bits_per_sample =
1672 lsm_app_type_cfg[app_type_idx].bit_width;
1673 } else if (app_type) {
1674 app_type_idx =
1675 msm_pcm_routing_get_app_type_idx(app_type);
1676 sample_rate =
1677 fe_dai_app_type_cfg[val][session_type][reg]
1678 .sample_rate;
1679 bits_per_sample =
1680 app_type_cfg[app_type_idx].bit_width;
1681 } else
1682 sample_rate = msm_bedais[reg].sample_rate;
1683
1684 topology = msm_routing_get_adm_topology(val,
1685 session_type,
1686 reg);
1687 acdb_dev_id =
1688 fe_dai_app_type_cfg[val][session_type][reg].acdb_dev_id;
1689 copp_idx = adm_open(msm_bedais[reg].port_id, path_type,
1690 sample_rate, channels, topology,
1691 fdai->perf_mode, bits_per_sample,
1692 app_type, acdb_dev_id);
1693 if ((copp_idx < 0) ||
1694 (copp_idx >= MAX_COPPS_PER_PORT)) {
1695 pr_err("%s: adm open failed\n", __func__);
1696 mutex_unlock(&routing_lock);
1697 return;
1698 }
1699 pr_debug("%s: setting idx bit of fe:%d, type: %d, be:%d\n",
1700 __func__, val, session_type, reg);
1701 set_bit(copp_idx,
1702 &session_copp_map[val][session_type][reg]);
1703
1704 if (msm_is_resample_needed(
1705 sample_rate,
1706 msm_bedais[reg].sample_rate))
1707 adm_copp_mfc_cfg(
1708 msm_bedais[reg].port_id, copp_idx,
1709 msm_bedais[reg].sample_rate);
1710
1711 if (session_type == SESSION_TYPE_RX &&
1712 fdai->event_info.event_func)
1713 fdai->event_info.event_func(
1714 MSM_PCM_RT_EVT_DEVSWITCH,
1715 fdai->event_info.priv_data);
1716
1717 msm_pcm_routing_build_matrix(val, session_type,
1718 path_type,
1719 fdai->perf_mode,
1720 passthr_mode);
1721 if ((fdai->perf_mode == LEGACY_PCM_MODE) &&
1722 (passthr_mode == LEGACY_PCM))
1723 msm_pcm_routing_cfg_pp(msm_bedais[reg].port_id,
1724 copp_idx, topology,
1725 channels);
1726 }
1727 } else {
1728 if (test_bit(val, &msm_bedais[reg].fe_sessions[0]) &&
1729 ((msm_bedais[reg].port_id == VOICE_PLAYBACK_TX) ||
1730 (msm_bedais[reg].port_id == VOICE2_PLAYBACK_TX)))
1731 voc_start_playback(set, msm_bedais[reg].port_id);
1732 clear_bit(val, &msm_bedais[reg].fe_sessions[0]);
1733 fdai = &fe_dai_map[val][session_type];
1734 if (msm_bedais[reg].active && fdai->strm_id !=
1735 INVALID_SESSION) {
1736 int idx;
1737 int port_id;
1738 unsigned long copp =
1739 session_copp_map[val][session_type][reg];
1740 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++)
1741 if (test_bit(idx, &copp))
1742 break;
1743
1744 port_id = msm_bedais[reg].port_id;
1745 topology = adm_get_topology_for_port_copp_idx(port_id,
1746 idx);
1747 adm_close(msm_bedais[reg].port_id, fdai->perf_mode,
1748 idx);
1749 pr_debug("%s: copp: %ld, reset idx bit fe:%d, type: %d, be:%d topology=0x%x\n",
1750 __func__, copp, val, session_type, reg,
1751 topology);
1752 clear_bit(idx,
1753 &session_copp_map[val][session_type][reg]);
1754 if ((topology == DOLBY_ADM_COPP_TOPOLOGY_ID ||
1755 topology == DS2_ADM_COPP_TOPOLOGY_ID) &&
1756 (fdai->perf_mode == LEGACY_PCM_MODE) &&
1757 (passthr_mode == LEGACY_PCM))
1758 msm_pcm_routing_deinit_pp(
1759 msm_bedais[reg].port_id,
1760 topology);
1761 msm_pcm_routing_build_matrix(val, session_type,
1762 path_type,
1763 fdai->perf_mode,
1764 passthr_mode);
1765 }
1766 }
1767 if ((msm_bedais[reg].port_id == VOICE_RECORD_RX)
1768 || (msm_bedais[reg].port_id == VOICE_RECORD_TX))
1769 voc_start_record(msm_bedais[reg].port_id, set, voc_session_id);
1770
1771 mutex_unlock(&routing_lock);
1772}
1773
1774static int msm_routing_get_audio_mixer(struct snd_kcontrol *kcontrol,
1775 struct snd_ctl_elem_value *ucontrol)
1776{
1777 struct soc_mixer_control *mc =
1778 (struct soc_mixer_control *)kcontrol->private_value;
1779
1780 if (test_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]))
1781 ucontrol->value.integer.value[0] = 1;
1782 else
1783 ucontrol->value.integer.value[0] = 0;
1784
1785 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
1786 ucontrol->value.integer.value[0]);
1787
1788 return 0;
1789}
1790
1791static int msm_routing_put_audio_mixer(struct snd_kcontrol *kcontrol,
1792 struct snd_ctl_elem_value *ucontrol)
1793{
Asish Bhattacharya34504582017-08-08 12:55:01 +05301794 struct snd_soc_dapm_widget *widget =
1795 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301796 struct soc_mixer_control *mc =
1797 (struct soc_mixer_control *)kcontrol->private_value;
1798 struct snd_soc_dapm_update *update = NULL;
1799
1800 if (ucontrol->value.integer.value[0] &&
1801 msm_pcm_routing_route_is_set(mc->reg, mc->shift) == false) {
1802 msm_pcm_routing_process_audio(mc->reg, mc->shift, 1);
1803 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
1804 update);
1805 } else if (!ucontrol->value.integer.value[0] &&
1806 msm_pcm_routing_route_is_set(mc->reg, mc->shift) == true) {
1807 msm_pcm_routing_process_audio(mc->reg, mc->shift, 0);
1808 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
1809 update);
1810 }
1811
1812 return 1;
1813}
1814
1815static int msm_routing_get_listen_mixer(struct snd_kcontrol *kcontrol,
1816 struct snd_ctl_elem_value *ucontrol)
1817{
1818 struct soc_mixer_control *mc =
1819 (struct soc_mixer_control *)kcontrol->private_value;
1820
1821 if (test_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]))
1822 ucontrol->value.integer.value[0] = 1;
1823 else
1824 ucontrol->value.integer.value[0] = 0;
1825
1826 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
1827 ucontrol->value.integer.value[0]);
1828
1829 return 0;
1830}
1831
1832static int msm_routing_put_listen_mixer(struct snd_kcontrol *kcontrol,
1833 struct snd_ctl_elem_value *ucontrol)
1834{
Asish Bhattacharya34504582017-08-08 12:55:01 +05301835 struct snd_soc_dapm_widget *widget =
1836 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301837 struct soc_mixer_control *mc =
1838 (struct soc_mixer_control *)kcontrol->private_value;
1839 struct snd_soc_dapm_update *update = NULL;
1840
1841 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
1842 ucontrol->value.integer.value[0]);
1843
1844 if (ucontrol->value.integer.value[0]) {
1845 if (msm_pcm_routing_route_is_set(mc->reg, mc->shift) == false)
1846 msm_pcm_routing_process_audio(mc->reg, mc->shift, 1);
1847 snd_soc_dapm_mixer_update_power(widget->dapm,
1848 kcontrol, 1, update);
1849 } else if (!ucontrol->value.integer.value[0]) {
1850 if (msm_pcm_routing_route_is_set(mc->reg, mc->shift) == true)
1851 msm_pcm_routing_process_audio(mc->reg, mc->shift, 0);
1852 snd_soc_dapm_mixer_update_power(widget->dapm,
1853 kcontrol, 0, update);
1854 }
1855
1856 return 1;
1857}
1858
1859static void msm_pcm_routing_process_voice(u16 reg, u16 val, int set)
1860{
1861 u32 session_id = 0;
1862 u16 path_type;
1863 struct media_format_info voc_be_media_format;
1864
1865 pr_debug("%s: reg %x val %x set %x\n", __func__, reg, val, set);
1866
1867 session_id = msm_pcm_routing_get_voc_sessionid(val);
1868
1869 pr_debug("%s: FE DAI 0x%x session_id 0x%x\n",
1870 __func__, val, session_id);
1871
1872 mutex_lock(&routing_lock);
1873
1874 if (set)
1875 set_bit(val, &msm_bedais[reg].fe_sessions[0]);
1876 else
1877 clear_bit(val, &msm_bedais[reg].fe_sessions[0]);
1878
1879 if (val == MSM_FRONTEND_DAI_DTMF_RX &&
1880 afe_get_port_type(msm_bedais[reg].port_id) ==
1881 MSM_AFE_PORT_TYPE_RX) {
1882 pr_debug("%s(): set=%d port id=0x%x for dtmf generation\n",
1883 __func__, set, msm_bedais[reg].port_id);
1884 afe_set_dtmf_gen_rx_portid(msm_bedais[reg].port_id, set);
1885 }
1886
1887 if (afe_get_port_type(msm_bedais[reg].port_id) ==
1888 MSM_AFE_PORT_TYPE_RX)
1889 path_type = RX_PATH;
1890 else
1891 path_type = TX_PATH;
1892
1893 if (set) {
1894 if (msm_bedais[reg].active) {
1895 voc_set_route_flag(session_id, path_type, 1);
1896
1897 memset(&voc_be_media_format, 0,
1898 sizeof(struct media_format_info));
1899
1900 voc_be_media_format.port_id = msm_bedais[reg].port_id;
1901 voc_be_media_format.num_channels =
1902 msm_bedais[reg].channel;
1903 voc_be_media_format.sample_rate =
1904 msm_bedais[reg].sample_rate;
1905 voc_be_media_format.bits_per_sample =
1906 msm_bedais[reg].format;
1907 /* Defaulting this to 1 for voice call usecases */
1908 voc_be_media_format.channel_mapping[0] = 1;
1909
1910 voc_set_device_config(session_id, path_type,
1911 &voc_be_media_format);
1912
1913 if (voc_get_route_flag(session_id, TX_PATH) &&
1914 voc_get_route_flag(session_id, RX_PATH))
1915 voc_enable_device(session_id);
1916 } else {
1917 pr_debug("%s BE is not active\n", __func__);
1918 }
1919 } else {
1920 voc_set_route_flag(session_id, path_type, 0);
1921 voc_disable_device(session_id);
1922 }
1923
1924 mutex_unlock(&routing_lock);
1925
1926}
1927
1928static int msm_routing_get_voice_mixer(struct snd_kcontrol *kcontrol,
1929 struct snd_ctl_elem_value *ucontrol)
1930{
1931 struct soc_mixer_control *mc =
1932 (struct soc_mixer_control *)kcontrol->private_value;
1933
1934 mutex_lock(&routing_lock);
1935
1936 if (test_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]))
1937 ucontrol->value.integer.value[0] = 1;
1938 else
1939 ucontrol->value.integer.value[0] = 0;
1940
1941 mutex_unlock(&routing_lock);
1942
1943 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
1944 ucontrol->value.integer.value[0]);
1945
1946 return 0;
1947}
1948
1949static int msm_routing_put_voice_mixer(struct snd_kcontrol *kcontrol,
1950 struct snd_ctl_elem_value *ucontrol)
1951{
Asish Bhattacharya34504582017-08-08 12:55:01 +05301952 struct snd_soc_dapm_widget *widget =
1953 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301954 struct soc_mixer_control *mc =
1955 (struct soc_mixer_control *)kcontrol->private_value;
1956 struct snd_soc_dapm_update *update = NULL;
1957
1958 if (ucontrol->value.integer.value[0]) {
1959 msm_pcm_routing_process_voice(mc->reg, mc->shift, 1);
1960 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
1961 update);
1962 } else {
1963 msm_pcm_routing_process_voice(mc->reg, mc->shift, 0);
1964 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
1965 update);
1966 }
1967
1968 return 1;
1969}
1970
1971static int msm_routing_get_voice_stub_mixer(struct snd_kcontrol *kcontrol,
1972 struct snd_ctl_elem_value *ucontrol)
1973{
1974 struct soc_mixer_control *mc =
1975 (struct soc_mixer_control *)kcontrol->private_value;
1976
1977 mutex_lock(&routing_lock);
1978
1979 if (test_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]))
1980 ucontrol->value.integer.value[0] = 1;
1981 else
1982 ucontrol->value.integer.value[0] = 0;
1983
1984 mutex_unlock(&routing_lock);
1985
1986 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
1987 ucontrol->value.integer.value[0]);
1988
1989 return 0;
1990}
1991
1992static int msm_routing_put_voice_stub_mixer(struct snd_kcontrol *kcontrol,
1993 struct snd_ctl_elem_value *ucontrol)
1994{
Asish Bhattacharya34504582017-08-08 12:55:01 +05301995 struct snd_soc_dapm_widget *widget =
1996 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301997 struct soc_mixer_control *mc =
1998 (struct soc_mixer_control *)kcontrol->private_value;
1999 struct snd_soc_dapm_update *update = NULL;
2000
2001 if (ucontrol->value.integer.value[0]) {
2002 mutex_lock(&routing_lock);
2003 set_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]);
2004 mutex_unlock(&routing_lock);
2005
2006 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2007 update);
2008 } else {
2009 mutex_lock(&routing_lock);
2010 clear_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]);
2011 mutex_unlock(&routing_lock);
2012
2013 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2014 update);
2015 }
2016
2017 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
2018 ucontrol->value.integer.value[0]);
2019
2020 return 1;
2021}
2022
2023/*
2024 * Return the mapping between port ID and backend ID to enable the AFE callback
2025 * to determine the acdb_dev_id from the port id
2026 */
2027int msm_pcm_get_be_id_from_port_id(int port_id)
2028{
2029 int i;
2030 int be_id = -EINVAL;
2031
2032 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
2033 if (msm_bedais[i].port_id == port_id) {
2034 be_id = i;
2035 break;
2036 }
2037 }
2038
2039 return be_id;
2040}
2041
2042/*
2043 * Return the registered dev_acdb_id given a port ID to enable identifying the
2044 * correct AFE calibration information by comparing the header information.
2045 */
2046static int msm_pcm_get_dev_acdb_id_by_port_id(int port_id)
2047{
2048 int acdb_id = -EINVAL;
2049 int i = 0;
2050 int session;
2051 int port_type = afe_get_port_type(port_id);
2052 int be_id = msm_pcm_get_be_id_from_port_id(port_id);
2053
2054 pr_debug("%s:port_id %d be_id %d, port_type 0x%x\n",
2055 __func__, port_id, be_id, port_type);
2056
2057 if (port_type == MSM_AFE_PORT_TYPE_TX) {
2058 session = SESSION_TYPE_TX;
2059 } else if (port_type == MSM_AFE_PORT_TYPE_RX) {
2060 session = SESSION_TYPE_RX;
2061 } else {
2062 pr_err("%s: Invalid port type %d\n", __func__, port_type);
2063 acdb_id = -EINVAL;
2064 goto exit;
2065 }
2066
2067 if (be_id < 0) {
2068 pr_err("%s: Error getting backend id %d\n", __func__, be_id);
2069 goto exit;
2070 }
2071
2072 mutex_lock(&routing_lock);
2073 i = find_first_bit(&msm_bedais[be_id].fe_sessions[0],
2074 MSM_FRONTEND_DAI_MAX);
2075 if (i < MSM_FRONTEND_DAI_MAX)
2076 acdb_id = fe_dai_app_type_cfg[i][session][be_id].acdb_dev_id;
2077
2078 pr_debug("%s: FE[%d] session[%d] BE[%d] acdb_id(%d)\n",
2079 __func__, i, session, be_id, acdb_id);
2080 mutex_unlock(&routing_lock);
2081exit:
2082 return acdb_id;
2083}
2084
2085static int msm_routing_get_switch_mixer(struct snd_kcontrol *kcontrol,
2086 struct snd_ctl_elem_value *ucontrol)
2087{
2088 ucontrol->value.integer.value[0] = fm_switch_enable;
2089 pr_debug("%s: FM Switch enable %ld\n", __func__,
2090 ucontrol->value.integer.value[0]);
2091 return 0;
2092}
2093
2094static int msm_routing_put_switch_mixer(struct snd_kcontrol *kcontrol,
2095 struct snd_ctl_elem_value *ucontrol)
2096{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302097 struct snd_soc_dapm_widget *widget =
2098 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302099 struct snd_soc_dapm_update *update = NULL;
2100
2101 pr_debug("%s: FM Switch enable %ld\n", __func__,
2102 ucontrol->value.integer.value[0]);
2103 if (ucontrol->value.integer.value[0])
2104 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2105 update);
2106 else
2107 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2108 update);
2109 fm_switch_enable = ucontrol->value.integer.value[0];
2110 return 1;
2111}
2112
2113static int msm_routing_get_hfp_switch_mixer(struct snd_kcontrol *kcontrol,
2114 struct snd_ctl_elem_value *ucontrol)
2115{
2116 ucontrol->value.integer.value[0] = hfp_switch_enable;
2117 pr_debug("%s: HFP Switch enable %ld\n", __func__,
2118 ucontrol->value.integer.value[0]);
2119 return 0;
2120}
2121
2122static int msm_routing_put_hfp_switch_mixer(struct snd_kcontrol *kcontrol,
2123 struct snd_ctl_elem_value *ucontrol)
2124{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302125 struct snd_soc_dapm_widget *widget =
2126 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302127 struct snd_soc_dapm_update *update = NULL;
2128
2129 pr_debug("%s: HFP Switch enable %ld\n", __func__,
2130 ucontrol->value.integer.value[0]);
2131 if (ucontrol->value.integer.value[0])
2132 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol,
2133 1, update);
2134 else
2135 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol,
2136 0, update);
2137 hfp_switch_enable = ucontrol->value.integer.value[0];
2138 return 1;
2139}
2140
2141static int msm_routing_get_int0_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2142 struct snd_ctl_elem_value *ucontrol)
2143{
2144 ucontrol->value.integer.value[0] = int0_mi2s_switch_enable;
2145 pr_debug("%s: INT0 MI2S Switch enable %ld\n", __func__,
2146 ucontrol->value.integer.value[0]);
2147 return 0;
2148}
2149
2150static int msm_routing_put_int0_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2151 struct snd_ctl_elem_value *ucontrol)
2152{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302153 struct snd_soc_dapm_widget *widget =
2154 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302155 struct snd_soc_dapm_update *update = NULL;
2156
2157 pr_debug("%s: INT0 MI2S Switch enable %ld\n", __func__,
2158 ucontrol->value.integer.value[0]);
2159 if (ucontrol->value.integer.value[0])
2160 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2161 update);
2162 else
2163 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2164 update);
2165 int0_mi2s_switch_enable = ucontrol->value.integer.value[0];
2166 return 1;
2167}
2168
2169static int msm_routing_get_int4_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2170 struct snd_ctl_elem_value *ucontrol)
2171{
2172 ucontrol->value.integer.value[0] = int4_mi2s_switch_enable;
2173 pr_debug("%s: INT4 MI2S Switch enable %ld\n", __func__,
2174 ucontrol->value.integer.value[0]);
2175 return 0;
2176}
2177
2178static int msm_routing_put_int4_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2179 struct snd_ctl_elem_value *ucontrol)
2180{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302181 struct snd_soc_dapm_widget *widget =
2182 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302183 struct snd_soc_dapm_update *update = NULL;
2184
2185 pr_debug("%s: INT4 MI2S Switch enable %ld\n", __func__,
2186 ucontrol->value.integer.value[0]);
2187 if (ucontrol->value.integer.value[0])
2188 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2189 update);
2190 else
2191 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2192 update);
2193 int4_mi2s_switch_enable = ucontrol->value.integer.value[0];
2194 return 1;
2195}
2196
2197static int msm_routing_get_usb_switch_mixer(struct snd_kcontrol *kcontrol,
2198 struct snd_ctl_elem_value *ucontrol)
2199{
2200 ucontrol->value.integer.value[0] = usb_switch_enable;
2201 pr_debug("%s: HFP Switch enable %ld\n", __func__,
2202 ucontrol->value.integer.value[0]);
2203 return 0;
2204}
2205
2206static int msm_routing_put_usb_switch_mixer(struct snd_kcontrol *kcontrol,
2207 struct snd_ctl_elem_value *ucontrol)
2208{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302209 struct snd_soc_dapm_widget *widget =
2210 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302211 struct snd_soc_dapm_update *update = NULL;
2212
2213 pr_debug("%s: USB Switch enable %ld\n", __func__,
2214 ucontrol->value.integer.value[0]);
2215 if (ucontrol->value.integer.value[0])
2216 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol,
2217 1, update);
2218 else
2219 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol,
2220 0, update);
2221 usb_switch_enable = ucontrol->value.integer.value[0];
2222 return 1;
2223}
2224
2225static int msm_routing_get_pri_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2226 struct snd_ctl_elem_value *ucontrol)
2227{
2228 ucontrol->value.integer.value[0] = pri_mi2s_switch_enable;
2229 pr_debug("%s: PRI MI2S Switch enable %ld\n", __func__,
2230 ucontrol->value.integer.value[0]);
2231 return 0;
2232}
2233
2234static int msm_routing_put_pri_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2235 struct snd_ctl_elem_value *ucontrol)
2236{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302237 struct snd_soc_dapm_widget *widget =
2238 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302239 struct snd_soc_dapm_update *update = NULL;
2240
2241 pr_debug("%s: PRI MI2S Switch enable %ld\n", __func__,
2242 ucontrol->value.integer.value[0]);
2243 if (ucontrol->value.integer.value[0])
2244 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2245 update);
2246 else
2247 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2248 update);
2249 pri_mi2s_switch_enable = ucontrol->value.integer.value[0];
2250 return 1;
2251}
2252
2253static int msm_routing_get_sec_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2254 struct snd_ctl_elem_value *ucontrol)
2255{
2256 ucontrol->value.integer.value[0] = sec_mi2s_switch_enable;
2257 pr_debug("%s: SEC MI2S Switch enable %ld\n", __func__,
2258 ucontrol->value.integer.value[0]);
2259 return 0;
2260}
2261
2262static int msm_routing_put_sec_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2263 struct snd_ctl_elem_value *ucontrol)
2264{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302265 struct snd_soc_dapm_widget *widget =
2266 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302267 struct snd_soc_dapm_update *update = NULL;
2268
2269 pr_debug("%s: SEC MI2S Switch enable %ld\n", __func__,
2270 ucontrol->value.integer.value[0]);
2271 if (ucontrol->value.integer.value[0])
2272 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2273 update);
2274 else
2275 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2276 update);
2277 sec_mi2s_switch_enable = ucontrol->value.integer.value[0];
2278 return 1;
2279}
2280
2281static int msm_routing_get_tert_mi2s_switch_mixer(
2282 struct snd_kcontrol *kcontrol,
2283 struct snd_ctl_elem_value *ucontrol)
2284{
2285 ucontrol->value.integer.value[0] = tert_mi2s_switch_enable;
2286 pr_debug("%s: TERT MI2S Switch enable %ld\n", __func__,
2287 ucontrol->value.integer.value[0]);
2288 return 0;
2289}
2290
2291static int msm_routing_put_tert_mi2s_switch_mixer(
2292 struct snd_kcontrol *kcontrol,
2293 struct snd_ctl_elem_value *ucontrol)
2294{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302295 struct snd_soc_dapm_widget *widget =
2296 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302297 struct snd_soc_dapm_update *update = NULL;
2298
2299 pr_debug("%s: TERT MI2S Switch enable %ld\n", __func__,
2300 ucontrol->value.integer.value[0]);
2301 if (ucontrol->value.integer.value[0])
2302 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2303 update);
2304 else
2305 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2306 update);
2307 tert_mi2s_switch_enable = ucontrol->value.integer.value[0];
2308 return 1;
2309}
2310
2311static int msm_routing_get_quat_mi2s_switch_mixer(
2312 struct snd_kcontrol *kcontrol,
2313 struct snd_ctl_elem_value *ucontrol)
2314{
2315 ucontrol->value.integer.value[0] = quat_mi2s_switch_enable;
2316 pr_debug("%s: QUAT MI2S Switch enable %ld\n", __func__,
2317 ucontrol->value.integer.value[0]);
2318 return 0;
2319}
2320
2321static int msm_routing_put_quat_mi2s_switch_mixer(
2322 struct snd_kcontrol *kcontrol,
2323 struct snd_ctl_elem_value *ucontrol)
2324{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302325 struct snd_soc_dapm_widget *widget =
2326 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302327 struct snd_soc_dapm_update *update = NULL;
2328
2329 pr_debug("%s: QUAT MI2S Switch enable %ld\n", __func__,
2330 ucontrol->value.integer.value[0]);
2331 if (ucontrol->value.integer.value[0])
2332 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2333 update);
2334 else
2335 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2336 update);
2337 quat_mi2s_switch_enable = ucontrol->value.integer.value[0];
2338 return 1;
2339}
2340
Rohit Kumara5077932017-09-10 22:05:05 +05302341static int msm_routing_get_quin_mi2s_switch_mixer(
2342 struct snd_kcontrol *kcontrol,
2343 struct snd_ctl_elem_value *ucontrol)
2344{
2345 ucontrol->value.integer.value[0] = quin_mi2s_switch_enable;
2346 pr_debug("%s: QUIN MI2S Switch enable %ld\n", __func__,
2347 ucontrol->value.integer.value[0]);
2348 return 0;
2349}
2350
2351static int msm_routing_put_quin_mi2s_switch_mixer(
2352 struct snd_kcontrol *kcontrol,
2353 struct snd_ctl_elem_value *ucontrol)
2354{
2355 struct snd_soc_dapm_widget *widget =
2356 snd_soc_dapm_kcontrol_widget(kcontrol);
2357 struct snd_soc_dapm_update *update = NULL;
2358
2359 pr_debug("%s: QUIN MI2S Switch enable %ld\n", __func__,
2360 ucontrol->value.integer.value[0]);
2361 if (ucontrol->value.integer.value[0])
2362 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2363 update);
2364 else
2365 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2366 update);
2367 quin_mi2s_switch_enable = ucontrol->value.integer.value[0];
2368 return 1;
2369}
2370
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302371static int msm_routing_get_fm_pcmrx_switch_mixer(struct snd_kcontrol *kcontrol,
2372 struct snd_ctl_elem_value *ucontrol)
2373{
2374 ucontrol->value.integer.value[0] = fm_pcmrx_switch_enable;
2375 pr_debug("%s: FM Switch enable %ld\n", __func__,
2376 ucontrol->value.integer.value[0]);
2377 return 0;
2378}
2379
2380static int msm_routing_put_fm_pcmrx_switch_mixer(struct snd_kcontrol *kcontrol,
2381 struct snd_ctl_elem_value *ucontrol)
2382{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302383 struct snd_soc_dapm_widget *widget =
2384 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302385 struct snd_soc_dapm_update *update = NULL;
2386
2387 pr_debug("%s: FM Switch enable %ld\n", __func__,
2388 ucontrol->value.integer.value[0]);
2389 if (ucontrol->value.integer.value[0])
2390 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2391 update);
2392 else
2393 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2394 update);
2395 fm_pcmrx_switch_enable = ucontrol->value.integer.value[0];
2396 return 1;
2397}
2398
2399static int msm_routing_lsm_port_get(struct snd_kcontrol *kcontrol,
2400 struct snd_ctl_elem_value *ucontrol)
2401{
2402 ucontrol->value.integer.value[0] = lsm_port_index;
2403 return 0;
2404}
2405
2406static int msm_routing_lsm_port_put(struct snd_kcontrol *kcontrol,
2407 struct snd_ctl_elem_value *ucontrol)
2408{
2409 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
2410 int mux = ucontrol->value.enumerated.item[0];
2411 int lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_5_TX;
2412
2413 if (mux >= e->items) {
2414 pr_err("%s: Invalid mux value %d\n", __func__, mux);
2415 return -EINVAL;
2416 }
2417
2418 pr_debug("%s: LSM enable %ld\n", __func__,
2419 ucontrol->value.integer.value[0]);
2420 switch (ucontrol->value.integer.value[0]) {
2421 case 1:
2422 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_0_TX;
2423 break;
2424 case 2:
2425 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_1_TX;
2426 break;
2427 case 3:
2428 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_2_TX;
2429 break;
2430 case 4:
2431 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_3_TX;
2432 break;
2433 case 5:
2434 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_4_TX;
2435 break;
2436 case 6:
2437 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_5_TX;
2438 break;
2439 case 7:
2440 lsm_port = AFE_PORT_ID_TERTIARY_MI2S_TX;
2441 break;
2442 case 8:
2443 lsm_port = AFE_PORT_ID_QUATERNARY_MI2S_TX;
2444 break;
2445 case 9:
2446 lsm_port = ADM_LSM_PORT_ID;
2447 break;
2448 case 10:
2449 lsm_port = AFE_PORT_ID_INT3_MI2S_TX;
2450 break;
2451 default:
2452 pr_err("Default lsm port");
2453 break;
2454 }
2455 set_lsm_port(lsm_port);
2456 lsm_port_index = ucontrol->value.integer.value[0];
2457
2458 return 0;
2459}
2460
2461static int msm_routing_lsm_func_get(struct snd_kcontrol *kcontrol,
2462 struct snd_ctl_elem_value *ucontrol)
2463{
2464 int i;
2465 u16 port_id;
2466 enum afe_mad_type mad_type;
2467
2468 pr_debug("%s: enter\n", __func__);
2469 for (i = 0; i < ARRAY_SIZE(lsm_port_text); i++)
2470 if (!strnstr(kcontrol->id.name, lsm_port_text[i],
2471 strlen(lsm_port_text[i])))
2472 break;
2473
2474 if (i-- == ARRAY_SIZE(lsm_port_text)) {
2475 WARN(1, "Invalid id name %s\n", kcontrol->id.name);
2476 return -EINVAL;
2477 }
2478
2479 port_id = i * 2 + 1 + SLIMBUS_0_RX;
2480
2481 /*Check for Tertiary/Quaternary/INT3 TX port*/
2482 if (strnstr(kcontrol->id.name, lsm_port_text[7],
2483 strlen(lsm_port_text[7])))
2484 port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
2485
2486 if (strnstr(kcontrol->id.name, lsm_port_text[8],
2487 strlen(lsm_port_text[8])))
2488 port_id = AFE_PORT_ID_QUATERNARY_MI2S_TX;
2489
2490 if (strnstr(kcontrol->id.name, lsm_port_text[10],
2491 strlen(lsm_port_text[10])))
2492 port_id = AFE_PORT_ID_INT3_MI2S_TX;
2493
2494 mad_type = afe_port_get_mad_type(port_id);
2495 pr_debug("%s: port_id 0x%x, mad_type %d\n", __func__, port_id,
2496 mad_type);
2497 switch (mad_type) {
2498 case MAD_HW_NONE:
2499 ucontrol->value.integer.value[0] = MADNONE;
2500 break;
2501 case MAD_HW_AUDIO:
2502 ucontrol->value.integer.value[0] = MADAUDIO;
2503 break;
2504 case MAD_HW_BEACON:
2505 ucontrol->value.integer.value[0] = MADBEACON;
2506 break;
2507 case MAD_HW_ULTRASOUND:
2508 ucontrol->value.integer.value[0] = MADULTRASOUND;
2509 break;
2510 case MAD_SW_AUDIO:
2511 ucontrol->value.integer.value[0] = MADSWAUDIO;
2512 break;
2513 default:
2514 WARN(1, "Unknown\n");
2515 return -EINVAL;
2516 }
2517 return 0;
2518}
2519
2520static int msm_routing_lsm_func_put(struct snd_kcontrol *kcontrol,
2521 struct snd_ctl_elem_value *ucontrol)
2522{
2523 int i;
2524 u16 port_id;
2525 enum afe_mad_type mad_type;
2526
2527 pr_debug("%s: enter\n", __func__);
2528 for (i = 0; i < ARRAY_SIZE(lsm_port_text); i++)
2529 if (strnstr(kcontrol->id.name, lsm_port_text[i],
2530 strlen(lsm_port_text[i])))
2531 break;
2532
2533 if (i-- == ARRAY_SIZE(lsm_port_text)) {
2534 WARN(1, "Invalid id name %s\n", kcontrol->id.name);
2535 return -EINVAL;
2536 }
2537
2538 port_id = i * 2 + 1 + SLIMBUS_0_RX;
2539 switch (ucontrol->value.integer.value[0]) {
2540 case MADNONE:
2541 mad_type = MAD_HW_NONE;
2542 break;
2543 case MADAUDIO:
2544 mad_type = MAD_HW_AUDIO;
2545 break;
2546 case MADBEACON:
2547 mad_type = MAD_HW_BEACON;
2548 break;
2549 case MADULTRASOUND:
2550 mad_type = MAD_HW_ULTRASOUND;
2551 break;
2552 case MADSWAUDIO:
2553 mad_type = MAD_SW_AUDIO;
2554 break;
2555 default:
2556 WARN(1, "Unknown\n");
2557 return -EINVAL;
2558 }
2559
2560 /*Check for Tertiary/Quaternary/INT3 TX port*/
2561 if (strnstr(kcontrol->id.name, lsm_port_text[7],
2562 strlen(lsm_port_text[7])))
2563 port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
2564
2565 if (strnstr(kcontrol->id.name, lsm_port_text[8],
2566 strlen(lsm_port_text[8])))
2567 port_id = AFE_PORT_ID_QUATERNARY_MI2S_TX;
2568
2569 if (strnstr(kcontrol->id.name, lsm_port_text[10],
2570 strlen(lsm_port_text[10])))
2571 port_id = AFE_PORT_ID_INT3_MI2S_TX;
2572
2573 pr_debug("%s: port_id 0x%x, mad_type %d\n", __func__, port_id,
2574 mad_type);
Aditya Bavanari2a627ae2017-11-21 20:24:53 +05302575 adm_set_lsm_port_id(port_id);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302576 return afe_port_set_mad_type(port_id, mad_type);
2577}
2578
2579static const char *const adm_override_chs_text[] = {"Zero", "One", "Two"};
2580
2581static SOC_ENUM_SINGLE_EXT_DECL(slim_7_rx_adm_override_chs,
2582 adm_override_chs_text);
2583
2584static int msm_routing_adm_get_backend_idx(struct snd_kcontrol *kcontrol)
2585{
2586 int backend_id;
2587
2588 if (strnstr(kcontrol->id.name, "SLIM7_RX", sizeof("SLIM7_RX"))) {
2589 backend_id = MSM_BACKEND_DAI_SLIMBUS_7_RX;
2590 } else {
2591 pr_err("%s: unsupported backend id: %s",
2592 __func__, kcontrol->id.name);
2593 return -EINVAL;
2594 }
2595
2596 return backend_id;
2597}
2598static int msm_routing_adm_channel_config_get(
2599 struct snd_kcontrol *kcontrol,
2600 struct snd_ctl_elem_value *ucontrol)
2601{
2602 int backend_id = msm_routing_adm_get_backend_idx(kcontrol);
2603
2604 if (backend_id >= 0) {
2605 mutex_lock(&routing_lock);
2606 ucontrol->value.integer.value[0] =
2607 msm_bedais[backend_id].adm_override_ch;
2608 pr_debug("%s: adm channel count %ld for BE:%d\n", __func__,
2609 ucontrol->value.integer.value[0], backend_id);
2610 mutex_unlock(&routing_lock);
2611 }
2612
2613 return 0;
2614}
2615
2616static int msm_routing_adm_channel_config_put(
2617 struct snd_kcontrol *kcontrol,
2618 struct snd_ctl_elem_value *ucontrol)
2619{
2620 int backend_id = msm_routing_adm_get_backend_idx(kcontrol);
2621
2622 if (backend_id >= 0) {
2623 mutex_lock(&routing_lock);
2624 msm_bedais[backend_id].adm_override_ch =
2625 ucontrol->value.integer.value[0];
2626 pr_debug("%s:updating BE :%d adm channels: %d\n",
2627 __func__, backend_id,
2628 msm_bedais[backend_id].adm_override_ch);
2629 mutex_unlock(&routing_lock);
2630 }
2631
2632 return 0;
2633}
2634
2635static const struct snd_kcontrol_new adm_channel_config_controls[] = {
2636 SOC_ENUM_EXT("SLIM7_RX ADM Channels", slim_7_rx_adm_override_chs,
2637 msm_routing_adm_channel_config_get,
2638 msm_routing_adm_channel_config_put),
2639};
2640
2641static int msm_routing_slim_0_rx_aanc_mux_get(struct snd_kcontrol *kcontrol,
2642 struct snd_ctl_elem_value *ucontrol)
2643{
2644
2645 mutex_lock(&routing_lock);
2646 ucontrol->value.integer.value[0] = slim0_rx_aanc_fb_port;
2647 mutex_unlock(&routing_lock);
2648 pr_debug("%s: AANC Mux Port %ld\n", __func__,
2649 ucontrol->value.integer.value[0]);
2650 return 0;
2651};
2652
2653static int msm_routing_slim_0_rx_aanc_mux_put(struct snd_kcontrol *kcontrol,
2654 struct snd_ctl_elem_value *ucontrol)
2655{
2656 struct aanc_data aanc_info;
2657
2658 mutex_lock(&routing_lock);
2659 memset(&aanc_info, 0x00, sizeof(aanc_info));
2660 pr_debug("%s: AANC Mux Port %ld\n", __func__,
2661 ucontrol->value.integer.value[0]);
2662 slim0_rx_aanc_fb_port = ucontrol->value.integer.value[0];
2663 if (ucontrol->value.integer.value[0] == 0) {
2664 aanc_info.aanc_active = false;
2665 aanc_info.aanc_tx_port = 0;
2666 aanc_info.aanc_rx_port = 0;
2667 } else {
2668 aanc_info.aanc_active = true;
2669 aanc_info.aanc_rx_port = SLIMBUS_0_RX;
2670 aanc_info.aanc_tx_port =
2671 (SLIMBUS_0_RX - 1 + (slim0_rx_aanc_fb_port * 2));
2672 }
2673 afe_set_aanc_info(&aanc_info);
2674 mutex_unlock(&routing_lock);
2675 return 0;
2676};
2677static int msm_routing_get_port_mixer(struct snd_kcontrol *kcontrol,
2678 struct snd_ctl_elem_value *ucontrol)
2679{
2680 int idx = 0, shift = 0;
2681 struct soc_mixer_control *mc =
2682 (struct soc_mixer_control *)kcontrol->private_value;
2683
2684 idx = mc->shift/(sizeof(msm_bedais[mc->reg].port_sessions[0]) * 8);
2685 shift = mc->shift%(sizeof(msm_bedais[mc->reg].port_sessions[0]) * 8);
2686
2687 if (idx >= BE_DAI_PORT_SESSIONS_IDX_MAX) {
2688 pr_err("%s: Invalid idx = %d\n", __func__, idx);
2689 return -EINVAL;
2690 }
2691
2692 if (test_bit(shift,
2693 (unsigned long *)&msm_bedais[mc->reg].port_sessions[idx]))
2694 ucontrol->value.integer.value[0] = 1;
2695 else
2696 ucontrol->value.integer.value[0] = 0;
2697
2698 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
2699 ucontrol->value.integer.value[0]);
2700
2701 return 0;
2702}
2703
2704static int msm_routing_put_port_mixer(struct snd_kcontrol *kcontrol,
2705 struct snd_ctl_elem_value *ucontrol)
2706{
2707 int idx = 0, shift = 0;
2708 struct soc_mixer_control *mc =
2709 (struct soc_mixer_control *)kcontrol->private_value;
2710
2711 idx = mc->shift/(sizeof(msm_bedais[mc->reg].port_sessions[0]) * 8);
2712 shift = mc->shift%(sizeof(msm_bedais[mc->reg].port_sessions[0]) * 8);
2713
2714 if (idx >= BE_DAI_PORT_SESSIONS_IDX_MAX) {
2715 pr_err("%s: Invalid idx = %d\n", __func__, idx);
2716 return -EINVAL;
2717 }
2718
2719 pr_debug("%s: reg 0x%x shift 0x%x val %ld idx %d reminder shift %d\n",
2720 __func__, mc->reg, mc->shift,
2721 ucontrol->value.integer.value[0], idx, shift);
2722
2723 if (ucontrol->value.integer.value[0]) {
2724 afe_loopback(1, msm_bedais[mc->reg].port_id,
2725 msm_bedais[mc->shift].port_id);
2726 set_bit(shift,
2727 (unsigned long *)&msm_bedais[mc->reg].port_sessions[idx]);
2728 } else {
2729 afe_loopback(0, msm_bedais[mc->reg].port_id,
2730 msm_bedais[mc->shift].port_id);
2731 clear_bit(shift,
2732 (unsigned long *)&msm_bedais[mc->reg].port_sessions[idx]);
2733 }
2734
2735 return 1;
2736}
2737
2738static int msm_pcm_get_channel_rule_index(struct snd_kcontrol *kcontrol,
2739 struct snd_ctl_elem_value *ucontrol)
2740{
2741 u16 fe_id = 0;
2742
2743 fe_id = ((struct soc_mixer_control *)
2744 kcontrol->private_value)->shift;
2745 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2746 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2747 return -EINVAL;
2748 }
2749
2750 ucontrol->value.integer.value[0] = channel_mixer[fe_id].rule;
2751
2752 return 0;
2753}
2754
2755static int msm_pcm_put_channel_rule_index(struct snd_kcontrol *kcontrol,
2756 struct snd_ctl_elem_value *ucontrol)
2757{
2758 u16 fe_id = 0;
2759
2760 fe_id = ((struct soc_mixer_control *)
2761 kcontrol->private_value)->shift;
2762 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2763 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2764 return -EINVAL;
2765 }
2766
2767 channel_mixer[fe_id].rule = ucontrol->value.integer.value[0];
2768
2769 return 1;
2770}
2771
2772static int msm_pcm_get_out_chs(struct snd_kcontrol *kcontrol,
2773 struct snd_ctl_elem_value *ucontrol)
2774{
2775 u16 fe_id = 0;
2776
2777 fe_id = ((struct soc_multi_mixer_control *)
2778 kcontrol->private_value)->shift;
2779 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2780 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2781 return -EINVAL;
2782 }
2783
2784 ucontrol->value.integer.value[0] =
2785 channel_mixer[fe_id].output_channel;
2786 return 0;
2787}
2788
2789static int msm_pcm_put_out_chs(struct snd_kcontrol *kcontrol,
2790 struct snd_ctl_elem_value *ucontrol)
2791{
2792 u16 fe_id = 0;
2793
2794 fe_id = ((struct soc_multi_mixer_control *)
2795 kcontrol->private_value)->shift;
2796 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2797 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2798 return -EINVAL;
2799 }
2800
2801 pr_debug("%s: fe_id is %d, output channels = %d\n", __func__,
2802 fe_id,
2803 (unsigned int)(ucontrol->value.integer.value[0]));
2804 channel_mixer[fe_id].output_channel =
2805 (unsigned int)(ucontrol->value.integer.value[0]);
2806
2807 return 1;
2808}
2809
2810static const char *const ch_mixer[] = {"Disable", "Enable"};
2811
2812/* If new backend is added, need update this array */
2813static const char *const be_name[] = {
2814"ZERO", "PRI_I2S_RX", "PRI_I2S_TX", "SLIM_0_RX",
2815"SLIM_0_TX", "HDMI_RX", "INT_BT_SCO_RX", "INT_BT_SCO_TX",
2816"INT_FM_RX", "INT_FM_TX", "AFE_PCM_RX", "AFE_PCM_TX",
2817"AUXPCM_RX", "AUXPCM_TX", "VOICE_PLAYBACK_TX", "VOICE2_PLAYBACK_TX",
2818"INCALL_RECORD_RX", "INCALL_RECORD_TX", "MI2S_RX", "MI2S_TX",
2819"SEC_I2S_RX", "SLIM_1_RX", "SLIM_1_TX", "SLIM_2_RX",
2820"SLIM_2_TX", "SLIM_3_RX", "SLIM_3_TX", "SLIM_4_RX",
2821"SLIM_4_TX", "SLIM_5_RX", "SLIM_5_TX", "SLIM_6_RX",
2822"SLIM_6_TX", "SLIM_7_RX", "SLIM_7_TX", "SLIM_8_RX",
2823"SLIM_8_TX", "EXTPROC_RX", "EXTPROC_TX", "EXPROC_EC_TX",
2824"QUAT_MI2S_RX", "QUAT_MI2S_TX", "SECOND_MI2S_RX", "SECOND_MI2S_TX",
2825"PRI_MI2S_RX", "PRI_MI2S_TX", "TERT_MI2S_RX", "TERT_MI2S_TX",
2826"AUDIO_I2S_RX", "SEC_AUXPCM_RX", "SEC_AUXPCM_TX", "SPDIF_RX",
2827"SECOND_MI2S_RX_SD1", "QUIN_MI2S_RX", "QUIN_MI2S_TX", "SENARY_MI2S_TX",
2828"PRI_TDM_RX_0", "PRI_TDM_TX_0", "PRI_TDM_RX_1", "PRI_TDM_TX_1",
2829"PRI_TDM_RX_2", "PRI_TDM_TX_2", "PRI_TDM_RX_3", "PRI_TDM_TX_3",
2830"PRI_TDM_RX_4", "PRI_TDM_TX_4", "PRI_TDM_RX_5", "PRI_TDM_TX_5",
2831"PRI_TDM_RX_6", "PRI_TDM_TX_6", "PRI_TDM_RX_7", "PRI_TDM_TX_7",
2832"SEC_TDM_RX_0", "SEC_TDM_TX_0", "SEC_TDM_RX_1", "SEC_TDM_TX_1",
2833"SEC_TDM_RX_2", "SEC_TDM_TX_2", "SEC_TDM_RX_3", "SEC_TDM_TX_3",
2834"SEC_TDM_RX_4", "SEC_TDM_TX_4", "SEC_TDM_RX_5", "SEC_TDM_TX_5",
2835"SEC_TDM_RX_6", "SEC_TDM_TX_6", "SEC_TDM_RX_7", "SEC_TDM_TX_7",
2836"TERT_TDM_RX_0", "TERT_TDM_TX_0", "TERT_TDM_RX_1", "TERT_TDM_TX_1",
2837"TERT_TDM_RX_2", "TERT_TDM_TX_2", "TERT_TDM_RX_3", "TERT_TDM_TX_3",
2838"TERT_TDM_RX_4", "TERT_TDM_TX_4", "TERT_TDM_RX_5", "TERT_TDM_TX_5",
2839"TERT_TDM_RX_6", "TERT_TDM_TX_6", "TERT_TDM_RX_7", "TERT_TDM_TX_7",
2840"QUAT_TDM_RX_0", "QUAT_TDM_TX_0", "QUAT_TDM_RX_1", "QUAT_TDM_TX_1",
2841"QUAT_TDM_RX_2", "QUAT_TDM_TX_2", "QUAT_TDM_RX_3", "QUAT_TDM_TX_3",
2842"QUAT_TDM_RX_4", "QUAT_TDM_TX_4", "QUAT_TDM_RX_5", "QUAT_TDM_TX_5",
2843"QUAT_TDM_RX_6", "QUAT_TDM_TX_6", "QUAT_TDM_RX_7", "QUAT_TDM_TX_7",
Rohit Kumara5077932017-09-10 22:05:05 +05302844"QUIN_TDM_RX_0", "QUIN_TDM_TX_0", "QUIN_TDM_RX_1", "QUIN_TDM_TX_1",
2845"QUIN_TDM_RX_2", "QUIN_TDM_TX_2", "QUIN_TDM_RX_3", "QUIN_TDM_TX_3",
2846"QUIN_TDM_RX_4", "QUIN_TDM_TX_4", "QUIN_TDM_RX_5", "QUIN_TDM_TX_5",
2847"QUIN_TDM_RX_6", "QUIN_TDM_TX_6", "QUIN_TDM_RX_7", "QUIN_TDM_TX_7",
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302848"INT_BT_A2DP_RX", "USB_RX", "USB_TX", "DISPLAY_PORT_RX",
2849"TERT_AUXPCM_RX", "TERT_AUXPCM_TX", "QUAT_AUXPCM_RX", "QUAT_AUXPCM_TX",
Rohit Kumara5077932017-09-10 22:05:05 +05302850"QUIN_AUXPCM_RX", "QUIN_AUXPCM_TX",
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302851"INT0_MI2S_RX", "INT0_MI2S_TX", "INT1_MI2S_RX", "INT1_MI2S_TX",
2852"INT2_MI2S_RX", "INT2_MI2S_TX", "INT3_MI2S_RX", "INT3_MI2S_TX",
2853"INT4_MI2S_RX", "INT4_MI2S_TX", "INT5_MI2S_RX", "INT5_MI2S_TX",
2854"INT6_MI2S_RX", "INT6_MI2S_TX"
2855};
2856
2857static SOC_ENUM_SINGLE_DECL(mm1_channel_mux,
2858 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, ch_mixer);
2859static SOC_ENUM_SINGLE_DECL(mm2_channel_mux,
2860 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA2, ch_mixer);
2861static SOC_ENUM_SINGLE_DECL(mm3_channel_mux,
2862 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA3, ch_mixer);
2863static SOC_ENUM_SINGLE_DECL(mm4_channel_mux,
2864 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA4, ch_mixer);
2865
2866static SOC_ENUM_DOUBLE_DECL(mm1_ch1_enum,
2867 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 0, be_name);
2868static SOC_ENUM_DOUBLE_DECL(mm1_ch2_enum,
2869 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 1, be_name);
2870static SOC_ENUM_DOUBLE_DECL(mm1_ch3_enum,
2871 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 2, be_name);
2872static SOC_ENUM_DOUBLE_DECL(mm1_ch4_enum,
2873 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 3, be_name);
2874static SOC_ENUM_DOUBLE_DECL(mm1_ch5_enum,
2875 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 4, be_name);
2876static SOC_ENUM_DOUBLE_DECL(mm1_ch6_enum,
2877 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 5, be_name);
2878static SOC_ENUM_DOUBLE_DECL(mm1_ch7_enum,
2879 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 6, be_name);
2880static SOC_ENUM_DOUBLE_DECL(mm1_ch8_enum,
2881 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 7, be_name);
2882
2883static int msm_pcm_get_ctl_enum_info(struct snd_ctl_elem_info *uinfo,
2884 unsigned int channels,
2885 unsigned int items, const char *const names[])
2886{
2887 if (uinfo->value.enumerated.item >= items)
2888 uinfo->value.enumerated.item = items - 1;
2889
2890 WARN(strlen(names[uinfo->value.enumerated.item]) >=
2891 sizeof(uinfo->value.enumerated.name),
2892 "ALSA: too long item name '%s'\n",
2893 names[uinfo->value.enumerated.item]);
2894 strlcpy(uinfo->value.enumerated.name,
2895 names[uinfo->value.enumerated.item],
2896 sizeof(uinfo->value.enumerated.name));
2897 return 0;
2898}
2899
2900static int msm_pcm_channel_mixer_info(struct snd_kcontrol *kcontrol,
2901 struct snd_ctl_elem_info *uinfo)
2902{
2903 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
2904
2905 uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED;
2906 uinfo->count = 1;
2907
2908 uinfo->value.enumerated.items = ARRAY_SIZE(ch_mixer);
2909 msm_pcm_get_ctl_enum_info(uinfo, 1, e->items, e->texts);
2910
2911 return 0;
2912}
2913static int msm_pcm_channel_mixer_get(struct snd_kcontrol *kcontrol,
2914 struct snd_ctl_elem_value *ucontrol)
2915{
2916 u16 fe_id = 0;
2917
2918 fe_id = ((struct soc_enum *)
2919 kcontrol->private_value)->shift_l;
2920 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2921 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2922 return -EINVAL;
2923 }
2924
2925 pr_debug("%s: FE %d %s\n", __func__,
2926 fe_id,
2927 channel_mixer[fe_id].enable ? "Enabled" : "Disabled");
2928 ucontrol->value.enumerated.item[0] = channel_mixer[fe_id].enable;
2929 return 0;
2930}
2931
2932static int msm_pcm_channel_mixer_put(struct snd_kcontrol *kcontrol,
2933 struct snd_ctl_elem_value *ucontrol)
2934{
2935 u16 fe_id = 0;
2936
2937 fe_id = ((struct soc_enum *)
2938 kcontrol->private_value)->shift_l;
2939 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2940 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2941 return -EINVAL;
2942 }
2943
2944 channel_mixer[fe_id].enable = ucontrol->value.enumerated.item[0];
2945 pr_debug("%s: %s FE %d\n", __func__,
2946 channel_mixer[fe_id].enable ? "Enable" : "Disable",
2947 fe_id);
2948 return 0;
2949}
2950
2951static int msm_pcm_channel_input_be_info(struct snd_kcontrol *kcontrol,
2952 struct snd_ctl_elem_info *uinfo)
2953{
2954 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
2955
2956 uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED;
2957 uinfo->count = 1;
2958
2959 uinfo->value.enumerated.items = ARRAY_SIZE(be_name);
2960 msm_pcm_get_ctl_enum_info(uinfo, 1, e->items, e->texts);
2961
2962 return 0;
2963}
2964
2965static int msm_pcm_channel_input_be_put(struct snd_kcontrol *kcontrol,
2966 struct snd_ctl_elem_value *ucontrol)
2967{
2968 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
2969 u16 fe_id = 0, in_ch = 0;
2970
2971 fe_id = e->shift_l;
2972 in_ch = e->shift_r;
2973 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2974 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2975 return -EINVAL;
2976 }
2977 if (in_ch >= ADM_MAX_CHANNELS) {
2978 pr_err("%s: invalid input channel %d\n", __func__, in_ch);
2979 return -EINVAL;
2980 }
2981
2982 channel_input[fe_id][in_ch] = ucontrol->value.enumerated.item[0];
2983 return 1;
2984}
2985
2986static int msm_pcm_channel_input_be_get(struct snd_kcontrol *kcontrol,
2987 struct snd_ctl_elem_value *ucontrol)
2988{
2989 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
2990 u16 fe_id = 0, in_ch = 0;
2991
2992 fe_id = e->shift_l;
2993 in_ch = e->shift_r;
2994 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2995 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2996 return -EINVAL;
2997 }
2998 if (in_ch >= ADM_MAX_CHANNELS) {
2999 pr_err("%s: invalid input channel %d\n", __func__, in_ch);
3000 return -EINVAL;
3001 }
3002
3003 ucontrol->value.enumerated.item[0] = channel_input[fe_id][in_ch];
3004 return 1;
3005}
3006
3007
3008static int msm_pcm_channel_weight_info(struct snd_kcontrol *kcontrol,
3009 struct snd_ctl_elem_info *uinfo)
3010{
3011 uinfo->type = SNDRV_CTL_ELEM_TYPE_INTEGER;
3012 uinfo->count = ADM_MAX_CHANNELS;
3013 uinfo->value.integer.min = 0;
3014 uinfo->value.integer.max = WEIGHT_0_DB;
3015
3016 return 0;
3017}
3018
3019static int msm_pcm_channel_weight_put(struct snd_kcontrol *kcontrol,
3020 struct snd_ctl_elem_value *ucontrol)
3021{
3022 u16 fe_id = 0, out_ch = 0;
3023 int i, weight;
3024
3025 fe_id = ((struct soc_multi_mixer_control *)
3026 kcontrol->private_value)->shift;
3027 out_ch = ((struct soc_multi_mixer_control *)
3028 kcontrol->private_value)->rshift;
3029 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
3030 pr_err("%s: invalid FE %d\n", __func__, fe_id);
3031 return -EINVAL;
3032 }
3033 if (out_ch >= ADM_MAX_CHANNELS) {
3034 pr_err("%s: invalid input channel %d\n", __func__, out_ch);
3035 return -EINVAL;
3036 }
3037
3038 pr_debug("%s: FE_ID: %d, channel weight %ld, %ld, %ld, %ld, %ld, %ld, %ld, %ld\n",
3039 __func__, fe_id,
3040 ucontrol->value.integer.value[0],
3041 ucontrol->value.integer.value[1],
3042 ucontrol->value.integer.value[2],
3043 ucontrol->value.integer.value[3],
3044 ucontrol->value.integer.value[4],
3045 ucontrol->value.integer.value[5],
3046 ucontrol->value.integer.value[6],
3047 ucontrol->value.integer.value[7]);
3048
3049 for (i = 0; i < ADM_MAX_CHANNELS; ++i) {
3050 weight = ucontrol->value.integer.value[i];
3051 channel_mixer[fe_id].channel_weight[out_ch][i] = weight;
3052 pr_debug("%s: FE_ID %d, output %d input %d weight %d\n",
3053 __func__, fe_id, out_ch, i,
3054 channel_mixer[fe_id].channel_weight[out_ch][i]);
3055 }
3056
3057 return 0;
3058}
3059
3060static int msm_pcm_channel_weight_get(struct snd_kcontrol *kcontrol,
3061 struct snd_ctl_elem_value *ucontrol)
3062{
3063 u16 fe_id = 0, out_ch = 0;
3064 int i;
3065
3066 fe_id = ((struct soc_multi_mixer_control *)
3067 kcontrol->private_value)->shift;
3068 out_ch = ((struct soc_multi_mixer_control *)
3069 kcontrol->private_value)->rshift;
3070 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
3071 pr_err("%s: invalid FE %d\n", __func__, fe_id);
3072 return -EINVAL;
3073 }
3074 if (out_ch >= ADM_MAX_CHANNELS) {
3075 pr_err("%s: invalid input channel %d\n", __func__, out_ch);
3076 return -EINVAL;
3077 }
3078
3079 for (i = 0; i < ADM_MAX_CHANNELS; ++i)
3080 ucontrol->value.integer.value[i] =
3081 channel_mixer[fe_id].channel_weight[out_ch][i];
3082
3083 pr_debug("%s: FE_ID: %d, weight %ld, %ld, %ld, %ld, %ld, %ld, %ld, %ld",
3084 __func__, fe_id,
3085 ucontrol->value.integer.value[0],
3086 ucontrol->value.integer.value[1],
3087 ucontrol->value.integer.value[2],
3088 ucontrol->value.integer.value[3],
3089 ucontrol->value.integer.value[4],
3090 ucontrol->value.integer.value[5],
3091 ucontrol->value.integer.value[6],
3092 ucontrol->value.integer.value[7]);
3093
3094 return 0;
3095}
3096
3097static const struct snd_kcontrol_new channel_mixer_controls[] = {
3098 SOC_SINGLE_EXT("MultiMedia1 Channel Rule", SND_SOC_NOPM,
3099 MSM_FRONTEND_DAI_MULTIMEDIA1, 8, 0,
3100 msm_pcm_get_channel_rule_index,
3101 msm_pcm_put_channel_rule_index),
3102 SOC_SINGLE_EXT("MultiMedia2 Channel Rule", SND_SOC_NOPM,
3103 MSM_FRONTEND_DAI_MULTIMEDIA2, 8, 0,
3104 msm_pcm_get_channel_rule_index,
3105 msm_pcm_put_channel_rule_index),
3106 SOC_SINGLE_EXT("MultiMedia3 Channel Rule", SND_SOC_NOPM,
3107 MSM_FRONTEND_DAI_MULTIMEDIA3, 8, 0,
3108 msm_pcm_get_channel_rule_index,
3109 msm_pcm_put_channel_rule_index),
3110 SOC_SINGLE_EXT("MultiMedia4 Channel Rule", SND_SOC_NOPM,
3111 MSM_FRONTEND_DAI_MULTIMEDIA4, 8, 0,
3112 msm_pcm_get_channel_rule_index,
3113 msm_pcm_put_channel_rule_index),
3114 SOC_SINGLE_EXT("MultiMedia5 Channel Rule", SND_SOC_NOPM,
3115 MSM_FRONTEND_DAI_MULTIMEDIA5, 8, 0,
3116 msm_pcm_get_channel_rule_index,
3117 msm_pcm_put_channel_rule_index),
3118 SOC_SINGLE_EXT("MultiMedia6 Channel Rule", SND_SOC_NOPM,
3119 MSM_FRONTEND_DAI_MULTIMEDIA6, 8, 0,
3120 msm_pcm_get_channel_rule_index,
3121 msm_pcm_put_channel_rule_index),
3122
3123 SOC_SINGLE_EXT("MultiMedia1 Channels", SND_SOC_NOPM,
3124 MSM_FRONTEND_DAI_MULTIMEDIA1, 8, 0,
3125 msm_pcm_get_out_chs,
3126 msm_pcm_put_out_chs),
3127 SOC_SINGLE_EXT("MultiMedia2 Channels", SND_SOC_NOPM,
3128 MSM_FRONTEND_DAI_MULTIMEDIA2, 8, 0,
3129 msm_pcm_get_out_chs,
3130 msm_pcm_put_out_chs),
3131 SOC_SINGLE_EXT("MultiMedia3 Channels", SND_SOC_NOPM,
3132 MSM_FRONTEND_DAI_MULTIMEDIA3, 8, 0,
3133 msm_pcm_get_out_chs,
3134 msm_pcm_put_out_chs),
3135 SOC_SINGLE_EXT("MultiMedia4 Channels", SND_SOC_NOPM,
3136 MSM_FRONTEND_DAI_MULTIMEDIA4, 8, 0,
3137 msm_pcm_get_out_chs,
3138 msm_pcm_put_out_chs),
3139 SOC_SINGLE_EXT("MultiMedia5 Channels", SND_SOC_NOPM,
3140 MSM_FRONTEND_DAI_MULTIMEDIA5, 8, 0,
3141 msm_pcm_get_out_chs,
3142 msm_pcm_put_out_chs),
3143 SOC_SINGLE_EXT("MultiMedia6 Channels", SND_SOC_NOPM,
3144 MSM_FRONTEND_DAI_MULTIMEDIA6, 8, 0,
3145 msm_pcm_get_out_chs,
3146 msm_pcm_put_out_chs),
3147 {
3148 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3149 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3150 .name = "MultiMedia1 Channel Mixer",
3151 .info = msm_pcm_channel_mixer_info,
3152 .get = msm_pcm_channel_mixer_get,
3153 .put = msm_pcm_channel_mixer_put,
3154 .private_value = (unsigned long)&(mm1_channel_mux)
3155 },
3156 {
3157 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3158 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3159 .name = "MultiMedia2 Channel Mixer",
3160 .info = msm_pcm_channel_mixer_info,
3161 .get = msm_pcm_channel_mixer_get,
3162 .put = msm_pcm_channel_mixer_put,
3163 .private_value = (unsigned long)&(mm2_channel_mux)
3164 },
3165 {
3166 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3167 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3168 .name = "MultiMedia3 Channel Mixer",
3169 .info = msm_pcm_channel_mixer_info,
3170 .get = msm_pcm_channel_mixer_get,
3171 .put = msm_pcm_channel_mixer_put,
3172 .private_value = (unsigned long)&(mm3_channel_mux)
3173 },
3174 {
3175 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3176 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3177 .name = "MultiMedia4 Channel Mixer",
3178 .info = msm_pcm_channel_mixer_info,
3179 .get = msm_pcm_channel_mixer_get,
3180 .put = msm_pcm_channel_mixer_put,
3181 .private_value = (unsigned long)&(mm4_channel_mux)
3182 },
3183 {
3184 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3185 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3186 .name = "MultiMedia1 Output Channel1",
3187 .info = msm_pcm_channel_weight_info,
3188 .get = msm_pcm_channel_weight_get,
3189 .put = msm_pcm_channel_weight_put,
3190 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3191 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 0,}
3192 },
3193 {
3194 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3195 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3196 .name = "MultiMedia1 Output Channel2",
3197 .info = msm_pcm_channel_weight_info,
3198 .get = msm_pcm_channel_weight_get,
3199 .put = msm_pcm_channel_weight_put,
3200 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3201 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 1, }
3202 },
3203 {
3204 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3205 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3206 .name = "MultiMedia1 Output Channel3",
3207 .info = msm_pcm_channel_weight_info,
3208 .get = msm_pcm_channel_weight_get,
3209 .put = msm_pcm_channel_weight_put,
3210 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3211 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 2,}
3212 },
3213 {
3214 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3215 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3216 .name = "MultiMedia1 Output Channel4",
3217 .info = msm_pcm_channel_weight_info,
3218 .get = msm_pcm_channel_weight_get,
3219 .put = msm_pcm_channel_weight_put,
3220 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3221 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 3,}
3222 },
3223 {
3224 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3225 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3226 .name = "MultiMedia1 Output Channel5",
3227 .info = msm_pcm_channel_weight_info,
3228 .get = msm_pcm_channel_weight_get,
3229 .put = msm_pcm_channel_weight_put,
3230 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3231 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 4,}
3232 },
3233 {
3234 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3235 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3236 .name = "MultiMedia1 Output Channel6",
3237 .info = msm_pcm_channel_weight_info,
3238 .get = msm_pcm_channel_weight_get,
3239 .put = msm_pcm_channel_weight_put,
3240 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3241 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 5,}
3242 },
3243 {
3244 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3245 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3246 .name = "MultiMedia1 Output Channel7",
3247 .info = msm_pcm_channel_weight_info,
3248 .get = msm_pcm_channel_weight_get,
3249 .put = msm_pcm_channel_weight_put,
3250 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3251 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 6,}
3252 },
3253 {
3254 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3255 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3256 .name = "MultiMedia1 Output Channel8",
3257 .info = msm_pcm_channel_weight_info,
3258 .get = msm_pcm_channel_weight_get,
3259 .put = msm_pcm_channel_weight_put,
3260 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3261 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 7,}
3262 },
3263 {
3264 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3265 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3266 .name = "MultiMedia2 Output Channel1",
3267 .info = msm_pcm_channel_weight_info,
3268 .get = msm_pcm_channel_weight_get,
3269 .put = msm_pcm_channel_weight_put,
3270 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3271 {.shift = MSM_FRONTEND_DAI_MULTIMEDIA2, .rshift = 0,}
3272 },
3273 {
3274 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3275 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3276 .name = "MultiMedia2 Output Channel2",
3277 .info = msm_pcm_channel_weight_info,
3278 .get = msm_pcm_channel_weight_get,
3279 .put = msm_pcm_channel_weight_put,
3280 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3281 {.shift = MSM_FRONTEND_DAI_MULTIMEDIA2, .rshift = 1,}
3282 },
3283 {
3284 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3285 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3286 .name = "MultiMedia2 Output Channel3",
3287 .info = msm_pcm_channel_weight_info,
3288 .get = msm_pcm_channel_weight_get,
3289 .put = msm_pcm_channel_weight_put,
3290 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3291 {.shift = MSM_FRONTEND_DAI_MULTIMEDIA2, .rshift = 2,}
3292 },
3293 {
3294 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3295 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3296 .name = "MultiMedia3 Output Channel1",
3297 .info = msm_pcm_channel_weight_info,
3298 .get = msm_pcm_channel_weight_get,
3299 .put = msm_pcm_channel_weight_put,
3300 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3301 {.shift = MSM_FRONTEND_DAI_MULTIMEDIA3, .rshift = 0,}
3302 },
3303 {
3304 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3305 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3306 .name = "MultiMedia3 Output Channel2",
3307 .info = msm_pcm_channel_weight_info,
3308 .get = msm_pcm_channel_weight_get,
3309 .put = msm_pcm_channel_weight_put,
3310 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3311 {.shift = MSM_FRONTEND_DAI_MULTIMEDIA3, .rshift = 1,}
3312 },
3313 {
3314 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3315 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3316 .name = "MultiMedia1 Channel1",
3317 .info = msm_pcm_channel_input_be_info,
3318 .get = msm_pcm_channel_input_be_get,
3319 .put = msm_pcm_channel_input_be_put,
3320 .private_value = (unsigned long)&(mm1_ch1_enum)
3321 },
3322 {
3323 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3324 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3325 .name = "MultiMedia1 Channel2",
3326 .info = msm_pcm_channel_input_be_info,
3327 .get = msm_pcm_channel_input_be_get,
3328 .put = msm_pcm_channel_input_be_put,
3329 .private_value = (unsigned long)&(mm1_ch2_enum)
3330 },
3331 {
3332 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3333 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3334 .name = "MultiMedia1 Channel3",
3335 .info = msm_pcm_channel_input_be_info,
3336 .get = msm_pcm_channel_input_be_get,
3337 .put = msm_pcm_channel_input_be_put,
3338 .private_value = (unsigned long)&(mm1_ch3_enum)
3339 },
3340 {
3341 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3342 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3343 .name = "MultiMedia1 Channel4",
3344 .info = msm_pcm_channel_input_be_info,
3345 .get = msm_pcm_channel_input_be_get,
3346 .put = msm_pcm_channel_input_be_put,
3347 .private_value = (unsigned long)&(mm1_ch4_enum)
3348 },
3349 {
3350 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3351 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3352 .name = "MultiMedia1 Channel5",
3353 .info = msm_pcm_channel_input_be_info,
3354 .get = msm_pcm_channel_input_be_get,
3355 .put = msm_pcm_channel_input_be_put,
3356 .private_value = (unsigned long)&(mm1_ch5_enum)
3357 },
3358 {
3359 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3360 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3361 .name = "MultiMedia1 Channel6",
3362 .info = msm_pcm_channel_input_be_info,
3363 .get = msm_pcm_channel_input_be_get,
3364 .put = msm_pcm_channel_input_be_put,
3365 .private_value = (unsigned long)&(mm1_ch6_enum)
3366 },
3367 {
3368 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3369 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3370 .name = "MultiMedia1 Channel7",
3371 .info = msm_pcm_channel_input_be_info,
3372 .get = msm_pcm_channel_input_be_get,
3373 .put = msm_pcm_channel_input_be_put,
3374 .private_value = (unsigned long)&(mm1_ch7_enum)
3375 },
3376 {
3377 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3378 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3379 .name = "MultiMedia1 Channel8",
3380 .info = msm_pcm_channel_input_be_info,
3381 .get = msm_pcm_channel_input_be_get,
3382 .put = msm_pcm_channel_input_be_put,
3383 .private_value = (unsigned long)&(mm1_ch8_enum)
3384 },
3385};
3386static int msm_ec_ref_ch_get(struct snd_kcontrol *kcontrol,
3387 struct snd_ctl_elem_value *ucontrol)
3388{
3389 ucontrol->value.integer.value[0] = msm_ec_ref_ch;
3390 pr_debug("%s: msm_ec_ref_ch = %ld\n", __func__,
3391 ucontrol->value.integer.value[0]);
3392 return 0;
3393}
3394
3395static int msm_ec_ref_ch_put(struct snd_kcontrol *kcontrol,
3396 struct snd_ctl_elem_value *ucontrol)
3397{
3398 msm_ec_ref_ch = ucontrol->value.integer.value[0];
3399 pr_debug("%s: msm_ec_ref_ch = %d\n", __func__, msm_ec_ref_ch);
3400 adm_num_ec_ref_rx_chans(msm_ec_ref_ch);
3401 return 0;
3402}
3403
3404static const char *const ec_ref_ch_text[] = {"Zero", "One", "Two", "Three",
3405 "Four", "Five", "Six", "Seven", "Eight"};
3406
3407static int msm_ec_ref_bit_format_get(struct snd_kcontrol *kcontrol,
3408 struct snd_ctl_elem_value *ucontrol)
3409{
3410 switch (msm_ec_ref_bit_format) {
3411 case SNDRV_PCM_FORMAT_S24_LE:
3412 ucontrol->value.integer.value[0] = 2;
3413 break;
3414 case SNDRV_PCM_FORMAT_S16_LE:
3415 ucontrol->value.integer.value[0] = 1;
3416 break;
3417 default:
3418 ucontrol->value.integer.value[0] = 0;
3419 break;
3420 }
3421 pr_debug("%s: msm_ec_ref_bit_format = %ld\n",
3422 __func__, ucontrol->value.integer.value[0]);
3423 return 0;
3424}
3425
3426static int msm_ec_ref_bit_format_put(struct snd_kcontrol *kcontrol,
3427 struct snd_ctl_elem_value *ucontrol)
3428{
3429 u16 bit_width = 0;
3430
3431 switch (ucontrol->value.integer.value[0]) {
3432 case 2:
3433 msm_ec_ref_bit_format = SNDRV_PCM_FORMAT_S24_LE;
3434 break;
3435 case 1:
3436 msm_ec_ref_bit_format = SNDRV_PCM_FORMAT_S16_LE;
3437 break;
3438 default:
3439 msm_ec_ref_bit_format = 0;
3440 break;
3441 }
3442
3443 if (msm_ec_ref_bit_format == SNDRV_PCM_FORMAT_S16_LE)
3444 bit_width = 16;
3445 else if (msm_ec_ref_bit_format == SNDRV_PCM_FORMAT_S24_LE)
3446 bit_width = 24;
3447
3448 pr_debug("%s: msm_ec_ref_bit_format = %d\n",
3449 __func__, msm_ec_ref_bit_format);
3450 adm_ec_ref_rx_bit_width(bit_width);
3451 return 0;
3452}
3453
3454static char const *ec_ref_bit_format_text[] = {"0", "S16_LE", "S24_LE"};
3455
3456static int msm_ec_ref_rate_get(struct snd_kcontrol *kcontrol,
3457 struct snd_ctl_elem_value *ucontrol)
3458{
3459 ucontrol->value.integer.value[0] = msm_ec_ref_sampling_rate;
3460 pr_debug("%s: msm_ec_ref_sampling_rate = %ld\n",
3461 __func__, ucontrol->value.integer.value[0]);
3462 return 0;
3463}
3464
3465static int msm_ec_ref_rate_put(struct snd_kcontrol *kcontrol,
3466 struct snd_ctl_elem_value *ucontrol)
3467{
3468 switch (ucontrol->value.integer.value[0]) {
3469 case 0:
3470 msm_ec_ref_sampling_rate = 0;
3471 break;
3472 case 1:
3473 msm_ec_ref_sampling_rate = 8000;
3474 break;
3475 case 2:
3476 msm_ec_ref_sampling_rate = 16000;
3477 break;
3478 case 3:
3479 msm_ec_ref_sampling_rate = 32000;
3480 break;
3481 case 4:
3482 msm_ec_ref_sampling_rate = 44100;
3483 break;
3484 case 5:
3485 msm_ec_ref_sampling_rate = 48000;
3486 break;
3487 case 6:
3488 msm_ec_ref_sampling_rate = 96000;
3489 break;
3490 case 7:
3491 msm_ec_ref_sampling_rate = 192000;
3492 break;
3493 case 8:
3494 msm_ec_ref_sampling_rate = 384000;
3495 break;
3496 default:
3497 msm_ec_ref_sampling_rate = 48000;
3498 break;
3499 }
3500 pr_debug("%s: msm_ec_ref_sampling_rate = %d\n",
3501 __func__, msm_ec_ref_sampling_rate);
3502 adm_ec_ref_rx_sampling_rate(msm_ec_ref_sampling_rate);
3503 return 0;
3504}
3505
3506static const char *const ec_ref_rate_text[] = {"0", "8000", "16000",
3507 "32000", "44100", "48000", "96000", "192000", "384000"};
3508
3509static const struct soc_enum msm_route_ec_ref_params_enum[] = {
3510 SOC_ENUM_SINGLE_EXT(9, ec_ref_ch_text),
3511 SOC_ENUM_SINGLE_EXT(3, ec_ref_bit_format_text),
3512 SOC_ENUM_SINGLE_EXT(9, ec_ref_rate_text),
3513};
3514
3515static const struct snd_kcontrol_new ec_ref_param_controls[] = {
3516 SOC_ENUM_EXT("EC Reference Channels", msm_route_ec_ref_params_enum[0],
3517 msm_ec_ref_ch_get, msm_ec_ref_ch_put),
3518 SOC_ENUM_EXT("EC Reference Bit Format", msm_route_ec_ref_params_enum[1],
3519 msm_ec_ref_bit_format_get, msm_ec_ref_bit_format_put),
3520 SOC_ENUM_EXT("EC Reference SampleRate", msm_route_ec_ref_params_enum[2],
3521 msm_ec_ref_rate_get, msm_ec_ref_rate_put),
3522};
3523
3524static int msm_routing_ec_ref_rx_get(struct snd_kcontrol *kcontrol,
3525 struct snd_ctl_elem_value *ucontrol)
3526{
3527 pr_debug("%s: ec_ref_rx = %d", __func__, msm_route_ec_ref_rx);
3528 mutex_lock(&routing_lock);
3529 ucontrol->value.integer.value[0] = msm_route_ec_ref_rx;
3530 mutex_unlock(&routing_lock);
3531 return 0;
3532}
3533
3534static int msm_routing_ec_ref_rx_put(struct snd_kcontrol *kcontrol,
3535 struct snd_ctl_elem_value *ucontrol)
3536{
3537 int ec_ref_port_id;
Asish Bhattacharya34504582017-08-08 12:55:01 +05303538 struct snd_soc_dapm_widget *widget =
3539 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303540 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
3541 struct snd_soc_dapm_update *update = NULL;
3542
3543
3544 mutex_lock(&routing_lock);
3545 switch (ucontrol->value.integer.value[0]) {
3546 case 0:
3547 msm_route_ec_ref_rx = 0;
3548 ec_ref_port_id = AFE_PORT_INVALID;
3549 break;
3550 case 1:
3551 msm_route_ec_ref_rx = 1;
3552 ec_ref_port_id = SLIMBUS_0_RX;
3553 break;
3554 case 2:
3555 msm_route_ec_ref_rx = 2;
3556 ec_ref_port_id = AFE_PORT_ID_PRIMARY_MI2S_RX;
3557 break;
3558 case 3:
3559 msm_route_ec_ref_rx = 3;
3560 ec_ref_port_id = AFE_PORT_ID_PRIMARY_MI2S_TX;
3561 break;
3562 case 4:
3563 msm_route_ec_ref_rx = 4;
3564 ec_ref_port_id = AFE_PORT_ID_SECONDARY_MI2S_TX;
3565 break;
3566 case 5:
3567 msm_route_ec_ref_rx = 5;
3568 ec_ref_port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
3569 break;
3570 case 6:
3571 msm_route_ec_ref_rx = 6;
3572 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_MI2S_TX;
3573 break;
3574 case 7:
3575 msm_route_ec_ref_rx = 7;
3576 ec_ref_port_id = AFE_PORT_ID_SECONDARY_MI2S_RX;
3577 break;
3578 case 9:
3579 msm_route_ec_ref_rx = 9;
3580 ec_ref_port_id = SLIMBUS_5_RX;
3581 break;
3582 case 10:
3583 msm_route_ec_ref_rx = 10;
3584 ec_ref_port_id = SLIMBUS_1_TX;
3585 break;
3586 case 11:
3587 msm_route_ec_ref_rx = 11;
3588 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_TDM_TX_1;
3589 break;
3590 case 12:
3591 msm_route_ec_ref_rx = 12;
3592 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_TDM_RX;
3593 break;
3594 case 13:
3595 msm_route_ec_ref_rx = 13;
3596 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_TDM_RX_1;
3597 break;
3598 case 14:
3599 msm_route_ec_ref_rx = 14;
3600 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_TDM_RX_2;
3601 break;
3602 case 15:
3603 msm_route_ec_ref_rx = 15;
3604 ec_ref_port_id = SLIMBUS_6_RX;
3605 break;
3606 case 16:
3607 msm_route_ec_ref_rx = 16;
3608 ec_ref_port_id = AFE_PORT_ID_TERTIARY_MI2S_RX;
3609 break;
3610 case 17:
3611 msm_route_ec_ref_rx = 17;
3612 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_MI2S_RX;
3613 break;
3614 case 18:
3615 msm_route_ec_ref_rx = 18;
3616 ec_ref_port_id = AFE_PORT_ID_TERTIARY_TDM_TX;
3617 break;
3618 case 19:
3619 msm_route_ec_ref_rx = 19;
3620 ec_ref_port_id = AFE_PORT_ID_USB_RX;
3621 break;
3622 case 20:
3623 msm_route_ec_ref_rx = 20;
3624 ec_ref_port_id = AFE_PORT_ID_INT0_MI2S_RX;
3625 break;
3626 case 21:
3627 msm_route_ec_ref_rx = 21;
3628 ec_ref_port_id = AFE_PORT_ID_INT4_MI2S_RX;
3629 break;
3630 case 22:
3631 msm_route_ec_ref_rx = 22;
3632 ec_ref_port_id = AFE_PORT_ID_INT3_MI2S_TX;
3633 break;
Aalique Grahamee4fd7d52017-11-28 13:24:13 -08003634 case 23:
3635 msm_route_ec_ref_rx = 23;
3636 ec_ref_port_id = AFE_PORT_ID_HDMI_OVER_DP_RX;
3637 break;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303638 default:
3639 msm_route_ec_ref_rx = 0; /* NONE */
3640 pr_err("%s EC ref rx %ld not valid\n",
3641 __func__, ucontrol->value.integer.value[0]);
3642 ec_ref_port_id = AFE_PORT_INVALID;
3643 break;
3644 }
3645 adm_ec_ref_rx_id(ec_ref_port_id);
3646 pr_debug("%s: msm_route_ec_ref_rx = %d\n",
3647 __func__, msm_route_ec_ref_rx);
3648 mutex_unlock(&routing_lock);
3649 snd_soc_dapm_mux_update_power(widget->dapm, kcontrol,
3650 msm_route_ec_ref_rx, e, update);
3651 return 0;
3652}
3653
3654static const char *const ec_ref_rx[] = { "None", "SLIM_RX", "I2S_RX",
3655 "PRI_MI2S_TX", "SEC_MI2S_TX",
3656 "TERT_MI2S_TX", "QUAT_MI2S_TX", "SEC_I2S_RX", "PROXY_RX",
3657 "SLIM_5_RX", "SLIM_1_TX", "QUAT_TDM_TX_1",
3658 "QUAT_TDM_RX_0", "QUAT_TDM_RX_1", "QUAT_TDM_RX_2", "SLIM_6_RX",
3659 "TERT_MI2S_RX", "QUAT_MI2S_RX", "TERT_TDM_TX_0", "USB_AUDIO_RX",
Aalique Grahamee4fd7d52017-11-28 13:24:13 -08003660 "INT0_MI2S_RX", "INT4_MI2S_RX", "INT3_MI2S_TX", "DISPLAY_PORT"};
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303661
3662static const struct soc_enum msm_route_ec_ref_rx_enum[] = {
3663 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(ec_ref_rx), ec_ref_rx),
3664};
3665
3666static const struct snd_kcontrol_new ext_ec_ref_mux_ul1 =
3667 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL1 MUX Mux",
3668 msm_route_ec_ref_rx_enum[0],
3669 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3670
3671static const struct snd_kcontrol_new ext_ec_ref_mux_ul2 =
3672 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL2 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_ul3 =
3677 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL3 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_ul4 =
3682 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL4 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_ul5 =
3687 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL5 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_ul6 =
3692 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL6 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_ul8 =
3697 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL8 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_ul9 =
3702 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL9 MUX Mux",
3703 msm_route_ec_ref_rx_enum[0],
3704 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3705
Asish Bhattacharya34504582017-08-08 12:55:01 +05303706static const struct snd_kcontrol_new ext_ec_ref_mux_ul16 =
3707 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL16 MUX Mux",
3708 msm_route_ec_ref_rx_enum[0],
3709 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3710
Laxminath Kasam38070be2017-08-17 18:21:59 +05303711static const struct snd_kcontrol_new ext_ec_ref_mux_ul10 =
3712 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL10 MUX Mux",
3713 msm_route_ec_ref_rx_enum[0],
3714 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3715
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303716static const struct snd_kcontrol_new ext_ec_ref_mux_ul17 =
3717 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL17 MUX Mux",
3718 msm_route_ec_ref_rx_enum[0],
3719 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3720
3721static const struct snd_kcontrol_new ext_ec_ref_mux_ul18 =
3722 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL18 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_ul19 =
3727 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL19 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 int msm_routing_ext_ec_get(struct snd_kcontrol *kcontrol,
3732 struct snd_ctl_elem_value *ucontrol)
3733{
3734 pr_debug("%s: ext_ec_ref_rx = %x\n", __func__, msm_route_ext_ec_ref);
3735
3736 mutex_lock(&routing_lock);
3737 ucontrol->value.integer.value[0] = msm_route_ext_ec_ref;
3738 mutex_unlock(&routing_lock);
3739 return 0;
3740}
3741
3742static int msm_routing_ext_ec_put(struct snd_kcontrol *kcontrol,
3743 struct snd_ctl_elem_value *ucontrol)
3744{
Asish Bhattacharya34504582017-08-08 12:55:01 +05303745 struct snd_soc_dapm_widget *widget =
3746 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303747 int mux = ucontrol->value.enumerated.item[0];
3748 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
3749 int ret = 1;
3750 bool state = true;
3751 uint16_t ext_ec_ref_port_id;
3752 struct snd_soc_dapm_update *update = NULL;
3753
3754 if (mux >= e->items) {
3755 pr_err("%s: Invalid mux value %d\n", __func__, mux);
3756 return -EINVAL;
3757 }
3758
3759 mutex_lock(&routing_lock);
3760 msm_route_ext_ec_ref = ucontrol->value.integer.value[0];
3761
3762 switch (msm_route_ext_ec_ref) {
3763 case EXT_EC_REF_PRI_MI2S_TX:
3764 ext_ec_ref_port_id = AFE_PORT_ID_PRIMARY_MI2S_TX;
3765 break;
3766 case EXT_EC_REF_SEC_MI2S_TX:
3767 ext_ec_ref_port_id = AFE_PORT_ID_SECONDARY_MI2S_TX;
3768 break;
3769 case EXT_EC_REF_TERT_MI2S_TX:
3770 ext_ec_ref_port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
3771 break;
3772 case EXT_EC_REF_QUAT_MI2S_TX:
3773 ext_ec_ref_port_id = AFE_PORT_ID_QUATERNARY_MI2S_TX;
3774 break;
3775 case EXT_EC_REF_QUIN_MI2S_TX:
3776 ext_ec_ref_port_id = AFE_PORT_ID_QUINARY_MI2S_TX;
3777 break;
3778 case EXT_EC_REF_SLIM_1_TX:
3779 ext_ec_ref_port_id = SLIMBUS_1_TX;
3780 break;
3781 case EXT_EC_REF_NONE:
3782 default:
3783 ext_ec_ref_port_id = AFE_PORT_INVALID;
3784 state = false;
3785 break;
3786 }
3787
3788 pr_debug("%s: val = %d ext_ec_ref_port_id = 0x%0x state = %d\n",
3789 __func__, msm_route_ext_ec_ref, ext_ec_ref_port_id, state);
3790
3791 if (!voc_set_ext_ec_ref_port_id(ext_ec_ref_port_id, state)) {
3792 mutex_unlock(&routing_lock);
3793 snd_soc_dapm_mux_update_power(widget->dapm, kcontrol, mux, e,
3794 update);
3795 } else {
3796 ret = -EINVAL;
3797 mutex_unlock(&routing_lock);
3798 }
3799 return ret;
3800}
3801
3802static const char * const ext_ec_ref_rx[] = {"NONE", "PRI_MI2S_TX",
3803 "SEC_MI2S_TX", "TERT_MI2S_TX",
3804 "QUAT_MI2S_TX", "QUIN_MI2S_TX",
3805 "SLIM_1_TX"};
3806
3807static const struct soc_enum msm_route_ext_ec_ref_rx_enum[] = {
3808 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(ext_ec_ref_rx), ext_ec_ref_rx),
3809};
3810
3811static const struct snd_kcontrol_new voc_ext_ec_mux =
3812 SOC_DAPM_ENUM_EXT("VOC_EXT_EC MUX Mux", msm_route_ext_ec_ref_rx_enum[0],
3813 msm_routing_ext_ec_get, msm_routing_ext_ec_put);
3814
3815
3816static const struct snd_kcontrol_new pri_i2s_rx_mixer_controls[] = {
3817 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_I2S_RX,
3818 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
3819 msm_routing_put_audio_mixer),
3820 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_I2S_RX,
3821 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
3822 msm_routing_put_audio_mixer),
3823 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_I2S_RX,
3824 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
3825 msm_routing_put_audio_mixer),
3826 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_I2S_RX,
3827 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
3828 msm_routing_put_audio_mixer),
3829 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_I2S_RX,
3830 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
3831 msm_routing_put_audio_mixer),
3832 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_I2S_RX,
3833 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
3834 msm_routing_put_audio_mixer),
3835 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_I2S_RX,
3836 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
3837 msm_routing_put_audio_mixer),
3838 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_I2S_RX,
3839 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
3840 msm_routing_put_audio_mixer),
3841 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_I2S_RX,
3842 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
3843 msm_routing_put_audio_mixer),
3844 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_I2S_RX,
3845 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
3846 msm_routing_put_audio_mixer),
3847 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_I2S_RX,
3848 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
3849 msm_routing_put_audio_mixer),
3850 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_I2S_RX,
3851 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
3852 msm_routing_put_audio_mixer),
3853 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_I2S_RX,
3854 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
3855 msm_routing_put_audio_mixer),
3856 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_I2S_RX,
3857 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
3858 msm_routing_put_audio_mixer),
3859 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_I2S_RX,
3860 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
3861 msm_routing_put_audio_mixer),
3862 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_I2S_RX,
3863 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
3864 msm_routing_put_audio_mixer),
3865 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_PRI_I2S_RX,
3866 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
3867 msm_routing_put_audio_mixer),
3868 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_PRI_I2S_RX,
3869 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
3870 msm_routing_put_audio_mixer),
3871 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_PRI_I2S_RX,
3872 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
3873 msm_routing_put_audio_mixer),
3874};
3875
3876static const struct snd_kcontrol_new sec_i2s_rx_mixer_controls[] = {
3877 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_I2S_RX,
3878 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
3879 msm_routing_put_audio_mixer),
3880 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_I2S_RX,
3881 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
3882 msm_routing_put_audio_mixer),
3883 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_I2S_RX,
3884 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
3885 msm_routing_put_audio_mixer),
3886 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_I2S_RX,
3887 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
3888 msm_routing_put_audio_mixer),
3889 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_I2S_RX,
3890 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
3891 msm_routing_put_audio_mixer),
3892 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_I2S_RX,
3893 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
3894 msm_routing_put_audio_mixer),
3895 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_I2S_RX,
3896 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
3897 msm_routing_put_audio_mixer),
3898 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_I2S_RX,
3899 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
3900 msm_routing_put_audio_mixer),
3901 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_I2S_RX,
3902 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
3903 msm_routing_put_audio_mixer),
3904 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_I2S_RX,
3905 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
3906 msm_routing_put_audio_mixer),
3907 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_I2S_RX,
3908 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
3909 msm_routing_put_audio_mixer),
3910 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_I2S_RX,
3911 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
3912 msm_routing_put_audio_mixer),
3913 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_I2S_RX,
3914 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
3915 msm_routing_put_audio_mixer),
3916 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_I2S_RX,
3917 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
3918 msm_routing_put_audio_mixer),
3919 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_I2S_RX,
3920 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
3921 msm_routing_put_audio_mixer),
3922 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_I2S_RX,
3923 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
3924 msm_routing_put_audio_mixer),
3925 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SEC_I2S_RX,
3926 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
3927 msm_routing_put_audio_mixer),
3928 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SEC_I2S_RX,
3929 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
3930 msm_routing_put_audio_mixer),
3931 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SEC_I2S_RX,
3932 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
3933 msm_routing_put_audio_mixer),
3934};
3935
3936static const struct snd_kcontrol_new spdif_rx_mixer_controls[] = {
3937 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SPDIF_RX,
3938 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
3939 msm_routing_put_audio_mixer),
3940 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SPDIF_RX,
3941 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
3942 msm_routing_put_audio_mixer),
3943 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SPDIF_RX,
3944 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
3945 msm_routing_put_audio_mixer),
3946 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SPDIF_RX,
3947 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
3948 msm_routing_put_audio_mixer),
3949 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SPDIF_RX,
3950 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
3951 msm_routing_put_audio_mixer),
3952 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SPDIF_RX,
3953 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
3954 msm_routing_put_audio_mixer),
3955 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SPDIF_RX,
3956 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
3957 msm_routing_put_audio_mixer),
3958 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SPDIF_RX,
3959 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
3960 msm_routing_put_audio_mixer),
3961 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SPDIF_RX,
3962 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
3963 msm_routing_put_audio_mixer),
3964 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SPDIF_RX,
3965 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
3966 msm_routing_put_audio_mixer),
3967 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SPDIF_RX,
3968 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
3969 msm_routing_put_audio_mixer),
3970 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SPDIF_RX,
3971 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
3972 msm_routing_put_audio_mixer),
3973 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SPDIF_RX,
3974 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
3975 msm_routing_put_audio_mixer),
3976 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SPDIF_RX,
3977 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
3978 msm_routing_put_audio_mixer),
3979 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SPDIF_RX,
3980 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
3981 msm_routing_put_audio_mixer),
3982 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SPDIF_RX,
3983 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
3984 msm_routing_put_audio_mixer),
3985 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SPDIF_RX,
3986 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
3987 msm_routing_put_audio_mixer),
3988 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SPDIF_RX,
3989 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
3990 msm_routing_put_audio_mixer),
3991 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SPDIF_RX,
3992 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
3993 msm_routing_put_audio_mixer),
3994
3995};
3996
3997static const struct snd_kcontrol_new slimbus_2_rx_mixer_controls[] = {
3998 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_2_RX,
3999 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4000 msm_routing_put_audio_mixer),
4001 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4002 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4003 msm_routing_put_audio_mixer),
4004 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4005 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4006 msm_routing_put_audio_mixer),
4007 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4008 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4009 msm_routing_put_audio_mixer),
4010 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4011 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4012 msm_routing_put_audio_mixer),
4013 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4014 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4015 msm_routing_put_audio_mixer),
4016 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4017 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4018 msm_routing_put_audio_mixer),
4019 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4020 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4021 msm_routing_put_audio_mixer),
4022 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4023 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4024 msm_routing_put_audio_mixer),
4025 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4026 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4027 msm_routing_put_audio_mixer),
4028 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4029 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4030 msm_routing_put_audio_mixer),
4031 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4032 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4033 msm_routing_put_audio_mixer),
4034 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4035 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4036 msm_routing_put_audio_mixer),
4037 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4038 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4039 msm_routing_put_audio_mixer),
4040 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4041 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4042 msm_routing_put_audio_mixer),
4043 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4044 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4045 msm_routing_put_audio_mixer),
4046};
4047
4048static const struct snd_kcontrol_new slimbus_5_rx_mixer_controls[] = {
4049 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4050 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4051 msm_routing_put_audio_mixer),
4052 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4053 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4054 msm_routing_put_audio_mixer),
4055 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4056 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4057 msm_routing_put_audio_mixer),
4058 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4059 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4060 msm_routing_put_audio_mixer),
4061 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4062 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4063 msm_routing_put_audio_mixer),
4064 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4065 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4066 msm_routing_put_audio_mixer),
4067 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4068 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4069 msm_routing_put_audio_mixer),
4070 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4071 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4072 msm_routing_put_audio_mixer),
4073 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4074 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4075 msm_routing_put_audio_mixer),
4076 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4077 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4078 msm_routing_put_audio_mixer),
4079 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4080 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4081 msm_routing_put_audio_mixer),
4082 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4083 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4084 msm_routing_put_audio_mixer),
4085 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4086 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4087 msm_routing_put_audio_mixer),
4088 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4089 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4090 msm_routing_put_audio_mixer),
4091 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4092 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4093 msm_routing_put_audio_mixer),
4094 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4095 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4096 msm_routing_put_audio_mixer),
4097 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4098 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4099 msm_routing_put_audio_mixer),
4100 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4101 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4102 msm_routing_put_audio_mixer),
4103 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4104 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4105 msm_routing_put_audio_mixer),
4106};
4107
4108static const struct snd_kcontrol_new slimbus_rx_mixer_controls[] = {
4109 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4110 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4111 msm_routing_put_audio_mixer),
4112 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4113 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4114 msm_routing_put_audio_mixer),
4115 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4116 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4117 msm_routing_put_audio_mixer),
4118 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4119 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4120 msm_routing_put_audio_mixer),
4121 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4122 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4123 msm_routing_put_audio_mixer),
4124 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4125 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4126 msm_routing_put_audio_mixer),
4127 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4128 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4129 msm_routing_put_audio_mixer),
4130 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4131 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4132 msm_routing_put_audio_mixer),
4133 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4134 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4135 msm_routing_put_audio_mixer),
4136 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4137 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4138 msm_routing_put_audio_mixer),
4139 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4140 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4141 msm_routing_put_audio_mixer),
4142 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4143 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4144 msm_routing_put_audio_mixer),
4145 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4146 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4147 msm_routing_put_audio_mixer),
4148 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4149 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4150 msm_routing_put_audio_mixer),
4151 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4152 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4153 msm_routing_put_audio_mixer),
4154 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4155 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4156 msm_routing_put_audio_mixer),
4157 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4158 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4159 msm_routing_put_audio_mixer),
4160 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4161 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4162 msm_routing_put_audio_mixer),
4163 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4164 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4165 msm_routing_put_audio_mixer),
4166};
4167
4168static const struct snd_kcontrol_new mi2s_rx_mixer_controls[] = {
4169 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_MI2S_RX,
4170 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4171 msm_routing_put_audio_mixer),
4172 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_MI2S_RX,
4173 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4174 msm_routing_put_audio_mixer),
4175 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_MI2S_RX,
4176 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4177 msm_routing_put_audio_mixer),
4178 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_MI2S_RX,
4179 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4180 msm_routing_put_audio_mixer),
4181 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_MI2S_RX,
4182 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4183 msm_routing_put_audio_mixer),
4184 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_MI2S_RX,
4185 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4186 msm_routing_put_audio_mixer),
4187 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_MI2S_RX,
4188 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4189 msm_routing_put_audio_mixer),
4190 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_MI2S_RX,
4191 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4192 msm_routing_put_audio_mixer),
4193 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_MI2S_RX,
4194 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4195 msm_routing_put_audio_mixer),
4196 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_MI2S_RX,
4197 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4198 msm_routing_put_audio_mixer),
4199 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_MI2S_RX,
4200 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4201 msm_routing_put_audio_mixer),
4202 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_MI2S_RX,
4203 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4204 msm_routing_put_audio_mixer),
4205 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_MI2S_RX,
4206 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4207 msm_routing_put_audio_mixer),
4208 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_MI2S_RX,
4209 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4210 msm_routing_put_audio_mixer),
4211 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_MI2S_RX,
4212 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4213 msm_routing_put_audio_mixer),
4214 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_MI2S_RX,
4215 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4216 msm_routing_put_audio_mixer),
4217 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_MI2S_RX,
4218 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4219 msm_routing_put_audio_mixer),
4220 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_MI2S_RX,
4221 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4222 msm_routing_put_audio_mixer),
4223 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_MI2S_RX,
4224 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4225 msm_routing_put_audio_mixer),
4226};
4227
4228static const struct snd_kcontrol_new quaternary_mi2s_rx_mixer_controls[] = {
4229 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4230 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4231 msm_routing_put_audio_mixer),
4232 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4233 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4234 msm_routing_put_audio_mixer),
4235 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4236 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4237 msm_routing_put_audio_mixer),
4238 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4239 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4240 msm_routing_put_audio_mixer),
4241 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4242 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4243 msm_routing_put_audio_mixer),
4244 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4245 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4246 msm_routing_put_audio_mixer),
4247 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4248 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4249 msm_routing_put_audio_mixer),
4250 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4251 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4252 msm_routing_put_audio_mixer),
4253 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4254 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4255 msm_routing_put_audio_mixer),
4256 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4257 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4258 msm_routing_put_audio_mixer),
4259 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4260 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4261 msm_routing_put_audio_mixer),
4262 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4263 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4264 msm_routing_put_audio_mixer),
4265 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4266 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4267 msm_routing_put_audio_mixer),
4268 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4269 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4270 msm_routing_put_audio_mixer),
4271 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4272 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4273 msm_routing_put_audio_mixer),
4274 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4275 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4276 msm_routing_put_audio_mixer),
4277 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4278 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4279 msm_routing_put_audio_mixer),
4280 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4281 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4282 msm_routing_put_audio_mixer),
4283 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4284 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4285 msm_routing_put_audio_mixer),
4286};
4287
4288static const struct snd_kcontrol_new quinary_mi2s_rx_mixer_controls[] = {
4289 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4290 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4291 msm_routing_put_audio_mixer),
4292 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4293 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4294 msm_routing_put_audio_mixer),
4295 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4296 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4297 msm_routing_put_audio_mixer),
4298 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4299 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4300 msm_routing_put_audio_mixer),
4301 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4302 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4303 msm_routing_put_audio_mixer),
4304 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4305 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4306 msm_routing_put_audio_mixer),
4307 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4308 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4309 msm_routing_put_audio_mixer),
4310 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4311 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4312 msm_routing_put_audio_mixer),
4313 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4314 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4315 msm_routing_put_audio_mixer),
4316 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4317 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4318 msm_routing_put_audio_mixer),
4319 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4320 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4321 msm_routing_put_audio_mixer),
4322 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4323 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4324 msm_routing_put_audio_mixer),
4325 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4326 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4327 msm_routing_put_audio_mixer),
4328 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4329 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4330 msm_routing_put_audio_mixer),
4331 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4332 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4333 msm_routing_put_audio_mixer),
4334 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4335 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4336 msm_routing_put_audio_mixer),
4337 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4338 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4339 msm_routing_put_audio_mixer),
4340 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4341 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4342 msm_routing_put_audio_mixer),
4343 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4344 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4345 msm_routing_put_audio_mixer),
4346};
4347
4348static const struct snd_kcontrol_new tertiary_mi2s_rx_mixer_controls[] = {
4349 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4350 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4351 msm_routing_put_audio_mixer),
4352 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4353 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4354 msm_routing_put_audio_mixer),
4355 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4356 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4357 msm_routing_put_audio_mixer),
4358 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4359 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4360 msm_routing_put_audio_mixer),
4361 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4362 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4363 msm_routing_put_audio_mixer),
4364 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4365 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4366 msm_routing_put_audio_mixer),
4367 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4368 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4369 msm_routing_put_audio_mixer),
4370 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4371 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4372 msm_routing_put_audio_mixer),
4373 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4374 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4375 msm_routing_put_audio_mixer),
4376 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4377 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4378 msm_routing_put_audio_mixer),
4379 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4380 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4381 msm_routing_put_audio_mixer),
4382 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4383 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4384 msm_routing_put_audio_mixer),
4385 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4386 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4387 msm_routing_put_audio_mixer),
4388 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4389 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4390 msm_routing_put_audio_mixer),
4391 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4392 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4393 msm_routing_put_audio_mixer),
4394 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4395 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4396 msm_routing_put_audio_mixer),
4397 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4398 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4399 msm_routing_put_audio_mixer),
4400};
4401
4402static const struct snd_kcontrol_new secondary_mi2s_rx2_mixer_controls[] = {
4403 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SECONDARY_MI2S_RX_SD1,
4404 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4405 msm_routing_put_audio_mixer),
4406};
4407
4408static const struct snd_kcontrol_new secondary_mi2s_rx_mixer_controls[] = {
4409 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4410 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4411 msm_routing_put_audio_mixer),
4412 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4413 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4414 msm_routing_put_audio_mixer),
4415 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4416 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4417 msm_routing_put_audio_mixer),
4418 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4419 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4420 msm_routing_put_audio_mixer),
4421 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4422 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4423 msm_routing_put_audio_mixer),
4424 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4425 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4426 msm_routing_put_audio_mixer),
4427 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SECONDARY_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_SECONDARY_MI2S_RX,
4431 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4432 msm_routing_put_audio_mixer),
4433 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4434 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4435 msm_routing_put_audio_mixer),
4436 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4437 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4438 msm_routing_put_audio_mixer),
4439 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4440 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4441 msm_routing_put_audio_mixer),
4442 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4443 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4444 msm_routing_put_audio_mixer),
4445 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4446 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4447 msm_routing_put_audio_mixer),
4448 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4449 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4450 msm_routing_put_audio_mixer),
4451 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4452 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4453 msm_routing_put_audio_mixer),
4454 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4455 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4456 msm_routing_put_audio_mixer),
4457 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4458 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4459 msm_routing_put_audio_mixer),
4460 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4461 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4462 msm_routing_put_audio_mixer),
4463 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4464 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4465 msm_routing_put_audio_mixer),
4466};
4467
4468static const struct snd_kcontrol_new primary_mi2s_rx_mixer_controls[] = {
4469 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_MI2S_RX,
4470 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4471 msm_routing_put_audio_mixer),
4472 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_MI2S_RX,
4473 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4474 msm_routing_put_audio_mixer),
4475 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_MI2S_RX,
4476 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4477 msm_routing_put_audio_mixer),
4478 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_MI2S_RX,
4479 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4480 msm_routing_put_audio_mixer),
4481 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_MI2S_RX,
4482 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4483 msm_routing_put_audio_mixer),
4484 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_MI2S_RX,
4485 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4486 msm_routing_put_audio_mixer),
4487 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_MI2S_RX,
4488 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4489 msm_routing_put_audio_mixer),
4490 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_MI2S_RX,
4491 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4492 msm_routing_put_audio_mixer),
4493 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_MI2S_RX,
4494 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4495 msm_routing_put_audio_mixer),
4496 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_MI2S_RX,
4497 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4498 msm_routing_put_audio_mixer),
4499 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_MI2S_RX,
4500 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4501 msm_routing_put_audio_mixer),
4502 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_MI2S_RX,
4503 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4504 msm_routing_put_audio_mixer),
4505 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_MI2S_RX,
4506 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4507 msm_routing_put_audio_mixer),
4508 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_MI2S_RX,
4509 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4510 msm_routing_put_audio_mixer),
4511 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_MI2S_RX,
4512 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4513 msm_routing_put_audio_mixer),
4514 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_MI2S_RX,
4515 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4516 msm_routing_put_audio_mixer),
4517 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_PRI_MI2S_RX,
4518 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4519 msm_routing_put_audio_mixer),
4520 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_PRI_MI2S_RX,
4521 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4522 msm_routing_put_audio_mixer),
4523 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_PRI_MI2S_RX,
4524 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4525 msm_routing_put_audio_mixer),
4526};
4527
4528static const struct snd_kcontrol_new int0_mi2s_rx_mixer_controls[] = {
4529 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_INT0_MI2S_RX,
4530 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4531 msm_routing_put_audio_mixer),
4532 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_INT0_MI2S_RX,
4533 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4534 msm_routing_put_audio_mixer),
4535 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_INT0_MI2S_RX,
4536 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4537 msm_routing_put_audio_mixer),
4538 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_INT0_MI2S_RX,
4539 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4540 msm_routing_put_audio_mixer),
4541 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_INT0_MI2S_RX,
4542 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4543 msm_routing_put_audio_mixer),
4544 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_INT0_MI2S_RX,
4545 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4546 msm_routing_put_audio_mixer),
4547 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_INT0_MI2S_RX,
4548 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4549 msm_routing_put_audio_mixer),
4550 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_INT0_MI2S_RX,
4551 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4552 msm_routing_put_audio_mixer),
4553 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_INT0_MI2S_RX,
4554 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4555 msm_routing_put_audio_mixer),
4556 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_INT0_MI2S_RX,
4557 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4558 msm_routing_put_audio_mixer),
4559 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_INT0_MI2S_RX,
4560 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4561 msm_routing_put_audio_mixer),
4562 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_INT0_MI2S_RX,
4563 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4564 msm_routing_put_audio_mixer),
4565 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_INT0_MI2S_RX,
4566 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4567 msm_routing_put_audio_mixer),
4568 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_INT0_MI2S_RX,
4569 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4570 msm_routing_put_audio_mixer),
4571 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_INT0_MI2S_RX,
4572 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4573 msm_routing_put_audio_mixer),
4574 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_INT0_MI2S_RX,
4575 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4576 msm_routing_put_audio_mixer),
4577};
4578
4579static const struct snd_kcontrol_new int4_mi2s_rx_mixer_controls[] = {
4580 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_INT4_MI2S_RX,
4581 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4582 msm_routing_put_audio_mixer),
4583 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_INT4_MI2S_RX,
4584 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4585 msm_routing_put_audio_mixer),
4586 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_INT4_MI2S_RX,
4587 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4588 msm_routing_put_audio_mixer),
4589 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_INT4_MI2S_RX,
4590 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4591 msm_routing_put_audio_mixer),
4592 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_INT4_MI2S_RX,
4593 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4594 msm_routing_put_audio_mixer),
4595 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_INT4_MI2S_RX,
4596 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4597 msm_routing_put_audio_mixer),
4598 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_INT4_MI2S_RX,
4599 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4600 msm_routing_put_audio_mixer),
4601 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_INT4_MI2S_RX,
4602 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4603 msm_routing_put_audio_mixer),
4604 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_INT4_MI2S_RX,
4605 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4606 msm_routing_put_audio_mixer),
4607 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_INT4_MI2S_RX,
4608 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4609 msm_routing_put_audio_mixer),
4610 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_INT4_MI2S_RX,
4611 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4612 msm_routing_put_audio_mixer),
4613 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_INT4_MI2S_RX,
4614 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4615 msm_routing_put_audio_mixer),
4616 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_INT4_MI2S_RX,
4617 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4618 msm_routing_put_audio_mixer),
4619 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_INT4_MI2S_RX,
4620 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4621 msm_routing_put_audio_mixer),
4622 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_INT4_MI2S_RX,
4623 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4624 msm_routing_put_audio_mixer),
4625 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_INT4_MI2S_RX,
4626 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4627 msm_routing_put_audio_mixer),
4628};
4629
4630static const struct snd_kcontrol_new hdmi_mixer_controls[] = {
4631 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_HDMI_RX,
4632 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4633 msm_routing_put_audio_mixer),
4634 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_HDMI_RX,
4635 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4636 msm_routing_put_audio_mixer),
4637 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_HDMI_RX,
4638 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4639 msm_routing_put_audio_mixer),
4640 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_HDMI_RX,
4641 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4642 msm_routing_put_audio_mixer),
4643 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_HDMI_RX,
4644 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4645 msm_routing_put_audio_mixer),
4646 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_HDMI_RX,
4647 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4648 msm_routing_put_audio_mixer),
4649 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_HDMI_RX,
4650 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4651 msm_routing_put_audio_mixer),
4652 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_HDMI_RX,
4653 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4654 msm_routing_put_audio_mixer),
4655 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_HDMI_RX,
4656 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4657 msm_routing_put_audio_mixer),
4658 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_HDMI_RX,
4659 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4660 msm_routing_put_audio_mixer),
4661 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_HDMI_RX,
4662 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4663 msm_routing_put_audio_mixer),
4664 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_HDMI_RX,
4665 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4666 msm_routing_put_audio_mixer),
4667 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_HDMI_RX,
4668 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4669 msm_routing_put_audio_mixer),
4670 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_HDMI_RX,
4671 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4672 msm_routing_put_audio_mixer),
4673 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_HDMI_RX,
4674 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4675 msm_routing_put_audio_mixer),
4676 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_HDMI_RX,
4677 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4678 msm_routing_put_audio_mixer),
4679 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_HDMI_RX,
4680 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4681 msm_routing_put_audio_mixer),
4682 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_HDMI_RX,
4683 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4684 msm_routing_put_audio_mixer),
4685 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_HDMI_RX,
4686 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4687 msm_routing_put_audio_mixer),
4688};
4689
4690static const struct snd_kcontrol_new display_port_mixer_controls[] = {
4691 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4692 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4693 msm_routing_put_audio_mixer),
4694 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4695 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4696 msm_routing_put_audio_mixer),
4697 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4698 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4699 msm_routing_put_audio_mixer),
4700 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4701 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4702 msm_routing_put_audio_mixer),
4703 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4704 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4705 msm_routing_put_audio_mixer),
4706 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4707 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4708 msm_routing_put_audio_mixer),
4709 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4710 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4711 msm_routing_put_audio_mixer),
4712 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4713 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4714 msm_routing_put_audio_mixer),
4715 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4716 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4717 msm_routing_put_audio_mixer),
4718 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4719 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4720 msm_routing_put_audio_mixer),
4721 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4722 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4723 msm_routing_put_audio_mixer),
4724 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4725 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4726 msm_routing_put_audio_mixer),
4727 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4728 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4729 msm_routing_put_audio_mixer),
4730 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4731 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4732 msm_routing_put_audio_mixer),
4733 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4734 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4735 msm_routing_put_audio_mixer),
4736 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4737 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4738 msm_routing_put_audio_mixer),
4739};
4740
4741 /* incall music delivery mixer */
4742static const struct snd_kcontrol_new incall_music_delivery_mixer_controls[] = {
4743 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_VOICE_PLAYBACK_TX,
4744 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4745 msm_routing_put_audio_mixer),
4746 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_VOICE_PLAYBACK_TX,
4747 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4748 msm_routing_put_audio_mixer),
4749 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_VOICE_PLAYBACK_TX,
4750 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4751 msm_routing_put_audio_mixer),
4752 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_VOICE_PLAYBACK_TX,
4753 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4754 msm_routing_put_audio_mixer),
4755};
4756
4757static const struct snd_kcontrol_new incall_music2_delivery_mixer_controls[] = {
4758 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_VOICE2_PLAYBACK_TX,
4759 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4760 msm_routing_put_audio_mixer),
4761 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_VOICE2_PLAYBACK_TX,
4762 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4763 msm_routing_put_audio_mixer),
4764 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_VOICE2_PLAYBACK_TX,
4765 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4766 msm_routing_put_audio_mixer),
4767 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_VOICE2_PLAYBACK_TX,
4768 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4769 msm_routing_put_audio_mixer),
4770};
4771
4772static const struct snd_kcontrol_new slimbus_4_rx_mixer_controls[] = {
4773 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_4_RX,
4774 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4775 msm_routing_put_audio_mixer),
4776 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_4_RX,
4777 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4778 msm_routing_put_audio_mixer),
4779 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_4_RX,
4780 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4781 msm_routing_put_audio_mixer),
4782 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_4_RX,
4783 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4784 msm_routing_put_audio_mixer),
4785};
4786
4787static const struct snd_kcontrol_new slimbus_6_rx_mixer_controls[] = {
4788 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4789 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4790 msm_routing_put_audio_mixer),
4791 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4792 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4793 msm_routing_put_audio_mixer),
4794 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4795 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4796 msm_routing_put_audio_mixer),
4797 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4798 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4799 msm_routing_put_audio_mixer),
4800 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4801 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4802 msm_routing_put_audio_mixer),
4803 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4804 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4805 msm_routing_put_audio_mixer),
4806 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4807 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4808 msm_routing_put_audio_mixer),
4809 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4810 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4811 msm_routing_put_audio_mixer),
4812 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4813 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4814 msm_routing_put_audio_mixer),
4815 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4816 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4817 msm_routing_put_audio_mixer),
4818 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4819 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4820 msm_routing_put_audio_mixer),
4821 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4822 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4823 msm_routing_put_audio_mixer),
4824 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4825 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4826 msm_routing_put_audio_mixer),
4827 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4828 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4829 msm_routing_put_audio_mixer),
4830 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4831 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4832 msm_routing_put_audio_mixer),
4833 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4834 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4835 msm_routing_put_audio_mixer),
4836};
4837
4838static const struct snd_kcontrol_new slimbus_7_rx_mixer_controls[] = {
4839 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4840 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4841 msm_routing_put_audio_mixer),
4842 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4843 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4844 msm_routing_put_audio_mixer),
4845 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4846 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4847 msm_routing_put_audio_mixer),
4848 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4849 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4850 msm_routing_put_audio_mixer),
4851 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4852 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4853 msm_routing_put_audio_mixer),
4854 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4855 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4856 msm_routing_put_audio_mixer),
4857 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4858 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4859 msm_routing_put_audio_mixer),
4860 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4861 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4862 msm_routing_put_audio_mixer),
4863 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4864 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4865 msm_routing_put_audio_mixer),
4866 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4867 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4868 msm_routing_put_audio_mixer),
4869 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4870 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4871 msm_routing_put_audio_mixer),
4872 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4873 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4874 msm_routing_put_audio_mixer),
4875 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4876 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4877 msm_routing_put_audio_mixer),
4878 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4879 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4880 msm_routing_put_audio_mixer),
4881 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4882 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4883 msm_routing_put_audio_mixer),
4884 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4885 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4886 msm_routing_put_audio_mixer),
4887};
4888
4889static const struct snd_kcontrol_new usb_audio_rx_mixer_controls[] = {
4890 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_USB_RX,
4891 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4892 msm_routing_put_audio_mixer),
4893 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_USB_RX,
4894 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4895 msm_routing_put_audio_mixer),
4896 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_USB_RX,
4897 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4898 msm_routing_put_audio_mixer),
4899 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_USB_RX,
4900 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4901 msm_routing_put_audio_mixer),
4902 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_USB_RX,
4903 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4904 msm_routing_put_audio_mixer),
4905 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_USB_RX,
4906 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4907 msm_routing_put_audio_mixer),
4908 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_USB_RX,
4909 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4910 msm_routing_put_audio_mixer),
4911 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_USB_RX,
4912 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4913 msm_routing_put_audio_mixer),
4914 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_USB_RX,
4915 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4916 msm_routing_put_audio_mixer),
4917 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_USB_RX,
4918 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4919 msm_routing_put_audio_mixer),
4920 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_USB_RX,
4921 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4922 msm_routing_put_audio_mixer),
4923 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_USB_RX,
4924 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4925 msm_routing_put_audio_mixer),
4926 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_USB_RX,
4927 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4928 msm_routing_put_audio_mixer),
4929 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_USB_RX,
4930 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4931 msm_routing_put_audio_mixer),
4932 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_USB_RX,
4933 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4934 msm_routing_put_audio_mixer),
4935 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_USB_RX,
4936 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4937 msm_routing_put_audio_mixer),
4938};
4939
4940static const struct snd_kcontrol_new int_bt_sco_rx_mixer_controls[] = {
4941 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4942 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4943 msm_routing_put_audio_mixer),
4944 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4945 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4946 msm_routing_put_audio_mixer),
4947 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4948 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4949 msm_routing_put_audio_mixer),
4950 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4951 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4952 msm_routing_put_audio_mixer),
4953 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4954 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4955 msm_routing_put_audio_mixer),
4956 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4957 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4958 msm_routing_put_audio_mixer),
4959 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4960 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4961 msm_routing_put_audio_mixer),
4962 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4963 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4964 msm_routing_put_audio_mixer),
4965 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4966 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4967 msm_routing_put_audio_mixer),
4968 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4969 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4970 msm_routing_put_audio_mixer),
4971 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4972 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4973 msm_routing_put_audio_mixer),
4974 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4975 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4976 msm_routing_put_audio_mixer),
4977 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4978 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4979 msm_routing_put_audio_mixer),
4980 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4981 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4982 msm_routing_put_audio_mixer),
4983 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4984 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4985 msm_routing_put_audio_mixer),
4986 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4987 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4988 msm_routing_put_audio_mixer),
4989 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4990 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4991 msm_routing_put_audio_mixer),
4992 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4993 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4994 msm_routing_put_audio_mixer),
4995 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4996 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4997 msm_routing_put_audio_mixer),
4998};
4999
5000static const struct snd_kcontrol_new int_bt_a2dp_rx_mixer_controls[] = {
5001 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5002 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5003 msm_routing_put_audio_mixer),
5004 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5005 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5006 msm_routing_put_audio_mixer),
5007 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5008 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5009 msm_routing_put_audio_mixer),
5010 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5011 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5012 msm_routing_put_audio_mixer),
5013 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5014 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5015 msm_routing_put_audio_mixer),
5016 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5017 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5018 msm_routing_put_audio_mixer),
5019 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5020 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5021 msm_routing_put_audio_mixer),
5022 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5023 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5024 msm_routing_put_audio_mixer),
5025 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5026 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5027 msm_routing_put_audio_mixer),
5028 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5029 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5030 msm_routing_put_audio_mixer),
5031 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5032 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5033 msm_routing_put_audio_mixer),
5034 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5035 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5036 msm_routing_put_audio_mixer),
5037 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5038 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5039 msm_routing_put_audio_mixer),
5040 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5041 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5042 msm_routing_put_audio_mixer),
5043 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5044 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5045 msm_routing_put_audio_mixer),
5046 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5047 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5048 msm_routing_put_audio_mixer),
5049};
5050
5051static const struct snd_kcontrol_new int_fm_rx_mixer_controls[] = {
5052 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_INT_FM_RX,
5053 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5054 msm_routing_put_audio_mixer),
5055 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_INT_FM_RX,
5056 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5057 msm_routing_put_audio_mixer),
5058 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_INT_FM_RX,
5059 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5060 msm_routing_put_audio_mixer),
5061 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_INT_FM_RX,
5062 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5063 msm_routing_put_audio_mixer),
5064 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_INT_FM_RX,
5065 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5066 msm_routing_put_audio_mixer),
5067 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_INT_FM_RX,
5068 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5069 msm_routing_put_audio_mixer),
5070 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_INT_FM_RX,
5071 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5072 msm_routing_put_audio_mixer),
5073 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_INT_FM_RX,
5074 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5075 msm_routing_put_audio_mixer),
5076 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_INT_FM_RX,
5077 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5078 msm_routing_put_audio_mixer),
5079 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_INT_FM_RX,
5080 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5081 msm_routing_put_audio_mixer),
5082 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_INT_FM_RX,
5083 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5084 msm_routing_put_audio_mixer),
5085 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_INT_FM_RX,
5086 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5087 msm_routing_put_audio_mixer),
5088 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_INT_FM_RX,
5089 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5090 msm_routing_put_audio_mixer),
5091 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_INT_FM_RX,
5092 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5093 msm_routing_put_audio_mixer),
5094 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_INT_FM_RX,
5095 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5096 msm_routing_put_audio_mixer),
5097 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_INT_FM_RX,
5098 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5099 msm_routing_put_audio_mixer),
5100 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_INT_FM_RX,
5101 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
5102 msm_routing_put_audio_mixer),
5103 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_INT_FM_RX,
5104 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
5105 msm_routing_put_audio_mixer),
5106 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_INT_FM_RX,
5107 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
5108 msm_routing_put_audio_mixer),
5109};
5110
5111static const struct snd_kcontrol_new afe_pcm_rx_mixer_controls[] = {
5112 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_AFE_PCM_RX,
5113 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5114 msm_routing_put_audio_mixer),
5115 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_AFE_PCM_RX,
5116 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5117 msm_routing_put_audio_mixer),
5118 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_AFE_PCM_RX,
5119 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5120 msm_routing_put_audio_mixer),
5121 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_AFE_PCM_RX,
5122 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5123 msm_routing_put_audio_mixer),
5124 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_AFE_PCM_RX,
5125 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5126 msm_routing_put_audio_mixer),
5127 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_AFE_PCM_RX,
5128 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5129 msm_routing_put_audio_mixer),
5130 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_AFE_PCM_RX,
5131 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5132 msm_routing_put_audio_mixer),
5133 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_AFE_PCM_RX,
5134 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5135 msm_routing_put_audio_mixer),
5136 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_AFE_PCM_RX,
5137 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5138 msm_routing_put_audio_mixer),
5139 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_AFE_PCM_RX,
5140 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5141 msm_routing_put_audio_mixer),
5142 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_AFE_PCM_RX,
5143 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5144 msm_routing_put_audio_mixer),
5145 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_AFE_PCM_RX,
5146 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5147 msm_routing_put_audio_mixer),
5148 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_AFE_PCM_RX,
5149 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5150 msm_routing_put_audio_mixer),
5151 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_AFE_PCM_RX,
5152 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5153 msm_routing_put_audio_mixer),
5154 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_AFE_PCM_RX,
5155 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5156 msm_routing_put_audio_mixer),
5157 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_AFE_PCM_RX,
5158 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5159 msm_routing_put_audio_mixer),
5160 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_AFE_PCM_RX,
5161 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
5162 msm_routing_put_audio_mixer),
5163 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_AFE_PCM_RX,
5164 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
5165 msm_routing_put_audio_mixer),
5166 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_AFE_PCM_RX,
5167 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
5168 msm_routing_put_audio_mixer),
5169};
5170
5171static const struct snd_kcontrol_new auxpcm_rx_mixer_controls[] = {
5172 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_AUXPCM_RX,
5173 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5174 msm_routing_put_audio_mixer),
5175 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_AUXPCM_RX,
5176 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5177 msm_routing_put_audio_mixer),
5178 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_AUXPCM_RX,
5179 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5180 msm_routing_put_audio_mixer),
5181 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_AUXPCM_RX,
5182 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5183 msm_routing_put_audio_mixer),
5184 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_AUXPCM_RX,
5185 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5186 msm_routing_put_audio_mixer),
5187 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_AUXPCM_RX,
5188 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5189 msm_routing_put_audio_mixer),
5190 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_AUXPCM_RX,
5191 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5192 msm_routing_put_audio_mixer),
5193 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_AUXPCM_RX,
5194 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5195 msm_routing_put_audio_mixer),
5196 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_AUXPCM_RX,
5197 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5198 msm_routing_put_audio_mixer),
5199 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_AUXPCM_RX,
5200 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5201 msm_routing_put_audio_mixer),
5202 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_AUXPCM_RX,
5203 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5204 msm_routing_put_audio_mixer),
5205 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_AUXPCM_RX,
5206 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5207 msm_routing_put_audio_mixer),
5208 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_AUXPCM_RX,
5209 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5210 msm_routing_put_audio_mixer),
5211 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_AUXPCM_RX,
5212 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5213 msm_routing_put_audio_mixer),
5214 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_AUXPCM_RX,
5215 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5216 msm_routing_put_audio_mixer),
5217 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_AUXPCM_RX,
5218 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5219 msm_routing_put_audio_mixer),
5220 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_AUXPCM_RX,
5221 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
5222 msm_routing_put_audio_mixer),
5223 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_AUXPCM_RX,
5224 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
5225 msm_routing_put_audio_mixer),
5226 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_AUXPCM_RX,
5227 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
5228 msm_routing_put_audio_mixer),
5229};
5230
5231static const struct snd_kcontrol_new sec_auxpcm_rx_mixer_controls[] = {
5232 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5233 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5234 msm_routing_put_audio_mixer),
5235 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5236 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5237 msm_routing_put_audio_mixer),
5238 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5239 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5240 msm_routing_put_audio_mixer),
5241 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5242 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5243 msm_routing_put_audio_mixer),
5244 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5245 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5246 msm_routing_put_audio_mixer),
5247 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5248 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5249 msm_routing_put_audio_mixer),
5250 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5251 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5252 msm_routing_put_audio_mixer),
5253 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5254 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5255 msm_routing_put_audio_mixer),
5256 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5257 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5258 msm_routing_put_audio_mixer),
5259 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5260 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5261 msm_routing_put_audio_mixer),
5262 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5263 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5264 msm_routing_put_audio_mixer),
5265 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5266 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5267 msm_routing_put_audio_mixer),
5268 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5269 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5270 msm_routing_put_audio_mixer),
5271 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5272 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5273 msm_routing_put_audio_mixer),
5274 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5275 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5276 msm_routing_put_audio_mixer),
5277 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5278 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5279 msm_routing_put_audio_mixer),
5280 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5281 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
5282 msm_routing_put_audio_mixer),
5283 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5284 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
5285 msm_routing_put_audio_mixer),
5286 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5287 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
5288 msm_routing_put_audio_mixer),
5289};
5290
5291static const struct snd_kcontrol_new tert_auxpcm_rx_mixer_controls[] = {
5292 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5293 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5294 msm_routing_put_audio_mixer),
5295 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5296 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5297 msm_routing_put_audio_mixer),
5298 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5299 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5300 msm_routing_put_audio_mixer),
5301 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5302 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5303 msm_routing_put_audio_mixer),
5304 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5305 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5306 msm_routing_put_audio_mixer),
5307 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5308 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5309 msm_routing_put_audio_mixer),
5310 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5311 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5312 msm_routing_put_audio_mixer),
5313 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5314 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5315 msm_routing_put_audio_mixer),
5316 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5317 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5318 msm_routing_put_audio_mixer),
5319 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5320 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5321 msm_routing_put_audio_mixer),
5322 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5323 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5324 msm_routing_put_audio_mixer),
5325 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5326 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5327 msm_routing_put_audio_mixer),
5328 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5329 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5330 msm_routing_put_audio_mixer),
5331 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5332 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5333 msm_routing_put_audio_mixer),
5334 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5335 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5336 msm_routing_put_audio_mixer),
5337 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5338 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5339 msm_routing_put_audio_mixer),
5340};
5341
5342static const struct snd_kcontrol_new quat_auxpcm_rx_mixer_controls[] = {
5343 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5344 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5345 msm_routing_put_audio_mixer),
5346 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5347 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5348 msm_routing_put_audio_mixer),
5349 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5350 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5351 msm_routing_put_audio_mixer),
5352 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5353 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5354 msm_routing_put_audio_mixer),
5355 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5356 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5357 msm_routing_put_audio_mixer),
5358 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5359 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5360 msm_routing_put_audio_mixer),
5361 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5362 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5363 msm_routing_put_audio_mixer),
5364 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5365 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5366 msm_routing_put_audio_mixer),
5367 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5368 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5369 msm_routing_put_audio_mixer),
5370 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5371 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5372 msm_routing_put_audio_mixer),
5373 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5374 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5375 msm_routing_put_audio_mixer),
5376 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5377 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5378 msm_routing_put_audio_mixer),
5379 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5380 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5381 msm_routing_put_audio_mixer),
5382 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5383 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5384 msm_routing_put_audio_mixer),
5385 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5386 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5387 msm_routing_put_audio_mixer),
5388 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5389 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5390 msm_routing_put_audio_mixer),
5391};
5392
Rohit Kumara5077932017-09-10 22:05:05 +05305393static const struct snd_kcontrol_new quin_auxpcm_rx_mixer_controls[] = {
5394 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5395 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5396 msm_routing_put_audio_mixer),
5397 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5398 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5399 msm_routing_put_audio_mixer),
5400 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5401 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5402 msm_routing_put_audio_mixer),
5403 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5404 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5405 msm_routing_put_audio_mixer),
5406 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5407 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5408 msm_routing_put_audio_mixer),
5409 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5410 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5411 msm_routing_put_audio_mixer),
5412 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5413 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5414 msm_routing_put_audio_mixer),
5415 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5416 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5417 msm_routing_put_audio_mixer),
5418 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5419 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5420 msm_routing_put_audio_mixer),
5421 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5422 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5423 msm_routing_put_audio_mixer),
5424 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5425 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5426 msm_routing_put_audio_mixer),
5427 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5428 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5429 msm_routing_put_audio_mixer),
5430 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5431 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5432 msm_routing_put_audio_mixer),
5433 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5434 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5435 msm_routing_put_audio_mixer),
5436 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5437 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5438 msm_routing_put_audio_mixer),
5439 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5440 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5441 msm_routing_put_audio_mixer),
5442};
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305443static const struct snd_kcontrol_new pri_tdm_rx_0_mixer_controls[] = {
5444 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5445 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5446 msm_routing_put_audio_mixer),
5447 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5448 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5449 msm_routing_put_audio_mixer),
5450 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5451 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5452 msm_routing_put_audio_mixer),
5453 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5454 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5455 msm_routing_put_audio_mixer),
5456 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5457 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5458 msm_routing_put_audio_mixer),
5459 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5460 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5461 msm_routing_put_audio_mixer),
5462 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5463 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5464 msm_routing_put_audio_mixer),
5465 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5466 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5467 msm_routing_put_audio_mixer),
5468 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5469 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5470 msm_routing_put_audio_mixer),
5471 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5472 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5473 msm_routing_put_audio_mixer),
5474 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5475 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5476 msm_routing_put_audio_mixer),
5477 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5478 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5479 msm_routing_put_audio_mixer),
5480 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5481 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5482 msm_routing_put_audio_mixer),
5483 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5484 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5485 msm_routing_put_audio_mixer),
5486 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5487 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5488 msm_routing_put_audio_mixer),
5489 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5490 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5491 msm_routing_put_audio_mixer),
5492};
5493
5494static const struct snd_kcontrol_new pri_tdm_rx_1_mixer_controls[] = {
5495 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5496 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5497 msm_routing_put_audio_mixer),
5498 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5499 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5500 msm_routing_put_audio_mixer),
5501 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5502 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5503 msm_routing_put_audio_mixer),
5504 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5505 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5506 msm_routing_put_audio_mixer),
5507 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5508 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5509 msm_routing_put_audio_mixer),
5510 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5511 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5512 msm_routing_put_audio_mixer),
5513 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5514 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5515 msm_routing_put_audio_mixer),
5516 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5517 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5518 msm_routing_put_audio_mixer),
5519 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5520 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5521 msm_routing_put_audio_mixer),
5522 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5523 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5524 msm_routing_put_audio_mixer),
5525 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5526 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5527 msm_routing_put_audio_mixer),
5528 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5529 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5530 msm_routing_put_audio_mixer),
5531 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5532 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5533 msm_routing_put_audio_mixer),
5534 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5535 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5536 msm_routing_put_audio_mixer),
5537 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5538 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5539 msm_routing_put_audio_mixer),
5540 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5541 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5542 msm_routing_put_audio_mixer),
5543};
5544
5545static const struct snd_kcontrol_new pri_tdm_rx_2_mixer_controls[] = {
5546 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5547 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5548 msm_routing_put_audio_mixer),
5549 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5550 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5551 msm_routing_put_audio_mixer),
5552 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5553 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5554 msm_routing_put_audio_mixer),
5555 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5556 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5557 msm_routing_put_audio_mixer),
5558 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5559 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5560 msm_routing_put_audio_mixer),
5561 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5562 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5563 msm_routing_put_audio_mixer),
5564 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5565 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5566 msm_routing_put_audio_mixer),
5567 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5568 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5569 msm_routing_put_audio_mixer),
5570 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5571 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5572 msm_routing_put_audio_mixer),
5573 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5574 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5575 msm_routing_put_audio_mixer),
5576 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5577 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5578 msm_routing_put_audio_mixer),
5579 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5580 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5581 msm_routing_put_audio_mixer),
5582 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5583 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5584 msm_routing_put_audio_mixer),
5585 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5586 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5587 msm_routing_put_audio_mixer),
5588 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5589 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5590 msm_routing_put_audio_mixer),
5591 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5592 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5593 msm_routing_put_audio_mixer),
5594};
5595
5596static const struct snd_kcontrol_new pri_tdm_rx_3_mixer_controls[] = {
5597 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5598 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5599 msm_routing_put_audio_mixer),
5600 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5601 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5602 msm_routing_put_audio_mixer),
5603 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5604 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5605 msm_routing_put_audio_mixer),
5606 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5607 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5608 msm_routing_put_audio_mixer),
5609 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5610 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5611 msm_routing_put_audio_mixer),
5612 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5613 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5614 msm_routing_put_audio_mixer),
5615 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5616 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5617 msm_routing_put_audio_mixer),
5618 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5619 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5620 msm_routing_put_audio_mixer),
5621 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5622 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5623 msm_routing_put_audio_mixer),
5624 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5625 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5626 msm_routing_put_audio_mixer),
5627 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5628 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5629 msm_routing_put_audio_mixer),
5630 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5631 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5632 msm_routing_put_audio_mixer),
5633 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5634 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5635 msm_routing_put_audio_mixer),
5636 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5637 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5638 msm_routing_put_audio_mixer),
5639 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5640 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5641 msm_routing_put_audio_mixer),
5642 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5643 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5644 msm_routing_put_audio_mixer),
5645};
5646
5647static const struct snd_kcontrol_new pri_tdm_tx_0_mixer_controls[] = {
5648 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5649 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5650 msm_routing_put_audio_mixer),
5651 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5652 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5653 msm_routing_put_audio_mixer),
5654 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5655 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5656 msm_routing_put_audio_mixer),
5657 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5658 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5659 msm_routing_put_audio_mixer),
5660 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5661 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5662 msm_routing_put_audio_mixer),
5663 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5664 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5665 msm_routing_put_audio_mixer),
5666 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5667 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5668 msm_routing_put_audio_mixer),
5669 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5670 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5671 msm_routing_put_audio_mixer),
5672 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5673 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5674 msm_routing_put_audio_mixer),
5675 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5676 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5677 msm_routing_put_audio_mixer),
5678 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5679 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5680 msm_routing_put_audio_mixer),
5681 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5682 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5683 msm_routing_put_audio_mixer),
5684 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5685 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5686 msm_routing_put_audio_mixer),
5687 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5688 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5689 msm_routing_put_audio_mixer),
5690 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5691 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5692 msm_routing_put_audio_mixer),
5693 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5694 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5695 msm_routing_put_audio_mixer),
5696};
5697
5698static const struct snd_kcontrol_new sec_tdm_rx_0_mixer_controls[] = {
5699 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5700 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5701 msm_routing_put_audio_mixer),
5702 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5703 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5704 msm_routing_put_audio_mixer),
5705 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5706 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5707 msm_routing_put_audio_mixer),
5708 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5709 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5710 msm_routing_put_audio_mixer),
5711 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5712 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5713 msm_routing_put_audio_mixer),
5714 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5715 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5716 msm_routing_put_audio_mixer),
5717 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5718 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5719 msm_routing_put_audio_mixer),
5720 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5721 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5722 msm_routing_put_audio_mixer),
5723 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5724 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5725 msm_routing_put_audio_mixer),
5726 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5727 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5728 msm_routing_put_audio_mixer),
5729 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5730 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5731 msm_routing_put_audio_mixer),
5732 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5733 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5734 msm_routing_put_audio_mixer),
5735 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5736 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5737 msm_routing_put_audio_mixer),
5738 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5739 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5740 msm_routing_put_audio_mixer),
5741 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5742 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5743 msm_routing_put_audio_mixer),
5744 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5745 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5746 msm_routing_put_audio_mixer),
5747};
5748
5749static const struct snd_kcontrol_new sec_tdm_rx_1_mixer_controls[] = {
5750 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5751 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5752 msm_routing_put_audio_mixer),
5753 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5754 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5755 msm_routing_put_audio_mixer),
5756 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5757 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5758 msm_routing_put_audio_mixer),
5759 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5760 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5761 msm_routing_put_audio_mixer),
5762 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5763 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5764 msm_routing_put_audio_mixer),
5765 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5766 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5767 msm_routing_put_audio_mixer),
5768 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5769 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5770 msm_routing_put_audio_mixer),
5771 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5772 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5773 msm_routing_put_audio_mixer),
5774 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5775 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5776 msm_routing_put_audio_mixer),
5777 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5778 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5779 msm_routing_put_audio_mixer),
5780 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5781 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5782 msm_routing_put_audio_mixer),
5783 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5784 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5785 msm_routing_put_audio_mixer),
5786 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5787 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5788 msm_routing_put_audio_mixer),
5789 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5790 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5791 msm_routing_put_audio_mixer),
5792 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5793 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5794 msm_routing_put_audio_mixer),
5795 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5796 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5797 msm_routing_put_audio_mixer),
5798};
5799
5800static const struct snd_kcontrol_new sec_tdm_rx_2_mixer_controls[] = {
5801 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5802 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5803 msm_routing_put_audio_mixer),
5804 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5805 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5806 msm_routing_put_audio_mixer),
5807 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5808 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5809 msm_routing_put_audio_mixer),
5810 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5811 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5812 msm_routing_put_audio_mixer),
5813 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5814 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5815 msm_routing_put_audio_mixer),
5816 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5817 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5818 msm_routing_put_audio_mixer),
5819 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5820 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5821 msm_routing_put_audio_mixer),
5822 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5823 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5824 msm_routing_put_audio_mixer),
5825 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5826 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5827 msm_routing_put_audio_mixer),
5828 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5829 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5830 msm_routing_put_audio_mixer),
5831 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5832 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5833 msm_routing_put_audio_mixer),
5834 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5835 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5836 msm_routing_put_audio_mixer),
5837 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5838 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5839 msm_routing_put_audio_mixer),
5840 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5841 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5842 msm_routing_put_audio_mixer),
5843 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5844 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5845 msm_routing_put_audio_mixer),
5846 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5847 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5848 msm_routing_put_audio_mixer),
5849};
5850
5851static const struct snd_kcontrol_new sec_tdm_rx_3_mixer_controls[] = {
5852 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5853 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5854 msm_routing_put_audio_mixer),
5855 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5856 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5857 msm_routing_put_audio_mixer),
5858 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5859 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5860 msm_routing_put_audio_mixer),
5861 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5862 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5863 msm_routing_put_audio_mixer),
5864 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5865 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5866 msm_routing_put_audio_mixer),
5867 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5868 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5869 msm_routing_put_audio_mixer),
5870 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5871 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5872 msm_routing_put_audio_mixer),
5873 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5874 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5875 msm_routing_put_audio_mixer),
5876 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5877 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5878 msm_routing_put_audio_mixer),
5879 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5880 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5881 msm_routing_put_audio_mixer),
5882 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5883 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5884 msm_routing_put_audio_mixer),
5885 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5886 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5887 msm_routing_put_audio_mixer),
5888 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5889 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5890 msm_routing_put_audio_mixer),
5891 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5892 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5893 msm_routing_put_audio_mixer),
5894 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5895 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5896 msm_routing_put_audio_mixer),
5897 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5898 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5899 msm_routing_put_audio_mixer),
5900};
5901
5902static const struct snd_kcontrol_new sec_tdm_tx_0_mixer_controls[] = {
5903 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5904 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5905 msm_routing_put_audio_mixer),
5906 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5907 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5908 msm_routing_put_audio_mixer),
5909 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5910 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5911 msm_routing_put_audio_mixer),
5912 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5913 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5914 msm_routing_put_audio_mixer),
5915 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5916 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5917 msm_routing_put_audio_mixer),
5918 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5919 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5920 msm_routing_put_audio_mixer),
5921 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5922 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5923 msm_routing_put_audio_mixer),
5924 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5925 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5926 msm_routing_put_audio_mixer),
5927 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5928 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5929 msm_routing_put_audio_mixer),
5930 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5931 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5932 msm_routing_put_audio_mixer),
5933 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5934 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5935 msm_routing_put_audio_mixer),
5936 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5937 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5938 msm_routing_put_audio_mixer),
5939 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5940 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5941 msm_routing_put_audio_mixer),
5942 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5943 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5944 msm_routing_put_audio_mixer),
5945 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5946 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5947 msm_routing_put_audio_mixer),
5948 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5949 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5950 msm_routing_put_audio_mixer),
5951};
5952
5953static const struct snd_kcontrol_new tert_tdm_rx_0_mixer_controls[] = {
5954 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5955 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5956 msm_routing_put_audio_mixer),
5957 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5958 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5959 msm_routing_put_audio_mixer),
5960 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5961 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5962 msm_routing_put_audio_mixer),
5963 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5964 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5965 msm_routing_put_audio_mixer),
5966 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5967 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5968 msm_routing_put_audio_mixer),
5969 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5970 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5971 msm_routing_put_audio_mixer),
5972 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5973 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5974 msm_routing_put_audio_mixer),
5975 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5976 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5977 msm_routing_put_audio_mixer),
5978 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5979 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5980 msm_routing_put_audio_mixer),
5981 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5982 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5983 msm_routing_put_audio_mixer),
5984 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5985 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5986 msm_routing_put_audio_mixer),
5987 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5988 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5989 msm_routing_put_audio_mixer),
5990 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5991 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5992 msm_routing_put_audio_mixer),
5993 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5994 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5995 msm_routing_put_audio_mixer),
5996 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5997 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5998 msm_routing_put_audio_mixer),
5999 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6000 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6001 msm_routing_put_audio_mixer),
6002};
6003
6004static const struct snd_kcontrol_new tert_tdm_tx_0_mixer_controls[] = {
6005 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6006 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6007 msm_routing_put_audio_mixer),
6008 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6009 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6010 msm_routing_put_audio_mixer),
6011 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6012 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6013 msm_routing_put_audio_mixer),
6014 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6015 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6016 msm_routing_put_audio_mixer),
6017 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6018 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6019 msm_routing_put_audio_mixer),
6020 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6021 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6022 msm_routing_put_audio_mixer),
6023 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6024 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6025 msm_routing_put_audio_mixer),
6026 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6027 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6028 msm_routing_put_audio_mixer),
6029 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6030 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6031 msm_routing_put_audio_mixer),
6032 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6033 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6034 msm_routing_put_audio_mixer),
6035 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6036 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6037 msm_routing_put_audio_mixer),
6038 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6039 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6040 msm_routing_put_audio_mixer),
6041 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6042 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6043 msm_routing_put_audio_mixer),
6044 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6045 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6046 msm_routing_put_audio_mixer),
6047 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6048 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6049 msm_routing_put_audio_mixer),
6050 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6051 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6052 msm_routing_put_audio_mixer),
6053};
6054
6055static const struct snd_kcontrol_new tert_tdm_rx_1_mixer_controls[] = {
6056 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6057 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6058 msm_routing_put_audio_mixer),
6059 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6060 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6061 msm_routing_put_audio_mixer),
6062 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6063 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6064 msm_routing_put_audio_mixer),
6065 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6066 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6067 msm_routing_put_audio_mixer),
6068 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6069 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6070 msm_routing_put_audio_mixer),
6071 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6072 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6073 msm_routing_put_audio_mixer),
6074 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6075 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6076 msm_routing_put_audio_mixer),
6077 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6078 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6079 msm_routing_put_audio_mixer),
6080 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6081 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6082 msm_routing_put_audio_mixer),
6083 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6084 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6085 msm_routing_put_audio_mixer),
6086 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6087 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6088 msm_routing_put_audio_mixer),
6089 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6090 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6091 msm_routing_put_audio_mixer),
6092 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6093 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6094 msm_routing_put_audio_mixer),
6095 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6096 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6097 msm_routing_put_audio_mixer),
6098 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6099 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6100 msm_routing_put_audio_mixer),
6101 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6102 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6103 msm_routing_put_audio_mixer),
6104};
6105
6106static const struct snd_kcontrol_new tert_tdm_rx_2_mixer_controls[] = {
6107 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6108 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6109 msm_routing_put_audio_mixer),
6110 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6111 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6112 msm_routing_put_audio_mixer),
6113 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6114 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6115 msm_routing_put_audio_mixer),
6116 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6117 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6118 msm_routing_put_audio_mixer),
6119 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6120 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6121 msm_routing_put_audio_mixer),
6122 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6123 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6124 msm_routing_put_audio_mixer),
6125 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6126 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6127 msm_routing_put_audio_mixer),
6128 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6129 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6130 msm_routing_put_audio_mixer),
6131 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6132 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6133 msm_routing_put_audio_mixer),
6134 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6135 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6136 msm_routing_put_audio_mixer),
6137 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6138 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6139 msm_routing_put_audio_mixer),
6140 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6141 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6142 msm_routing_put_audio_mixer),
6143 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6144 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6145 msm_routing_put_audio_mixer),
6146 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6147 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6148 msm_routing_put_audio_mixer),
6149 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6150 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6151 msm_routing_put_audio_mixer),
6152 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6153 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6154 msm_routing_put_audio_mixer),
6155};
6156
6157static const struct snd_kcontrol_new tert_tdm_rx_3_mixer_controls[] = {
6158 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6159 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6160 msm_routing_put_audio_mixer),
6161 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6162 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6163 msm_routing_put_audio_mixer),
6164 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6165 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6166 msm_routing_put_audio_mixer),
6167 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6168 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6169 msm_routing_put_audio_mixer),
6170 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6171 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6172 msm_routing_put_audio_mixer),
6173 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6174 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6175 msm_routing_put_audio_mixer),
6176 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6177 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6178 msm_routing_put_audio_mixer),
6179 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6180 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6181 msm_routing_put_audio_mixer),
6182 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6183 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6184 msm_routing_put_audio_mixer),
6185 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6186 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6187 msm_routing_put_audio_mixer),
6188 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6189 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6190 msm_routing_put_audio_mixer),
6191 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6192 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6193 msm_routing_put_audio_mixer),
6194 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6195 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6196 msm_routing_put_audio_mixer),
6197 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6198 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6199 msm_routing_put_audio_mixer),
6200 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6201 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6202 msm_routing_put_audio_mixer),
6203 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6204 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6205 msm_routing_put_audio_mixer),
6206};
6207
6208static const struct snd_kcontrol_new tert_tdm_rx_4_mixer_controls[] = {
6209 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6210 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6211 msm_routing_put_audio_mixer),
6212 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6213 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6214 msm_routing_put_audio_mixer),
6215 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6216 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6217 msm_routing_put_audio_mixer),
6218 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6219 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6220 msm_routing_put_audio_mixer),
6221 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6222 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6223 msm_routing_put_audio_mixer),
6224 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6225 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6226 msm_routing_put_audio_mixer),
6227 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6228 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6229 msm_routing_put_audio_mixer),
6230 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6231 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6232 msm_routing_put_audio_mixer),
6233 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6234 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6235 msm_routing_put_audio_mixer),
6236 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6237 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6238 msm_routing_put_audio_mixer),
6239 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6240 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6241 msm_routing_put_audio_mixer),
6242 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6243 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6244 msm_routing_put_audio_mixer),
6245 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6246 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6247 msm_routing_put_audio_mixer),
6248 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6249 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6250 msm_routing_put_audio_mixer),
6251 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6252 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6253 msm_routing_put_audio_mixer),
6254 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6255 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6256 msm_routing_put_audio_mixer),
6257};
6258
6259static const struct snd_kcontrol_new quat_tdm_rx_0_mixer_controls[] = {
6260 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6261 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6262 msm_routing_put_audio_mixer),
6263 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6264 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6265 msm_routing_put_audio_mixer),
6266 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6267 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6268 msm_routing_put_audio_mixer),
6269 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6270 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6271 msm_routing_put_audio_mixer),
6272 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6273 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6274 msm_routing_put_audio_mixer),
6275 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6276 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6277 msm_routing_put_audio_mixer),
6278 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6279 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6280 msm_routing_put_audio_mixer),
6281 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6282 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6283 msm_routing_put_audio_mixer),
6284 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6285 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6286 msm_routing_put_audio_mixer),
6287 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6288 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6289 msm_routing_put_audio_mixer),
6290 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6291 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6292 msm_routing_put_audio_mixer),
6293 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6294 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6295 msm_routing_put_audio_mixer),
6296 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6297 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6298 msm_routing_put_audio_mixer),
6299 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6300 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6301 msm_routing_put_audio_mixer),
6302 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6303 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6304 msm_routing_put_audio_mixer),
6305 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6306 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6307 msm_routing_put_audio_mixer),
6308 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6309 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6310 msm_routing_put_audio_mixer),
6311};
6312
6313static const struct snd_kcontrol_new quat_tdm_tx_0_mixer_controls[] = {
6314 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6315 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6316 msm_routing_put_audio_mixer),
6317 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6318 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6319 msm_routing_put_audio_mixer),
6320 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6321 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6322 msm_routing_put_audio_mixer),
6323 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6324 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6325 msm_routing_put_audio_mixer),
6326 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6327 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6328 msm_routing_put_audio_mixer),
6329 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6330 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6331 msm_routing_put_audio_mixer),
6332 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6333 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6334 msm_routing_put_audio_mixer),
6335 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6336 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6337 msm_routing_put_audio_mixer),
6338 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6339 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6340 msm_routing_put_audio_mixer),
6341 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6342 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6343 msm_routing_put_audio_mixer),
6344 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6345 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6346 msm_routing_put_audio_mixer),
6347 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6348 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6349 msm_routing_put_audio_mixer),
6350 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6351 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6352 msm_routing_put_audio_mixer),
6353 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6354 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6355 msm_routing_put_audio_mixer),
6356 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6357 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6358 msm_routing_put_audio_mixer),
6359 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6360 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6361 msm_routing_put_audio_mixer),
6362};
6363
6364static const struct snd_kcontrol_new quat_tdm_rx_1_mixer_controls[] = {
6365 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6366 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6367 msm_routing_put_audio_mixer),
6368 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6369 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6370 msm_routing_put_audio_mixer),
6371 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6372 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6373 msm_routing_put_audio_mixer),
6374 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6375 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6376 msm_routing_put_audio_mixer),
6377 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6378 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6379 msm_routing_put_audio_mixer),
6380 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6381 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6382 msm_routing_put_audio_mixer),
6383 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6384 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6385 msm_routing_put_audio_mixer),
6386 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6387 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6388 msm_routing_put_audio_mixer),
6389 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6390 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6391 msm_routing_put_audio_mixer),
6392 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6393 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6394 msm_routing_put_audio_mixer),
6395 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6396 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6397 msm_routing_put_audio_mixer),
6398 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6399 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6400 msm_routing_put_audio_mixer),
6401 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6402 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6403 msm_routing_put_audio_mixer),
6404 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6405 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6406 msm_routing_put_audio_mixer),
6407 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6408 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6409 msm_routing_put_audio_mixer),
6410 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6411 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6412 msm_routing_put_audio_mixer),
6413 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6414 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6415 msm_routing_put_audio_mixer),
6416};
6417
6418static const struct snd_kcontrol_new quat_tdm_rx_2_mixer_controls[] = {
6419 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6420 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6421 msm_routing_put_audio_mixer),
6422 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6423 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6424 msm_routing_put_audio_mixer),
6425 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6426 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6427 msm_routing_put_audio_mixer),
6428 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6429 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6430 msm_routing_put_audio_mixer),
6431 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6432 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6433 msm_routing_put_audio_mixer),
6434 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6435 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6436 msm_routing_put_audio_mixer),
6437 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6438 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6439 msm_routing_put_audio_mixer),
6440 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6441 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6442 msm_routing_put_audio_mixer),
6443 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6444 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6445 msm_routing_put_audio_mixer),
6446 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6447 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6448 msm_routing_put_audio_mixer),
6449 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6450 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6451 msm_routing_put_audio_mixer),
6452 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6453 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6454 msm_routing_put_audio_mixer),
6455 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6456 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6457 msm_routing_put_audio_mixer),
6458 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6459 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6460 msm_routing_put_audio_mixer),
6461 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6462 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6463 msm_routing_put_audio_mixer),
6464 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6465 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6466 msm_routing_put_audio_mixer),
6467 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6468 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6469 msm_routing_put_audio_mixer),
6470};
6471
6472static const struct snd_kcontrol_new quat_tdm_rx_3_mixer_controls[] = {
6473 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6474 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6475 msm_routing_put_audio_mixer),
6476 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6477 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6478 msm_routing_put_audio_mixer),
6479 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6480 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6481 msm_routing_put_audio_mixer),
6482 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6483 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6484 msm_routing_put_audio_mixer),
6485 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6486 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6487 msm_routing_put_audio_mixer),
6488 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6489 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6490 msm_routing_put_audio_mixer),
6491 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6492 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6493 msm_routing_put_audio_mixer),
6494 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6495 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6496 msm_routing_put_audio_mixer),
6497 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6498 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6499 msm_routing_put_audio_mixer),
6500 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6501 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6502 msm_routing_put_audio_mixer),
6503 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6504 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6505 msm_routing_put_audio_mixer),
6506 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6507 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6508 msm_routing_put_audio_mixer),
6509 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6510 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6511 msm_routing_put_audio_mixer),
6512 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6513 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6514 msm_routing_put_audio_mixer),
6515 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6516 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6517 msm_routing_put_audio_mixer),
6518 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6519 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6520 msm_routing_put_audio_mixer),
6521 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6522 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6523 msm_routing_put_audio_mixer),
6524};
6525
Rohit Kumara5077932017-09-10 22:05:05 +05306526static const struct snd_kcontrol_new quin_tdm_rx_0_mixer_controls[] = {
6527 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6528 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6529 msm_routing_put_audio_mixer),
6530 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6531 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6532 msm_routing_put_audio_mixer),
6533 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6534 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6535 msm_routing_put_audio_mixer),
6536 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6537 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6538 msm_routing_put_audio_mixer),
6539 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6540 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6541 msm_routing_put_audio_mixer),
6542 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6543 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6544 msm_routing_put_audio_mixer),
6545 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6546 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6547 msm_routing_put_audio_mixer),
6548 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6549 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6550 msm_routing_put_audio_mixer),
6551 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6552 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6553 msm_routing_put_audio_mixer),
6554 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6555 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6556 msm_routing_put_audio_mixer),
6557 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6558 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6559 msm_routing_put_audio_mixer),
6560 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6561 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6562 msm_routing_put_audio_mixer),
6563 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6564 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6565 msm_routing_put_audio_mixer),
6566 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6567 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6568 msm_routing_put_audio_mixer),
6569 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6570 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6571 msm_routing_put_audio_mixer),
6572 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6573 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6574 msm_routing_put_audio_mixer),
6575 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6576 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6577 msm_routing_put_audio_mixer),
6578};
6579
6580static const struct snd_kcontrol_new quin_tdm_tx_0_mixer_controls[] = {
6581 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6582 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6583 msm_routing_put_audio_mixer),
6584 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6585 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6586 msm_routing_put_audio_mixer),
6587 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6588 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6589 msm_routing_put_audio_mixer),
6590 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6591 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6592 msm_routing_put_audio_mixer),
6593 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6594 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6595 msm_routing_put_audio_mixer),
6596 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6597 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6598 msm_routing_put_audio_mixer),
6599 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6600 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6601 msm_routing_put_audio_mixer),
6602 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6603 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6604 msm_routing_put_audio_mixer),
6605 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6606 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6607 msm_routing_put_audio_mixer),
6608 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6609 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6610 msm_routing_put_audio_mixer),
6611 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6612 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6613 msm_routing_put_audio_mixer),
6614 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6615 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6616 msm_routing_put_audio_mixer),
6617 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6618 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6619 msm_routing_put_audio_mixer),
6620 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6621 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6622 msm_routing_put_audio_mixer),
6623 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6624 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6625 msm_routing_put_audio_mixer),
6626 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6627 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6628 msm_routing_put_audio_mixer),
6629};
6630
6631static const struct snd_kcontrol_new quin_tdm_rx_1_mixer_controls[] = {
6632 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6633 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6634 msm_routing_put_audio_mixer),
6635 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6636 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6637 msm_routing_put_audio_mixer),
6638 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6639 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6640 msm_routing_put_audio_mixer),
6641 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6642 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6643 msm_routing_put_audio_mixer),
6644 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6645 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6646 msm_routing_put_audio_mixer),
6647 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6648 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6649 msm_routing_put_audio_mixer),
6650 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6651 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6652 msm_routing_put_audio_mixer),
6653 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6654 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6655 msm_routing_put_audio_mixer),
6656 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6657 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6658 msm_routing_put_audio_mixer),
6659 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6660 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6661 msm_routing_put_audio_mixer),
6662 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6663 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6664 msm_routing_put_audio_mixer),
6665 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6666 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6667 msm_routing_put_audio_mixer),
6668 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6669 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6670 msm_routing_put_audio_mixer),
6671 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6672 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6673 msm_routing_put_audio_mixer),
6674 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6675 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6676 msm_routing_put_audio_mixer),
6677 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6678 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6679 msm_routing_put_audio_mixer),
6680 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6681 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6682 msm_routing_put_audio_mixer),
6683};
6684
6685static const struct snd_kcontrol_new quin_tdm_rx_2_mixer_controls[] = {
6686 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6687 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6688 msm_routing_put_audio_mixer),
6689 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6690 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6691 msm_routing_put_audio_mixer),
6692 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6693 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6694 msm_routing_put_audio_mixer),
6695 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6696 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6697 msm_routing_put_audio_mixer),
6698 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6699 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6700 msm_routing_put_audio_mixer),
6701 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6702 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6703 msm_routing_put_audio_mixer),
6704 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6705 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6706 msm_routing_put_audio_mixer),
6707 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6708 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6709 msm_routing_put_audio_mixer),
6710 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6711 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6712 msm_routing_put_audio_mixer),
6713 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6714 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6715 msm_routing_put_audio_mixer),
6716 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6717 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6718 msm_routing_put_audio_mixer),
6719 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6720 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6721 msm_routing_put_audio_mixer),
6722 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6723 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6724 msm_routing_put_audio_mixer),
6725 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6726 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6727 msm_routing_put_audio_mixer),
6728 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6729 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6730 msm_routing_put_audio_mixer),
6731 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6732 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6733 msm_routing_put_audio_mixer),
6734 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6735 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6736 msm_routing_put_audio_mixer),
6737};
6738
6739static const struct snd_kcontrol_new quin_tdm_rx_3_mixer_controls[] = {
6740 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6741 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6742 msm_routing_put_audio_mixer),
6743 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6744 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6745 msm_routing_put_audio_mixer),
6746 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6747 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6748 msm_routing_put_audio_mixer),
6749 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6750 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6751 msm_routing_put_audio_mixer),
6752 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6753 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6754 msm_routing_put_audio_mixer),
6755 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6756 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6757 msm_routing_put_audio_mixer),
6758 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6759 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6760 msm_routing_put_audio_mixer),
6761 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6762 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6763 msm_routing_put_audio_mixer),
6764 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6765 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6766 msm_routing_put_audio_mixer),
6767 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6768 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6769 msm_routing_put_audio_mixer),
6770 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6771 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6772 msm_routing_put_audio_mixer),
6773 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6774 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6775 msm_routing_put_audio_mixer),
6776 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6777 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6778 msm_routing_put_audio_mixer),
6779 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6780 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6781 msm_routing_put_audio_mixer),
6782 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6783 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6784 msm_routing_put_audio_mixer),
6785 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6786 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6787 msm_routing_put_audio_mixer),
6788 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6789 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6790 msm_routing_put_audio_mixer),
6791};
6792
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306793static const struct snd_kcontrol_new mmul1_mixer_controls[] = {
6794 SOC_SINGLE_EXT("PRI_TX", MSM_BACKEND_DAI_PRI_I2S_TX,
6795 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6796 msm_routing_put_audio_mixer),
6797 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
6798 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6799 msm_routing_put_audio_mixer),
6800 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
6801 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6802 msm_routing_put_audio_mixer),
6803 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
6804 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6805 msm_routing_put_audio_mixer),
6806 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
6807 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6808 msm_routing_put_audio_mixer),
6809 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
6810 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6811 msm_routing_put_audio_mixer),
6812 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
6813 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6814 msm_routing_put_audio_mixer),
6815 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
6816 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6817 msm_routing_put_audio_mixer),
6818 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
6819 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6820 msm_routing_put_audio_mixer),
6821 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
6822 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6823 msm_routing_put_audio_mixer),
6824 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
6825 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6826 msm_routing_put_audio_mixer),
6827 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
6828 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6829 msm_routing_put_audio_mixer),
6830 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
6831 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6832 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05306833 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
6834 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6835 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306836 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
6837 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6838 msm_routing_put_audio_mixer),
6839 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
6840 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6841 msm_routing_put_audio_mixer),
6842 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
6843 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6844 msm_routing_put_audio_mixer),
6845 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
6846 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6847 msm_routing_put_audio_mixer),
6848 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
6849 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6850 msm_routing_put_audio_mixer),
6851 SOC_SINGLE_EXT("SLIM_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
6852 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6853 msm_routing_put_audio_mixer),
6854 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
6855 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6856 msm_routing_put_audio_mixer),
6857 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_TX,
6858 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6859 msm_routing_put_audio_mixer),
6860 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
6861 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6862 msm_routing_put_audio_mixer),
6863 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
6864 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6865 msm_routing_put_audio_mixer),
6866 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
6867 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6868 msm_routing_put_audio_mixer),
6869 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
6870 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6871 msm_routing_put_audio_mixer),
6872 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6873 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6874 msm_routing_put_audio_mixer),
6875 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
6876 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6877 msm_routing_put_audio_mixer),
6878 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
6879 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6880 msm_routing_put_audio_mixer),
6881 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
6882 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6883 msm_routing_put_audio_mixer),
6884 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6885 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6886 msm_routing_put_audio_mixer),
6887 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
6888 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6889 msm_routing_put_audio_mixer),
6890 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
6891 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6892 msm_routing_put_audio_mixer),
6893 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
6894 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6895 msm_routing_put_audio_mixer),
6896 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6897 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6898 msm_routing_put_audio_mixer),
6899 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
6900 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6901 msm_routing_put_audio_mixer),
6902 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
6903 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6904 msm_routing_put_audio_mixer),
6905 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
6906 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6907 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05306908 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6909 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6910 msm_routing_put_audio_mixer),
6911 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
6912 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6913 msm_routing_put_audio_mixer),
6914 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
6915 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6916 msm_routing_put_audio_mixer),
6917 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
6918 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6919 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306920 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
6921 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6922 msm_routing_put_audio_mixer),
6923 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
6924 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6925 msm_routing_put_audio_mixer),
6926 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
6927 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6928 msm_routing_put_audio_mixer),
6929};
6930
6931static const struct snd_kcontrol_new mmul2_mixer_controls[] = {
6932 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
6933 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6934 msm_routing_put_audio_mixer),
6935 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
6936 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6937 msm_routing_put_audio_mixer),
6938 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
6939 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6940 msm_routing_put_audio_mixer),
6941 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
6942 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6943 msm_routing_put_audio_mixer),
6944 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
6945 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6946 msm_routing_put_audio_mixer),
6947 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
6948 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6949 msm_routing_put_audio_mixer),
6950 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
6951 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6952 msm_routing_put_audio_mixer),
6953 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
6954 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6955 msm_routing_put_audio_mixer),
6956 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
6957 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6958 msm_routing_put_audio_mixer),
6959 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
6960 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6961 msm_routing_put_audio_mixer),
6962 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
6963 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6964 msm_routing_put_audio_mixer),
6965 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_TX,
6966 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6967 msm_routing_put_audio_mixer),
6968 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
6969 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6970 msm_routing_put_audio_mixer),
6971 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
6972 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6973 msm_routing_put_audio_mixer),
6974 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
6975 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6976 msm_routing_put_audio_mixer),
6977 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
6978 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6979 msm_routing_put_audio_mixer),
6980 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6981 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6982 msm_routing_put_audio_mixer),
6983 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
6984 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6985 msm_routing_put_audio_mixer),
6986 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
6987 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6988 msm_routing_put_audio_mixer),
6989 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
6990 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6991 msm_routing_put_audio_mixer),
6992 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6993 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6994 msm_routing_put_audio_mixer),
6995 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
6996 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6997 msm_routing_put_audio_mixer),
6998 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
6999 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7000 msm_routing_put_audio_mixer),
7001 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7002 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7003 msm_routing_put_audio_mixer),
7004 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7005 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7006 msm_routing_put_audio_mixer),
7007 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7008 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7009 msm_routing_put_audio_mixer),
7010 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7011 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7012 msm_routing_put_audio_mixer),
7013 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7014 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7015 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307016 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7017 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7018 msm_routing_put_audio_mixer),
7019 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7020 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7021 msm_routing_put_audio_mixer),
7022 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7023 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7024 msm_routing_put_audio_mixer),
7025 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7026 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7027 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307028 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
7029 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7030 msm_routing_put_audio_mixer),
7031 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7032 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7033 msm_routing_put_audio_mixer),
7034};
7035
7036static const struct snd_kcontrol_new mmul3_mixer_controls[] = {
7037 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7038 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7039 msm_routing_put_audio_mixer),
7040 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7041 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7042 msm_routing_put_audio_mixer),
7043 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
7044 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7045 msm_routing_put_audio_mixer),
7046 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7047 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7048 msm_routing_put_audio_mixer),
7049 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7050 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7051 msm_routing_put_audio_mixer),
7052 SOC_SINGLE_EXT("AUX_PCM_TX", MSM_BACKEND_DAI_AUXPCM_TX,
7053 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7054 msm_routing_put_audio_mixer),
7055 SOC_SINGLE_EXT("SEC_AUX_PCM_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
7056 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7057 msm_routing_put_audio_mixer),
7058 SOC_SINGLE_EXT("TERT_AUX_PCM_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
7059 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7060 msm_routing_put_audio_mixer),
7061 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
7062 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7063 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307064 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
7065 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7066 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307067 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7068 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7069 msm_routing_put_audio_mixer),
7070 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7071 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7072 msm_routing_put_audio_mixer),
7073 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7074 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7075 msm_routing_put_audio_mixer),
7076 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7077 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7078 msm_routing_put_audio_mixer),
7079 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7080 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7081 msm_routing_put_audio_mixer),
7082 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7083 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7084 msm_routing_put_audio_mixer),
7085 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7086 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7087 msm_routing_put_audio_mixer),
7088 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7089 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7090 msm_routing_put_audio_mixer),
7091 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7092 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7093 msm_routing_put_audio_mixer),
7094 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7095 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7096 msm_routing_put_audio_mixer),
7097 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7098 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7099 msm_routing_put_audio_mixer),
7100 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7101 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7102 msm_routing_put_audio_mixer),
7103 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7104 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7105 msm_routing_put_audio_mixer),
7106 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7107 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7108 msm_routing_put_audio_mixer),
7109 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7110 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7111 msm_routing_put_audio_mixer),
7112 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7113 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7114 msm_routing_put_audio_mixer),
7115 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7116 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7117 msm_routing_put_audio_mixer),
7118 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7119 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7120 msm_routing_put_audio_mixer),
7121 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7122 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7123 msm_routing_put_audio_mixer),
7124 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7125 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7126 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307127 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7128 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7129 msm_routing_put_audio_mixer),
7130 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7131 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7132 msm_routing_put_audio_mixer),
7133 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7134 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7135 msm_routing_put_audio_mixer),
7136 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7137 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7138 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307139};
7140
7141static const struct snd_kcontrol_new mmul4_mixer_controls[] = {
7142 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7143 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7144 msm_routing_put_audio_mixer),
7145 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7146 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7147 msm_routing_put_audio_mixer),
7148 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7149 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7150 msm_routing_put_audio_mixer),
7151 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7152 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7153 msm_routing_put_audio_mixer),
7154 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7155 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7156 msm_routing_put_audio_mixer),
7157 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7158 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7159 msm_routing_put_audio_mixer),
7160 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7161 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7162 msm_routing_put_audio_mixer),
7163 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7164 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7165 msm_routing_put_audio_mixer),
7166 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7167 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7168 msm_routing_put_audio_mixer),
7169 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7170 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7171 msm_routing_put_audio_mixer),
7172 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7173 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7174 msm_routing_put_audio_mixer),
7175 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7176 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7177 msm_routing_put_audio_mixer),
7178 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7179 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7180 msm_routing_put_audio_mixer),
7181 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7182 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7183 msm_routing_put_audio_mixer),
7184 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7185 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7186 msm_routing_put_audio_mixer),
7187 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7188 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7189 msm_routing_put_audio_mixer),
7190 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7191 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7192 msm_routing_put_audio_mixer),
7193 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7194 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7195 msm_routing_put_audio_mixer),
7196 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7197 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7198 msm_routing_put_audio_mixer),
7199 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7200 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7201 msm_routing_put_audio_mixer),
7202 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7203 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7204 msm_routing_put_audio_mixer),
7205 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7206 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7207 msm_routing_put_audio_mixer),
7208 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7209 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7210 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307211 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7212 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7213 msm_routing_put_audio_mixer),
7214 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7215 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7216 msm_routing_put_audio_mixer),
7217 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7218 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7219 msm_routing_put_audio_mixer),
7220 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7221 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7222 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307223 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7224 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7225 msm_routing_put_audio_mixer),
7226 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7227 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7228 msm_routing_put_audio_mixer),
7229 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7230 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7231 msm_routing_put_audio_mixer),
7232 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7233 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7234 msm_routing_put_audio_mixer),
7235 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7236 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7237 msm_routing_put_audio_mixer),
7238 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7239 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7240 msm_routing_put_audio_mixer),
7241};
7242
7243static const struct snd_kcontrol_new mmul5_mixer_controls[] = {
7244 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7245 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7246 msm_routing_put_audio_mixer),
7247 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7248 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7249 msm_routing_put_audio_mixer),
7250 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
7251 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7252 msm_routing_put_audio_mixer),
7253 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7254 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7255 msm_routing_put_audio_mixer),
7256 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7257 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7258 msm_routing_put_audio_mixer),
7259 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
7260 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7261 msm_routing_put_audio_mixer),
7262 SOC_SINGLE_EXT("SEC_AUX_PCM_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
7263 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7264 msm_routing_put_audio_mixer),
7265 SOC_SINGLE_EXT("TERT_AUX_PCM_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
7266 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7267 msm_routing_put_audio_mixer),
7268 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
7269 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7270 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307271 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
7272 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7273 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307274 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7275 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7276 msm_routing_put_audio_mixer),
7277 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7278 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7279 msm_routing_put_audio_mixer),
7280 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7281 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7282 msm_routing_put_audio_mixer),
7283 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7284 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7285 msm_routing_put_audio_mixer),
7286 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7287 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7288 msm_routing_put_audio_mixer),
7289 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7290 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7291 msm_routing_put_audio_mixer),
7292 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7293 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7294 msm_routing_put_audio_mixer),
7295 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7296 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7297 msm_routing_put_audio_mixer),
7298 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7299 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7300 msm_routing_put_audio_mixer),
7301 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7302 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7303 msm_routing_put_audio_mixer),
7304 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7305 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7306 msm_routing_put_audio_mixer),
7307 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7308 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7309 msm_routing_put_audio_mixer),
7310 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7311 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7312 msm_routing_put_audio_mixer),
7313 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7314 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7315 msm_routing_put_audio_mixer),
7316 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7317 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7318 msm_routing_put_audio_mixer),
7319 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7320 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7321 msm_routing_put_audio_mixer),
7322 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7323 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7324 msm_routing_put_audio_mixer),
7325 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7326 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7327 msm_routing_put_audio_mixer),
7328 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7329 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7330 msm_routing_put_audio_mixer),
7331 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7332 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7333 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307334 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7335 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7336 msm_routing_put_audio_mixer),
7337 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7338 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7339 msm_routing_put_audio_mixer),
7340 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7341 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7342 msm_routing_put_audio_mixer),
7343 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7344 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7345 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307346 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7347 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7348 msm_routing_put_audio_mixer),
7349 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7350 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7351 msm_routing_put_audio_mixer),
7352 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
7353 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7354 msm_routing_put_audio_mixer),
7355 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
7356 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7357 msm_routing_put_audio_mixer),
7358 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7359 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7360 msm_routing_put_audio_mixer),
7361};
7362
7363static const struct snd_kcontrol_new mmul6_mixer_controls[] = {
7364 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7365 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7366 msm_routing_put_audio_mixer),
7367 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7368 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7369 msm_routing_put_audio_mixer),
7370 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7371 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7372 msm_routing_put_audio_mixer),
7373 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7374 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7375 msm_routing_put_audio_mixer),
7376 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7377 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7378 msm_routing_put_audio_mixer),
7379 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7380 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7381 msm_routing_put_audio_mixer),
7382 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7383 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7384 msm_routing_put_audio_mixer),
7385 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7386 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7387 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307388 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_TX,
7389 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7390 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307391 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
7392 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7393 msm_routing_put_audio_mixer),
7394 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
7395 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7396 msm_routing_put_audio_mixer),
7397 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
7398 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7399 msm_routing_put_audio_mixer),
7400 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
7401 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7402 msm_routing_put_audio_mixer),
7403 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7404 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7405 msm_routing_put_audio_mixer),
7406 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7407 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7408 msm_routing_put_audio_mixer),
7409 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7410 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7411 msm_routing_put_audio_mixer),
7412 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7413 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7414 msm_routing_put_audio_mixer),
7415 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7416 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7417 msm_routing_put_audio_mixer),
7418 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7419 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7420 msm_routing_put_audio_mixer),
7421 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7422 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7423 msm_routing_put_audio_mixer),
7424 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7425 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7426 msm_routing_put_audio_mixer),
7427 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7428 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7429 msm_routing_put_audio_mixer),
7430 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7431 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7432 msm_routing_put_audio_mixer),
7433 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7434 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7435 msm_routing_put_audio_mixer),
7436 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7437 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7438 msm_routing_put_audio_mixer),
7439 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7440 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7441 msm_routing_put_audio_mixer),
7442 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7443 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7444 msm_routing_put_audio_mixer),
7445 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7446 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7447 msm_routing_put_audio_mixer),
7448 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7449 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7450 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307451 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7452 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7453 msm_routing_put_audio_mixer),
7454 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7455 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7456 msm_routing_put_audio_mixer),
7457 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7458 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7459 msm_routing_put_audio_mixer),
7460 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7461 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7462 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307463 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7464 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7465 msm_routing_put_audio_mixer),
7466};
7467
7468static const struct snd_kcontrol_new mmul8_mixer_controls[] = {
7469 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7470 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7471 msm_routing_put_audio_mixer),
7472 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7473 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7474 msm_routing_put_audio_mixer),
7475 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7476 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7477 msm_routing_put_audio_mixer),
7478 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7479 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7480 msm_routing_put_audio_mixer),
7481 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7482 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7483 msm_routing_put_audio_mixer),
7484 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7485 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7486 msm_routing_put_audio_mixer),
7487 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7488 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7489 msm_routing_put_audio_mixer),
7490 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7491 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7492 msm_routing_put_audio_mixer),
7493 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7494 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7495 msm_routing_put_audio_mixer),
7496 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7497 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7498 msm_routing_put_audio_mixer),
7499 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7500 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7501 msm_routing_put_audio_mixer),
7502 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7503 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7504 msm_routing_put_audio_mixer),
7505 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
7506 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7507 msm_routing_put_audio_mixer),
7508 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7509 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7510 msm_routing_put_audio_mixer),
7511 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7512 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7513 msm_routing_put_audio_mixer),
7514 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7515 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7516 msm_routing_put_audio_mixer),
7517 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7518 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7519 msm_routing_put_audio_mixer),
7520 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7521 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7522 msm_routing_put_audio_mixer),
7523 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7524 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7525 msm_routing_put_audio_mixer),
7526 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7527 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7528 msm_routing_put_audio_mixer),
7529 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7530 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7531 msm_routing_put_audio_mixer),
7532 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7533 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7534 msm_routing_put_audio_mixer),
7535 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7536 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7537 msm_routing_put_audio_mixer),
7538 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7539 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7540 msm_routing_put_audio_mixer),
7541 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7542 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7543 msm_routing_put_audio_mixer),
7544 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7545 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7546 msm_routing_put_audio_mixer),
7547 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7548 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7549 msm_routing_put_audio_mixer),
7550 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7551 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7552 msm_routing_put_audio_mixer),
7553 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7554 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7555 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307556 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7557 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7558 msm_routing_put_audio_mixer),
7559 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7560 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7561 msm_routing_put_audio_mixer),
7562 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7563 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7564 msm_routing_put_audio_mixer),
7565 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7566 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7567 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307568 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
7569 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7570 msm_routing_put_audio_mixer),
7571 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7572 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7573 msm_routing_put_audio_mixer),
7574};
7575
Asish Bhattacharya34504582017-08-08 12:55:01 +05307576static const struct snd_kcontrol_new mmul16_mixer_controls[] = {
7577 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7578 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7579 msm_routing_put_audio_mixer),
7580 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7581 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7582 msm_routing_put_audio_mixer),
7583 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7584 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7585 msm_routing_put_audio_mixer),
7586 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7587 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7588 msm_routing_put_audio_mixer),
7589 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7590 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7591 msm_routing_put_audio_mixer),
7592 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7593 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7594 msm_routing_put_audio_mixer),
7595 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7596 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7597 msm_routing_put_audio_mixer),
7598 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7599 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7600 msm_routing_put_audio_mixer),
7601 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7602 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7603 msm_routing_put_audio_mixer),
7604 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7605 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7606 msm_routing_put_audio_mixer),
7607 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7608 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7609 msm_routing_put_audio_mixer),
7610 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7611 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7612 msm_routing_put_audio_mixer),
7613 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
7614 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7615 msm_routing_put_audio_mixer),
7616 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7617 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7618 msm_routing_put_audio_mixer),
7619 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7620 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7621 msm_routing_put_audio_mixer),
7622 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7623 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7624 msm_routing_put_audio_mixer),
7625 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7626 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7627 msm_routing_put_audio_mixer),
7628 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7629 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7630 msm_routing_put_audio_mixer),
7631 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7632 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7633 msm_routing_put_audio_mixer),
7634 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7635 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7636 msm_routing_put_audio_mixer),
7637 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7638 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7639 msm_routing_put_audio_mixer),
7640 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7641 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7642 msm_routing_put_audio_mixer),
7643 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7644 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7645 msm_routing_put_audio_mixer),
7646 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7647 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7648 msm_routing_put_audio_mixer),
7649 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7650 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7651 msm_routing_put_audio_mixer),
7652 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7653 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7654 msm_routing_put_audio_mixer),
7655 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7656 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7657 msm_routing_put_audio_mixer),
7658 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7659 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7660 msm_routing_put_audio_mixer),
7661 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7662 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7663 msm_routing_put_audio_mixer),
7664 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
7665 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7666 msm_routing_put_audio_mixer),
7667 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7668 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7669 msm_routing_put_audio_mixer),
7670 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
7671 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7672 msm_routing_put_audio_mixer),
7673 SOC_SINGLE_EXT("AUX_PCM_TX", MSM_BACKEND_DAI_AUXPCM_TX,
7674 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7675 msm_routing_put_audio_mixer),
7676 SOC_SINGLE_EXT("SEC_AUX_PCM_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
7677 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7678 msm_routing_put_audio_mixer),
7679 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
7680 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7681 msm_routing_put_audio_mixer),
7682};
7683
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307684static const struct snd_kcontrol_new mmul9_mixer_controls[] = {
7685 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7686 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7687 msm_routing_put_audio_mixer),
7688 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7689 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7690 msm_routing_put_audio_mixer),
7691 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7692 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7693 msm_routing_put_audio_mixer),
7694 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7695 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7696 msm_routing_put_audio_mixer),
7697 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7698 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7699 msm_routing_put_audio_mixer),
7700 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7701 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7702 msm_routing_put_audio_mixer),
7703 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7704 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7705 msm_routing_put_audio_mixer),
7706 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
7707 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7708 msm_routing_put_audio_mixer),
7709 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7710 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7711 msm_routing_put_audio_mixer),
7712 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7713 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7714 msm_routing_put_audio_mixer),
7715 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7716 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7717 msm_routing_put_audio_mixer),
7718 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7719 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7720 msm_routing_put_audio_mixer),
7721 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7722 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7723 msm_routing_put_audio_mixer),
7724 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7725 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7726 msm_routing_put_audio_mixer),
7727 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7728 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7729 msm_routing_put_audio_mixer),
7730 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7731 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7732 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307733 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7734 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7735 msm_routing_put_audio_mixer),
7736 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7737 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7738 msm_routing_put_audio_mixer),
7739 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7740 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7741 msm_routing_put_audio_mixer),
7742 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7743 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7744 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307745};
7746
Laxminath Kasam38070be2017-08-17 18:21:59 +05307747static const struct snd_kcontrol_new mmul10_mixer_controls[] = {
7748 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7749 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7750 msm_routing_put_audio_mixer),
7751 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7752 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7753 msm_routing_put_audio_mixer),
7754 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7755 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7756 msm_routing_put_audio_mixer),
7757 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7758 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7759 msm_routing_put_audio_mixer),
7760 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7761 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7762 msm_routing_put_audio_mixer),
7763 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7764 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7765 msm_routing_put_audio_mixer),
7766 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7767 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7768 msm_routing_put_audio_mixer),
7769 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
7770 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7771 msm_routing_put_audio_mixer),
Vikram Panduranga72863152017-09-06 15:47:35 -07007772 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
7773 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7774 msm_routing_put_audio_mixer),
Laxminath Kasam38070be2017-08-17 18:21:59 +05307775 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7776 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7777 msm_routing_put_audio_mixer),
7778 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7779 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7780 msm_routing_put_audio_mixer),
7781 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7782 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7783 msm_routing_put_audio_mixer),
7784 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7785 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7786 msm_routing_put_audio_mixer),
7787 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7788 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7789 msm_routing_put_audio_mixer),
7790 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7791 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7792 msm_routing_put_audio_mixer),
7793 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7794 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7795 msm_routing_put_audio_mixer),
7796 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7797 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7798 msm_routing_put_audio_mixer),
7799 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7800 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7801 msm_routing_put_audio_mixer),
Vikram Panduranga016c49f2017-09-11 15:15:56 -07007802 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
7803 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7804 msm_routing_put_audio_mixer),
7805 SOC_SINGLE_EXT("AUX_PCM_TX", MSM_BACKEND_DAI_AUXPCM_TX,
7806 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7807 msm_routing_put_audio_mixer),
7808 SOC_SINGLE_EXT("SEC_AUX_PCM_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
7809 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7810 msm_routing_put_audio_mixer),
7811 SOC_SINGLE_EXT("TERT_AUX_PCM_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
7812 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7813 msm_routing_put_audio_mixer),
7814 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
7815 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7816 msm_routing_put_audio_mixer),
7817 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7818 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7819 msm_routing_put_audio_mixer),
7820 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7821 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7822 msm_routing_put_audio_mixer),
7823 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7824 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7825 msm_routing_put_audio_mixer),
Laxminath Kasam38070be2017-08-17 18:21:59 +05307826};
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307827static const struct snd_kcontrol_new mmul17_mixer_controls[] = {
7828 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7829 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7830 msm_routing_put_audio_mixer),
7831 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7832 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7833 msm_routing_put_audio_mixer),
7834 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7835 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7836 msm_routing_put_audio_mixer),
7837 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7838 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7839 msm_routing_put_audio_mixer),
7840 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7841 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7842 msm_routing_put_audio_mixer),
7843 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7844 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7845 msm_routing_put_audio_mixer),
7846 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7847 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7848 msm_routing_put_audio_mixer),
7849};
7850
7851static const struct snd_kcontrol_new mmul18_mixer_controls[] = {
7852 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7853 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
7854 msm_routing_put_audio_mixer),
7855 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7856 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
7857 msm_routing_put_audio_mixer),
7858 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7859 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
7860 msm_routing_put_audio_mixer),
7861 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7862 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
7863 msm_routing_put_audio_mixer),
7864 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7865 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
7866 msm_routing_put_audio_mixer),
7867 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7868 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
7869 msm_routing_put_audio_mixer),
7870 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7871 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
7872 msm_routing_put_audio_mixer),
7873 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7874 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
7875 msm_routing_put_audio_mixer),
7876};
7877
7878static const struct snd_kcontrol_new mmul19_mixer_controls[] = {
7879 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7880 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
7881 msm_routing_put_audio_mixer),
7882 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7883 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
7884 msm_routing_put_audio_mixer),
7885 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7886 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
7887 msm_routing_put_audio_mixer),
7888 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7889 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
7890 msm_routing_put_audio_mixer),
7891 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7892 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
7893 msm_routing_put_audio_mixer),
7894 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7895 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
7896 msm_routing_put_audio_mixer),
7897 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7898 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
7899 msm_routing_put_audio_mixer),
7900};
7901
7902static const struct snd_kcontrol_new mmul20_mixer_controls[] = {
7903 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7904 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7905 msm_routing_put_audio_mixer),
7906 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7907 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7908 msm_routing_put_audio_mixer),
7909 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7910 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7911 msm_routing_put_audio_mixer),
7912 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7913 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7914 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307915 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_TX,
7916 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7917 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307918 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7919 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7920 msm_routing_put_audio_mixer),
7921 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7922 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7923 msm_routing_put_audio_mixer),
7924 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7925 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7926 msm_routing_put_audio_mixer),
7927 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7928 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7929 msm_routing_put_audio_mixer),
7930 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7931 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7932 msm_routing_put_audio_mixer),
7933 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7934 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7935 msm_routing_put_audio_mixer),
7936 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7937 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7938 msm_routing_put_audio_mixer),
7939 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7940 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7941 msm_routing_put_audio_mixer),
7942 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7943 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7944 msm_routing_put_audio_mixer),
7945 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7946 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7947 msm_routing_put_audio_mixer),
7948 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7949 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7950 msm_routing_put_audio_mixer),
7951 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7952 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7953 msm_routing_put_audio_mixer),
7954 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7955 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7956 msm_routing_put_audio_mixer),
7957 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7958 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7959 msm_routing_put_audio_mixer),
7960 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7961 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7962 msm_routing_put_audio_mixer),
7963 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7964 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7965 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307966 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7967 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7968 msm_routing_put_audio_mixer),
7969 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7970 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7971 msm_routing_put_audio_mixer),
7972 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7973 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7974 msm_routing_put_audio_mixer),
7975 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7976 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7977 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307978};
7979
7980static const struct snd_kcontrol_new pri_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307981 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_PRI_I2S_RX,
7982 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
7983 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307984 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_PRI_I2S_RX,
7985 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
7986 msm_routing_put_voice_mixer),
7987 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_PRI_I2S_RX,
7988 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
7989 msm_routing_put_voice_mixer),
7990 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_PRI_I2S_RX,
7991 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
7992 msm_routing_put_voice_mixer),
7993 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_PRI_I2S_RX,
7994 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
7995 msm_routing_put_voice_mixer),
7996};
7997
7998static const struct snd_kcontrol_new sec_i2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307999 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SEC_I2S_RX,
8000 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8001 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308002 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SEC_I2S_RX,
8003 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8004 msm_routing_put_voice_mixer),
8005 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SEC_I2S_RX,
8006 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8007 msm_routing_put_voice_mixer),
8008};
8009
8010static const struct snd_kcontrol_new sec_mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308011 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
8012 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8013 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308014 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
8015 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8016 msm_routing_put_voice_mixer),
8017 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
8018 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8019 msm_routing_put_voice_mixer),
8020 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
8021 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8022 msm_routing_put_voice_mixer),
8023 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
8024 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8025 msm_routing_put_voice_mixer),
8026};
8027
8028static const struct snd_kcontrol_new slimbus_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308029 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8030 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8031 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308032 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8033 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8034 msm_routing_put_voice_mixer),
8035 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8036 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8037 msm_routing_put_voice_mixer),
8038 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8039 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8040 msm_routing_put_voice_mixer),
8041 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8042 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8043 msm_routing_put_voice_mixer),
8044};
8045
8046static const struct snd_kcontrol_new slimbus_6_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308047 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8048 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8049 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308050 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8051 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8052 msm_routing_put_voice_mixer),
8053 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8054 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8055 msm_routing_put_voice_mixer),
8056 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8057 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8058 msm_routing_put_voice_mixer),
8059 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8060 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8061 msm_routing_put_voice_mixer),
8062};
8063
8064static const struct snd_kcontrol_new usb_audio_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308065 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_USB_RX,
8066 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8067 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308068 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_USB_RX,
8069 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8070 msm_routing_put_voice_mixer),
8071 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_USB_RX,
8072 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8073 msm_routing_put_voice_mixer),
8074 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_USB_RX,
8075 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8076 msm_routing_put_voice_mixer),
8077 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_USB_RX,
8078 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8079 msm_routing_put_voice_mixer),
8080};
8081
Aalique Grahamee4fd7d52017-11-28 13:24:13 -08008082static const struct snd_kcontrol_new display_port_rx_voice_mixer_controls[] = {
8083 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
8084 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8085 msm_routing_put_voice_mixer),
Aalique Grahamee4fd7d52017-11-28 13:24:13 -08008086 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
8087 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8088 msm_routing_put_voice_mixer),
8089 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
8090 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8091 msm_routing_put_voice_mixer),
8092 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
8093 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8094 msm_routing_put_voice_mixer),
8095 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
8096 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8097 msm_routing_put_voice_mixer),
8098};
8099
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308100static const struct snd_kcontrol_new bt_sco_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308101 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8102 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8103 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308104 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8105 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8106 msm_routing_put_voice_mixer),
8107 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8108 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8109 msm_routing_put_voice_mixer),
8110 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8111 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8112 msm_routing_put_voice_mixer),
8113 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8114 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8115 msm_routing_put_voice_mixer),
8116};
8117
8118static const struct snd_kcontrol_new mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308119 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_MI2S_RX,
8120 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8121 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308122 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_MI2S_RX,
8123 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8124 msm_routing_put_voice_mixer),
8125 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_MI2S_RX,
8126 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8127 msm_routing_put_voice_mixer),
8128 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_MI2S_RX,
8129 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8130 msm_routing_put_voice_mixer),
8131 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_MI2S_RX,
8132 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8133 msm_routing_put_voice_mixer),
8134};
8135
8136static const struct snd_kcontrol_new pri_mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308137 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_PRI_MI2S_RX,
8138 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8139 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308140 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_PRI_MI2S_RX,
8141 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8142 msm_routing_put_voice_mixer),
8143 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_PRI_MI2S_RX,
8144 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8145 msm_routing_put_voice_mixer),
8146 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_PRI_MI2S_RX,
8147 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8148 msm_routing_put_voice_mixer),
8149 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_PRI_MI2S_RX,
8150 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8151 msm_routing_put_voice_mixer),
8152};
8153
8154static const struct snd_kcontrol_new int0_mi2s_rx_voice_mixer_controls[] = {
8155 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_INT0_MI2S_RX,
8156 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8157 msm_routing_put_voice_mixer),
8158 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_INT0_MI2S_RX,
8159 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8160 msm_routing_put_voice_mixer),
8161 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_INT0_MI2S_RX,
8162 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8163 msm_routing_put_voice_mixer),
8164 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_INT0_MI2S_RX,
8165 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8166 msm_routing_put_voice_mixer),
8167 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_INT0_MI2S_RX,
8168 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8169 msm_routing_put_voice_mixer),
8170};
8171
8172static const struct snd_kcontrol_new int4_mi2s_rx_voice_mixer_controls[] = {
8173 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_INT4_MI2S_RX,
8174 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8175 msm_routing_put_voice_mixer),
8176 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_INT4_MI2S_RX,
8177 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8178 msm_routing_put_voice_mixer),
8179 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_INT4_MI2S_RX,
8180 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8181 msm_routing_put_voice_mixer),
8182 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_INT4_MI2S_RX,
8183 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8184 msm_routing_put_voice_mixer),
8185 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_INT4_MI2S_RX,
8186 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8187 msm_routing_put_voice_mixer),
8188};
8189
8190static const struct snd_kcontrol_new tert_mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308191 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8192 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8193 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308194 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8195 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8196 msm_routing_put_voice_mixer),
8197 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8198 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8199 msm_routing_put_voice_mixer),
8200 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8201 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8202 msm_routing_put_voice_mixer),
8203 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8204 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8205 msm_routing_put_voice_mixer),
8206};
8207
8208static const struct snd_kcontrol_new quat_mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308209 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8210 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8211 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308212 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8213 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8214 msm_routing_put_voice_mixer),
8215 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8216 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8217 msm_routing_put_voice_mixer),
8218 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8219 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8220 msm_routing_put_voice_mixer),
8221 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8222 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8223 msm_routing_put_voice_mixer),
8224};
8225
8226static const struct snd_kcontrol_new quin_mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308227 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8228 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8229 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308230 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8231 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8232 msm_routing_put_voice_mixer),
8233 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8234 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8235 msm_routing_put_voice_mixer),
8236 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8237 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8238 msm_routing_put_voice_mixer),
8239 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8240 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8241 msm_routing_put_voice_mixer),
8242};
8243
8244static const struct snd_kcontrol_new afe_pcm_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308245 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_AFE_PCM_RX,
8246 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8247 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308248 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_AFE_PCM_RX,
8249 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8250 msm_routing_put_voice_mixer),
8251 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_AFE_PCM_RX,
8252 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8253 msm_routing_put_voice_mixer),
8254 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_AFE_PCM_RX,
8255 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8256 msm_routing_put_voice_mixer),
8257 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_AFE_PCM_RX,
8258 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8259 msm_routing_put_voice_mixer),
8260};
8261
8262static const struct snd_kcontrol_new aux_pcm_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308263 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_AUXPCM_RX,
8264 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8265 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308266 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_AUXPCM_RX,
8267 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8268 msm_routing_put_voice_mixer),
8269 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_AUXPCM_RX,
8270 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8271 msm_routing_put_voice_mixer),
8272 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_AUXPCM_RX,
8273 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8274 msm_routing_put_voice_mixer),
8275 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_AUXPCM_RX,
8276 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8277 msm_routing_put_voice_mixer),
8278};
8279
8280static const struct snd_kcontrol_new sec_aux_pcm_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308281 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8282 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8283 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308284 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8285 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8286 msm_routing_put_voice_mixer),
8287 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8288 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8289 msm_routing_put_voice_mixer),
8290 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8291 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8292 msm_routing_put_voice_mixer),
8293 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8294 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8295 msm_routing_put_voice_mixer),
8296};
8297
8298static const struct snd_kcontrol_new tert_aux_pcm_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308299 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8300 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8301 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308302 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8303 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8304 msm_routing_put_voice_mixer),
8305 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8306 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8307 msm_routing_put_voice_mixer),
8308 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8309 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8310 msm_routing_put_voice_mixer),
8311 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8312 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8313 msm_routing_put_voice_mixer),
8314};
8315
8316static const struct snd_kcontrol_new quat_aux_pcm_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308317 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8318 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8319 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308320 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8321 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8322 msm_routing_put_voice_mixer),
8323 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8324 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8325 msm_routing_put_voice_mixer),
8326 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8327 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8328 msm_routing_put_voice_mixer),
8329 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8330 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8331 msm_routing_put_voice_mixer),
8332};
8333
Rohit Kumara5077932017-09-10 22:05:05 +05308334static const struct snd_kcontrol_new quin_aux_pcm_rx_voice_mixer_controls[] = {
Rohit Kumara5077932017-09-10 22:05:05 +05308335 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
8336 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8337 msm_routing_put_voice_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308338 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
8339 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8340 msm_routing_put_voice_mixer),
8341 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
8342 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8343 msm_routing_put_voice_mixer),
8344 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
8345 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8346 msm_routing_put_voice_mixer),
8347 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
8348 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8349 msm_routing_put_voice_mixer),
8350};
8351
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308352static const struct snd_kcontrol_new hdmi_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308353 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_HDMI_RX,
8354 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8355 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308356 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_HDMI_RX,
8357 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8358 msm_routing_put_voice_mixer),
8359 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_HDMI_RX,
8360 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8361 msm_routing_put_voice_mixer),
8362 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_HDMI_RX,
8363 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8364 msm_routing_put_voice_mixer),
8365 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_HDMI_RX,
8366 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8367 msm_routing_put_voice_mixer),
8368};
8369
8370static const struct snd_kcontrol_new slimbus_7_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308371 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8372 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8373 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308374 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8375 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8376 msm_routing_put_voice_mixer),
8377 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8378 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8379 msm_routing_put_voice_mixer),
8380 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8381 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8382 msm_routing_put_voice_mixer),
8383 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8384 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8385 msm_routing_put_voice_mixer),
8386};
8387
8388static const struct snd_kcontrol_new slimbus_8_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308389 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8390 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8391 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308392 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8393 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8394 msm_routing_put_voice_mixer),
8395 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8396 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8397 msm_routing_put_voice_mixer),
8398 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8399 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8400 msm_routing_put_voice_mixer),
8401 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8402 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8403 msm_routing_put_voice_mixer),
8404};
8405
8406static const struct snd_kcontrol_new quat_tdm_rx_2_voice_mixer_controls[] = {
8407 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
8408 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8409 msm_routing_put_voice_mixer),
8410};
8411
8412static const struct snd_kcontrol_new stub_rx_mixer_controls[] = {
kunleizdf5a00a2017-11-27 15:27:36 +08008413 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_EXTPROC_RX,
8414 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8415 msm_routing_put_voice_mixer),
8416 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_EXTPROC_RX,
8417 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8418 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308419};
8420
8421static const struct snd_kcontrol_new slimbus_1_rx_mixer_controls[] = {
kunleizdf5a00a2017-11-27 15:27:36 +08008422 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_1_RX,
8423 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8424 msm_routing_put_voice_mixer),
8425 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_1_RX,
8426 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8427 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308428};
8429
8430static const struct snd_kcontrol_new slimbus_3_rx_mixer_controls[] = {
kunleizdf5a00a2017-11-27 15:27:36 +08008431 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_3_RX,
8432 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8433 msm_routing_put_voice_mixer),
8434 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_3_RX,
8435 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8436 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308437};
8438
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308439static const struct snd_kcontrol_new tx_voicemmode1_mixer_controls[] = {
8440 SOC_SINGLE_EXT("PRI_TX_MMode1", MSM_BACKEND_DAI_PRI_I2S_TX,
8441 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8442 msm_routing_put_voice_mixer),
8443 SOC_SINGLE_EXT("MI2S_TX_MMode1", MSM_BACKEND_DAI_MI2S_TX,
8444 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8445 msm_routing_put_voice_mixer),
8446 SOC_SINGLE_EXT("SLIM_0_TX_MMode1",
8447 MSM_BACKEND_DAI_SLIMBUS_0_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8448 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8449 SOC_SINGLE_EXT("INT_BT_SCO_TX_MMode1",
8450 MSM_BACKEND_DAI_INT_BT_SCO_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8451 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8452 SOC_SINGLE_EXT("AFE_PCM_TX_MMode1",
8453 MSM_BACKEND_DAI_AFE_PCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0,
8454 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8455 SOC_SINGLE_EXT("AUX_PCM_TX_MMode1",
8456 MSM_BACKEND_DAI_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0,
8457 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8458 SOC_SINGLE_EXT("SEC_AUX_PCM_TX_MMode1",
8459 MSM_BACKEND_DAI_SEC_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8460 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8461 SOC_SINGLE_EXT("TERT_AUX_PCM_TX_MMode1",
8462 MSM_BACKEND_DAI_TERT_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8463 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8464 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX_MMode1",
8465 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8466 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308467 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX_MMode1",
8468 MSM_BACKEND_DAI_QUIN_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8469 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308470 SOC_SINGLE_EXT("PRI_MI2S_TX_MMode1",
8471 MSM_BACKEND_DAI_PRI_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0,
8472 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8473 SOC_SINGLE_EXT("TERT_MI2S_TX_MMode1",
8474 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE1,
8475 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8476 SOC_SINGLE_EXT("INT3_MI2S_TX_MMode1",
8477 MSM_BACKEND_DAI_INT3_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE1,
8478 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8479 SOC_SINGLE_EXT("SLIM_7_TX_MMode1",
8480 MSM_BACKEND_DAI_SLIMBUS_7_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8481 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8482 SOC_SINGLE_EXT("SLIM_8_TX_MMode1",
8483 MSM_BACKEND_DAI_SLIMBUS_8_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8484 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8485 SOC_SINGLE_EXT("USB_AUDIO_TX_MMode1", MSM_BACKEND_DAI_USB_TX,
8486 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8487 msm_routing_put_voice_mixer),
8488 SOC_SINGLE_EXT("QUAT_TDM_TX_0_MMode1",
8489 MSM_BACKEND_DAI_QUAT_TDM_TX_0, MSM_FRONTEND_DAI_VOICEMMODE1,
8490 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8491};
8492
8493static const struct snd_kcontrol_new tx_voicemmode2_mixer_controls[] = {
8494 SOC_SINGLE_EXT("PRI_TX_MMode2", MSM_BACKEND_DAI_PRI_I2S_TX,
8495 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8496 msm_routing_put_voice_mixer),
8497 SOC_SINGLE_EXT("MI2S_TX_MMode2", MSM_BACKEND_DAI_MI2S_TX,
8498 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8499 msm_routing_put_voice_mixer),
8500 SOC_SINGLE_EXT("SLIM_0_TX_MMode2",
8501 MSM_BACKEND_DAI_SLIMBUS_0_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8502 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8503 SOC_SINGLE_EXT("INT_BT_SCO_TX_MMode2",
8504 MSM_BACKEND_DAI_INT_BT_SCO_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8505 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8506 SOC_SINGLE_EXT("AFE_PCM_TX_MMode2",
8507 MSM_BACKEND_DAI_AFE_PCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0,
8508 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8509 SOC_SINGLE_EXT("AUX_PCM_TX_MMode2",
8510 MSM_BACKEND_DAI_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0,
8511 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8512 SOC_SINGLE_EXT("SEC_AUX_PCM_TX_MMode2",
8513 MSM_BACKEND_DAI_SEC_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8514 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8515 SOC_SINGLE_EXT("TERT_AUX_PCM_TX_MMode2",
8516 MSM_BACKEND_DAI_TERT_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8517 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8518 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX_MMode2",
8519 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8520 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308521 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX_MMode2",
8522 MSM_BACKEND_DAI_QUIN_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8523 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308524 SOC_SINGLE_EXT("PRI_MI2S_TX_MMode2",
8525 MSM_BACKEND_DAI_PRI_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0,
8526 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8527 SOC_SINGLE_EXT("TERT_MI2S_TX_MMode2",
8528 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE2,
8529 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8530 SOC_SINGLE_EXT("INT3_MI2S_TX_MMode2",
8531 MSM_BACKEND_DAI_INT3_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE2,
8532 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8533 SOC_SINGLE_EXT("SLIM_7_TX_MMode2",
8534 MSM_BACKEND_DAI_SLIMBUS_7_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8535 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8536 SOC_SINGLE_EXT("SLIM_8_TX_MMode2",
8537 MSM_BACKEND_DAI_SLIMBUS_8_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8538 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8539 SOC_SINGLE_EXT("USB_AUDIO_TX_MMode2",
8540 MSM_BACKEND_DAI_USB_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8541 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8542};
8543
8544static const struct snd_kcontrol_new tx_voip_mixer_controls[] = {
8545 SOC_SINGLE_EXT("PRI_TX_Voip", MSM_BACKEND_DAI_PRI_I2S_TX,
8546 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8547 msm_routing_put_voice_mixer),
8548 SOC_SINGLE_EXT("MI2S_TX_Voip", MSM_BACKEND_DAI_MI2S_TX,
8549 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8550 msm_routing_put_voice_mixer),
8551 SOC_SINGLE_EXT("SLIM_0_TX_Voip", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8552 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8553 msm_routing_put_voice_mixer),
8554 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX_Voip", MSM_BACKEND_DAI_INT_BT_SCO_TX,
8555 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8556 msm_routing_put_voice_mixer),
8557 SOC_SINGLE_EXT("AFE_PCM_TX_Voip", MSM_BACKEND_DAI_AFE_PCM_TX,
8558 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8559 msm_routing_put_voice_mixer),
8560 SOC_SINGLE_EXT("AUX_PCM_TX_Voip", MSM_BACKEND_DAI_AUXPCM_TX,
8561 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8562 msm_routing_put_voice_mixer),
8563 SOC_SINGLE_EXT("SEC_AUX_PCM_TX_Voip", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
8564 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8565 msm_routing_put_voice_mixer),
8566 SOC_SINGLE_EXT("TERT_AUX_PCM_TX_Voip", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
8567 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8568 msm_routing_put_voice_mixer),
8569 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX_Voip", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
8570 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8571 msm_routing_put_voice_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308572 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX_Voip", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
8573 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8574 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308575 SOC_SINGLE_EXT("PRI_MI2S_TX_Voip", MSM_BACKEND_DAI_PRI_MI2S_TX,
8576 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8577 msm_routing_put_voice_mixer),
8578 SOC_SINGLE_EXT("TERT_MI2S_TX_Voip", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
8579 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8580 msm_routing_put_voice_mixer),
8581 SOC_SINGLE_EXT("INT3_MI2S_TX_Voip", MSM_BACKEND_DAI_INT3_MI2S_TX,
8582 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8583 msm_routing_put_voice_mixer),
8584 SOC_SINGLE_EXT("SLIM_7_TX_Voip", MSM_BACKEND_DAI_SLIMBUS_7_TX,
8585 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8586 msm_routing_put_voice_mixer),
8587 SOC_SINGLE_EXT("SLIM_8_TX_Voip", MSM_BACKEND_DAI_SLIMBUS_8_TX,
8588 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8589 msm_routing_put_voice_mixer),
8590 SOC_SINGLE_EXT("USB_AUDIO_TX_Voip", MSM_BACKEND_DAI_USB_TX,
8591 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8592 msm_routing_put_voice_mixer),
8593};
8594
8595static const struct snd_kcontrol_new tx_voice_stub_mixer_controls[] = {
8596 SOC_SINGLE_EXT("STUB_TX_HL", MSM_BACKEND_DAI_EXTPROC_TX,
8597 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8598 msm_routing_put_voice_stub_mixer),
8599 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
8600 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8601 msm_routing_put_voice_stub_mixer),
8602 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
8603 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8604 msm_routing_put_voice_stub_mixer),
8605 SOC_SINGLE_EXT("STUB_1_TX_HL", MSM_BACKEND_DAI_EXTPROC_EC_TX,
8606 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8607 msm_routing_put_voice_stub_mixer),
8608 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
8609 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8610 msm_routing_put_voice_stub_mixer),
8611 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
8612 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8613 msm_routing_put_voice_stub_mixer),
8614 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
8615 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8616 msm_routing_put_voice_stub_mixer),
8617 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
8618 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8619 msm_routing_put_voice_stub_mixer),
8620 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
8621 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8622 msm_routing_put_voice_stub_mixer),
8623 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
8624 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8625 msm_routing_put_voice_stub_mixer),
8626 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
8627 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8628 msm_routing_put_voice_stub_mixer),
8629 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
8630 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8631 msm_routing_put_voice_stub_mixer),
8632 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
8633 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8634 msm_routing_put_voice_stub_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308635 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
8636 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8637 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308638 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8639 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8640 msm_routing_put_voice_stub_mixer),
8641 SOC_SINGLE_EXT("SLIM_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
8642 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8643 msm_routing_put_voice_stub_mixer),
8644 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
8645 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8646 msm_routing_put_voice_stub_mixer),
8647 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
8648 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8649 msm_routing_put_voice_stub_mixer),
8650 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
8651 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8652 msm_routing_put_voice_stub_mixer),
8653};
8654
8655static const struct snd_kcontrol_new tx_voice2_stub_mixer_controls[] = {
8656 SOC_SINGLE_EXT("STUB_TX_HL", MSM_BACKEND_DAI_EXTPROC_TX,
8657 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8658 msm_routing_put_voice_stub_mixer),
8659 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
8660 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8661 msm_routing_put_voice_stub_mixer),
8662 SOC_SINGLE_EXT("STUB_1_TX_HL", MSM_BACKEND_DAI_EXTPROC_EC_TX,
8663 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8664 msm_routing_put_voice_stub_mixer),
8665 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
8666 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8667 msm_routing_put_voice_stub_mixer),
8668 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
8669 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8670 msm_routing_put_voice_stub_mixer),
8671 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
8672 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8673 msm_routing_put_voice_stub_mixer),
8674 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
8675 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8676 msm_routing_put_voice_stub_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308677 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
8678 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8679 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308680 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8681 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8682 msm_routing_put_voice_stub_mixer),
8683 SOC_SINGLE_EXT("SLIM_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
8684 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8685 msm_routing_put_voice_stub_mixer),
8686 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
8687 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8688 msm_routing_put_voice_stub_mixer),
8689 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
8690 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8691 msm_routing_put_voice_stub_mixer),
8692 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
8693 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8694 msm_routing_put_voice_stub_mixer),
8695 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
8696 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8697 msm_routing_put_voice_stub_mixer),
8698 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
8699 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8700 msm_routing_put_voice_stub_mixer),
8701};
8702
8703static const struct snd_kcontrol_new tx_volte_stub_mixer_controls[] = {
8704 SOC_SINGLE_EXT("STUB_TX_HL", MSM_BACKEND_DAI_EXTPROC_TX,
8705 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8706 msm_routing_put_voice_stub_mixer),
8707 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
8708 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8709 msm_routing_put_voice_stub_mixer),
8710 SOC_SINGLE_EXT("STUB_1_TX_HL", MSM_BACKEND_DAI_EXTPROC_EC_TX,
8711 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8712 msm_routing_put_voice_stub_mixer),
8713 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
8714 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8715 msm_routing_put_voice_stub_mixer),
8716 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
8717 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8718 msm_routing_put_voice_stub_mixer),
8719 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
8720 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8721 msm_routing_put_voice_stub_mixer),
8722 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
8723 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8724 msm_routing_put_voice_stub_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308725 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
8726 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8727 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308728 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8729 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8730 msm_routing_put_voice_stub_mixer),
8731 SOC_SINGLE_EXT("SLIM_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
8732 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8733 msm_routing_put_voice_stub_mixer),
8734 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
8735 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8736 msm_routing_put_voice_stub_mixer),
8737 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
8738 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8739 msm_routing_put_voice_stub_mixer),
8740 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
8741 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8742 msm_routing_put_voice_stub_mixer),
8743 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
8744 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8745 msm_routing_put_voice_stub_mixer),
8746 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
8747 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8748 msm_routing_put_voice_stub_mixer),
8749};
8750
8751static const struct snd_kcontrol_new tx_qchat_mixer_controls[] = {
8752 SOC_SINGLE_EXT("PRI_TX_QCHAT", MSM_BACKEND_DAI_PRI_I2S_TX,
8753 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8754 msm_routing_put_voice_mixer),
8755 SOC_SINGLE_EXT("SLIM_0_TX_QCHAT", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8756 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8757 msm_routing_put_voice_mixer),
8758 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX_QCHAT",
8759 MSM_BACKEND_DAI_INT_BT_SCO_TX, MSM_FRONTEND_DAI_QCHAT, 1, 0,
8760 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8761 SOC_SINGLE_EXT("AFE_PCM_TX_QCHAT", MSM_BACKEND_DAI_AFE_PCM_TX,
8762 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8763 msm_routing_put_voice_mixer),
8764 SOC_SINGLE_EXT("AUX_PCM_TX_QCHAT", MSM_BACKEND_DAI_AUXPCM_TX,
8765 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8766 msm_routing_put_voice_mixer),
8767 SOC_SINGLE_EXT("SEC_AUX_PCM_TX_QCHAT", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
8768 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8769 msm_routing_put_voice_mixer),
8770 SOC_SINGLE_EXT("TERT_AUX_PCM_TX_QCHAT", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
8771 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8772 msm_routing_put_voice_mixer),
8773 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX_QCHAT", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
8774 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8775 msm_routing_put_voice_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308776 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX_QCHAT", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
8777 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8778 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308779 SOC_SINGLE_EXT("MI2S_TX_QCHAT", MSM_BACKEND_DAI_MI2S_TX,
8780 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8781 msm_routing_put_voice_mixer),
8782 SOC_SINGLE_EXT("PRI_MI2S_TX_QCHAT", MSM_BACKEND_DAI_PRI_MI2S_TX,
8783 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8784 msm_routing_put_voice_mixer),
8785 SOC_SINGLE_EXT("TERT_MI2S_TX_QCHAT", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
8786 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8787 msm_routing_put_voice_mixer),
8788 SOC_SINGLE_EXT("INT3_MI2S_TX_QCHAT", MSM_BACKEND_DAI_INT3_MI2S_TX,
8789 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8790 msm_routing_put_voice_mixer),
8791 SOC_SINGLE_EXT("SLIM_7_TX_QCHAT", MSM_BACKEND_DAI_SLIMBUS_7_TX,
8792 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8793 msm_routing_put_voice_mixer),
8794 SOC_SINGLE_EXT("SLIM_8_TX_QCHAT", MSM_BACKEND_DAI_SLIMBUS_8_TX,
8795 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8796 msm_routing_put_voice_mixer),
8797 SOC_SINGLE_EXT("USB_AUDIO_TX_QCHAT", MSM_BACKEND_DAI_USB_TX,
8798 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8799 msm_routing_put_voice_mixer),
8800};
8801
8802static const struct snd_kcontrol_new int0_mi2s_rx_port_mixer_controls[] = {
8803 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
8804 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8805 msm_routing_put_port_mixer),
8806 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
8807 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8808 msm_routing_put_port_mixer),
8809 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
8810 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8811 msm_routing_put_port_mixer),
8812 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
8813 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8814 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308815 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
8816 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8817 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308818 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
8819 MSM_BACKEND_DAI_INT3_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8820 msm_routing_put_port_mixer),
8821 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
8822 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
8823 msm_routing_put_port_mixer),
8824 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
8825 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
8826 msm_routing_put_port_mixer),
8827 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
8828 MSM_BACKEND_DAI_SLIMBUS_7_TX, 1, 0, msm_routing_get_port_mixer,
8829 msm_routing_put_port_mixer),
8830 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
8831 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
8832 msm_routing_put_port_mixer),
8833};
8834
8835static const struct snd_kcontrol_new int4_mi2s_rx_port_mixer_controls[] = {
8836 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
8837 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8838 msm_routing_put_port_mixer),
8839 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
8840 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8841 msm_routing_put_port_mixer),
8842 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
8843 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8844 msm_routing_put_port_mixer),
8845 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
8846 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8847 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308848 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
8849 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8850 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308851 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
8852 MSM_BACKEND_DAI_INT3_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8853 msm_routing_put_port_mixer),
8854 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
8855 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
8856 msm_routing_put_port_mixer),
8857 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
8858 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
8859 msm_routing_put_port_mixer),
8860 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
8861 MSM_BACKEND_DAI_SLIMBUS_7_TX, 1, 0, msm_routing_get_port_mixer,
8862 msm_routing_put_port_mixer),
8863 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
8864 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
8865 msm_routing_put_port_mixer),
8866};
8867
8868static const struct snd_kcontrol_new sbus_0_rx_port_mixer_controls[] = {
8869 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8870 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
8871 msm_routing_put_port_mixer),
8872 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8873 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
8874 msm_routing_put_port_mixer),
8875 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8876 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
8877 msm_routing_put_port_mixer),
8878 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8879 MSM_BACKEND_DAI_SLIMBUS_7_TX, 1, 0, msm_routing_get_port_mixer,
8880 msm_routing_put_port_mixer),
8881 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8882 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
8883 msm_routing_put_port_mixer),
8884 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8885 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
8886 msm_routing_put_port_mixer),
8887 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8888 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
8889 msm_routing_put_port_mixer),
8890 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8891 MSM_BACKEND_DAI_TERT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
8892 msm_routing_put_port_mixer),
8893 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8894 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
8895 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308896 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8897 MSM_BACKEND_DAI_QUIN_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
8898 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308899 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8900 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8901 msm_routing_put_port_mixer),
8902 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8903 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8904 msm_routing_put_port_mixer),
8905 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8906 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8907 msm_routing_put_port_mixer),
8908 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8909 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8910 msm_routing_put_port_mixer),
8911 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8912 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8913 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308914 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8915 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8916 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308917 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8918 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
8919 msm_routing_put_port_mixer),
8920 SOC_SINGLE_EXT("PRI_MI2S_RX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8921 MSM_BACKEND_DAI_PRI_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
8922 msm_routing_put_port_mixer),
8923 SOC_SINGLE_EXT("SEC_MI2S_RX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8924 MSM_BACKEND_DAI_SECONDARY_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
8925 msm_routing_put_port_mixer),
8926 SOC_SINGLE_EXT("TERT_MI2S_RX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8927 MSM_BACKEND_DAI_TERTIARY_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
8928 msm_routing_put_port_mixer),
8929 SOC_SINGLE_EXT("QUAT_MI2S_RX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8930 MSM_BACKEND_DAI_QUATERNARY_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
8931 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308932 SOC_SINGLE_EXT("QUIN_MI2S_RX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8933 MSM_BACKEND_DAI_QUINARY_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
8934 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308935};
8936
8937static const struct snd_kcontrol_new aux_pcm_rx_port_mixer_controls[] = {
8938 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_RX,
8939 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
8940 msm_routing_put_port_mixer),
8941 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_AUXPCM_RX,
8942 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
8943 msm_routing_put_port_mixer),
8944 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_AUXPCM_RX,
8945 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
8946 msm_routing_put_port_mixer),
8947 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_RX,
8948 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
8949 msm_routing_put_port_mixer),
8950 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_AUXPCM_RX,
8951 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0, msm_routing_get_port_mixer,
8952 msm_routing_put_port_mixer),
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -08008953 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_AUXPCM_RX,
8954 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8955 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308956};
8957
8958static const struct snd_kcontrol_new sec_auxpcm_rx_port_mixer_controls[] = {
8959 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8960 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
8961 msm_routing_put_port_mixer),
8962 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8963 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
8964 msm_routing_put_port_mixer),
8965 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8966 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
8967 msm_routing_put_port_mixer),
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -08008968 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8969 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8970 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308971};
8972
8973static const struct snd_kcontrol_new tert_auxpcm_rx_port_mixer_controls[] = {
8974 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8975 MSM_BACKEND_DAI_TERT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
8976 msm_routing_put_port_mixer),
8977 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8978 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
8979 msm_routing_put_port_mixer),
8980 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8981 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
8982 msm_routing_put_port_mixer),
8983};
8984
8985static const struct snd_kcontrol_new quat_auxpcm_rx_port_mixer_controls[] = {
8986 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8987 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
8988 msm_routing_put_port_mixer),
8989 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8990 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
8991 msm_routing_put_port_mixer),
8992 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8993 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
8994 msm_routing_put_port_mixer),
8995};
8996
Rohit Kumara5077932017-09-10 22:05:05 +05308997static const struct snd_kcontrol_new quin_auxpcm_rx_port_mixer_controls[] = {
8998 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
8999 MSM_BACKEND_DAI_QUIN_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9000 msm_routing_put_port_mixer),
9001 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
9002 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9003 msm_routing_put_port_mixer),
9004 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
9005 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9006 msm_routing_put_port_mixer),
9007};
9008
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309009static const struct snd_kcontrol_new sbus_1_rx_port_mixer_controls[] = {
9010 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9011 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
9012 msm_routing_put_port_mixer),
9013 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9014 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0, msm_routing_get_port_mixer,
9015 msm_routing_put_port_mixer),
9016 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9017 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9018 msm_routing_put_port_mixer),
9019 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9020 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9021 msm_routing_put_port_mixer),
9022 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9023 MSM_BACKEND_DAI_TERT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9024 msm_routing_put_port_mixer),
9025 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9026 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9027 msm_routing_put_port_mixer),
9028};
9029
9030static const struct snd_kcontrol_new sbus_3_rx_port_mixer_controls[] = {
9031 SOC_SINGLE_EXT("INTERNAL_BT_SCO_RX", MSM_BACKEND_DAI_SLIMBUS_3_RX,
9032 MSM_BACKEND_DAI_INT_BT_SCO_RX, 1, 0, msm_routing_get_port_mixer,
9033 msm_routing_put_port_mixer),
9034 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_3_RX,
9035 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9036 msm_routing_put_port_mixer),
9037 SOC_SINGLE_EXT("AFE_PCM_RX", MSM_BACKEND_DAI_SLIMBUS_3_RX,
9038 MSM_BACKEND_DAI_AFE_PCM_RX, 1, 0, msm_routing_get_port_mixer,
9039 msm_routing_put_port_mixer),
9040 SOC_SINGLE_EXT("AUX_PCM_RX", MSM_BACKEND_DAI_SLIMBUS_3_RX,
9041 MSM_BACKEND_DAI_AUXPCM_RX, 1, 0, msm_routing_get_port_mixer,
9042 msm_routing_put_port_mixer),
9043 SOC_SINGLE_EXT("SLIM_0_RX", MSM_BACKEND_DAI_SLIMBUS_3_RX,
9044 MSM_BACKEND_DAI_SLIMBUS_0_RX, 1, 0, msm_routing_get_port_mixer,
9045 msm_routing_put_port_mixer),
9046};
9047
9048static const struct snd_kcontrol_new sbus_6_rx_port_mixer_controls[] = {
9049 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9050 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9051 msm_routing_put_port_mixer),
9052 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9053 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9054 msm_routing_put_port_mixer),
9055 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9056 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9057 msm_routing_put_port_mixer),
9058 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9059 MSM_BACKEND_DAI_SLIMBUS_7_TX, 1, 0, msm_routing_get_port_mixer,
9060 msm_routing_put_port_mixer),
9061 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9062 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9063 msm_routing_put_port_mixer),
9064 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9065 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9066 msm_routing_put_port_mixer),
9067 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9068 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9069 msm_routing_put_port_mixer),
9070 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9071 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9072 msm_routing_put_port_mixer),
9073 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9074 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9075 msm_routing_put_port_mixer),
9076 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9077 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9078 msm_routing_put_port_mixer),
9079 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9080 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9081 msm_routing_put_port_mixer),
9082 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9083 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
9084 msm_routing_put_port_mixer),
9085};
9086
9087static const struct snd_kcontrol_new bt_sco_rx_port_mixer_controls[] = {
9088 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_INT_BT_SCO_RX,
9089 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9090 msm_routing_put_port_mixer),
9091 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_INT_BT_SCO_RX,
9092 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9093 msm_routing_put_port_mixer),
9094};
9095
9096static const struct snd_kcontrol_new afe_pcm_rx_port_mixer_controls[] = {
9097 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_AFE_PCM_RX,
9098 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9099 msm_routing_put_port_mixer),
9100 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_AFE_PCM_RX,
9101 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9102 msm_routing_put_port_mixer),
9103};
9104
9105
9106static const struct snd_kcontrol_new hdmi_rx_port_mixer_controls[] = {
9107 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_HDMI_RX,
9108 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9109 msm_routing_put_port_mixer),
9110};
9111
9112static const struct snd_kcontrol_new display_port_rx_port_mixer_controls[] = {
9113 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
9114 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9115 msm_routing_put_port_mixer),
9116};
9117
9118static const struct snd_kcontrol_new sec_i2s_rx_port_mixer_controls[] = {
9119 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_SEC_I2S_RX,
9120 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9121 msm_routing_put_port_mixer),
9122};
9123
9124static const struct snd_kcontrol_new mi2s_rx_port_mixer_controls[] = {
9125 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_MI2S_RX,
9126 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9127 msm_routing_put_port_mixer),
9128 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_RX,
9129 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9130 msm_routing_put_port_mixer),
9131};
9132
9133static const struct snd_kcontrol_new primary_mi2s_rx_port_mixer_controls[] = {
9134 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9135 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9136 msm_routing_put_port_mixer),
9137 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9138 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9139 msm_routing_put_port_mixer),
9140 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9141 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9142 msm_routing_put_port_mixer),
9143 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9144 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9145 msm_routing_put_port_mixer),
9146 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9147 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
9148 msm_routing_put_port_mixer),
9149 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9150 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9151 msm_routing_put_port_mixer),
9152 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9153 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9154 msm_routing_put_port_mixer),
9155 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_PRI_MI2S_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("SLIM_8_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9159 MSM_BACKEND_DAI_SLIMBUS_8_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("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9162 MSM_BACKEND_DAI_SEC_AUXPCM_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 usb_rx_port_mixer_controls[] = {
9167 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_RX,
9168 MSM_BACKEND_DAI_USB_TX, 1, 0, msm_routing_get_port_mixer,
9169 msm_routing_put_port_mixer),
9170};
9171
9172static const struct snd_kcontrol_new quat_mi2s_rx_port_mixer_controls[] = {
9173 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9174 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9175 msm_routing_put_port_mixer),
9176 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9177 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9178 msm_routing_put_port_mixer),
9179 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9180 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9181 msm_routing_put_port_mixer),
9182 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9183 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9184 msm_routing_put_port_mixer),
9185 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9186 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9187 msm_routing_put_port_mixer),
9188 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9189 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9190 msm_routing_put_port_mixer),
9191 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9192 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9193 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309194 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9195 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9196 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309197 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9198 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9199 msm_routing_put_port_mixer),
9200};
9201
Rohit Kumara5077932017-09-10 22:05:05 +05309202static const struct snd_kcontrol_new quin_mi2s_rx_port_mixer_controls[] = {
9203 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9204 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9205 msm_routing_put_port_mixer),
9206 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9207 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9208 msm_routing_put_port_mixer),
9209 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9210 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9211 msm_routing_put_port_mixer),
9212 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9213 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9214 msm_routing_put_port_mixer),
9215 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9216 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9217 msm_routing_put_port_mixer),
9218 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9219 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9220 msm_routing_put_port_mixer),
9221 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9222 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9223 msm_routing_put_port_mixer),
9224};
9225
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309226static const struct snd_kcontrol_new pri_tdm_rx_0_port_mixer_controls[] = {
9227 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9228 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9229 msm_routing_get_port_mixer,
9230 msm_routing_put_port_mixer),
9231 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9232 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9233 msm_routing_get_port_mixer,
9234 msm_routing_put_port_mixer),
9235 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9236 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9237 msm_routing_get_port_mixer,
9238 msm_routing_put_port_mixer),
9239 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9240 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9241 msm_routing_get_port_mixer,
9242 msm_routing_put_port_mixer),
9243 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9244 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9245 msm_routing_get_port_mixer,
9246 msm_routing_put_port_mixer),
9247 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9248 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9249 msm_routing_get_port_mixer,
9250 msm_routing_put_port_mixer),
9251 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9252 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9253 msm_routing_get_port_mixer,
9254 msm_routing_put_port_mixer),
9255 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9256 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9257 msm_routing_get_port_mixer,
9258 msm_routing_put_port_mixer),
9259 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9260 MSM_BACKEND_DAI_PRI_TDM_TX_0, 1, 0,
9261 msm_routing_get_port_mixer,
9262 msm_routing_put_port_mixer),
9263 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9264 MSM_BACKEND_DAI_PRI_TDM_TX_1, 1, 0,
9265 msm_routing_get_port_mixer,
9266 msm_routing_put_port_mixer),
9267 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9268 MSM_BACKEND_DAI_PRI_TDM_TX_2, 1, 0,
9269 msm_routing_get_port_mixer,
9270 msm_routing_put_port_mixer),
9271 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9272 MSM_BACKEND_DAI_PRI_TDM_TX_3, 1, 0,
9273 msm_routing_get_port_mixer,
9274 msm_routing_put_port_mixer),
9275 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9276 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9277 msm_routing_get_port_mixer,
9278 msm_routing_put_port_mixer),
9279 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9280 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9281 msm_routing_get_port_mixer,
9282 msm_routing_put_port_mixer),
9283 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9284 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9285 msm_routing_get_port_mixer,
9286 msm_routing_put_port_mixer),
9287 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9288 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9289 msm_routing_get_port_mixer,
9290 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309291 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9292 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9293 msm_routing_get_port_mixer,
9294 msm_routing_put_port_mixer),
9295 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9296 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9297 msm_routing_get_port_mixer,
9298 msm_routing_put_port_mixer),
9299 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9300 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9301 msm_routing_get_port_mixer,
9302 msm_routing_put_port_mixer),
9303 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9304 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9305 msm_routing_get_port_mixer,
9306 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309307};
9308
9309static const struct snd_kcontrol_new pri_tdm_rx_1_port_mixer_controls[] = {
9310 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9311 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9312 msm_routing_get_port_mixer,
9313 msm_routing_put_port_mixer),
9314 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9315 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9316 msm_routing_get_port_mixer,
9317 msm_routing_put_port_mixer),
9318 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9319 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9320 msm_routing_get_port_mixer,
9321 msm_routing_put_port_mixer),
9322 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9323 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9324 msm_routing_get_port_mixer,
9325 msm_routing_put_port_mixer),
9326 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9327 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9328 msm_routing_get_port_mixer,
9329 msm_routing_put_port_mixer),
9330 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9331 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9332 msm_routing_get_port_mixer,
9333 msm_routing_put_port_mixer),
9334 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9335 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9336 msm_routing_get_port_mixer,
9337 msm_routing_put_port_mixer),
9338 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9339 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9340 msm_routing_get_port_mixer,
9341 msm_routing_put_port_mixer),
9342 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9343 MSM_BACKEND_DAI_PRI_TDM_TX_0, 1, 0,
9344 msm_routing_get_port_mixer,
9345 msm_routing_put_port_mixer),
9346 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9347 MSM_BACKEND_DAI_PRI_TDM_TX_1, 1, 0,
9348 msm_routing_get_port_mixer,
9349 msm_routing_put_port_mixer),
9350 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9351 MSM_BACKEND_DAI_PRI_TDM_TX_2, 1, 0,
9352 msm_routing_get_port_mixer,
9353 msm_routing_put_port_mixer),
9354 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9355 MSM_BACKEND_DAI_PRI_TDM_TX_3, 1, 0,
9356 msm_routing_get_port_mixer,
9357 msm_routing_put_port_mixer),
9358 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9359 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9360 msm_routing_get_port_mixer,
9361 msm_routing_put_port_mixer),
9362 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9363 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9364 msm_routing_get_port_mixer,
9365 msm_routing_put_port_mixer),
9366 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9367 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9368 msm_routing_get_port_mixer,
9369 msm_routing_put_port_mixer),
9370 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9371 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9372 msm_routing_get_port_mixer,
9373 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309374 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9375 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9376 msm_routing_get_port_mixer,
9377 msm_routing_put_port_mixer),
9378 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9379 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9380 msm_routing_get_port_mixer,
9381 msm_routing_put_port_mixer),
9382 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9383 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9384 msm_routing_get_port_mixer,
9385 msm_routing_put_port_mixer),
9386 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9387 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9388 msm_routing_get_port_mixer,
9389 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309390};
9391
9392static const struct snd_kcontrol_new pri_tdm_rx_2_port_mixer_controls[] = {
9393 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9394 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9395 msm_routing_get_port_mixer,
9396 msm_routing_put_port_mixer),
9397 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9398 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9399 msm_routing_get_port_mixer,
9400 msm_routing_put_port_mixer),
9401 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9402 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9403 msm_routing_get_port_mixer,
9404 msm_routing_put_port_mixer),
9405 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9406 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9407 msm_routing_get_port_mixer,
9408 msm_routing_put_port_mixer),
9409 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9410 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9411 msm_routing_get_port_mixer,
9412 msm_routing_put_port_mixer),
9413 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9414 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9415 msm_routing_get_port_mixer,
9416 msm_routing_put_port_mixer),
9417 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9418 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9419 msm_routing_get_port_mixer,
9420 msm_routing_put_port_mixer),
9421 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9422 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9423 msm_routing_get_port_mixer,
9424 msm_routing_put_port_mixer),
9425 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9426 MSM_BACKEND_DAI_PRI_TDM_TX_0, 1, 0,
9427 msm_routing_get_port_mixer,
9428 msm_routing_put_port_mixer),
9429 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9430 MSM_BACKEND_DAI_PRI_TDM_TX_1, 1, 0,
9431 msm_routing_get_port_mixer,
9432 msm_routing_put_port_mixer),
9433 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9434 MSM_BACKEND_DAI_PRI_TDM_TX_2, 1, 0,
9435 msm_routing_get_port_mixer,
9436 msm_routing_put_port_mixer),
9437 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9438 MSM_BACKEND_DAI_PRI_TDM_TX_3, 1, 0,
9439 msm_routing_get_port_mixer,
9440 msm_routing_put_port_mixer),
9441 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9442 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9443 msm_routing_get_port_mixer,
9444 msm_routing_put_port_mixer),
9445 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9446 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9447 msm_routing_get_port_mixer,
9448 msm_routing_put_port_mixer),
9449 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9450 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9451 msm_routing_get_port_mixer,
9452 msm_routing_put_port_mixer),
9453 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9454 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9455 msm_routing_get_port_mixer,
9456 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309457 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9458 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9459 msm_routing_get_port_mixer,
9460 msm_routing_put_port_mixer),
9461 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9462 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9463 msm_routing_get_port_mixer,
9464 msm_routing_put_port_mixer),
9465 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9466 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9467 msm_routing_get_port_mixer,
9468 msm_routing_put_port_mixer),
9469 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9470 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9471 msm_routing_get_port_mixer,
9472 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309473};
9474
9475static const struct snd_kcontrol_new pri_tdm_rx_3_port_mixer_controls[] = {
9476 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9477 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9478 msm_routing_get_port_mixer,
9479 msm_routing_put_port_mixer),
9480 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9481 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9482 msm_routing_get_port_mixer,
9483 msm_routing_put_port_mixer),
9484 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9485 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9486 msm_routing_get_port_mixer,
9487 msm_routing_put_port_mixer),
9488 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9489 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9490 msm_routing_get_port_mixer,
9491 msm_routing_put_port_mixer),
9492 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9493 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9494 msm_routing_get_port_mixer,
9495 msm_routing_put_port_mixer),
9496 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9497 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9498 msm_routing_get_port_mixer,
9499 msm_routing_put_port_mixer),
9500 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9501 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9502 msm_routing_get_port_mixer,
9503 msm_routing_put_port_mixer),
9504 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9505 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9506 msm_routing_get_port_mixer,
9507 msm_routing_put_port_mixer),
9508 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9509 MSM_BACKEND_DAI_PRI_TDM_TX_0, 1, 0,
9510 msm_routing_get_port_mixer,
9511 msm_routing_put_port_mixer),
9512 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9513 MSM_BACKEND_DAI_PRI_TDM_TX_1, 1, 0,
9514 msm_routing_get_port_mixer,
9515 msm_routing_put_port_mixer),
9516 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9517 MSM_BACKEND_DAI_PRI_TDM_TX_2, 1, 0,
9518 msm_routing_get_port_mixer,
9519 msm_routing_put_port_mixer),
9520 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9521 MSM_BACKEND_DAI_PRI_TDM_TX_3, 1, 0,
9522 msm_routing_get_port_mixer,
9523 msm_routing_put_port_mixer),
9524 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9525 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9526 msm_routing_get_port_mixer,
9527 msm_routing_put_port_mixer),
9528 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9529 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9530 msm_routing_get_port_mixer,
9531 msm_routing_put_port_mixer),
9532 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9533 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9534 msm_routing_get_port_mixer,
9535 msm_routing_put_port_mixer),
9536 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9537 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9538 msm_routing_get_port_mixer,
9539 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309540 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9541 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9542 msm_routing_get_port_mixer,
9543 msm_routing_put_port_mixer),
9544 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9545 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9546 msm_routing_get_port_mixer,
9547 msm_routing_put_port_mixer),
9548 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9549 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9550 msm_routing_get_port_mixer,
9551 msm_routing_put_port_mixer),
9552 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9553 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9554 msm_routing_get_port_mixer,
9555 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309556};
9557
9558static const struct snd_kcontrol_new sec_tdm_rx_0_port_mixer_controls[] = {
9559 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9560 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9561 msm_routing_get_port_mixer,
9562 msm_routing_put_port_mixer),
9563 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9564 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9565 msm_routing_get_port_mixer,
9566 msm_routing_put_port_mixer),
9567 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9568 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9569 msm_routing_get_port_mixer,
9570 msm_routing_put_port_mixer),
9571 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9572 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9573 msm_routing_get_port_mixer,
9574 msm_routing_put_port_mixer),
9575 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9576 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9577 msm_routing_get_port_mixer,
9578 msm_routing_put_port_mixer),
9579 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9580 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9581 msm_routing_get_port_mixer,
9582 msm_routing_put_port_mixer),
9583 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9584 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9585 msm_routing_get_port_mixer,
9586 msm_routing_put_port_mixer),
9587 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9588 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9589 msm_routing_get_port_mixer,
9590 msm_routing_put_port_mixer),
9591 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9592 MSM_BACKEND_DAI_SEC_TDM_TX_0, 1, 0,
9593 msm_routing_get_port_mixer,
9594 msm_routing_put_port_mixer),
9595 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9596 MSM_BACKEND_DAI_SEC_TDM_TX_1, 1, 0,
9597 msm_routing_get_port_mixer,
9598 msm_routing_put_port_mixer),
9599 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9600 MSM_BACKEND_DAI_SEC_TDM_TX_2, 1, 0,
9601 msm_routing_get_port_mixer,
9602 msm_routing_put_port_mixer),
9603 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9604 MSM_BACKEND_DAI_SEC_TDM_TX_3, 1, 0,
9605 msm_routing_get_port_mixer,
9606 msm_routing_put_port_mixer),
9607 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9608 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9609 msm_routing_get_port_mixer,
9610 msm_routing_put_port_mixer),
9611 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9612 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9613 msm_routing_get_port_mixer,
9614 msm_routing_put_port_mixer),
9615 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9616 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9617 msm_routing_get_port_mixer,
9618 msm_routing_put_port_mixer),
9619 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9620 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9621 msm_routing_get_port_mixer,
9622 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309623 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9624 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9625 msm_routing_get_port_mixer,
9626 msm_routing_put_port_mixer),
9627 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9628 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9629 msm_routing_get_port_mixer,
9630 msm_routing_put_port_mixer),
9631 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9632 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9633 msm_routing_get_port_mixer,
9634 msm_routing_put_port_mixer),
9635 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9636 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9637 msm_routing_get_port_mixer,
9638 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309639};
9640
9641static const struct snd_kcontrol_new sec_tdm_rx_1_port_mixer_controls[] = {
9642 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9643 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9644 msm_routing_get_port_mixer,
9645 msm_routing_put_port_mixer),
9646 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9647 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9648 msm_routing_get_port_mixer,
9649 msm_routing_put_port_mixer),
9650 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9651 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9652 msm_routing_get_port_mixer,
9653 msm_routing_put_port_mixer),
9654 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9655 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9656 msm_routing_get_port_mixer,
9657 msm_routing_put_port_mixer),
9658 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9659 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9660 msm_routing_get_port_mixer,
9661 msm_routing_put_port_mixer),
9662 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9663 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9664 msm_routing_get_port_mixer,
9665 msm_routing_put_port_mixer),
9666 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9667 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9668 msm_routing_get_port_mixer,
9669 msm_routing_put_port_mixer),
9670 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9671 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9672 msm_routing_get_port_mixer,
9673 msm_routing_put_port_mixer),
9674 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9675 MSM_BACKEND_DAI_SEC_TDM_TX_0, 1, 0,
9676 msm_routing_get_port_mixer,
9677 msm_routing_put_port_mixer),
9678 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9679 MSM_BACKEND_DAI_SEC_TDM_TX_1, 1, 0,
9680 msm_routing_get_port_mixer,
9681 msm_routing_put_port_mixer),
9682 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9683 MSM_BACKEND_DAI_SEC_TDM_TX_2, 1, 0,
9684 msm_routing_get_port_mixer,
9685 msm_routing_put_port_mixer),
9686 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9687 MSM_BACKEND_DAI_SEC_TDM_TX_3, 1, 0,
9688 msm_routing_get_port_mixer,
9689 msm_routing_put_port_mixer),
9690 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9691 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9692 msm_routing_get_port_mixer,
9693 msm_routing_put_port_mixer),
9694 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9695 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9696 msm_routing_get_port_mixer,
9697 msm_routing_put_port_mixer),
9698 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9699 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9700 msm_routing_get_port_mixer,
9701 msm_routing_put_port_mixer),
9702 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9703 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9704 msm_routing_get_port_mixer,
9705 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309706 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9707 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9708 msm_routing_get_port_mixer,
9709 msm_routing_put_port_mixer),
9710 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9711 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9712 msm_routing_get_port_mixer,
9713 msm_routing_put_port_mixer),
9714 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9715 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9716 msm_routing_get_port_mixer,
9717 msm_routing_put_port_mixer),
9718 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9719 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9720 msm_routing_get_port_mixer,
9721 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309722};
9723
9724static const struct snd_kcontrol_new sec_tdm_rx_2_port_mixer_controls[] = {
9725 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9726 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9727 msm_routing_get_port_mixer,
9728 msm_routing_put_port_mixer),
9729 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9730 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9731 msm_routing_get_port_mixer,
9732 msm_routing_put_port_mixer),
9733 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9734 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9735 msm_routing_get_port_mixer,
9736 msm_routing_put_port_mixer),
9737 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9738 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9739 msm_routing_get_port_mixer,
9740 msm_routing_put_port_mixer),
9741 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9742 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9743 msm_routing_get_port_mixer,
9744 msm_routing_put_port_mixer),
9745 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9746 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9747 msm_routing_get_port_mixer,
9748 msm_routing_put_port_mixer),
9749 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9750 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9751 msm_routing_get_port_mixer,
9752 msm_routing_put_port_mixer),
9753 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9754 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9755 msm_routing_get_port_mixer,
9756 msm_routing_put_port_mixer),
9757 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9758 MSM_BACKEND_DAI_SEC_TDM_TX_0, 1, 0,
9759 msm_routing_get_port_mixer,
9760 msm_routing_put_port_mixer),
9761 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9762 MSM_BACKEND_DAI_SEC_TDM_TX_1, 1, 0,
9763 msm_routing_get_port_mixer,
9764 msm_routing_put_port_mixer),
9765 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9766 MSM_BACKEND_DAI_SEC_TDM_TX_2, 1, 0,
9767 msm_routing_get_port_mixer,
9768 msm_routing_put_port_mixer),
9769 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9770 MSM_BACKEND_DAI_SEC_TDM_TX_3, 1, 0,
9771 msm_routing_get_port_mixer,
9772 msm_routing_put_port_mixer),
9773 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9774 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9775 msm_routing_get_port_mixer,
9776 msm_routing_put_port_mixer),
9777 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9778 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9779 msm_routing_get_port_mixer,
9780 msm_routing_put_port_mixer),
9781 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9782 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9783 msm_routing_get_port_mixer,
9784 msm_routing_put_port_mixer),
9785 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9786 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9787 msm_routing_get_port_mixer,
9788 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309789 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9790 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9791 msm_routing_get_port_mixer,
9792 msm_routing_put_port_mixer),
9793 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9794 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9795 msm_routing_get_port_mixer,
9796 msm_routing_put_port_mixer),
9797 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9798 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9799 msm_routing_get_port_mixer,
9800 msm_routing_put_port_mixer),
9801 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9802 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9803 msm_routing_get_port_mixer,
9804 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309805};
9806
9807static const struct snd_kcontrol_new sec_tdm_rx_3_port_mixer_controls[] = {
9808 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9809 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9810 msm_routing_get_port_mixer,
9811 msm_routing_put_port_mixer),
9812 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9813 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9814 msm_routing_get_port_mixer,
9815 msm_routing_put_port_mixer),
9816 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9817 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9818 msm_routing_get_port_mixer,
9819 msm_routing_put_port_mixer),
9820 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9821 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9822 msm_routing_get_port_mixer,
9823 msm_routing_put_port_mixer),
9824 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9825 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9826 msm_routing_get_port_mixer,
9827 msm_routing_put_port_mixer),
9828 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9829 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9830 msm_routing_get_port_mixer,
9831 msm_routing_put_port_mixer),
9832 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9833 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9834 msm_routing_get_port_mixer,
9835 msm_routing_put_port_mixer),
9836 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9837 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9838 msm_routing_get_port_mixer,
9839 msm_routing_put_port_mixer),
9840 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9841 MSM_BACKEND_DAI_SEC_TDM_TX_0, 1, 0,
9842 msm_routing_get_port_mixer,
9843 msm_routing_put_port_mixer),
9844 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9845 MSM_BACKEND_DAI_SEC_TDM_TX_1, 1, 0,
9846 msm_routing_get_port_mixer,
9847 msm_routing_put_port_mixer),
9848 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9849 MSM_BACKEND_DAI_SEC_TDM_TX_2, 1, 0,
9850 msm_routing_get_port_mixer,
9851 msm_routing_put_port_mixer),
9852 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9853 MSM_BACKEND_DAI_SEC_TDM_TX_3, 1, 0,
9854 msm_routing_get_port_mixer,
9855 msm_routing_put_port_mixer),
9856 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9857 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9858 msm_routing_get_port_mixer,
9859 msm_routing_put_port_mixer),
9860 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9861 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9862 msm_routing_get_port_mixer,
9863 msm_routing_put_port_mixer),
9864 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9865 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9866 msm_routing_get_port_mixer,
9867 msm_routing_put_port_mixer),
9868 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9869 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9870 msm_routing_get_port_mixer,
9871 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309872 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9873 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9874 msm_routing_get_port_mixer,
9875 msm_routing_put_port_mixer),
9876 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9877 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9878 msm_routing_get_port_mixer,
9879 msm_routing_put_port_mixer),
9880 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9881 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9882 msm_routing_get_port_mixer,
9883 msm_routing_put_port_mixer),
9884 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9885 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9886 msm_routing_get_port_mixer,
9887 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309888};
9889
9890static const struct snd_kcontrol_new tert_tdm_rx_0_port_mixer_controls[] = {
9891 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
9892 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9893 msm_routing_get_port_mixer,
9894 msm_routing_put_port_mixer),
9895 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
9896 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9897 msm_routing_get_port_mixer,
9898 msm_routing_put_port_mixer),
9899 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
9900 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9901 msm_routing_get_port_mixer,
9902 msm_routing_put_port_mixer),
9903 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
9904 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9905 msm_routing_get_port_mixer,
9906 msm_routing_put_port_mixer),
9907 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
9908 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9909 msm_routing_get_port_mixer,
9910 msm_routing_put_port_mixer),
9911 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
9912 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9913 msm_routing_get_port_mixer,
9914 msm_routing_put_port_mixer),
9915 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
9916 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9917 msm_routing_get_port_mixer,
9918 msm_routing_put_port_mixer),
9919 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
9920 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9921 msm_routing_get_port_mixer,
9922 msm_routing_put_port_mixer),
9923 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_0,
9924 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
9925 msm_routing_get_port_mixer,
9926 msm_routing_put_port_mixer),
9927 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_0,
9928 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
9929 msm_routing_get_port_mixer,
9930 msm_routing_put_port_mixer),
9931 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_0,
9932 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
9933 msm_routing_get_port_mixer,
9934 msm_routing_put_port_mixer),
9935 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_0,
9936 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
9937 msm_routing_get_port_mixer,
9938 msm_routing_put_port_mixer),
9939 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_0,
9940 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9941 msm_routing_get_port_mixer,
9942 msm_routing_put_port_mixer),
9943 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_0,
9944 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9945 msm_routing_get_port_mixer,
9946 msm_routing_put_port_mixer),
9947 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_0,
9948 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9949 msm_routing_get_port_mixer,
9950 msm_routing_put_port_mixer),
9951 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_0,
9952 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9953 msm_routing_get_port_mixer,
9954 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309955 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_0,
9956 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9957 msm_routing_get_port_mixer,
9958 msm_routing_put_port_mixer),
9959 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_0,
9960 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9961 msm_routing_get_port_mixer,
9962 msm_routing_put_port_mixer),
9963 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_0,
9964 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9965 msm_routing_get_port_mixer,
9966 msm_routing_put_port_mixer),
9967 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_0,
9968 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9969 msm_routing_get_port_mixer,
9970 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309971};
9972
9973static const struct snd_kcontrol_new tert_tdm_rx_1_port_mixer_controls[] = {
9974 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
9975 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9976 msm_routing_get_port_mixer,
9977 msm_routing_put_port_mixer),
9978 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
9979 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9980 msm_routing_get_port_mixer,
9981 msm_routing_put_port_mixer),
9982 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
9983 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9984 msm_routing_get_port_mixer,
9985 msm_routing_put_port_mixer),
9986 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
9987 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9988 msm_routing_get_port_mixer,
9989 msm_routing_put_port_mixer),
9990 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
9991 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9992 msm_routing_get_port_mixer,
9993 msm_routing_put_port_mixer),
9994 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
9995 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9996 msm_routing_get_port_mixer,
9997 msm_routing_put_port_mixer),
9998 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
9999 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10000 msm_routing_get_port_mixer,
10001 msm_routing_put_port_mixer),
10002 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10003 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10004 msm_routing_get_port_mixer,
10005 msm_routing_put_port_mixer),
10006 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10007 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10008 msm_routing_get_port_mixer,
10009 msm_routing_put_port_mixer),
10010 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10011 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10012 msm_routing_get_port_mixer,
10013 msm_routing_put_port_mixer),
10014 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10015 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10016 msm_routing_get_port_mixer,
10017 msm_routing_put_port_mixer),
10018 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10019 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10020 msm_routing_get_port_mixer,
10021 msm_routing_put_port_mixer),
10022 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10023 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10024 msm_routing_get_port_mixer,
10025 msm_routing_put_port_mixer),
10026 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10027 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10028 msm_routing_get_port_mixer,
10029 msm_routing_put_port_mixer),
10030 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10031 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10032 msm_routing_get_port_mixer,
10033 msm_routing_put_port_mixer),
10034 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10035 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10036 msm_routing_get_port_mixer,
10037 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010038 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10039 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10040 msm_routing_get_port_mixer,
10041 msm_routing_put_port_mixer),
10042 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10043 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10044 msm_routing_get_port_mixer,
10045 msm_routing_put_port_mixer),
10046 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10047 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10048 msm_routing_get_port_mixer,
10049 msm_routing_put_port_mixer),
10050 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10051 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10052 msm_routing_get_port_mixer,
10053 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010054};
10055
10056static const struct snd_kcontrol_new tert_tdm_rx_2_port_mixer_controls[] = {
10057 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10058 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10059 msm_routing_get_port_mixer,
10060 msm_routing_put_port_mixer),
10061 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10062 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10063 msm_routing_get_port_mixer,
10064 msm_routing_put_port_mixer),
10065 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10066 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
10067 msm_routing_get_port_mixer,
10068 msm_routing_put_port_mixer),
10069 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10070 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10071 msm_routing_get_port_mixer,
10072 msm_routing_put_port_mixer),
10073 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10074 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10075 msm_routing_get_port_mixer,
10076 msm_routing_put_port_mixer),
10077 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10078 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10079 msm_routing_get_port_mixer,
10080 msm_routing_put_port_mixer),
10081 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10082 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10083 msm_routing_get_port_mixer,
10084 msm_routing_put_port_mixer),
10085 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10086 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10087 msm_routing_get_port_mixer,
10088 msm_routing_put_port_mixer),
10089 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10090 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10091 msm_routing_get_port_mixer,
10092 msm_routing_put_port_mixer),
10093 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10094 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10095 msm_routing_get_port_mixer,
10096 msm_routing_put_port_mixer),
10097 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10098 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10099 msm_routing_get_port_mixer,
10100 msm_routing_put_port_mixer),
10101 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10102 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10103 msm_routing_get_port_mixer,
10104 msm_routing_put_port_mixer),
10105 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10106 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10107 msm_routing_get_port_mixer,
10108 msm_routing_put_port_mixer),
10109 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10110 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10111 msm_routing_get_port_mixer,
10112 msm_routing_put_port_mixer),
10113 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10114 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10115 msm_routing_get_port_mixer,
10116 msm_routing_put_port_mixer),
10117 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10118 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10119 msm_routing_get_port_mixer,
10120 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010121 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10122 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10123 msm_routing_get_port_mixer,
10124 msm_routing_put_port_mixer),
10125 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10126 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10127 msm_routing_get_port_mixer,
10128 msm_routing_put_port_mixer),
10129 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10130 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10131 msm_routing_get_port_mixer,
10132 msm_routing_put_port_mixer),
10133 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10134 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10135 msm_routing_get_port_mixer,
10136 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010137};
10138
10139static const struct snd_kcontrol_new tert_tdm_rx_3_port_mixer_controls[] = {
10140 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10141 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10142 msm_routing_get_port_mixer,
10143 msm_routing_put_port_mixer),
10144 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10145 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10146 msm_routing_get_port_mixer,
10147 msm_routing_put_port_mixer),
10148 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10149 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
10150 msm_routing_get_port_mixer,
10151 msm_routing_put_port_mixer),
10152 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10153 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10154 msm_routing_get_port_mixer,
10155 msm_routing_put_port_mixer),
10156 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10157 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10158 msm_routing_get_port_mixer,
10159 msm_routing_put_port_mixer),
10160 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10161 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10162 msm_routing_get_port_mixer,
10163 msm_routing_put_port_mixer),
10164 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10165 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10166 msm_routing_get_port_mixer,
10167 msm_routing_put_port_mixer),
10168 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10169 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10170 msm_routing_get_port_mixer,
10171 msm_routing_put_port_mixer),
10172 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10173 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10174 msm_routing_get_port_mixer,
10175 msm_routing_put_port_mixer),
10176 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10177 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10178 msm_routing_get_port_mixer,
10179 msm_routing_put_port_mixer),
10180 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10181 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10182 msm_routing_get_port_mixer,
10183 msm_routing_put_port_mixer),
10184 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10185 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10186 msm_routing_get_port_mixer,
10187 msm_routing_put_port_mixer),
10188 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10189 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10190 msm_routing_get_port_mixer,
10191 msm_routing_put_port_mixer),
10192 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10193 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10194 msm_routing_get_port_mixer,
10195 msm_routing_put_port_mixer),
10196 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10197 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10198 msm_routing_get_port_mixer,
10199 msm_routing_put_port_mixer),
10200 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10201 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10202 msm_routing_get_port_mixer,
10203 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010204 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10205 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10206 msm_routing_get_port_mixer,
10207 msm_routing_put_port_mixer),
10208 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10209 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10210 msm_routing_get_port_mixer,
10211 msm_routing_put_port_mixer),
10212 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10213 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10214 msm_routing_get_port_mixer,
10215 msm_routing_put_port_mixer),
10216 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10217 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10218 msm_routing_get_port_mixer,
10219 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010220};
10221
10222static const struct snd_kcontrol_new quat_tdm_rx_0_port_mixer_controls[] = {
10223 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10224 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10225 msm_routing_get_port_mixer,
10226 msm_routing_put_port_mixer),
10227 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10228 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10229 msm_routing_get_port_mixer,
10230 msm_routing_put_port_mixer),
10231 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10232 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10233 msm_routing_get_port_mixer,
10234 msm_routing_put_port_mixer),
10235 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10236 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10237 msm_routing_get_port_mixer,
10238 msm_routing_put_port_mixer),
10239 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10240 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10241 msm_routing_get_port_mixer,
10242 msm_routing_put_port_mixer),
10243 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10244 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10245 msm_routing_get_port_mixer,
10246 msm_routing_put_port_mixer),
10247 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10248 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10249 msm_routing_get_port_mixer,
10250 msm_routing_put_port_mixer),
10251 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10252 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10253 msm_routing_get_port_mixer,
10254 msm_routing_put_port_mixer),
10255 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10256 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10257 msm_routing_get_port_mixer,
10258 msm_routing_put_port_mixer),
10259 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10260 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10261 msm_routing_get_port_mixer,
10262 msm_routing_put_port_mixer),
10263 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10264 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10265 msm_routing_get_port_mixer,
10266 msm_routing_put_port_mixer),
10267 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10268 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10269 msm_routing_get_port_mixer,
10270 msm_routing_put_port_mixer),
10271 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10272 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10273 msm_routing_get_port_mixer,
10274 msm_routing_put_port_mixer),
10275 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10276 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10277 msm_routing_get_port_mixer,
10278 msm_routing_put_port_mixer),
10279 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10280 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10281 msm_routing_get_port_mixer,
10282 msm_routing_put_port_mixer),
10283 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10284 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10285 msm_routing_get_port_mixer,
10286 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010287 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10288 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10289 msm_routing_get_port_mixer,
10290 msm_routing_put_port_mixer),
10291 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10292 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10293 msm_routing_get_port_mixer,
10294 msm_routing_put_port_mixer),
10295 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10296 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10297 msm_routing_get_port_mixer,
10298 msm_routing_put_port_mixer),
10299 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10300 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10301 msm_routing_get_port_mixer,
10302 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010303};
10304
10305static const struct snd_kcontrol_new quat_tdm_rx_1_port_mixer_controls[] = {
10306 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10307 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10308 msm_routing_get_port_mixer,
10309 msm_routing_put_port_mixer),
10310 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10311 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10312 msm_routing_get_port_mixer,
10313 msm_routing_put_port_mixer),
10314 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10315 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10316 msm_routing_get_port_mixer,
10317 msm_routing_put_port_mixer),
10318 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10319 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10320 msm_routing_get_port_mixer,
10321 msm_routing_put_port_mixer),
10322 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10323 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10324 msm_routing_get_port_mixer,
10325 msm_routing_put_port_mixer),
10326 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10327 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10328 msm_routing_get_port_mixer,
10329 msm_routing_put_port_mixer),
10330 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10331 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10332 msm_routing_get_port_mixer,
10333 msm_routing_put_port_mixer),
10334 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10335 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10336 msm_routing_get_port_mixer,
10337 msm_routing_put_port_mixer),
10338 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10339 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10340 msm_routing_get_port_mixer,
10341 msm_routing_put_port_mixer),
10342 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10343 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10344 msm_routing_get_port_mixer,
10345 msm_routing_put_port_mixer),
10346 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10347 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10348 msm_routing_get_port_mixer,
10349 msm_routing_put_port_mixer),
10350 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10351 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10352 msm_routing_get_port_mixer,
10353 msm_routing_put_port_mixer),
10354 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10355 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10356 msm_routing_get_port_mixer,
10357 msm_routing_put_port_mixer),
10358 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10359 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10360 msm_routing_get_port_mixer,
10361 msm_routing_put_port_mixer),
10362 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10363 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10364 msm_routing_get_port_mixer,
10365 msm_routing_put_port_mixer),
10366 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10367 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10368 msm_routing_get_port_mixer,
10369 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010370 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10371 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10372 msm_routing_get_port_mixer,
10373 msm_routing_put_port_mixer),
10374 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10375 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10376 msm_routing_get_port_mixer,
10377 msm_routing_put_port_mixer),
10378 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10379 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10380 msm_routing_get_port_mixer,
10381 msm_routing_put_port_mixer),
10382 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10383 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10384 msm_routing_get_port_mixer,
10385 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010386};
10387
10388static const struct snd_kcontrol_new quat_tdm_rx_2_port_mixer_controls[] = {
10389 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10390 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10391 msm_routing_get_port_mixer,
10392 msm_routing_put_port_mixer),
10393 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10394 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10395 msm_routing_get_port_mixer,
10396 msm_routing_put_port_mixer),
10397 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10398 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10399 msm_routing_get_port_mixer,
10400 msm_routing_put_port_mixer),
10401 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10402 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10403 msm_routing_get_port_mixer,
10404 msm_routing_put_port_mixer),
10405 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10406 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10407 msm_routing_get_port_mixer,
10408 msm_routing_put_port_mixer),
10409 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10410 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10411 msm_routing_get_port_mixer,
10412 msm_routing_put_port_mixer),
10413 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10414 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10415 msm_routing_get_port_mixer,
10416 msm_routing_put_port_mixer),
10417 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10418 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10419 msm_routing_get_port_mixer,
10420 msm_routing_put_port_mixer),
10421 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10422 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10423 msm_routing_get_port_mixer,
10424 msm_routing_put_port_mixer),
10425 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10426 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10427 msm_routing_get_port_mixer,
10428 msm_routing_put_port_mixer),
10429 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10430 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10431 msm_routing_get_port_mixer,
10432 msm_routing_put_port_mixer),
10433 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10434 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10435 msm_routing_get_port_mixer,
10436 msm_routing_put_port_mixer),
10437 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10438 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10439 msm_routing_get_port_mixer,
10440 msm_routing_put_port_mixer),
10441 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10442 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10443 msm_routing_get_port_mixer,
10444 msm_routing_put_port_mixer),
10445 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10446 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10447 msm_routing_get_port_mixer,
10448 msm_routing_put_port_mixer),
10449 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10450 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10451 msm_routing_get_port_mixer,
10452 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010453 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10454 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10455 msm_routing_get_port_mixer,
10456 msm_routing_put_port_mixer),
10457 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10458 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10459 msm_routing_get_port_mixer,
10460 msm_routing_put_port_mixer),
10461 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10462 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10463 msm_routing_get_port_mixer,
10464 msm_routing_put_port_mixer),
10465 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10466 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10467 msm_routing_get_port_mixer,
10468 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010469};
10470
10471static const struct snd_kcontrol_new quat_tdm_rx_3_port_mixer_controls[] = {
10472 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10473 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10474 msm_routing_get_port_mixer,
10475 msm_routing_put_port_mixer),
10476 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10477 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10478 msm_routing_get_port_mixer,
10479 msm_routing_put_port_mixer),
10480 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10481 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10482 msm_routing_get_port_mixer,
10483 msm_routing_put_port_mixer),
10484 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10485 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10486 msm_routing_get_port_mixer,
10487 msm_routing_put_port_mixer),
10488 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10489 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10490 msm_routing_get_port_mixer,
10491 msm_routing_put_port_mixer),
10492 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10493 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10494 msm_routing_get_port_mixer,
10495 msm_routing_put_port_mixer),
10496 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10497 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10498 msm_routing_get_port_mixer,
10499 msm_routing_put_port_mixer),
10500 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10501 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10502 msm_routing_get_port_mixer,
10503 msm_routing_put_port_mixer),
10504 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10505 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10506 msm_routing_get_port_mixer,
10507 msm_routing_put_port_mixer),
10508 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10509 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10510 msm_routing_get_port_mixer,
10511 msm_routing_put_port_mixer),
10512 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10513 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10514 msm_routing_get_port_mixer,
10515 msm_routing_put_port_mixer),
10516 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10517 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10518 msm_routing_get_port_mixer,
10519 msm_routing_put_port_mixer),
10520 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10521 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10522 msm_routing_get_port_mixer,
10523 msm_routing_put_port_mixer),
10524 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10525 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10526 msm_routing_get_port_mixer,
10527 msm_routing_put_port_mixer),
10528 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10529 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10530 msm_routing_get_port_mixer,
10531 msm_routing_put_port_mixer),
10532 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10533 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10534 msm_routing_get_port_mixer,
10535 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010536 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10537 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10538 msm_routing_get_port_mixer,
10539 msm_routing_put_port_mixer),
10540 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10541 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10542 msm_routing_get_port_mixer,
10543 msm_routing_put_port_mixer),
10544 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10545 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10546 msm_routing_get_port_mixer,
10547 msm_routing_put_port_mixer),
10548 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10549 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10550 msm_routing_get_port_mixer,
10551 msm_routing_put_port_mixer),
10552};
10553
10554static const struct snd_kcontrol_new quin_tdm_rx_0_port_mixer_controls[] = {
10555 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10556 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10557 msm_routing_get_port_mixer,
10558 msm_routing_put_port_mixer),
10559 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10560 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10561 msm_routing_get_port_mixer,
10562 msm_routing_put_port_mixer),
10563 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10564 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10565 msm_routing_get_port_mixer,
10566 msm_routing_put_port_mixer),
10567 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10568 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10569 msm_routing_get_port_mixer,
10570 msm_routing_put_port_mixer),
10571 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10572 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10573 msm_routing_get_port_mixer,
10574 msm_routing_put_port_mixer),
10575 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10576 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10577 msm_routing_get_port_mixer,
10578 msm_routing_put_port_mixer),
10579 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10580 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10581 msm_routing_get_port_mixer,
10582 msm_routing_put_port_mixer),
10583 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10584 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10585 msm_routing_get_port_mixer,
10586 msm_routing_put_port_mixer),
10587 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10588 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10589 msm_routing_get_port_mixer,
10590 msm_routing_put_port_mixer),
10591 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10592 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10593 msm_routing_get_port_mixer,
10594 msm_routing_put_port_mixer),
10595 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10596 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10597 msm_routing_get_port_mixer,
10598 msm_routing_put_port_mixer),
10599 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10600 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10601 msm_routing_get_port_mixer,
10602 msm_routing_put_port_mixer),
10603 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10604 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10605 msm_routing_get_port_mixer,
10606 msm_routing_put_port_mixer),
10607 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10608 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10609 msm_routing_get_port_mixer,
10610 msm_routing_put_port_mixer),
10611 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10612 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10613 msm_routing_get_port_mixer,
10614 msm_routing_put_port_mixer),
10615 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10616 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10617 msm_routing_get_port_mixer,
10618 msm_routing_put_port_mixer),
10619 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10620 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10621 msm_routing_get_port_mixer,
10622 msm_routing_put_port_mixer),
10623 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10624 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10625 msm_routing_get_port_mixer,
10626 msm_routing_put_port_mixer),
10627 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10628 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10629 msm_routing_get_port_mixer,
10630 msm_routing_put_port_mixer),
10631 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10632 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10633 msm_routing_get_port_mixer,
10634 msm_routing_put_port_mixer),
10635};
10636
10637static const struct snd_kcontrol_new quin_tdm_rx_1_port_mixer_controls[] = {
10638 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10639 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10640 msm_routing_get_port_mixer,
10641 msm_routing_put_port_mixer),
10642 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10643 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10644 msm_routing_get_port_mixer,
10645 msm_routing_put_port_mixer),
10646 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10647 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10648 msm_routing_get_port_mixer,
10649 msm_routing_put_port_mixer),
10650 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10651 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10652 msm_routing_get_port_mixer,
10653 msm_routing_put_port_mixer),
10654 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10655 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10656 msm_routing_get_port_mixer,
10657 msm_routing_put_port_mixer),
10658 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10659 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10660 msm_routing_get_port_mixer,
10661 msm_routing_put_port_mixer),
10662 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10663 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10664 msm_routing_get_port_mixer,
10665 msm_routing_put_port_mixer),
10666 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10667 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10668 msm_routing_get_port_mixer,
10669 msm_routing_put_port_mixer),
10670 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10671 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10672 msm_routing_get_port_mixer,
10673 msm_routing_put_port_mixer),
10674 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10675 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10676 msm_routing_get_port_mixer,
10677 msm_routing_put_port_mixer),
10678 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10679 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10680 msm_routing_get_port_mixer,
10681 msm_routing_put_port_mixer),
10682 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10683 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10684 msm_routing_get_port_mixer,
10685 msm_routing_put_port_mixer),
10686 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10687 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10688 msm_routing_get_port_mixer,
10689 msm_routing_put_port_mixer),
10690 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10691 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10692 msm_routing_get_port_mixer,
10693 msm_routing_put_port_mixer),
10694 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10695 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10696 msm_routing_get_port_mixer,
10697 msm_routing_put_port_mixer),
10698 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10699 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10700 msm_routing_get_port_mixer,
10701 msm_routing_put_port_mixer),
10702 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10703 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10704 msm_routing_get_port_mixer,
10705 msm_routing_put_port_mixer),
10706 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10707 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10708 msm_routing_get_port_mixer,
10709 msm_routing_put_port_mixer),
10710 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10711 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10712 msm_routing_get_port_mixer,
10713 msm_routing_put_port_mixer),
10714 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10715 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10716 msm_routing_get_port_mixer,
10717 msm_routing_put_port_mixer),
10718};
10719
10720static const struct snd_kcontrol_new quin_tdm_rx_2_port_mixer_controls[] = {
10721 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10722 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10723 msm_routing_get_port_mixer,
10724 msm_routing_put_port_mixer),
10725 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10726 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10727 msm_routing_get_port_mixer,
10728 msm_routing_put_port_mixer),
10729 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10730 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10731 msm_routing_get_port_mixer,
10732 msm_routing_put_port_mixer),
10733 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10734 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10735 msm_routing_get_port_mixer,
10736 msm_routing_put_port_mixer),
10737 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10738 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10739 msm_routing_get_port_mixer,
10740 msm_routing_put_port_mixer),
10741 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10742 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10743 msm_routing_get_port_mixer,
10744 msm_routing_put_port_mixer),
10745 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10746 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10747 msm_routing_get_port_mixer,
10748 msm_routing_put_port_mixer),
10749 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10750 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10751 msm_routing_get_port_mixer,
10752 msm_routing_put_port_mixer),
10753 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10754 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10755 msm_routing_get_port_mixer,
10756 msm_routing_put_port_mixer),
10757 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10758 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10759 msm_routing_get_port_mixer,
10760 msm_routing_put_port_mixer),
10761 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10762 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10763 msm_routing_get_port_mixer,
10764 msm_routing_put_port_mixer),
10765 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10766 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10767 msm_routing_get_port_mixer,
10768 msm_routing_put_port_mixer),
10769 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10770 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10771 msm_routing_get_port_mixer,
10772 msm_routing_put_port_mixer),
10773 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10774 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10775 msm_routing_get_port_mixer,
10776 msm_routing_put_port_mixer),
10777 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10778 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10779 msm_routing_get_port_mixer,
10780 msm_routing_put_port_mixer),
10781 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10782 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10783 msm_routing_get_port_mixer,
10784 msm_routing_put_port_mixer),
10785 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10786 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10787 msm_routing_get_port_mixer,
10788 msm_routing_put_port_mixer),
10789 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10790 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10791 msm_routing_get_port_mixer,
10792 msm_routing_put_port_mixer),
10793 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10794 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10795 msm_routing_get_port_mixer,
10796 msm_routing_put_port_mixer),
10797 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10798 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10799 msm_routing_get_port_mixer,
10800 msm_routing_put_port_mixer),
10801};
10802
10803static const struct snd_kcontrol_new quin_tdm_rx_3_port_mixer_controls[] = {
10804 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10805 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10806 msm_routing_get_port_mixer,
10807 msm_routing_put_port_mixer),
10808 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10809 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10810 msm_routing_get_port_mixer,
10811 msm_routing_put_port_mixer),
10812 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10813 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10814 msm_routing_get_port_mixer,
10815 msm_routing_put_port_mixer),
10816 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10817 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10818 msm_routing_get_port_mixer,
10819 msm_routing_put_port_mixer),
10820 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10821 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10822 msm_routing_get_port_mixer,
10823 msm_routing_put_port_mixer),
10824 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10825 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10826 msm_routing_get_port_mixer,
10827 msm_routing_put_port_mixer),
10828 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10829 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10830 msm_routing_get_port_mixer,
10831 msm_routing_put_port_mixer),
10832 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10833 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10834 msm_routing_get_port_mixer,
10835 msm_routing_put_port_mixer),
10836 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10837 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10838 msm_routing_get_port_mixer,
10839 msm_routing_put_port_mixer),
10840 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10841 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10842 msm_routing_get_port_mixer,
10843 msm_routing_put_port_mixer),
10844 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10845 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10846 msm_routing_get_port_mixer,
10847 msm_routing_put_port_mixer),
10848 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10849 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10850 msm_routing_get_port_mixer,
10851 msm_routing_put_port_mixer),
10852 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10853 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10854 msm_routing_get_port_mixer,
10855 msm_routing_put_port_mixer),
10856 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10857 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10858 msm_routing_get_port_mixer,
10859 msm_routing_put_port_mixer),
10860 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10861 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10862 msm_routing_get_port_mixer,
10863 msm_routing_put_port_mixer),
10864 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10865 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10866 msm_routing_get_port_mixer,
10867 msm_routing_put_port_mixer),
10868 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10869 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10870 msm_routing_get_port_mixer,
10871 msm_routing_put_port_mixer),
10872 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10873 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10874 msm_routing_get_port_mixer,
10875 msm_routing_put_port_mixer),
10876 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10877 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10878 msm_routing_get_port_mixer,
10879 msm_routing_put_port_mixer),
10880 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10881 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10882 msm_routing_get_port_mixer,
10883 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010884};
10885
10886static const struct snd_kcontrol_new tert_mi2s_rx_port_mixer_controls[] = {
10887 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
10888 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
10889 msm_routing_put_port_mixer),
10890 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
10891 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
10892 msm_routing_put_port_mixer),
10893 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
10894 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
10895 msm_routing_put_port_mixer),
10896 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
10897 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
10898 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010899 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
10900 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
10901 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010902 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
10903 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
10904 msm_routing_put_port_mixer),
10905 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
10906 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
10907 msm_routing_put_port_mixer),
10908};
10909
10910static const struct snd_kcontrol_new sec_mi2s_rx_port_mixer_controls[] = {
10911 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
10912 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
10913 msm_routing_put_port_mixer),
10914 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
10915 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
10916 msm_routing_put_port_mixer),
10917 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
10918 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
10919 msm_routing_put_port_mixer),
10920 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
10921 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
10922 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010923 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
10924 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
10925 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010926 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
10927 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
10928 msm_routing_put_port_mixer),
10929 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
10930 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
10931 msm_routing_put_port_mixer),
10932 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
10933 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
10934 msm_routing_put_port_mixer),
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -080010935 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
10936 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
10937 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010938};
10939
10940static const struct snd_kcontrol_new lsm1_mixer_controls[] = {
10941 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
10942 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
10943 msm_routing_put_listen_mixer),
10944 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
10945 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
10946 msm_routing_put_listen_mixer),
10947 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
10948 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
10949 msm_routing_put_listen_mixer),
10950 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
10951 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
10952 msm_routing_put_listen_mixer),
10953 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
10954 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
10955 msm_routing_put_listen_mixer),
10956 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
10957 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
10958 msm_routing_put_listen_mixer),
10959 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
10960 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
10961 msm_routing_put_listen_mixer),
10962 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
10963 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
10964 msm_routing_put_listen_mixer),
10965};
10966
10967static const struct snd_kcontrol_new lsm2_mixer_controls[] = {
10968 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
10969 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
10970 msm_routing_put_listen_mixer),
10971 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
10972 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
10973 msm_routing_put_listen_mixer),
10974 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
10975 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
10976 msm_routing_put_listen_mixer),
10977 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
10978 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
10979 msm_routing_put_listen_mixer),
10980 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
10981 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
10982 msm_routing_put_listen_mixer),
10983 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
10984 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
10985 msm_routing_put_listen_mixer),
10986 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
10987 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
10988 msm_routing_put_listen_mixer),
10989 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
10990 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
10991 msm_routing_put_listen_mixer),
10992};
10993
10994static const struct snd_kcontrol_new lsm3_mixer_controls[] = {
10995 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
10996 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
10997 msm_routing_put_listen_mixer),
10998 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
10999 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11000 msm_routing_put_listen_mixer),
11001 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11002 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11003 msm_routing_put_listen_mixer),
11004 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11005 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11006 msm_routing_put_listen_mixer),
11007 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11008 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11009 msm_routing_put_listen_mixer),
11010 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11011 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11012 msm_routing_put_listen_mixer),
11013 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11014 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11015 msm_routing_put_listen_mixer),
11016 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11017 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11018 msm_routing_put_listen_mixer),
11019};
11020
11021static const struct snd_kcontrol_new lsm4_mixer_controls[] = {
11022 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11023 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11024 msm_routing_put_listen_mixer),
11025 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11026 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11027 msm_routing_put_listen_mixer),
11028 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11029 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11030 msm_routing_put_listen_mixer),
11031 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11032 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11033 msm_routing_put_listen_mixer),
11034 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11035 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11036 msm_routing_put_listen_mixer),
11037 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11038 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11039 msm_routing_put_listen_mixer),
11040 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11041 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11042 msm_routing_put_listen_mixer),
11043 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11044 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11045 msm_routing_put_listen_mixer),
11046};
11047
11048static const struct snd_kcontrol_new lsm5_mixer_controls[] = {
11049 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11050 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11051 msm_routing_put_listen_mixer),
11052 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11053 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11054 msm_routing_put_listen_mixer),
11055 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11056 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11057 msm_routing_put_listen_mixer),
11058 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11059 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11060 msm_routing_put_listen_mixer),
11061 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11062 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11063 msm_routing_put_listen_mixer),
11064 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11065 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11066 msm_routing_put_listen_mixer),
11067 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11068 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11069 msm_routing_put_listen_mixer),
11070 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11071 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11072 msm_routing_put_listen_mixer),
11073};
11074
11075static const struct snd_kcontrol_new lsm6_mixer_controls[] = {
11076 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11077 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11078 msm_routing_put_listen_mixer),
11079 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11080 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11081 msm_routing_put_listen_mixer),
11082 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11083 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11084 msm_routing_put_listen_mixer),
11085 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11086 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11087 msm_routing_put_listen_mixer),
11088 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11089 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11090 msm_routing_put_listen_mixer),
11091 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11092 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11093 msm_routing_put_listen_mixer),
11094 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11095 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11096 msm_routing_put_listen_mixer),
11097 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11098 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11099 msm_routing_put_listen_mixer),
11100};
11101
11102static const struct snd_kcontrol_new lsm7_mixer_controls[] = {
11103 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11104 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11105 msm_routing_put_listen_mixer),
11106 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11107 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11108 msm_routing_put_listen_mixer),
11109 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11110 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11111 msm_routing_put_listen_mixer),
11112 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11113 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11114 msm_routing_put_listen_mixer),
11115 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11116 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11117 msm_routing_put_listen_mixer),
11118 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11119 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11120 msm_routing_put_listen_mixer),
11121 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11122 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11123 msm_routing_put_listen_mixer),
11124 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11125 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11126 msm_routing_put_listen_mixer),
11127};
11128
11129static const struct snd_kcontrol_new lsm8_mixer_controls[] = {
11130 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11131 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11132 msm_routing_put_listen_mixer),
11133 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11134 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11135 msm_routing_put_listen_mixer),
11136 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11137 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11138 msm_routing_put_listen_mixer),
11139 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11140 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11141 msm_routing_put_listen_mixer),
11142 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11143 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11144 msm_routing_put_listen_mixer),
11145 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11146 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11147 msm_routing_put_listen_mixer),
11148 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11149 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11150 msm_routing_put_listen_mixer),
11151 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11152 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11153 msm_routing_put_listen_mixer),
11154};
11155
11156static const struct snd_kcontrol_new slim_fm_switch_mixer_controls =
11157 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11158 0, 1, 0, msm_routing_get_switch_mixer,
11159 msm_routing_put_switch_mixer);
11160
11161static const struct snd_kcontrol_new slim1_fm_switch_mixer_controls =
11162 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11163 0, 1, 0, msm_routing_get_switch_mixer,
11164 msm_routing_put_switch_mixer);
11165
11166static const struct snd_kcontrol_new slim3_fm_switch_mixer_controls =
11167 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11168 0, 1, 0, msm_routing_get_switch_mixer,
11169 msm_routing_put_switch_mixer);
11170
11171static const struct snd_kcontrol_new slim4_fm_switch_mixer_controls =
11172 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11173 0, 1, 0, msm_routing_get_switch_mixer,
11174 msm_routing_put_switch_mixer);
11175
11176static const struct snd_kcontrol_new slim6_fm_switch_mixer_controls =
11177 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11178 0, 1, 0, msm_routing_get_switch_mixer,
11179 msm_routing_put_switch_mixer);
11180
11181static const struct snd_kcontrol_new pcm_rx_switch_mixer_controls =
11182 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11183 0, 1, 0, msm_routing_get_fm_pcmrx_switch_mixer,
11184 msm_routing_put_fm_pcmrx_switch_mixer);
11185
11186static const struct snd_kcontrol_new int0_mi2s_rx_switch_mixer_controls =
11187 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11188 0, 1, 0, msm_routing_get_int0_mi2s_switch_mixer,
11189 msm_routing_put_int0_mi2s_switch_mixer);
11190
11191static const struct snd_kcontrol_new int4_mi2s_rx_switch_mixer_controls =
11192 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11193 0, 1, 0, msm_routing_get_int4_mi2s_switch_mixer,
11194 msm_routing_put_int4_mi2s_switch_mixer);
11195
11196static const struct snd_kcontrol_new pri_mi2s_rx_switch_mixer_controls =
11197 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11198 0, 1, 0, msm_routing_get_pri_mi2s_switch_mixer,
11199 msm_routing_put_pri_mi2s_switch_mixer);
11200
11201static const struct snd_kcontrol_new sec_mi2s_rx_switch_mixer_controls =
11202 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11203 0, 1, 0, msm_routing_get_sec_mi2s_switch_mixer,
11204 msm_routing_put_sec_mi2s_switch_mixer);
11205
11206static const struct snd_kcontrol_new tert_mi2s_rx_switch_mixer_controls =
11207 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11208 0, 1, 0, msm_routing_get_tert_mi2s_switch_mixer,
11209 msm_routing_put_tert_mi2s_switch_mixer);
11210
11211static const struct snd_kcontrol_new quat_mi2s_rx_switch_mixer_controls =
11212 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11213 0, 1, 0, msm_routing_get_quat_mi2s_switch_mixer,
11214 msm_routing_put_quat_mi2s_switch_mixer);
11215
Rohit Kumara5077932017-09-10 22:05:05 +053011216static const struct snd_kcontrol_new quin_mi2s_rx_switch_mixer_controls =
11217 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11218 0, 1, 0, msm_routing_get_quin_mi2s_switch_mixer,
11219 msm_routing_put_quin_mi2s_switch_mixer);
11220
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011221static const struct snd_kcontrol_new hfp_pri_aux_switch_mixer_controls =
11222 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11223 0, 1, 0, msm_routing_get_hfp_switch_mixer,
11224 msm_routing_put_hfp_switch_mixer);
11225
11226static const struct snd_kcontrol_new hfp_aux_switch_mixer_controls =
11227 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11228 0, 1, 0, msm_routing_get_hfp_switch_mixer,
11229 msm_routing_put_hfp_switch_mixer);
11230
11231static const struct snd_kcontrol_new hfp_int_switch_mixer_controls =
11232 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11233 0, 1, 0, msm_routing_get_hfp_switch_mixer,
11234 msm_routing_put_hfp_switch_mixer);
11235
11236static const struct snd_kcontrol_new hfp_slim7_switch_mixer_controls =
11237 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11238 0, 1, 0, msm_routing_get_hfp_switch_mixer,
11239 msm_routing_put_hfp_switch_mixer);
11240
11241static const struct snd_kcontrol_new usb_switch_mixer_controls =
11242 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11243 0, 1, 0, msm_routing_get_usb_switch_mixer,
11244 msm_routing_put_usb_switch_mixer);
11245
11246static const struct soc_enum lsm_port_enum =
11247 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(lsm_port_text), lsm_port_text);
11248
11249static const char * const lsm_func_text[] = {
11250 "None", "AUDIO", "BEACON", "ULTRASOUND", "SWAUDIO",
11251};
11252static const struct soc_enum lsm_func_enum =
11253 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(lsm_func_text), lsm_func_text);
11254
11255static const struct snd_kcontrol_new lsm_controls[] = {
11256 /* kcontrol of lsm_function */
11257 SOC_ENUM_EXT(SLIMBUS_0_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11258 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11259 SOC_ENUM_EXT(SLIMBUS_1_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11260 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11261 SOC_ENUM_EXT(SLIMBUS_2_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11262 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11263 SOC_ENUM_EXT(SLIMBUS_3_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11264 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11265 SOC_ENUM_EXT(SLIMBUS_4_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11266 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11267 SOC_ENUM_EXT(SLIMBUS_5_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11268 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11269 SOC_ENUM_EXT(TERT_MI2S_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11270 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11271 SOC_ENUM_EXT(QUAT_MI2S_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11272 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11273 SOC_ENUM_EXT(INT3_MI2S_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11274 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11275 /* kcontrol of lsm_port */
11276 SOC_ENUM_EXT("LSM1 Port", lsm_port_enum,
11277 msm_routing_lsm_port_get,
11278 msm_routing_lsm_port_put),
11279 SOC_ENUM_EXT("LSM2 Port", lsm_port_enum,
11280 msm_routing_lsm_port_get,
11281 msm_routing_lsm_port_put),
11282 SOC_ENUM_EXT("LSM3 Port", lsm_port_enum,
11283 msm_routing_lsm_port_get,
11284 msm_routing_lsm_port_put),
11285 SOC_ENUM_EXT("LSM4 Port", lsm_port_enum,
11286 msm_routing_lsm_port_get,
11287 msm_routing_lsm_port_put),
11288 SOC_ENUM_EXT("LSM5 Port", lsm_port_enum,
11289 msm_routing_lsm_port_get,
11290 msm_routing_lsm_port_put),
11291 SOC_ENUM_EXT("LSM6 Port", lsm_port_enum,
11292 msm_routing_lsm_port_get,
11293 msm_routing_lsm_port_put),
11294 SOC_ENUM_EXT("LSM7 Port", lsm_port_enum,
11295 msm_routing_lsm_port_get,
11296 msm_routing_lsm_port_put),
11297 SOC_ENUM_EXT("LSM8 Port", lsm_port_enum,
11298 msm_routing_lsm_port_get,
11299 msm_routing_lsm_port_put),
11300};
11301
11302static const char * const aanc_slim_0_rx_text[] = {
11303 "ZERO", "SLIMBUS_0_TX", "SLIMBUS_1_TX", "SLIMBUS_2_TX", "SLIMBUS_3_TX",
11304 "SLIMBUS_4_TX", "SLIMBUS_5_TX", "SLIMBUS_6_TX"
11305};
11306
11307static const struct soc_enum aanc_slim_0_rx_enum =
11308 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(aanc_slim_0_rx_text),
11309 aanc_slim_0_rx_text);
11310
11311static const struct snd_kcontrol_new aanc_slim_0_rx_mux[] = {
11312 SOC_ENUM_EXT("AANC_SLIM_0_RX MUX", aanc_slim_0_rx_enum,
11313 msm_routing_slim_0_rx_aanc_mux_get,
11314 msm_routing_slim_0_rx_aanc_mux_put)
11315};
11316
11317static int msm_routing_get_stereo_to_custom_stereo_control(
11318 struct snd_kcontrol *kcontrol,
11319 struct snd_ctl_elem_value *ucontrol)
11320{
11321 ucontrol->value.integer.value[0] = is_custom_stereo_on;
11322 return 0;
11323}
11324
11325static int msm_routing_put_stereo_to_custom_stereo_control(
11326 struct snd_kcontrol *kcontrol,
11327 struct snd_ctl_elem_value *ucontrol)
11328{
11329 int flag = 0, i = 0, rc = 0, idx = 0;
11330 int be_index = 0, port_id, topo_id;
11331 unsigned int session_id = 0;
11332 uint16_t op_FL_ip_FL_weight = 0;
11333 uint16_t op_FL_ip_FR_weight = 0;
11334 uint16_t op_FR_ip_FL_weight = 0;
11335 uint16_t op_FR_ip_FR_weight = 0;
11336
11337 flag = ucontrol->value.integer.value[0];
11338 pr_debug("%s E flag %d\n", __func__, flag);
11339
11340 if ((is_custom_stereo_on && flag) || (!is_custom_stereo_on && !flag)) {
11341 pr_err("%s: is_custom_stereo_on %d, flag %d\n",
11342 __func__, is_custom_stereo_on, flag);
11343 return 0;
11344 }
11345 is_custom_stereo_on = flag ? true : false;
11346 pr_debug("%s:is_custom_stereo_on %d\n", __func__, is_custom_stereo_on);
11347 for (be_index = 0; be_index < MSM_BACKEND_DAI_MAX; be_index++) {
11348 port_id = msm_bedais[be_index].port_id;
11349 if (!msm_bedais[be_index].active)
11350 continue;
11351 if ((port_id != SLIMBUS_0_RX) &&
11352 (port_id != RT_PROXY_PORT_001_RX) &&
11353 (port_id != AFE_PORT_ID_PRIMARY_MI2S_RX) &&
11354 (port_id != AFE_PORT_ID_INT4_MI2S_RX))
11355 continue;
11356
11357 for_each_set_bit(i, &msm_bedais[be_index].fe_sessions[0],
11358 MSM_FRONTEND_DAI_MM_SIZE) {
11359 if (fe_dai_map[i][SESSION_TYPE_RX].perf_mode !=
11360 LEGACY_PCM_MODE)
11361 goto skip_send_custom_stereo;
11362 session_id =
11363 fe_dai_map[i][SESSION_TYPE_RX].strm_id;
11364 if (is_custom_stereo_on) {
11365 op_FL_ip_FL_weight =
11366 Q14_GAIN_ZERO_POINT_FIVE;
11367 op_FL_ip_FR_weight =
11368 Q14_GAIN_ZERO_POINT_FIVE;
11369 op_FR_ip_FL_weight =
11370 Q14_GAIN_ZERO_POINT_FIVE;
11371 op_FR_ip_FR_weight =
11372 Q14_GAIN_ZERO_POINT_FIVE;
11373 } else {
11374 op_FL_ip_FL_weight = Q14_GAIN_UNITY;
11375 op_FL_ip_FR_weight = 0;
11376 op_FR_ip_FL_weight = 0;
11377 op_FR_ip_FR_weight = Q14_GAIN_UNITY;
11378 }
11379 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++) {
11380 unsigned long copp =
11381 session_copp_map[i]
11382 [SESSION_TYPE_RX][be_index];
11383 if (!test_bit(idx, &copp))
11384 goto skip_send_custom_stereo;
11385 topo_id = adm_get_topology_for_port_copp_idx(
11386 msm_bedais[be_index].port_id, idx);
11387 if (topo_id < 0)
11388 pr_debug("%s:Err:custom stereo topo %d",
11389 __func__, topo_id);
11390 pr_debug("idx %d\n", idx);
11391 if (topo_id == DS2_ADM_COPP_TOPOLOGY_ID)
11392 rc = msm_ds2_dap_set_custom_stereo_onoff
11393 (msm_bedais[be_index].port_id,
11394 idx, is_custom_stereo_on);
11395 else if (topo_id == DOLBY_ADM_COPP_TOPOLOGY_ID)
11396 rc = dolby_dap_set_custom_stereo_onoff(
11397 msm_bedais[be_index].port_id,
11398 idx, is_custom_stereo_on);
11399 else
11400 rc = msm_qti_pp_send_stereo_to_custom_stereo_cmd
11401 (msm_bedais[be_index].port_id,
11402 idx, session_id,
11403 op_FL_ip_FL_weight,
11404 op_FL_ip_FR_weight,
11405 op_FR_ip_FL_weight,
11406 op_FR_ip_FR_weight);
11407 if (rc < 0)
11408skip_send_custom_stereo:
11409 pr_err("%s: err setting custom stereo\n",
11410 __func__);
11411 }
11412
11413 }
11414 }
11415 return 0;
11416}
11417
11418static const struct snd_kcontrol_new stereo_to_custom_stereo_controls[] = {
11419 SOC_SINGLE_EXT("Set Custom Stereo OnOff", SND_SOC_NOPM, 0,
11420 1, 0, msm_routing_get_stereo_to_custom_stereo_control,
11421 msm_routing_put_stereo_to_custom_stereo_control),
11422};
11423
11424static int msm_routing_get_app_type_cfg_control(struct snd_kcontrol *kcontrol,
11425 struct snd_ctl_elem_value *ucontrol)
11426{
11427 return 0;
11428}
11429
11430static int msm_routing_put_app_type_cfg_control(struct snd_kcontrol *kcontrol,
11431 struct snd_ctl_elem_value *ucontrol)
11432{
11433 int i = 0, j;
11434 int num_app_types = ucontrol->value.integer.value[i++];
11435
11436 pr_debug("%s\n", __func__);
11437
11438 memset(app_type_cfg, 0, MAX_APP_TYPES*
11439 sizeof(struct msm_pcm_routing_app_type_data));
11440 if (num_app_types > MAX_APP_TYPES) {
11441 pr_err("%s: number of app types exceed the max supported\n",
11442 __func__);
11443 return -EINVAL;
11444 }
11445 for (j = 0; j < num_app_types; j++) {
11446 app_type_cfg[j].app_type =
11447 ucontrol->value.integer.value[i++];
11448 app_type_cfg[j].sample_rate =
11449 ucontrol->value.integer.value[i++];
11450 app_type_cfg[j].bit_width =
11451 ucontrol->value.integer.value[i++];
11452 }
11453
11454 return 0;
11455}
11456
11457static int msm_routing_put_app_type_gain_control(struct snd_kcontrol *kcontrol,
11458 struct snd_ctl_elem_value *ucontrol)
11459{
11460 int j, fe_id, be_id, port_type;
11461 int ret = 0;
11462 unsigned long copp;
11463 struct msm_pcm_routing_bdai_data *bedai;
11464 int dir = ucontrol->value.integer.value[0] ? SESSION_TYPE_TX :
11465 SESSION_TYPE_RX;
11466 int app_type = ucontrol->value.integer.value[1];
11467 int gain = (ucontrol->value.integer.value[2] +
11468 ucontrol->value.integer.value[3])/2;
11469
11470 port_type = (dir == SESSION_TYPE_RX) ? MSM_AFE_PORT_TYPE_RX :
11471 MSM_AFE_PORT_TYPE_TX;
11472
11473 mutex_lock(&routing_lock);
11474 for (be_id = 0; be_id < MSM_BACKEND_DAI_MAX; be_id++) {
11475 if (is_be_dai_extproc(be_id))
11476 continue;
11477
11478 bedai = &msm_bedais[be_id];
11479 if (afe_get_port_type(bedai->port_id) != port_type)
11480 continue;
11481
11482 if (!bedai->active)
11483 continue;
11484
11485 for (fe_id = 0; fe_id < MSM_FRONTEND_DAI_MAX; fe_id++) {
11486 if (!test_bit(fe_id, &bedai->fe_sessions[0]))
11487 continue;
11488
11489 if (app_type !=
11490 fe_dai_app_type_cfg[fe_id][dir][be_id].app_type)
11491 continue;
11492
11493 copp = session_copp_map[fe_id][dir][be_id];
11494 for (j = 0; j < MAX_COPPS_PER_PORT; j++) {
11495 if (!test_bit(j, &copp))
11496 continue;
11497 ret |= adm_set_volume(bedai->port_id, j, gain);
11498 }
11499 }
11500 }
11501 mutex_unlock(&routing_lock);
11502 return ret ? -EINVAL : 0;
11503}
11504
11505static const struct snd_kcontrol_new app_type_cfg_controls[] = {
11506 SOC_SINGLE_MULTI_EXT("App Type Config", SND_SOC_NOPM, 0,
11507 0xFFFFFFFF, 0, 128, msm_routing_get_app_type_cfg_control,
11508 msm_routing_put_app_type_cfg_control),
11509 SOC_SINGLE_MULTI_EXT("App Type Gain", SND_SOC_NOPM, 0,
11510 0x2000, 0, 4, NULL, msm_routing_put_app_type_gain_control)
11511};
11512
Vikram Pandurangaee9c03a2017-09-07 15:06:17 -070011513static int msm_routing_put_module_cfg_control(struct snd_kcontrol *kcontrol,
11514 struct snd_ctl_elem_value *ucontrol)
11515{
11516 int copp_idx, fe_id, be_id, port_type;
11517 int ret = 0;
11518 unsigned long copp;
11519 struct msm_pcm_routing_bdai_data *bedai;
11520 char *param_data = NULL;
11521 uint32_t *update_param_data = NULL;
11522 uint32_t param_size = sizeof(uint32_t) +
11523 sizeof(struct adm_param_data_v5);
11524 int dir = ucontrol->value.integer.value[0] ? SESSION_TYPE_TX :
11525 SESSION_TYPE_RX;
11526 int app_type = ucontrol->value.integer.value[1];
11527 int module_id = ucontrol->value.integer.value[2];
11528 int instance_id = ucontrol->value.integer.value[3];
11529 int param_id = ucontrol->value.integer.value[4];
11530 int param_value = ucontrol->value.integer.value[5];
11531
11532 port_type = (dir == SESSION_TYPE_RX) ? MSM_AFE_PORT_TYPE_RX :
11533 MSM_AFE_PORT_TYPE_TX;
11534 pr_debug("%s app_type:%d mod_id:%d instance_id:%d param_id:%d value:%d\n",
11535 __func__, app_type, module_id,
11536 instance_id, param_id, param_value);
11537
11538 param_data = kzalloc(param_size, GFP_KERNEL);
11539 if (!param_data)
11540 return -ENOMEM;
11541
11542 update_param_data = (uint32_t *)param_data;
11543 *update_param_data++ = module_id;
11544 *update_param_data++ = param_id;
11545 *update_param_data++ = sizeof(uint32_t);
11546 *update_param_data++ = param_value;
11547
11548 mutex_lock(&routing_lock);
11549 for (be_id = 0; be_id < MSM_BACKEND_DAI_MAX; be_id++) {
11550 if (is_be_dai_extproc(be_id))
11551 continue;
11552
11553 bedai = &msm_bedais[be_id];
11554 if (afe_get_port_type(bedai->port_id) != port_type)
11555 continue;
11556
11557 if (!bedai->active)
11558 continue;
11559
11560 for (fe_id = 0; fe_id < MSM_FRONTEND_DAI_MAX; fe_id++) {
11561 if (!test_bit(fe_id, &bedai->fe_sessions[0]))
11562 continue;
11563
11564 if (app_type !=
11565 fe_dai_app_type_cfg[fe_id][dir][be_id].app_type)
11566 continue;
11567
11568 copp = session_copp_map[fe_id][dir][be_id];
11569 for (copp_idx = 0; copp_idx < MAX_COPPS_PER_PORT;
11570 copp_idx++) {
11571 if (!test_bit(copp_idx, &copp))
11572 continue;
11573
11574 ret = adm_send_params_v5(bedai->port_id,
11575 copp_idx,
11576 param_data,
11577 param_size);
11578 if (ret) {
11579 pr_err("%s: Setting param failed with err=%d\n",
11580 __func__, ret);
11581 ret = -EINVAL;
11582 goto done;
11583 }
11584 }
11585 }
11586 }
11587done:
11588 mutex_unlock(&routing_lock);
11589 kfree(param_data);
11590 return ret;
11591}
11592
11593static const struct snd_kcontrol_new module_cfg_controls[] = {
11594 SOC_SINGLE_MULTI_EXT("Audio Effect", SND_SOC_NOPM, 0,
11595 0x2000, 0, 6, NULL, msm_routing_put_module_cfg_control)
11596};
11597
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011598static int msm_routing_get_lsm_app_type_cfg_control(
11599 struct snd_kcontrol *kcontrol,
11600 struct snd_ctl_elem_value *ucontrol)
11601{
11602 return 0;
11603}
11604
11605static int msm_routing_put_lsm_app_type_cfg_control(
11606 struct snd_kcontrol *kcontrol,
11607 struct snd_ctl_elem_value *ucontrol)
11608{
11609 int i = 0, j;
11610 int num_app_types = ucontrol->value.integer.value[i++];
11611
11612 memset(lsm_app_type_cfg, 0, MAX_APP_TYPES*
11613 sizeof(struct msm_pcm_routing_app_type_data));
11614 if (num_app_types > MAX_APP_TYPES) {
11615 pr_err("%s: number of app types exceed the max supported\n",
11616 __func__);
11617 return -EINVAL;
11618 }
11619 for (j = 0; j < num_app_types; j++) {
11620 lsm_app_type_cfg[j].app_type =
11621 ucontrol->value.integer.value[i++];
11622 lsm_app_type_cfg[j].sample_rate =
11623 ucontrol->value.integer.value[i++];
11624 lsm_app_type_cfg[j].bit_width =
11625 ucontrol->value.integer.value[i++];
11626 }
11627
11628 return 0;
11629}
11630
11631static const struct snd_kcontrol_new lsm_app_type_cfg_controls[] = {
11632 SOC_SINGLE_MULTI_EXT("Listen App Type Config", SND_SOC_NOPM, 0,
11633 0xFFFFFFFF, 0, 128, msm_routing_get_lsm_app_type_cfg_control,
11634 msm_routing_put_lsm_app_type_cfg_control),
11635};
11636
11637static int msm_routing_get_use_ds1_or_ds2_control(
11638 struct snd_kcontrol *kcontrol,
11639 struct snd_ctl_elem_value *ucontrol)
11640{
11641 ucontrol->value.integer.value[0] = is_ds2_on;
11642 return 0;
11643}
11644
11645static int msm_routing_put_use_ds1_or_ds2_control(
11646 struct snd_kcontrol *kcontrol,
11647 struct snd_ctl_elem_value *ucontrol)
11648{
11649 is_ds2_on = ucontrol->value.integer.value[0];
11650 return 0;
11651}
11652
11653static const struct snd_kcontrol_new use_ds1_or_ds2_controls[] = {
11654 SOC_SINGLE_EXT("DS2 OnOff", SND_SOC_NOPM, 0,
11655 1, 0, msm_routing_get_use_ds1_or_ds2_control,
11656 msm_routing_put_use_ds1_or_ds2_control),
11657};
11658
11659int msm_routing_get_rms_value_control(struct snd_kcontrol *kcontrol,
11660 struct snd_ctl_elem_value *ucontrol) {
11661 int rc = 0;
11662 int be_idx = 0;
11663 char *param_value;
11664 int *update_param_value;
11665 uint32_t param_length = sizeof(uint32_t);
11666 uint32_t param_payload_len = RMS_PAYLOAD_LEN * sizeof(uint32_t);
11667
11668 param_value = kzalloc(param_length + param_payload_len, GFP_KERNEL);
11669 if (!param_value)
11670 return -ENOMEM;
11671
11672 for (be_idx = 0; be_idx < MSM_BACKEND_DAI_MAX; be_idx++)
11673 if (msm_bedais[be_idx].port_id == SLIMBUS_0_TX)
11674 break;
11675 if ((be_idx < MSM_BACKEND_DAI_MAX) && msm_bedais[be_idx].active) {
11676 rc = adm_get_params(SLIMBUS_0_TX, 0,
11677 RMS_MODULEID_APPI_PASSTHRU,
11678 RMS_PARAM_FIRST_SAMPLE,
11679 param_length + param_payload_len,
11680 param_value);
11681 if (rc) {
11682 pr_err("%s: get parameters failed:%d\n", __func__, rc);
11683 kfree(param_value);
11684 return -EINVAL;
11685 }
11686 update_param_value = (int *)param_value;
11687 ucontrol->value.integer.value[0] = update_param_value[0];
11688
11689 pr_debug("%s: FROM DSP value[0] 0x%x\n",
11690 __func__, update_param_value[0]);
11691 }
11692 kfree(param_value);
11693 return 0;
11694}
11695
11696static int msm_voc_session_id_put(struct snd_kcontrol *kcontrol,
11697 struct snd_ctl_elem_value *ucontrol)
11698{
11699 voc_session_id = ucontrol->value.integer.value[0];
11700
11701 pr_debug("%s: voc_session_id=%u\n", __func__, voc_session_id);
11702
11703 return 0;
11704}
11705
11706static int msm_voc_session_id_get(struct snd_kcontrol *kcontrol,
11707 struct snd_ctl_elem_value *ucontrol)
11708{
11709 ucontrol->value.integer.value[0] = voc_session_id;
11710
11711 return 0;
11712}
11713
11714static struct snd_kcontrol_new msm_voc_session_controls[] = {
11715 SOC_SINGLE_MULTI_EXT("Voc VSID", SND_SOC_NOPM, 0,
11716 0xFFFFFFFF, 0, 1, msm_voc_session_id_get,
11717 msm_voc_session_id_put),
11718};
11719
11720static int msm_sound_focus_info(struct snd_kcontrol *kcontrol,
11721 struct snd_ctl_elem_info *uinfo)
11722{
11723 uinfo->type = SNDRV_CTL_ELEM_TYPE_BYTES;
11724 uinfo->count = sizeof(struct sound_focus_param);
11725
11726 return 0;
11727}
11728
11729static int msm_voice_sound_focus_put(struct snd_kcontrol *kcontrol,
11730 struct snd_ctl_elem_value *ucontrol)
11731{
11732 int ret = 0;
11733 struct sound_focus_param soundFocusData;
11734
11735 memcpy((void *)&soundFocusData, ucontrol->value.bytes.data,
11736 sizeof(struct sound_focus_param));
11737 ret = voc_set_sound_focus(soundFocusData);
11738 if (ret) {
11739 pr_err("%s: Error setting Sound Focus Params, err=%d\n",
11740 __func__, ret);
11741
11742 ret = -EINVAL;
11743 }
11744
11745 return ret;
11746}
11747
11748static int msm_voice_sound_focus_get(struct snd_kcontrol *kcontrol,
11749 struct snd_ctl_elem_value *ucontrol)
11750{
11751 int ret = 0;
11752 struct sound_focus_param soundFocusData;
11753
11754 memset(&soundFocusData, 0, sizeof(struct sound_focus_param));
11755
11756 ret = voc_get_sound_focus(&soundFocusData);
11757 if (ret) {
11758 pr_err("%s: Error getting Sound Focus Params, err=%d\n",
11759 __func__, ret);
11760
11761 ret = -EINVAL;
11762 goto done;
11763 }
11764 memcpy(ucontrol->value.bytes.data, (void *)&soundFocusData,
11765 sizeof(struct sound_focus_param));
11766
11767done:
11768 return ret;
11769}
11770
11771static int msm_source_tracking_info(struct snd_kcontrol *kcontrol,
11772 struct snd_ctl_elem_info *uinfo)
11773{
11774 uinfo->type = SNDRV_CTL_ELEM_TYPE_BYTES;
11775 uinfo->count = sizeof(struct source_tracking_param);
11776
11777 return 0;
11778}
11779
11780static int msm_voice_source_tracking_get(struct snd_kcontrol *kcontrol,
11781 struct snd_ctl_elem_value *ucontrol)
11782{
11783 int ret = 0;
11784 struct source_tracking_param sourceTrackingData;
11785
11786 memset(&sourceTrackingData, 0, sizeof(struct source_tracking_param));
11787
11788 ret = voc_get_source_tracking(&sourceTrackingData);
11789 if (ret) {
11790 pr_err("%s: Error getting Source Tracking Params, err=%d\n",
11791 __func__, ret);
11792
11793 ret = -EINVAL;
11794 goto done;
11795 }
11796 memcpy(ucontrol->value.bytes.data, (void *)&sourceTrackingData,
11797 sizeof(struct source_tracking_param));
11798
11799done:
11800 return ret;
11801}
11802
11803static int msm_audio_get_copp_idx_from_port_id(int port_id, int session_type,
11804 int *copp_idx)
11805{
11806 int i, idx, be_idx;
11807 int ret = 0;
11808 unsigned long copp;
11809
11810 pr_debug("%s: Enter, port_id=%d\n", __func__, port_id);
11811
11812 ret = q6audio_validate_port(port_id);
11813 if (ret < 0) {
11814 pr_err("%s: port validation failed id 0x%x ret %d\n",
11815 __func__, port_id, ret);
11816
11817 ret = -EINVAL;
11818 goto done;
11819 }
11820
11821 for (be_idx = 0; be_idx < MSM_BACKEND_DAI_MAX; be_idx++) {
11822 if (msm_bedais[be_idx].port_id == port_id)
11823 break;
11824 }
11825 if (be_idx >= MSM_BACKEND_DAI_MAX) {
11826 pr_err("%s: Invalid be id %d\n", __func__, be_idx);
11827
11828 ret = -EINVAL;
11829 goto done;
11830 }
11831
11832 for_each_set_bit(i, &msm_bedais[be_idx].fe_sessions[0],
11833 MSM_FRONTEND_DAI_MM_SIZE) {
11834 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++) {
11835 copp = session_copp_map[i]
11836 [session_type][be_idx];
11837 if (test_bit(idx, &copp))
11838 break;
11839 }
11840 if (idx >= MAX_COPPS_PER_PORT)
11841 continue;
11842 else
11843 break;
11844 }
11845 if (i >= MSM_FRONTEND_DAI_MM_SIZE) {
11846 pr_err("%s: Invalid FE, exiting\n", __func__);
11847
11848 ret = -EINVAL;
11849 goto done;
11850 }
11851 *copp_idx = idx;
11852 pr_debug("%s: copp_idx=%d\n", __func__, *copp_idx);
11853
11854done:
11855 return ret;
11856}
11857
11858static int msm_audio_sound_focus_derive_port_id(struct snd_kcontrol *kcontrol,
11859 const char *prefix, int *port_id)
11860{
11861 int ret = 0;
11862
11863 pr_debug("%s: Enter, prefix:%s\n", __func__, prefix);
11864
11865 /*
11866 * Mixer control name will be like "Sound Focus Audio Tx SLIMBUS_0"
11867 * where the prefix is "Sound Focus Audio Tx ". Skip the prefix
11868 * and compare the string with the backend name to derive the port id.
11869 */
11870 if (!strcmp(kcontrol->id.name + strlen(prefix),
11871 "SLIMBUS_0")) {
11872 *port_id = SLIMBUS_0_TX;
11873 } else if (!strcmp(kcontrol->id.name + strlen(prefix),
11874 "TERT_MI2S")) {
11875 *port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
11876 } else if (!strcmp(kcontrol->id.name + strlen(prefix),
11877 "INT3_MI2S")) {
11878 *port_id = AFE_PORT_ID_INT3_MI2S_TX;
11879 } else {
11880 pr_err("%s: mixer ctl name=%s, could not derive valid port id\n",
11881 __func__, kcontrol->id.name);
11882
11883 ret = -EINVAL;
11884 goto done;
11885 }
11886 pr_debug("%s: mixer ctl name=%s, derived port_id=%d\n",
11887 __func__, kcontrol->id.name, *port_id);
11888
11889done:
11890 return ret;
11891}
11892
11893static int msm_audio_sound_focus_put(struct snd_kcontrol *kcontrol,
11894 struct snd_ctl_elem_value *ucontrol)
11895{
11896 int ret = 0;
11897 struct sound_focus_param soundFocusData;
11898 int port_id, copp_idx;
11899
11900 ret = msm_audio_sound_focus_derive_port_id(kcontrol,
11901 "Sound Focus Audio Tx ", &port_id);
11902 if (ret != 0) {
11903 pr_err("%s: Error in deriving port id, err=%d\n",
11904 __func__, ret);
11905
11906 ret = -EINVAL;
11907 goto done;
11908 }
11909
11910 ret = msm_audio_get_copp_idx_from_port_id(port_id, SESSION_TYPE_TX,
11911 &copp_idx);
11912 if (ret) {
11913 pr_err("%s: Could not get copp idx for port_id=%d\n",
11914 __func__, port_id);
11915
11916 ret = -EINVAL;
11917 goto done;
11918 }
11919
11920 memcpy((void *)&soundFocusData, ucontrol->value.bytes.data,
11921 sizeof(struct sound_focus_param));
11922
11923 ret = adm_set_sound_focus(port_id, copp_idx, soundFocusData);
11924 if (ret) {
11925 pr_err("%s: Error setting Sound Focus Params, err=%d\n",
11926 __func__, ret);
11927
11928 ret = -EINVAL;
11929 goto done;
11930 }
11931
11932done:
11933 return ret;
11934}
11935
11936static int msm_audio_sound_focus_get(struct snd_kcontrol *kcontrol,
11937 struct snd_ctl_elem_value *ucontrol)
11938{
11939 int ret = 0;
11940 struct sound_focus_param soundFocusData;
11941 int port_id, copp_idx;
11942
11943 ret = msm_audio_sound_focus_derive_port_id(kcontrol,
11944 "Sound Focus Audio Tx ", &port_id);
11945 if (ret) {
11946 pr_err("%s: Error in deriving port id, err=%d\n",
11947 __func__, ret);
11948
11949 ret = -EINVAL;
11950 goto done;
11951 }
11952
11953 ret = msm_audio_get_copp_idx_from_port_id(port_id, SESSION_TYPE_TX,
11954 &copp_idx);
11955 if (ret) {
11956 pr_err("%s: Could not get copp idx for port_id=%d\n",
11957 __func__, port_id);
11958
11959 ret = -EINVAL;
11960 goto done;
11961 }
11962
11963 ret = adm_get_sound_focus(port_id, copp_idx, &soundFocusData);
11964 if (ret) {
11965 pr_err("%s: Error getting Sound Focus Params, err=%d\n",
11966 __func__, ret);
11967
11968 ret = -EINVAL;
11969 goto done;
11970 }
11971
11972 memcpy(ucontrol->value.bytes.data, (void *)&soundFocusData,
11973 sizeof(struct sound_focus_param));
11974
11975done:
11976 return ret;
11977}
11978
11979static int msm_audio_source_tracking_get(struct snd_kcontrol *kcontrol,
11980 struct snd_ctl_elem_value *ucontrol)
11981{
11982 int ret = 0;
11983 struct source_tracking_param sourceTrackingData;
11984 int port_id, copp_idx;
11985
11986 ret = msm_audio_sound_focus_derive_port_id(kcontrol,
11987 "Source Tracking Audio Tx ", &port_id);
11988 if (ret) {
11989 pr_err("%s: Error in deriving port id, err=%d\n",
11990 __func__, ret);
11991
11992 ret = -EINVAL;
11993 goto done;
11994 }
11995
11996 ret = msm_audio_get_copp_idx_from_port_id(port_id, SESSION_TYPE_TX,
11997 &copp_idx);
11998 if (ret) {
11999 pr_err("%s: Could not get copp idx for port_id=%d\n",
12000 __func__, port_id);
12001
12002 ret = -EINVAL;
12003 goto done;
12004 }
12005
12006 ret = adm_get_source_tracking(port_id, copp_idx, &sourceTrackingData);
12007 if (ret) {
12008 pr_err("%s: Error getting Source Tracking Params, err=%d\n",
12009 __func__, ret);
12010
12011 ret = -EINVAL;
12012 goto done;
12013 }
12014
12015 memcpy(ucontrol->value.bytes.data, (void *)&sourceTrackingData,
12016 sizeof(struct source_tracking_param));
12017
12018done:
12019 return ret;
12020}
12021
12022static const struct snd_kcontrol_new msm_source_tracking_controls[] = {
12023 {
12024 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12025 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12026 .name = "Sound Focus Voice Tx SLIMBUS_0",
12027 .info = msm_sound_focus_info,
12028 .get = msm_voice_sound_focus_get,
12029 .put = msm_voice_sound_focus_put,
12030 },
12031 {
12032 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12033 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12034 .name = "Source Tracking Voice Tx SLIMBUS_0",
12035 .info = msm_source_tracking_info,
12036 .get = msm_voice_source_tracking_get,
12037 },
12038 {
12039 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12040 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12041 .name = "Sound Focus Audio Tx SLIMBUS_0",
12042 .info = msm_sound_focus_info,
12043 .get = msm_audio_sound_focus_get,
12044 .put = msm_audio_sound_focus_put,
12045 },
12046 {
12047 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12048 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12049 .name = "Source Tracking Audio Tx SLIMBUS_0",
12050 .info = msm_source_tracking_info,
12051 .get = msm_audio_source_tracking_get,
12052 },
12053 {
12054 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12055 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12056 .name = "Sound Focus Voice Tx TERT_MI2S",
12057 .info = msm_sound_focus_info,
12058 .get = msm_voice_sound_focus_get,
12059 .put = msm_voice_sound_focus_put,
12060 },
12061 {
12062 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12063 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12064 .name = "Source Tracking Voice Tx TERT_MI2S",
12065 .info = msm_source_tracking_info,
12066 .get = msm_voice_source_tracking_get,
12067 },
12068 {
12069 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12070 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12071 .name = "Sound Focus Audio Tx TERT_MI2S",
12072 .info = msm_sound_focus_info,
12073 .get = msm_audio_sound_focus_get,
12074 .put = msm_audio_sound_focus_put,
12075 },
12076 {
12077 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12078 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12079 .name = "Source Tracking Audio Tx TERT_MI2S",
12080 .info = msm_source_tracking_info,
12081 .get = msm_audio_source_tracking_get,
12082 },
12083 {
12084 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12085 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12086 .name = "Sound Focus Voice Tx INT3_MI2S",
12087 .info = msm_sound_focus_info,
12088 .get = msm_voice_sound_focus_get,
12089 .put = msm_voice_sound_focus_put,
12090 },
12091 {
12092 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12093 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12094 .name = "Source Tracking Voice Tx INT3_MI2S",
12095 .info = msm_source_tracking_info,
12096 .get = msm_voice_source_tracking_get,
12097 },
12098 {
12099 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12100 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12101 .name = "Sound Focus Audio Tx INT3_MI2S",
12102 .info = msm_sound_focus_info,
12103 .get = msm_audio_sound_focus_get,
12104 .put = msm_audio_sound_focus_put,
12105 },
12106 {
12107 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12108 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12109 .name = "Source Tracking Audio Tx INT3_MI2S",
12110 .info = msm_source_tracking_info,
12111 .get = msm_audio_source_tracking_get,
12112 },
12113};
12114
12115static int spkr_prot_put_vi_lch_port(struct snd_kcontrol *kcontrol,
12116 struct snd_ctl_elem_value *ucontrol)
12117{
12118 int ret = 0;
12119 int item;
12120 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
12121
12122 pr_debug("%s item is %d\n", __func__,
12123 ucontrol->value.enumerated.item[0]);
12124 mutex_lock(&routing_lock);
12125 item = ucontrol->value.enumerated.item[0];
12126 if (item < e->items) {
12127 pr_debug("%s RX DAI ID %d TX DAI id %d\n",
12128 __func__, e->shift_l, e->values[item]);
12129 if (e->shift_l < MSM_BACKEND_DAI_MAX &&
12130 e->values[item] < MSM_BACKEND_DAI_MAX)
12131 /* Enable feedback TX path */
12132 ret = afe_spk_prot_feed_back_cfg(
12133 msm_bedais[e->values[item]].port_id,
12134 msm_bedais[e->shift_l].port_id, 1, 0, 1);
12135 else {
12136 pr_debug("%s values are out of range item %d\n",
12137 __func__, e->values[item]);
12138 /* Disable feedback TX path */
12139 if (e->values[item] == MSM_BACKEND_DAI_MAX)
12140 ret = afe_spk_prot_feed_back_cfg(0, 0, 0, 0, 0);
12141 else
12142 ret = -EINVAL;
12143 }
12144 } else {
12145 pr_err("%s item value is out of range item\n", __func__);
12146 ret = -EINVAL;
12147 }
12148 mutex_unlock(&routing_lock);
12149 return ret;
12150}
12151
12152static int spkr_prot_put_vi_rch_port(struct snd_kcontrol *kcontrol,
12153 struct snd_ctl_elem_value *ucontrol)
12154{
12155 int ret = 0;
12156 int item;
12157 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
12158
12159 pr_debug("%s item is %d\n", __func__,
12160 ucontrol->value.enumerated.item[0]);
12161 mutex_lock(&routing_lock);
12162 item = ucontrol->value.enumerated.item[0];
12163 if (item < e->items) {
12164 pr_debug("%s RX DAI ID %d TX DAI id %d\n",
12165 __func__, e->shift_l, e->values[item]);
12166 if (e->shift_l < MSM_BACKEND_DAI_MAX &&
12167 e->values[item] < MSM_BACKEND_DAI_MAX)
12168 /* Enable feedback TX path */
12169 ret = afe_spk_prot_feed_back_cfg(
12170 msm_bedais[e->values[item]].port_id,
12171 msm_bedais[e->shift_l].port_id,
12172 1, 1, 1);
12173 else {
12174 pr_debug("%s values are out of range item %d\n",
12175 __func__, e->values[item]);
12176 /* Disable feedback TX path */
12177 if (e->values[item] == MSM_BACKEND_DAI_MAX)
12178 ret = afe_spk_prot_feed_back_cfg(0,
12179 0, 0, 0, 0);
12180 else
12181 ret = -EINVAL;
12182 }
12183 } else {
12184 pr_err("%s item value is out of range item\n", __func__);
12185 ret = -EINVAL;
12186 }
12187 mutex_unlock(&routing_lock);
12188 return ret;
12189}
12190
12191static int spkr_prot_get_vi_lch_port(struct snd_kcontrol *kcontrol,
12192 struct snd_ctl_elem_value *ucontrol)
12193{
12194 pr_debug("%s\n", __func__);
12195 return 0;
12196}
12197
12198static int spkr_prot_get_vi_rch_port(struct snd_kcontrol *kcontrol,
12199 struct snd_ctl_elem_value *ucontrol)
12200{
12201 pr_debug("%s\n", __func__);
12202 ucontrol->value.enumerated.item[0] = 0;
12203 return 0;
12204}
12205
12206static const char * const slim0_rx_vi_fb_tx_lch_mux_text[] = {
12207 "ZERO", "SLIM4_TX"
12208};
12209
12210static const char * const slim0_rx_vi_fb_tx_rch_mux_text[] = {
12211 "ZERO", "SLIM4_TX"
12212};
12213
12214static const char * const mi2s_rx_vi_fb_tx_mux_text[] = {
12215 "ZERO", "SENARY_TX"
12216};
12217
12218static const char * const int4_mi2s_rx_vi_fb_tx_mono_mux_text[] = {
12219 "ZERO", "INT5_MI2S_TX"
12220};
12221
12222static const char * const int4_mi2s_rx_vi_fb_tx_stereo_mux_text[] = {
12223 "ZERO", "INT5_MI2S_TX"
12224};
12225
12226static const int const slim0_rx_vi_fb_tx_lch_value[] = {
12227 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_SLIMBUS_4_TX
12228};
12229
12230static const int const slim0_rx_vi_fb_tx_rch_value[] = {
12231 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_SLIMBUS_4_TX
12232};
12233
12234static const int const mi2s_rx_vi_fb_tx_value[] = {
12235 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_SENARY_MI2S_TX
12236};
12237
12238static const int const int4_mi2s_rx_vi_fb_tx_mono_ch_value[] = {
12239 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_INT5_MI2S_TX
12240};
12241
12242static const int const int4_mi2s_rx_vi_fb_tx_stereo_ch_value[] = {
12243 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_INT5_MI2S_TX
12244};
12245
12246static const struct soc_enum slim0_rx_vi_fb_lch_mux_enum =
12247 SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_SLIMBUS_0_RX, 0, 0,
12248 ARRAY_SIZE(slim0_rx_vi_fb_tx_lch_mux_text),
12249 slim0_rx_vi_fb_tx_lch_mux_text, slim0_rx_vi_fb_tx_lch_value);
12250
12251static const struct soc_enum slim0_rx_vi_fb_rch_mux_enum =
12252 SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_SLIMBUS_0_RX, 0, 0,
12253 ARRAY_SIZE(slim0_rx_vi_fb_tx_rch_mux_text),
12254 slim0_rx_vi_fb_tx_rch_mux_text, slim0_rx_vi_fb_tx_rch_value);
12255
12256static const struct soc_enum mi2s_rx_vi_fb_mux_enum =
12257 SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_PRI_MI2S_RX, 0, 0,
12258 ARRAY_SIZE(mi2s_rx_vi_fb_tx_mux_text),
12259 mi2s_rx_vi_fb_tx_mux_text, mi2s_rx_vi_fb_tx_value);
12260
12261static const struct soc_enum int4_mi2s_rx_vi_fb_mono_ch_mux_enum =
12262 SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_INT4_MI2S_RX, 0, 0,
12263 ARRAY_SIZE(int4_mi2s_rx_vi_fb_tx_mono_mux_text),
12264 int4_mi2s_rx_vi_fb_tx_mono_mux_text,
12265 int4_mi2s_rx_vi_fb_tx_mono_ch_value);
12266
12267static const struct soc_enum int4_mi2s_rx_vi_fb_stereo_ch_mux_enum =
12268 SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_INT4_MI2S_RX, 0, 0,
12269 ARRAY_SIZE(int4_mi2s_rx_vi_fb_tx_stereo_mux_text),
12270 int4_mi2s_rx_vi_fb_tx_stereo_mux_text,
12271 int4_mi2s_rx_vi_fb_tx_stereo_ch_value);
12272
12273static const struct snd_kcontrol_new slim0_rx_vi_fb_lch_mux =
12274 SOC_DAPM_ENUM_EXT("SLIM0_RX_VI_FB_LCH_MUX",
12275 slim0_rx_vi_fb_lch_mux_enum, spkr_prot_get_vi_lch_port,
12276 spkr_prot_put_vi_lch_port);
12277
12278static const struct snd_kcontrol_new slim0_rx_vi_fb_rch_mux =
12279 SOC_DAPM_ENUM_EXT("SLIM0_RX_VI_FB_RCH_MUX",
12280 slim0_rx_vi_fb_rch_mux_enum, spkr_prot_get_vi_rch_port,
12281 spkr_prot_put_vi_rch_port);
12282
12283static const struct snd_kcontrol_new mi2s_rx_vi_fb_mux =
12284 SOC_DAPM_ENUM_EXT("PRI_MI2S_RX_VI_FB_MUX",
12285 mi2s_rx_vi_fb_mux_enum, spkr_prot_get_vi_lch_port,
12286 spkr_prot_put_vi_lch_port);
12287
12288static const struct snd_kcontrol_new int4_mi2s_rx_vi_fb_mono_ch_mux =
12289 SOC_DAPM_ENUM_EXT("INT4_MI2S_RX_VI_FB_MONO_CH_MUX",
12290 int4_mi2s_rx_vi_fb_mono_ch_mux_enum, spkr_prot_get_vi_lch_port,
12291 spkr_prot_put_vi_lch_port);
12292
12293static const struct snd_kcontrol_new int4_mi2s_rx_vi_fb_stereo_ch_mux =
12294 SOC_DAPM_ENUM_EXT("INT4_MI2S_RX_VI_FB_STEREO_CH_MUX",
12295 int4_mi2s_rx_vi_fb_stereo_ch_mux_enum, spkr_prot_get_vi_rch_port,
12296 spkr_prot_put_vi_rch_port);
12297
12298static const struct snd_soc_dapm_widget msm_qdsp6_widgets[] = {
12299 /* Frontend AIF */
12300 /* Widget name equals to Front-End DAI name<Need confirmation>,
12301 * Stream name must contains substring of front-end dai name
12302 */
12303 SND_SOC_DAPM_AIF_IN("MM_DL1", "MultiMedia1 Playback", 0, 0, 0, 0),
12304 SND_SOC_DAPM_AIF_IN("MM_DL2", "MultiMedia2 Playback", 0, 0, 0, 0),
12305 SND_SOC_DAPM_AIF_IN("MM_DL3", "MultiMedia3 Playback", 0, 0, 0, 0),
12306 SND_SOC_DAPM_AIF_IN("MM_DL4", "MultiMedia4 Playback", 0, 0, 0, 0),
12307 SND_SOC_DAPM_AIF_IN("MM_DL5", "MultiMedia5 Playback", 0, 0, 0, 0),
12308 SND_SOC_DAPM_AIF_IN("MM_DL6", "MultiMedia6 Playback", 0, 0, 0, 0),
12309 SND_SOC_DAPM_AIF_IN("MM_DL7", "MultiMedia7 Playback", 0, 0, 0, 0),
12310 SND_SOC_DAPM_AIF_IN("MM_DL8", "MultiMedia8 Playback", 0, 0, 0, 0),
12311 SND_SOC_DAPM_AIF_IN("MM_DL9", "MultiMedia9 Playback", 0, 0, 0, 0),
12312 SND_SOC_DAPM_AIF_IN("MM_DL10", "MultiMedia10 Playback", 0, 0, 0, 0),
12313 SND_SOC_DAPM_AIF_IN("MM_DL11", "MultiMedia11 Playback", 0, 0, 0, 0),
12314 SND_SOC_DAPM_AIF_IN("MM_DL12", "MultiMedia12 Playback", 0, 0, 0, 0),
12315 SND_SOC_DAPM_AIF_IN("MM_DL13", "MultiMedia13 Playback", 0, 0, 0, 0),
12316 SND_SOC_DAPM_AIF_IN("MM_DL14", "MultiMedia14 Playback", 0, 0, 0, 0),
12317 SND_SOC_DAPM_AIF_IN("MM_DL15", "MultiMedia15 Playback", 0, 0, 0, 0),
12318 SND_SOC_DAPM_AIF_IN("MM_DL16", "MultiMedia16 Playback", 0, 0, 0, 0),
12319 SND_SOC_DAPM_AIF_IN("MM_DL20", "MultiMedia20 Playback", 0, 0, 0, 0),
12320 SND_SOC_DAPM_AIF_IN("VOIP_DL", "VoIP Playback", 0, 0, 0, 0),
12321 SND_SOC_DAPM_AIF_OUT("MM_UL1", "MultiMedia1 Capture", 0, 0, 0, 0),
12322 SND_SOC_DAPM_AIF_OUT("MM_UL2", "MultiMedia2 Capture", 0, 0, 0, 0),
12323 SND_SOC_DAPM_AIF_OUT("MM_UL3", "MultiMedia3 Capture", 0, 0, 0, 0),
12324 SND_SOC_DAPM_AIF_OUT("MM_UL4", "MultiMedia4 Capture", 0, 0, 0, 0),
12325 SND_SOC_DAPM_AIF_OUT("MM_UL5", "MultiMedia5 Capture", 0, 0, 0, 0),
12326 SND_SOC_DAPM_AIF_OUT("MM_UL6", "MultiMedia6 Capture", 0, 0, 0, 0),
12327 SND_SOC_DAPM_AIF_OUT("MM_UL8", "MultiMedia8 Capture", 0, 0, 0, 0),
12328 SND_SOC_DAPM_AIF_OUT("MM_UL9", "MultiMedia9 Capture", 0, 0, 0, 0),
Laxminath Kasam38070be2017-08-17 18:21:59 +053012329 SND_SOC_DAPM_AIF_OUT("MM_UL10", "MultiMedia10 Capture", 0, 0, 0, 0),
Asish Bhattacharya34504582017-08-08 12:55:01 +053012330 SND_SOC_DAPM_AIF_OUT("MM_UL16", "MultiMedia16 Capture", 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012331 SND_SOC_DAPM_AIF_OUT("MM_UL17", "MultiMedia17 Capture", 0, 0, 0, 0),
12332 SND_SOC_DAPM_AIF_OUT("MM_UL18", "MultiMedia18 Capture", 0, 0, 0, 0),
12333 SND_SOC_DAPM_AIF_OUT("MM_UL19", "MultiMedia19 Capture", 0, 0, 0, 0),
12334 SND_SOC_DAPM_AIF_OUT("MM_UL20", "MultiMedia20 Capture", 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012335 SND_SOC_DAPM_AIF_OUT("VOIP_UL", "VoIP Capture", 0, 0, 0, 0),
12336 SND_SOC_DAPM_AIF_IN("VOICEMMODE1_DL",
12337 "VoiceMMode1 Playback", 0, 0, 0, 0),
12338 SND_SOC_DAPM_AIF_OUT("VOICEMMODE1_UL",
12339 "VoiceMMode1 Capture", 0, 0, 0, 0),
12340 SND_SOC_DAPM_AIF_IN("VOICEMMODE2_DL",
12341 "VoiceMMode2 Playback", 0, 0, 0, 0),
12342 SND_SOC_DAPM_AIF_OUT("VOICEMMODE2_UL",
12343 "VoiceMMode2 Capture", 0, 0, 0, 0),
12344 SND_SOC_DAPM_AIF_IN("SLIM0_DL_HL", "SLIMBUS0_HOSTLESS Playback",
12345 0, 0, 0, 0),
12346 SND_SOC_DAPM_AIF_OUT("SLIM0_UL_HL", "SLIMBUS0_HOSTLESS Capture",
12347 0, 0, 0, 0),
12348 SND_SOC_DAPM_AIF_OUT("CPE_LSM_UL_HL", "CPE LSM capture",
12349 0, 0, 0, 0),
12350 SND_SOC_DAPM_AIF_IN("SLIM1_DL_HL", "SLIMBUS1_HOSTLESS Playback",
12351 0, 0, 0, 0),
12352 SND_SOC_DAPM_AIF_OUT("SLIM1_UL_HL", "SLIMBUS1_HOSTLESS Capture",
12353 0, 0, 0, 0),
12354 SND_SOC_DAPM_AIF_IN("SLIM3_DL_HL", "SLIMBUS3_HOSTLESS Playback",
12355 0, 0, 0, 0),
12356 SND_SOC_DAPM_AIF_OUT("SLIM3_UL_HL", "SLIMBUS3_HOSTLESS Capture",
12357 0, 0, 0, 0),
12358 SND_SOC_DAPM_AIF_IN("SLIM4_DL_HL", "SLIMBUS4_HOSTLESS Playback",
12359 0, 0, 0, 0),
12360 SND_SOC_DAPM_AIF_OUT("SLIM4_UL_HL", "SLIMBUS4_HOSTLESS Capture",
12361 0, 0, 0, 0),
12362 SND_SOC_DAPM_AIF_IN("SLIM6_DL_HL", "SLIMBUS6_HOSTLESS Playback",
12363 0, 0, 0, 0),
12364 SND_SOC_DAPM_AIF_OUT("SLIM6_UL_HL", "SLIMBUS6_HOSTLESS Capture",
12365 0, 0, 0, 0),
12366 SND_SOC_DAPM_AIF_IN("SLIM7_DL_HL", "SLIMBUS7_HOSTLESS Playback",
12367 0, 0, 0, 0),
12368 SND_SOC_DAPM_AIF_OUT("SLIM7_UL_HL", "SLIMBUS7_HOSTLESS Capture",
12369 0, 0, 0, 0),
12370 SND_SOC_DAPM_AIF_IN("SLIM8_DL_HL", "SLIMBUS8_HOSTLESS Playback",
12371 0, 0, 0, 0),
12372 SND_SOC_DAPM_AIF_OUT("SLIM8_UL_HL", "SLIMBUS8_HOSTLESS Capture",
12373 0, 0, 0, 0),
12374 SND_SOC_DAPM_AIF_IN("INTFM_DL_HL", "INT_FM_HOSTLESS Playback",
12375 0, 0, 0, 0),
12376 SND_SOC_DAPM_AIF_OUT("INTFM_UL_HL", "INT_FM_HOSTLESS Capture",
12377 0, 0, 0, 0),
12378 SND_SOC_DAPM_AIF_IN("INTHFP_DL_HL", "INT_HFP_BT_HOSTLESS Playback",
12379 0, 0, 0, 0),
12380 SND_SOC_DAPM_AIF_OUT("INTHFP_UL_HL", "INT_HFP_BT_HOSTLESS Capture",
12381 0, 0, 0, 0),
12382 SND_SOC_DAPM_AIF_IN("USBAUDIO_DL_HL", "USBAUDIO_HOSTLESS Playback",
12383 0, 0, 0, 0),
12384 SND_SOC_DAPM_AIF_OUT("USBAUDIO_UL_HL", "USBAUDIO_HOSTLESS Capture",
12385 0, 0, 0, 0),
12386 SND_SOC_DAPM_AIF_IN("HDMI_DL_HL", "HDMI_HOSTLESS Playback", 0, 0, 0, 0),
12387 SND_SOC_DAPM_AIF_IN("SEC_I2S_DL_HL", "SEC_I2S_RX_HOSTLESS Playback",
12388 0, 0, 0, 0),
12389 SND_SOC_DAPM_AIF_IN("INT0_MI2S_DL_HL",
12390 "INT0 MI2S_RX Hostless Playback",
12391 0, 0, 0, 0),
12392 SND_SOC_DAPM_AIF_IN("INT4_MI2S_DL_HL",
12393 "INT4 MI2S_RX Hostless Playback",
12394 0, 0, 0, 0),
12395 SND_SOC_DAPM_AIF_IN("PRI_MI2S_DL_HL",
12396 "Primary MI2S_RX Hostless Playback",
12397 0, 0, 0, 0),
12398 SND_SOC_DAPM_AIF_IN("SEC_MI2S_DL_HL",
12399 "Secondary MI2S_RX Hostless Playback",
12400 0, 0, 0, 0),
12401 SND_SOC_DAPM_AIF_IN("TERT_MI2S_DL_HL",
12402 "Tertiary MI2S_RX Hostless Playback",
12403 0, 0, 0, 0),
12404 SND_SOC_DAPM_AIF_IN("QUAT_MI2S_DL_HL",
12405 "Quaternary MI2S_RX Hostless Playback",
12406 0, 0, 0, 0),
Rohit Kumara5077932017-09-10 22:05:05 +053012407 SND_SOC_DAPM_AIF_IN("QUIN_MI2S_DL_HL",
12408 "Quinary MI2S_RX Hostless Playback",
12409 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012410
12411 SND_SOC_DAPM_AIF_IN("AUXPCM_DL_HL", "AUXPCM_HOSTLESS Playback",
12412 0, 0, 0, 0),
12413 SND_SOC_DAPM_AIF_OUT("AUXPCM_UL_HL", "AUXPCM_HOSTLESS Capture",
12414 0, 0, 0, 0),
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -080012415 SND_SOC_DAPM_AIF_IN("SEC_AUXPCM_DL_HL", "SEC_AUXPCM_HOSTLESS Playback",
12416 0, 0, 0, 0),
12417 SND_SOC_DAPM_AIF_OUT("SEC_AUXPCM_UL_HL", "SEC_AUXPCM_HOSTLESS Capture",
12418 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012419 SND_SOC_DAPM_AIF_OUT("MI2S_UL_HL", "MI2S_TX_HOSTLESS Capture",
12420 0, 0, 0, 0),
12421 SND_SOC_DAPM_AIF_OUT("INT3_MI2S_UL_HL",
12422 "INT3 MI2S_TX Hostless Capture",
12423 0, 0, 0, 0),
12424 SND_SOC_DAPM_AIF_OUT("TERT_MI2S_UL_HL",
12425 "Tertiary MI2S_TX Hostless Capture",
12426 0, 0, 0, 0),
12427 SND_SOC_DAPM_AIF_OUT("SEC_MI2S_UL_HL",
12428 "Secondary MI2S_TX Hostless Capture",
12429 0, 0, 0, 0),
12430 SND_SOC_DAPM_AIF_OUT("PRI_MI2S_UL_HL",
12431 "Primary MI2S_TX Hostless Capture",
12432 0, 0, 0, 0),
12433 SND_SOC_DAPM_AIF_OUT("MI2S_DL_HL", "MI2S_RX_HOSTLESS Playback",
12434 0, 0, 0, 0),
12435 SND_SOC_DAPM_AIF_IN("DTMF_DL_HL", "DTMF_RX_HOSTLESS Playback",
12436 0, 0, 0, 0),
12437 SND_SOC_DAPM_AIF_OUT("QUAT_MI2S_UL_HL",
12438 "Quaternary MI2S_TX Hostless Capture",
12439 0, 0, 0, 0),
Rohit Kumara5077932017-09-10 22:05:05 +053012440 SND_SOC_DAPM_AIF_OUT("QUIN_MI2S_UL_HL",
12441 "Quinary MI2S_TX Hostless Capture",
12442 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012443
12444 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_0_DL_HL",
12445 "Primary TDM0 Hostless Playback",
12446 0, 0, 0, 0),
12447 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_0_UL_HL",
12448 "Primary TDM0 Hostless Capture",
12449 0, 0, 0, 0),
12450 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_1_DL_HL",
12451 "Primary TDM1 Hostless Playback",
12452 0, 0, 0, 0),
12453 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_1_UL_HL",
12454 "Primary TDM1 Hostless Capture",
12455 0, 0, 0, 0),
12456 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_2_DL_HL",
12457 "Primary TDM2 Hostless Playback",
12458 0, 0, 0, 0),
12459 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_2_UL_HL",
12460 "Primary TDM2 Hostless Capture",
12461 0, 0, 0, 0),
12462 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_3_DL_HL",
12463 "Primary TDM3 Hostless Playback",
12464 0, 0, 0, 0),
12465 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_3_UL_HL",
12466 "Primary TDM3 Hostless Capture",
12467 0, 0, 0, 0),
12468 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_4_DL_HL",
12469 "Primary TDM4 Hostless Playback",
12470 0, 0, 0, 0),
12471 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_4_UL_HL",
12472 "Primary TDM4 Hostless Capture",
12473 0, 0, 0, 0),
12474 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_5_DL_HL",
12475 "Primary TDM5 Hostless Playback",
12476 0, 0, 0, 0),
12477 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_5_UL_HL",
12478 "Primary TDM5 Hostless Capture",
12479 0, 0, 0, 0),
12480 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_6_DL_HL",
12481 "Primary TDM6 Hostless Playback",
12482 0, 0, 0, 0),
12483 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_6_UL_HL",
12484 "Primary TDM6 Hostless Capture",
12485 0, 0, 0, 0),
12486 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_7_DL_HL",
12487 "Primary TDM7 Hostless Playback",
12488 0, 0, 0, 0),
12489 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_7_UL_HL",
12490 "Primary TDM7 Hostless Capture",
12491 0, 0, 0, 0),
12492 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_0_DL_HL",
12493 "Secondary TDM0 Hostless Playback",
12494 0, 0, 0, 0),
12495 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_0_UL_HL",
12496 "Secondary TDM0 Hostless Capture",
12497 0, 0, 0, 0),
12498 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_1_DL_HL",
12499 "Secondary TDM1 Hostless Playback",
12500 0, 0, 0, 0),
12501 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_1_UL_HL",
12502 "Secondary TDM1 Hostless Capture",
12503 0, 0, 0, 0),
12504 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_2_DL_HL",
12505 "Secondary TDM2 Hostless Playback",
12506 0, 0, 0, 0),
12507 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_2_UL_HL",
12508 "Secondary TDM2 Hostless Capture",
12509 0, 0, 0, 0),
12510 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_3_DL_HL",
12511 "Secondary TDM3 Hostless Playback",
12512 0, 0, 0, 0),
12513 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_3_UL_HL",
12514 "Secondary TDM3 Hostless Capture",
12515 0, 0, 0, 0),
12516 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_4_DL_HL",
12517 "Secondary TDM4 Hostless Playback",
12518 0, 0, 0, 0),
12519 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_4_UL_HL",
12520 "Secondary TDM4 Hostless Capture",
12521 0, 0, 0, 0),
12522 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_5_DL_HL",
12523 "Secondary TDM5 Hostless Playback",
12524 0, 0, 0, 0),
12525 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_5_UL_HL",
12526 "Secondary TDM5 Hostless Capture",
12527 0, 0, 0, 0),
12528 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_6_DL_HL",
12529 "Secondary TDM6 Hostless Playback",
12530 0, 0, 0, 0),
12531 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_6_UL_HL",
12532 "Secondary TDM6 Hostless Capture",
12533 0, 0, 0, 0),
12534 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_7_DL_HL",
12535 "Secondary TDM7 Hostless Playback",
12536 0, 0, 0, 0),
12537 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_7_UL_HL",
12538 "Secondary TDM7 Hostless Capture",
12539 0, 0, 0, 0),
12540 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_0_DL_HL",
12541 "Tertiary TDM0 Hostless Playback",
12542 0, 0, 0, 0),
12543 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_0_UL_HL",
12544 "Tertiary TDM0 Hostless Capture",
12545 0, 0, 0, 0),
12546 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_1_DL_HL",
12547 "Tertiary TDM1 Hostless Playback",
12548 0, 0, 0, 0),
12549 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_1_UL_HL",
12550 "Tertiary TDM1 Hostless Capture",
12551 0, 0, 0, 0),
12552 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_2_DL_HL",
12553 "Tertiary TDM2 Hostless Playback",
12554 0, 0, 0, 0),
12555 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_2_UL_HL",
12556 "Tertiary TDM2 Hostless Capture",
12557 0, 0, 0, 0),
12558 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_3_DL_HL",
12559 "Tertiary TDM3 Hostless Playback",
12560 0, 0, 0, 0),
12561 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_3_UL_HL",
12562 "Tertiary TDM3 Hostless Capture",
12563 0, 0, 0, 0),
12564 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_4_DL_HL",
12565 "Tertiary TDM4 Hostless Playback",
12566 0, 0, 0, 0),
12567 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_4_UL_HL",
12568 "Tertiary TDM4 Hostless Capture",
12569 0, 0, 0, 0),
12570 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_5_DL_HL",
12571 "Tertiary TDM5 Hostless Playback",
12572 0, 0, 0, 0),
12573 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_5_UL_HL",
12574 "Tertiary TDM5 Hostless Capture",
12575 0, 0, 0, 0),
12576 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_6_DL_HL",
12577 "Tertiary TDM6 Hostless Playback",
12578 0, 0, 0, 0),
12579 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_6_UL_HL",
12580 "Tertiary TDM6 Hostless Capture",
12581 0, 0, 0, 0),
12582 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_7_DL_HL",
12583 "Tertiary TDM7 Hostless Playback",
12584 0, 0, 0, 0),
12585 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_7_UL_HL",
12586 "Tertiary TDM7 Hostless Capture",
12587 0, 0, 0, 0),
12588 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_0_DL_HL",
12589 "Quaternary TDM0 Hostless Playback",
12590 0, 0, 0, 0),
12591 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_0_UL_HL",
12592 "Quaternary TDM0 Hostless Capture",
12593 0, 0, 0, 0),
12594 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_1_DL_HL",
12595 "Quaternary TDM1 Hostless Playback",
12596 0, 0, 0, 0),
12597 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_1_UL_HL",
12598 "Quaternary TDM1 Hostless Capture",
12599 0, 0, 0, 0),
12600 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_2_DL_HL",
12601 "Quaternary TDM2 Hostless Playback",
12602 0, 0, 0, 0),
12603 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_2_UL_HL",
12604 "Quaternary TDM2 Hostless Capture",
12605 0, 0, 0, 0),
12606 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_3_DL_HL",
12607 "Quaternary TDM3 Hostless Playback",
12608 0, 0, 0, 0),
12609 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_3_UL_HL",
12610 "Quaternary TDM3 Hostless Capture",
12611 0, 0, 0, 0),
12612 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_4_DL_HL",
12613 "Quaternary TDM4 Hostless Playback",
12614 0, 0, 0, 0),
12615 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_4_UL_HL",
12616 "Quaternary TDM4 Hostless Capture",
12617 0, 0, 0, 0),
12618 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_5_DL_HL",
12619 "Quaternary TDM5 Hostless Playback",
12620 0, 0, 0, 0),
12621 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_5_UL_HL",
12622 "Quaternary TDM5 Hostless Capture",
12623 0, 0, 0, 0),
12624 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_6_DL_HL",
12625 "Quaternary TDM6 Hostless Playback",
12626 0, 0, 0, 0),
12627 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_6_UL_HL",
12628 "Quaternary TDM6 Hostless Capture",
12629 0, 0, 0, 0),
12630 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_7_DL_HL",
12631 "Quaternary TDM7 Hostless Playback",
12632 0, 0, 0, 0),
12633 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_7_UL_HL",
12634 "Quaternary TDM7 Hostless Capture",
12635 0, 0, 0, 0),
Rohit Kumara5077932017-09-10 22:05:05 +053012636 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_0_DL_HL",
12637 "Quinary TDM0 Hostless Playback",
12638 0, 0, 0, 0),
12639 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_0_UL_HL",
12640 "Quinary TDM0 Hostless Capture",
12641 0, 0, 0, 0),
12642 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_1_DL_HL",
12643 "Quinary TDM1 Hostless Playback",
12644 0, 0, 0, 0),
12645 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_1_UL_HL",
12646 "Quinary TDM1 Hostless Capture",
12647 0, 0, 0, 0),
12648 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_2_DL_HL",
12649 "Quinary TDM2 Hostless Playback",
12650 0, 0, 0, 0),
12651 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_2_UL_HL",
12652 "Quinary TDM2 Hostless Capture",
12653 0, 0, 0, 0),
12654 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_3_DL_HL",
12655 "Quinary TDM3 Hostless Playback",
12656 0, 0, 0, 0),
12657 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_3_UL_HL",
12658 "Quinary TDM3 Hostless Capture",
12659 0, 0, 0, 0),
12660 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_4_DL_HL",
12661 "Quinary TDM4 Hostless Playback",
12662 0, 0, 0, 0),
12663 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_4_UL_HL",
12664 "Quinary TDM4 Hostless Capture",
12665 0, 0, 0, 0),
12666 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_5_DL_HL",
12667 "Quinary TDM5 Hostless Playback",
12668 0, 0, 0, 0),
12669 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_5_UL_HL",
12670 "Quinary TDM5 Hostless Capture",
12671 0, 0, 0, 0),
12672 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_6_DL_HL",
12673 "Quinary TDM6 Hostless Playback",
12674 0, 0, 0, 0),
12675 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_6_UL_HL",
12676 "Quinary TDM6 Hostless Capture",
12677 0, 0, 0, 0),
12678 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_7_DL_HL",
12679 "Quinary TDM7 Hostless Playback",
12680 0, 0, 0, 0),
12681 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_7_UL_HL",
12682 "Quinary TDM7 Hostless Capture",
12683 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012684
12685 /* LSM */
12686 SND_SOC_DAPM_AIF_OUT("LSM1_UL_HL", "Listen 1 Audio Service Capture",
12687 0, 0, 0, 0),
12688 SND_SOC_DAPM_AIF_OUT("LSM2_UL_HL", "Listen 2 Audio Service Capture",
12689 0, 0, 0, 0),
12690 SND_SOC_DAPM_AIF_OUT("LSM3_UL_HL", "Listen 3 Audio Service Capture",
12691 0, 0, 0, 0),
12692 SND_SOC_DAPM_AIF_OUT("LSM4_UL_HL", "Listen 4 Audio Service Capture",
12693 0, 0, 0, 0),
12694 SND_SOC_DAPM_AIF_OUT("LSM5_UL_HL", "Listen 5 Audio Service Capture",
12695 0, 0, 0, 0),
12696 SND_SOC_DAPM_AIF_OUT("LSM6_UL_HL", "Listen 6 Audio Service Capture",
12697 0, 0, 0, 0),
12698 SND_SOC_DAPM_AIF_OUT("LSM7_UL_HL", "Listen 7 Audio Service Capture",
12699 0, 0, 0, 0),
12700 SND_SOC_DAPM_AIF_OUT("LSM8_UL_HL", "Listen 8 Audio Service Capture",
12701 0, 0, 0, 0),
12702 SND_SOC_DAPM_AIF_IN("QCHAT_DL", "QCHAT Playback", 0, 0, 0, 0),
12703 SND_SOC_DAPM_AIF_OUT("QCHAT_UL", "QCHAT Capture", 0, 0, 0, 0),
12704 /* Backend AIF */
12705 /* Stream name equals to backend dai link stream name */
12706 SND_SOC_DAPM_AIF_OUT("PRI_I2S_RX", "Primary I2S Playback", 0, 0, 0, 0),
12707 SND_SOC_DAPM_AIF_OUT("SEC_I2S_RX", "Secondary I2S Playback",
12708 0, 0, 0, 0),
12709 SND_SOC_DAPM_AIF_OUT("SPDIF_RX", "SPDIF Playback", 0, 0, 0, 0),
12710 SND_SOC_DAPM_AIF_OUT("SLIMBUS_0_RX", "Slimbus Playback", 0, 0, 0, 0),
12711 SND_SOC_DAPM_AIF_OUT("SLIMBUS_2_RX", "Slimbus2 Playback", 0, 0, 0, 0),
12712 SND_SOC_DAPM_AIF_OUT("SLIMBUS_5_RX", "Slimbus5 Playback", 0, 0, 0, 0),
12713 SND_SOC_DAPM_AIF_OUT("HDMI", "HDMI Playback", 0, 0, 0, 0),
12714 SND_SOC_DAPM_AIF_OUT("DISPLAY_PORT", "Display Port Playback",
12715 0, 0, 0, 0),
12716 SND_SOC_DAPM_AIF_OUT("MI2S_RX", "MI2S Playback", 0, 0, 0, 0),
12717 SND_SOC_DAPM_AIF_OUT("QUAT_MI2S_RX", "Quaternary MI2S Playback",
12718 0, 0, 0, 0),
12719 SND_SOC_DAPM_AIF_OUT("TERT_MI2S_RX", "Tertiary MI2S Playback",
12720 0, 0, 0, 0),
12721 SND_SOC_DAPM_AIF_OUT("SEC_MI2S_RX", "Secondary MI2S Playback",
12722 0, 0, 0, 0),
12723 SND_SOC_DAPM_AIF_OUT("SEC_MI2S_RX_SD1",
12724 "Secondary MI2S Playback SD1",
12725 0, 0, 0, 0),
12726 SND_SOC_DAPM_AIF_OUT("PRI_MI2S_RX", "Primary MI2S Playback",
12727 0, 0, 0, 0),
12728 SND_SOC_DAPM_AIF_OUT("INT0_MI2S_RX", "INT0 MI2S Playback",
12729 0, 0, 0, 0),
Laxminath Kasam52697fe2017-11-29 15:44:14 +053012730 SND_SOC_DAPM_AIF_OUT("INT2_MI2S_RX", "INT2 MI2S Playback",
12731 0, 0, 0, 0),
12732 SND_SOC_DAPM_AIF_OUT("INT3_MI2S_RX", "INT3 MI2S Playback",
12733 0, 0, 0, 0),
12734 SND_SOC_DAPM_AIF_OUT("INT5_MI2S_RX", "INT5 MI2S Playback",
12735 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012736 SND_SOC_DAPM_AIF_OUT("INT4_MI2S_RX", "INT4 MI2S Playback",
12737 0, 0, 0, 0),
Laxminath Kasam52697fe2017-11-29 15:44:14 +053012738 SND_SOC_DAPM_AIF_OUT("INT4_MI2S_TX", "INT4 MI2S Capture",
12739 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012740 SND_SOC_DAPM_AIF_OUT("QUIN_MI2S_RX", "Quinary MI2S Playback",
12741 0, 0, 0, 0),
12742 SND_SOC_DAPM_AIF_IN("PRI_I2S_TX", "Primary I2S Capture", 0, 0, 0, 0),
12743 SND_SOC_DAPM_AIF_IN("MI2S_TX", "MI2S Capture", 0, 0, 0, 0),
12744 SND_SOC_DAPM_AIF_IN("QUAT_MI2S_TX", "Quaternary MI2S Capture",
12745 0, 0, 0, 0),
12746 SND_SOC_DAPM_AIF_IN("PRI_MI2S_TX", "Primary MI2S Capture",
12747 0, 0, 0, 0),
12748 SND_SOC_DAPM_AIF_IN("TERT_MI2S_TX", "Tertiary MI2S Capture",
12749 0, 0, 0, 0),
Laxminath Kasam52697fe2017-11-29 15:44:14 +053012750 SND_SOC_DAPM_AIF_OUT("INT0_MI2S_TX", "INT0 MI2S Capture",
12751 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012752 SND_SOC_DAPM_AIF_IN("INT2_MI2S_TX", "INT2 MI2S Capture",
12753 0, 0, 0, 0),
12754 SND_SOC_DAPM_AIF_IN("INT3_MI2S_TX", "INT3 MI2S Capture",
12755 0, 0, 0, 0),
12756 SND_SOC_DAPM_AIF_IN("SEC_MI2S_TX", "Secondary MI2S Capture",
12757 0, 0, 0, 0),
12758 SND_SOC_DAPM_AIF_IN("SLIMBUS_0_TX", "Slimbus Capture", 0, 0, 0, 0),
12759 SND_SOC_DAPM_AIF_IN("SLIMBUS_2_TX", "Slimbus2 Capture", 0, 0, 0, 0),
12760 SND_SOC_DAPM_AIF_IN("QUIN_MI2S_TX", "Quinary MI2S Capture",
12761 0, 0, 0, 0),
12762 SND_SOC_DAPM_AIF_IN("SENARY_MI2S_TX", "Senary MI2S Capture",
12763 0, 0, 0, 0),
12764 SND_SOC_DAPM_AIF_OUT("INT_BT_SCO_RX", "Internal BT-SCO Playback",
12765 0, 0, 0, 0),
12766 SND_SOC_DAPM_AIF_IN("INT_BT_SCO_TX", "Internal BT-SCO Capture",
12767 0, 0, 0, 0),
12768 SND_SOC_DAPM_AIF_OUT("INT_BT_A2DP_RX", "Internal BT-A2DP Playback",
12769 0, 0, 0, 0),
12770 SND_SOC_DAPM_AIF_OUT("INT_FM_RX", "Internal FM Playback",
12771 0, 0, 0, 0),
12772 SND_SOC_DAPM_AIF_IN("INT_FM_TX", "Internal FM Capture",
12773 0, 0, 0, 0),
12774 SND_SOC_DAPM_AIF_OUT("PCM_RX", "AFE Playback",
12775 0, 0, 0, 0),
12776 SND_SOC_DAPM_AIF_IN("PCM_TX", "AFE Capture",
12777 0, 0, 0, 0),
12778 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_0", "Primary TDM0 Playback",
12779 0, 0, 0, 0),
12780 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_0", "Primary TDM0 Capture",
12781 0, 0, 0, 0),
12782 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_1", "Primary TDM1 Playback",
12783 0, 0, 0, 0),
12784 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_1", "Primary TDM1 Capture",
12785 0, 0, 0, 0),
12786 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_2", "Primary TDM2 Playback",
12787 0, 0, 0, 0),
12788 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_2", "Primary TDM2 Capture",
12789 0, 0, 0, 0),
12790 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_3", "Primary TDM3 Playback",
12791 0, 0, 0, 0),
12792 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_3", "Primary TDM3 Capture",
12793 0, 0, 0, 0),
12794 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_4", "Primary TDM4 Playback",
12795 0, 0, 0, 0),
12796 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_4", "Primary TDM4 Capture",
12797 0, 0, 0, 0),
12798 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_5", "Primary TDM5 Playback",
12799 0, 0, 0, 0),
12800 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_5", "Primary TDM5 Capture",
12801 0, 0, 0, 0),
12802 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_6", "Primary TDM6 Playback",
12803 0, 0, 0, 0),
12804 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_6", "Primary TDM6 Capture",
12805 0, 0, 0, 0),
12806 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_7", "Primary TDM7 Playback",
12807 0, 0, 0, 0),
12808 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_7", "Primary TDM7 Capture",
12809 0, 0, 0, 0),
12810 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_0", "Secondary TDM0 Playback",
12811 0, 0, 0, 0),
12812 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_0", "Secondary TDM0 Capture",
12813 0, 0, 0, 0),
12814 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_1", "Secondary TDM1 Playback",
12815 0, 0, 0, 0),
12816 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_1", "Secondary TDM1 Capture",
12817 0, 0, 0, 0),
12818 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_2", "Secondary TDM2 Playback",
12819 0, 0, 0, 0),
12820 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_2", "Secondary TDM2 Capture",
12821 0, 0, 0, 0),
12822 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_3", "Secondary TDM3 Playback",
12823 0, 0, 0, 0),
12824 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_3", "Secondary TDM3 Capture",
12825 0, 0, 0, 0),
12826 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_4", "Secondary TDM4 Playback",
12827 0, 0, 0, 0),
12828 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_4", "Secondary TDM4 Capture",
12829 0, 0, 0, 0),
12830 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_5", "Secondary TDM5 Playback",
12831 0, 0, 0, 0),
12832 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_5", "Secondary TDM5 Capture",
12833 0, 0, 0, 0),
12834 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_6", "Secondary TDM6 Playback",
12835 0, 0, 0, 0),
12836 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_6", "Secondary TDM6 Capture",
12837 0, 0, 0, 0),
12838 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_7", "Secondary TDM7 Playback",
12839 0, 0, 0, 0),
12840 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_7", "Secondary TDM7 Capture",
12841 0, 0, 0, 0),
12842 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_0", "Tertiary TDM0 Playback",
12843 0, 0, 0, 0),
12844 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_0", "Tertiary TDM0 Capture",
12845 0, 0, 0, 0),
12846 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_1", "Tertiary TDM1 Playback",
12847 0, 0, 0, 0),
12848 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_1", "Tertiary TDM1 Capture",
12849 0, 0, 0, 0),
12850 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_2", "Tertiary TDM2 Playback",
12851 0, 0, 0, 0),
12852 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_2", "Tertiary TDM2 Capture",
12853 0, 0, 0, 0),
12854 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_3", "Tertiary TDM3 Playback",
12855 0, 0, 0, 0),
12856 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_3", "Tertiary TDM3 Capture",
12857 0, 0, 0, 0),
12858 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_4", "Tertiary TDM4 Playback",
12859 0, 0, 0, 0),
12860 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_4", "Tertiary TDM4 Capture",
12861 0, 0, 0, 0),
12862 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_5", "Tertiary TDM5 Playback",
12863 0, 0, 0, 0),
12864 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_5", "Tertiary TDM5 Capture",
12865 0, 0, 0, 0),
12866 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_6", "Tertiary TDM6 Playback",
12867 0, 0, 0, 0),
12868 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_6", "Tertiary TDM6 Capture",
12869 0, 0, 0, 0),
12870 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_7", "Tertiary TDM7 Playback",
12871 0, 0, 0, 0),
12872 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_7", "Tertiary TDM7 Capture",
12873 0, 0, 0, 0),
12874 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_0", "Quaternary TDM0 Playback",
12875 0, 0, 0, 0),
12876 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_0", "Quaternary TDM0 Capture",
12877 0, 0, 0, 0),
12878 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_1", "Quaternary TDM1 Playback",
12879 0, 0, 0, 0),
12880 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_1", "Quaternary TDM1 Capture",
12881 0, 0, 0, 0),
12882 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_2", "Quaternary TDM2 Playback",
12883 0, 0, 0, 0),
12884 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_2", "Quaternary TDM2 Capture",
12885 0, 0, 0, 0),
12886 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_3", "Quaternary TDM3 Playback",
12887 0, 0, 0, 0),
12888 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_3", "Quaternary TDM3 Capture",
12889 0, 0, 0, 0),
12890 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_4", "Quaternary TDM4 Playback",
12891 0, 0, 0, 0),
12892 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_4", "Quaternary TDM4 Capture",
12893 0, 0, 0, 0),
12894 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_5", "Quaternary TDM5 Playback",
12895 0, 0, 0, 0),
12896 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_5", "Quaternary TDM5 Capture",
12897 0, 0, 0, 0),
12898 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_6", "Quaternary TDM6 Playback",
12899 0, 0, 0, 0),
12900 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_6", "Quaternary TDM6 Capture",
12901 0, 0, 0, 0),
12902 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_7", "Quaternary TDM7 Playback",
12903 0, 0, 0, 0),
12904 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_7", "Quaternary TDM7 Capture",
12905 0, 0, 0, 0),
Rohit Kumara5077932017-09-10 22:05:05 +053012906 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_0", "Quinary TDM0 Playback",
12907 0, 0, 0, 0),
12908 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_0", "Quinary TDM0 Capture",
12909 0, 0, 0, 0),
12910 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_1", "Quinary TDM1 Playback",
12911 0, 0, 0, 0),
12912 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_1", "Quinary TDM1 Capture",
12913 0, 0, 0, 0),
12914 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_2", "Quinary TDM2 Playback",
12915 0, 0, 0, 0),
12916 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_2", "Quinary TDM2 Capture",
12917 0, 0, 0, 0),
12918 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_3", "Quinary TDM3 Playback",
12919 0, 0, 0, 0),
12920 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_3", "Quinary TDM3 Capture",
12921 0, 0, 0, 0),
12922 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_4", "Quinary TDM4 Playback",
12923 0, 0, 0, 0),
12924 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_4", "Quinary TDM4 Capture",
12925 0, 0, 0, 0),
12926 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_5", "Quinary TDM5 Playback",
12927 0, 0, 0, 0),
12928 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_5", "Quinary TDM5 Capture",
12929 0, 0, 0, 0),
12930 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_6", "Quinary TDM6 Playback",
12931 0, 0, 0, 0),
12932 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_6", "Quinary TDM6 Capture",
12933 0, 0, 0, 0),
12934 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_7", "Quinary TDM7 Playback",
12935 0, 0, 0, 0),
12936 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_7", "Quinary TDM7 Capture",
12937 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012938 /* incall */
12939 SND_SOC_DAPM_AIF_OUT("VOICE_PLAYBACK_TX", "Voice Farend Playback",
12940 0, 0, 0, 0),
12941 SND_SOC_DAPM_AIF_OUT("VOICE2_PLAYBACK_TX", "Voice2 Farend Playback",
12942 0, 0, 0, 0),
12943 SND_SOC_DAPM_AIF_OUT("SLIMBUS_4_RX", "Slimbus4 Playback",
12944 0, 0, 0, 0),
12945 SND_SOC_DAPM_AIF_IN("INCALL_RECORD_TX", "Voice Uplink Capture",
12946 0, 0, 0, 0),
12947 SND_SOC_DAPM_AIF_IN("INCALL_RECORD_RX", "Voice Downlink Capture",
12948 0, 0, 0, 0),
12949 SND_SOC_DAPM_AIF_IN("SLIMBUS_4_TX", "Slimbus4 Capture",
12950 0, 0, 0, 0),
12951 SND_SOC_DAPM_AIF_IN("SENARY_TX", "Senary_mi2s Capture",
12952 0, 0, 0, 0),
12953 SND_SOC_DAPM_AIF_IN("INT5_MI2S_TX", "INT5 MI2S Capture",
12954 0, 0, 0, 0),
12955 SND_SOC_DAPM_AIF_IN("SLIMBUS_5_TX", "Slimbus5 Capture", 0, 0, 0, 0),
12956
12957 SND_SOC_DAPM_AIF_OUT("AUX_PCM_RX", "AUX PCM Playback", 0, 0, 0, 0),
12958 SND_SOC_DAPM_AIF_IN("AUX_PCM_TX", "AUX PCM Capture", 0, 0, 0, 0),
12959 SND_SOC_DAPM_AIF_OUT("SEC_AUX_PCM_RX", "Sec AUX PCM Playback",
12960 0, 0, 0, 0),
12961 SND_SOC_DAPM_AIF_IN("SEC_AUX_PCM_TX", "Sec AUX PCM Capture",
12962 0, 0, 0, 0),
12963 SND_SOC_DAPM_AIF_OUT("TERT_AUX_PCM_RX", "Tert AUX PCM Playback",
12964 0, 0, 0, 0),
12965 SND_SOC_DAPM_AIF_IN("TERT_AUX_PCM_TX", "Tert AUX PCM Capture",
12966 0, 0, 0, 0),
12967 SND_SOC_DAPM_AIF_OUT("QUAT_AUX_PCM_RX", "Quat AUX PCM Playback",
12968 0, 0, 0, 0),
12969 SND_SOC_DAPM_AIF_IN("QUAT_AUX_PCM_TX", "Quat AUX PCM Capture",
12970 0, 0, 0, 0),
Rohit Kumara5077932017-09-10 22:05:05 +053012971 SND_SOC_DAPM_AIF_OUT("QUIN_AUX_PCM_RX", "Quin AUX PCM Playback",
12972 0, 0, 0, 0),
12973 SND_SOC_DAPM_AIF_IN("QUIN_AUX_PCM_TX", "Quin AUX PCM Capture",
12974 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012975 SND_SOC_DAPM_AIF_IN("VOICE_STUB_DL", "VOICE_STUB Playback", 0, 0, 0, 0),
12976 SND_SOC_DAPM_AIF_OUT("VOICE_STUB_UL", "VOICE_STUB Capture", 0, 0, 0, 0),
12977 SND_SOC_DAPM_AIF_IN("VOICE2_STUB_DL", "VOICE2_STUB Playback",
12978 0, 0, 0, 0),
12979 SND_SOC_DAPM_AIF_OUT("VOICE2_STUB_UL", "VOICE2_STUB Capture",
12980 0, 0, 0, 0),
12981 SND_SOC_DAPM_AIF_IN("VOLTE_STUB_DL", "VOLTE_STUB Playback", 0, 0, 0, 0),
12982 SND_SOC_DAPM_AIF_OUT("VOLTE_STUB_UL", "VOLTE_STUB Capture", 0, 0, 0, 0),
12983 SND_SOC_DAPM_AIF_OUT("STUB_RX", "Stub Playback", 0, 0, 0, 0),
12984 SND_SOC_DAPM_AIF_IN("STUB_TX", "Stub Capture", 0, 0, 0, 0),
12985 SND_SOC_DAPM_AIF_OUT("SLIMBUS_1_RX", "Slimbus1 Playback", 0, 0, 0, 0),
12986 SND_SOC_DAPM_AIF_IN("SLIMBUS_1_TX", "Slimbus1 Capture", 0, 0, 0, 0),
12987 SND_SOC_DAPM_AIF_IN("STUB_1_TX", "Stub1 Capture", 0, 0, 0, 0),
12988 SND_SOC_DAPM_AIF_OUT("SLIMBUS_3_RX", "Slimbus3 Playback", 0, 0, 0, 0),
12989 SND_SOC_DAPM_AIF_IN("SLIMBUS_3_TX", "Slimbus3 Capture", 0, 0, 0, 0),
12990 /* In- call recording */
12991 SND_SOC_DAPM_AIF_OUT("SLIMBUS_6_RX", "Slimbus6 Playback", 0, 0, 0, 0),
12992 SND_SOC_DAPM_AIF_IN("SLIMBUS_6_TX", "Slimbus6 Capture", 0, 0, 0, 0),
12993
12994 SND_SOC_DAPM_AIF_OUT("SLIMBUS_7_RX", "Slimbus7 Playback", 0, 0, 0, 0),
12995 SND_SOC_DAPM_AIF_IN("SLIMBUS_7_TX", "Slimbus7 Capture", 0, 0, 0, 0),
12996
12997 SND_SOC_DAPM_AIF_OUT("SLIMBUS_8_RX", "Slimbus8 Playback", 0, 0, 0, 0),
12998 SND_SOC_DAPM_AIF_IN("SLIMBUS_8_TX", "Slimbus8 Capture", 0, 0, 0, 0),
12999 SND_SOC_DAPM_AIF_OUT("USB_AUDIO_RX", "USB Audio Playback", 0, 0, 0, 0),
13000 SND_SOC_DAPM_AIF_IN("USB_AUDIO_TX", "USB Audio Capture", 0, 0, 0, 0),
13001
13002 /* Switch Definitions */
13003 SND_SOC_DAPM_SWITCH("SLIMBUS_DL_HL", SND_SOC_NOPM, 0, 0,
13004 &slim_fm_switch_mixer_controls),
13005 SND_SOC_DAPM_SWITCH("SLIMBUS1_DL_HL", SND_SOC_NOPM, 0, 0,
13006 &slim1_fm_switch_mixer_controls),
13007 SND_SOC_DAPM_SWITCH("SLIMBUS3_DL_HL", SND_SOC_NOPM, 0, 0,
13008 &slim3_fm_switch_mixer_controls),
13009 SND_SOC_DAPM_SWITCH("SLIMBUS4_DL_HL", SND_SOC_NOPM, 0, 0,
13010 &slim4_fm_switch_mixer_controls),
13011 SND_SOC_DAPM_SWITCH("SLIMBUS6_DL_HL", SND_SOC_NOPM, 0, 0,
13012 &slim6_fm_switch_mixer_controls),
13013 SND_SOC_DAPM_SWITCH("PCM_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13014 &pcm_rx_switch_mixer_controls),
13015 SND_SOC_DAPM_SWITCH("INT0_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13016 &int0_mi2s_rx_switch_mixer_controls),
13017 SND_SOC_DAPM_SWITCH("INT4_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13018 &int4_mi2s_rx_switch_mixer_controls),
13019 SND_SOC_DAPM_SWITCH("PRI_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13020 &pri_mi2s_rx_switch_mixer_controls),
13021 SND_SOC_DAPM_SWITCH("SEC_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13022 &sec_mi2s_rx_switch_mixer_controls),
13023 SND_SOC_DAPM_SWITCH("TERT_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13024 &tert_mi2s_rx_switch_mixer_controls),
13025 SND_SOC_DAPM_SWITCH("QUAT_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13026 &quat_mi2s_rx_switch_mixer_controls),
Rohit Kumara5077932017-09-10 22:05:05 +053013027 SND_SOC_DAPM_SWITCH("QUIN_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13028 &quin_mi2s_rx_switch_mixer_controls),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013029 SND_SOC_DAPM_SWITCH("HFP_PRI_AUX_UL_HL", SND_SOC_NOPM, 0, 0,
13030 &hfp_pri_aux_switch_mixer_controls),
13031 SND_SOC_DAPM_SWITCH("HFP_AUX_UL_HL", SND_SOC_NOPM, 0, 0,
13032 &hfp_aux_switch_mixer_controls),
13033 SND_SOC_DAPM_SWITCH("HFP_INT_UL_HL", SND_SOC_NOPM, 0, 0,
13034 &hfp_int_switch_mixer_controls),
13035 SND_SOC_DAPM_SWITCH("HFP_SLIM7_UL_HL", SND_SOC_NOPM, 0, 0,
13036 &hfp_slim7_switch_mixer_controls),
13037 SND_SOC_DAPM_SWITCH("USB_DL_HL", SND_SOC_NOPM, 0, 0,
13038 &usb_switch_mixer_controls),
13039
13040 /* Mixer definitions */
13041 SND_SOC_DAPM_MIXER("PRI_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13042 pri_i2s_rx_mixer_controls, ARRAY_SIZE(pri_i2s_rx_mixer_controls)),
13043 SND_SOC_DAPM_MIXER("SEC_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13044 sec_i2s_rx_mixer_controls, ARRAY_SIZE(sec_i2s_rx_mixer_controls)),
13045 SND_SOC_DAPM_MIXER("SLIMBUS_0_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13046 slimbus_rx_mixer_controls, ARRAY_SIZE(slimbus_rx_mixer_controls)),
13047 SND_SOC_DAPM_MIXER("SLIMBUS_2_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13048 slimbus_2_rx_mixer_controls, ARRAY_SIZE(slimbus_2_rx_mixer_controls)),
13049 SND_SOC_DAPM_MIXER("SLIMBUS_5_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13050 slimbus_5_rx_mixer_controls, ARRAY_SIZE(slimbus_5_rx_mixer_controls)),
13051 SND_SOC_DAPM_MIXER("SLIMBUS_7_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13052 slimbus_7_rx_mixer_controls, ARRAY_SIZE(slimbus_7_rx_mixer_controls)),
13053 SND_SOC_DAPM_MIXER("HDMI Mixer", SND_SOC_NOPM, 0, 0,
13054 hdmi_mixer_controls, ARRAY_SIZE(hdmi_mixer_controls)),
13055 SND_SOC_DAPM_MIXER("DISPLAY_PORT Mixer", SND_SOC_NOPM, 0, 0,
13056 display_port_mixer_controls, ARRAY_SIZE(display_port_mixer_controls)),
13057 SND_SOC_DAPM_MIXER("SPDIF_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13058 spdif_rx_mixer_controls, ARRAY_SIZE(spdif_rx_mixer_controls)),
13059 SND_SOC_DAPM_MIXER("MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13060 mi2s_rx_mixer_controls, ARRAY_SIZE(mi2s_rx_mixer_controls)),
13061 SND_SOC_DAPM_MIXER("QUAT_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13062 quaternary_mi2s_rx_mixer_controls,
13063 ARRAY_SIZE(quaternary_mi2s_rx_mixer_controls)),
13064 SND_SOC_DAPM_MIXER("TERT_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13065 tertiary_mi2s_rx_mixer_controls,
13066 ARRAY_SIZE(tertiary_mi2s_rx_mixer_controls)),
13067 SND_SOC_DAPM_MIXER("SEC_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13068 secondary_mi2s_rx_mixer_controls,
13069 ARRAY_SIZE(secondary_mi2s_rx_mixer_controls)),
13070 SND_SOC_DAPM_MIXER("SEC_MI2S_RX_SD1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13071 secondary_mi2s_rx2_mixer_controls,
13072 ARRAY_SIZE(secondary_mi2s_rx2_mixer_controls)),
13073 SND_SOC_DAPM_MIXER("PRI_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13074 primary_mi2s_rx_mixer_controls,
13075 ARRAY_SIZE(primary_mi2s_rx_mixer_controls)),
13076 SND_SOC_DAPM_MIXER("INT0_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13077 int0_mi2s_rx_mixer_controls,
13078 ARRAY_SIZE(int0_mi2s_rx_mixer_controls)),
13079 SND_SOC_DAPM_MIXER("INT4_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13080 int4_mi2s_rx_mixer_controls,
13081 ARRAY_SIZE(int4_mi2s_rx_mixer_controls)),
13082 SND_SOC_DAPM_MIXER("QUIN_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13083 quinary_mi2s_rx_mixer_controls,
13084 ARRAY_SIZE(quinary_mi2s_rx_mixer_controls)),
13085 SND_SOC_DAPM_MIXER("PRI_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13086 pri_tdm_rx_0_mixer_controls,
13087 ARRAY_SIZE(pri_tdm_rx_0_mixer_controls)),
13088 SND_SOC_DAPM_MIXER("PRI_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13089 pri_tdm_rx_1_mixer_controls,
13090 ARRAY_SIZE(pri_tdm_rx_1_mixer_controls)),
13091 SND_SOC_DAPM_MIXER("PRI_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13092 pri_tdm_rx_2_mixer_controls,
13093 ARRAY_SIZE(pri_tdm_rx_2_mixer_controls)),
13094 SND_SOC_DAPM_MIXER("PRI_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
13095 pri_tdm_rx_3_mixer_controls,
13096 ARRAY_SIZE(pri_tdm_rx_3_mixer_controls)),
13097 SND_SOC_DAPM_MIXER("PRI_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13098 pri_tdm_tx_0_mixer_controls,
13099 ARRAY_SIZE(pri_tdm_tx_0_mixer_controls)),
13100 SND_SOC_DAPM_MIXER("SEC_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13101 sec_tdm_rx_0_mixer_controls,
13102 ARRAY_SIZE(sec_tdm_rx_0_mixer_controls)),
13103 SND_SOC_DAPM_MIXER("SEC_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13104 sec_tdm_rx_1_mixer_controls,
13105 ARRAY_SIZE(sec_tdm_rx_1_mixer_controls)),
13106 SND_SOC_DAPM_MIXER("SEC_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13107 sec_tdm_rx_2_mixer_controls,
13108 ARRAY_SIZE(sec_tdm_rx_2_mixer_controls)),
13109 SND_SOC_DAPM_MIXER("SEC_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
13110 sec_tdm_rx_3_mixer_controls,
13111 ARRAY_SIZE(sec_tdm_rx_3_mixer_controls)),
13112 SND_SOC_DAPM_MIXER("SEC_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13113 sec_tdm_tx_0_mixer_controls,
13114 ARRAY_SIZE(sec_tdm_tx_0_mixer_controls)),
13115 SND_SOC_DAPM_MIXER("TERT_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13116 tert_tdm_rx_0_mixer_controls,
13117 ARRAY_SIZE(tert_tdm_rx_0_mixer_controls)),
13118 SND_SOC_DAPM_MIXER("TERT_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13119 tert_tdm_tx_0_mixer_controls,
13120 ARRAY_SIZE(tert_tdm_tx_0_mixer_controls)),
13121 SND_SOC_DAPM_MIXER("TERT_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13122 tert_tdm_rx_1_mixer_controls,
13123 ARRAY_SIZE(tert_tdm_rx_1_mixer_controls)),
13124 SND_SOC_DAPM_MIXER("TERT_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13125 tert_tdm_rx_2_mixer_controls,
13126 ARRAY_SIZE(tert_tdm_rx_2_mixer_controls)),
13127 SND_SOC_DAPM_MIXER("TERT_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
13128 tert_tdm_rx_3_mixer_controls,
13129 ARRAY_SIZE(tert_tdm_rx_3_mixer_controls)),
13130 SND_SOC_DAPM_MIXER("TERT_TDM_RX_4 Audio Mixer", SND_SOC_NOPM, 0, 0,
13131 tert_tdm_rx_4_mixer_controls,
13132 ARRAY_SIZE(tert_tdm_rx_4_mixer_controls)),
13133 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13134 quat_tdm_rx_0_mixer_controls,
13135 ARRAY_SIZE(quat_tdm_rx_0_mixer_controls)),
13136 SND_SOC_DAPM_MIXER("QUAT_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13137 quat_tdm_tx_0_mixer_controls,
13138 ARRAY_SIZE(quat_tdm_tx_0_mixer_controls)),
13139 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13140 quat_tdm_rx_1_mixer_controls,
13141 ARRAY_SIZE(quat_tdm_rx_1_mixer_controls)),
13142 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13143 quat_tdm_rx_2_mixer_controls,
13144 ARRAY_SIZE(quat_tdm_rx_2_mixer_controls)),
13145 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
13146 quat_tdm_rx_3_mixer_controls,
13147 ARRAY_SIZE(quat_tdm_rx_3_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013148 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13149 quin_tdm_rx_0_mixer_controls,
13150 ARRAY_SIZE(quin_tdm_rx_0_mixer_controls)),
13151 SND_SOC_DAPM_MIXER("QUIN_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13152 quin_tdm_tx_0_mixer_controls,
13153 ARRAY_SIZE(quin_tdm_tx_0_mixer_controls)),
13154 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13155 quin_tdm_rx_1_mixer_controls,
13156 ARRAY_SIZE(quin_tdm_rx_1_mixer_controls)),
13157 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13158 quin_tdm_rx_2_mixer_controls,
13159 ARRAY_SIZE(quin_tdm_rx_2_mixer_controls)),
13160 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
13161 quin_tdm_rx_3_mixer_controls,
13162 ARRAY_SIZE(quin_tdm_rx_3_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013163 SND_SOC_DAPM_MIXER("MultiMedia1 Mixer", SND_SOC_NOPM, 0, 0,
13164 mmul1_mixer_controls, ARRAY_SIZE(mmul1_mixer_controls)),
13165 SND_SOC_DAPM_MIXER("MultiMedia2 Mixer", SND_SOC_NOPM, 0, 0,
13166 mmul2_mixer_controls, ARRAY_SIZE(mmul2_mixer_controls)),
13167 SND_SOC_DAPM_MIXER("MultiMedia3 Mixer", SND_SOC_NOPM, 0, 0,
13168 mmul3_mixer_controls, ARRAY_SIZE(mmul3_mixer_controls)),
13169 SND_SOC_DAPM_MIXER("MultiMedia4 Mixer", SND_SOC_NOPM, 0, 0,
13170 mmul4_mixer_controls, ARRAY_SIZE(mmul4_mixer_controls)),
13171 SND_SOC_DAPM_MIXER("MultiMedia5 Mixer", SND_SOC_NOPM, 0, 0,
13172 mmul5_mixer_controls, ARRAY_SIZE(mmul5_mixer_controls)),
13173 SND_SOC_DAPM_MIXER("MultiMedia6 Mixer", SND_SOC_NOPM, 0, 0,
13174 mmul6_mixer_controls, ARRAY_SIZE(mmul6_mixer_controls)),
13175 SND_SOC_DAPM_MIXER("MultiMedia8 Mixer", SND_SOC_NOPM, 0, 0,
13176 mmul8_mixer_controls, ARRAY_SIZE(mmul8_mixer_controls)),
13177 SND_SOC_DAPM_MIXER("MultiMedia9 Mixer", SND_SOC_NOPM, 0, 0,
13178 mmul9_mixer_controls, ARRAY_SIZE(mmul9_mixer_controls)),
Laxminath Kasam38070be2017-08-17 18:21:59 +053013179 SND_SOC_DAPM_MIXER("MultiMedia10 Mixer", SND_SOC_NOPM, 0, 0,
13180 mmul10_mixer_controls, ARRAY_SIZE(mmul10_mixer_controls)),
Asish Bhattacharya34504582017-08-08 12:55:01 +053013181 SND_SOC_DAPM_MIXER("MultiMedia16 Mixer", SND_SOC_NOPM, 0, 0,
13182 mmul16_mixer_controls, ARRAY_SIZE(mmul16_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013183 SND_SOC_DAPM_MIXER("MultiMedia17 Mixer", SND_SOC_NOPM, 0, 0,
13184 mmul17_mixer_controls, ARRAY_SIZE(mmul17_mixer_controls)),
13185 SND_SOC_DAPM_MIXER("MultiMedia18 Mixer", SND_SOC_NOPM, 0, 0,
13186 mmul18_mixer_controls, ARRAY_SIZE(mmul18_mixer_controls)),
13187 SND_SOC_DAPM_MIXER("MultiMedia19 Mixer", SND_SOC_NOPM, 0, 0,
13188 mmul19_mixer_controls, ARRAY_SIZE(mmul19_mixer_controls)),
13189 SND_SOC_DAPM_MIXER("MultiMedia20 Mixer", SND_SOC_NOPM, 0, 0,
13190 mmul20_mixer_controls, ARRAY_SIZE(mmul20_mixer_controls)),
13191 SND_SOC_DAPM_MIXER("AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13192 auxpcm_rx_mixer_controls, ARRAY_SIZE(auxpcm_rx_mixer_controls)),
13193 SND_SOC_DAPM_MIXER("SEC_AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13194 sec_auxpcm_rx_mixer_controls, ARRAY_SIZE(sec_auxpcm_rx_mixer_controls)),
13195 SND_SOC_DAPM_MIXER("TERT_AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13196 tert_auxpcm_rx_mixer_controls,
13197 ARRAY_SIZE(tert_auxpcm_rx_mixer_controls)),
13198 SND_SOC_DAPM_MIXER("QUAT_AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13199 quat_auxpcm_rx_mixer_controls,
13200 ARRAY_SIZE(quat_auxpcm_rx_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013201 SND_SOC_DAPM_MIXER("QUIN_AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13202 quin_auxpcm_rx_mixer_controls,
13203 ARRAY_SIZE(quin_auxpcm_rx_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013204 /* incall */
13205 SND_SOC_DAPM_MIXER("Incall_Music Audio Mixer", SND_SOC_NOPM, 0, 0,
13206 incall_music_delivery_mixer_controls,
13207 ARRAY_SIZE(incall_music_delivery_mixer_controls)),
13208 SND_SOC_DAPM_MIXER("Incall_Music_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13209 incall_music2_delivery_mixer_controls,
13210 ARRAY_SIZE(incall_music2_delivery_mixer_controls)),
13211 SND_SOC_DAPM_MIXER("SLIMBUS_4_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13212 slimbus_4_rx_mixer_controls,
13213 ARRAY_SIZE(slimbus_4_rx_mixer_controls)),
13214 SND_SOC_DAPM_MIXER("SLIMBUS_6_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13215 slimbus_6_rx_mixer_controls,
13216 ARRAY_SIZE(slimbus_6_rx_mixer_controls)),
13217 SND_SOC_DAPM_MIXER("USB_AUDIO_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13218 usb_audio_rx_mixer_controls,
13219 ARRAY_SIZE(usb_audio_rx_mixer_controls)),
13220 /* Voice Mixer */
13221 SND_SOC_DAPM_MIXER("PRI_RX_Voice Mixer",
13222 SND_SOC_NOPM, 0, 0, pri_rx_voice_mixer_controls,
13223 ARRAY_SIZE(pri_rx_voice_mixer_controls)),
13224 SND_SOC_DAPM_MIXER("SEC_RX_Voice Mixer",
13225 SND_SOC_NOPM, 0, 0,
13226 sec_i2s_rx_voice_mixer_controls,
13227 ARRAY_SIZE(sec_i2s_rx_voice_mixer_controls)),
13228 SND_SOC_DAPM_MIXER("SEC_MI2S_RX_Voice Mixer",
13229 SND_SOC_NOPM, 0, 0,
13230 sec_mi2s_rx_voice_mixer_controls,
13231 ARRAY_SIZE(sec_mi2s_rx_voice_mixer_controls)),
13232 SND_SOC_DAPM_MIXER("SLIM_0_RX_Voice Mixer",
13233 SND_SOC_NOPM, 0, 0,
13234 slimbus_rx_voice_mixer_controls,
13235 ARRAY_SIZE(slimbus_rx_voice_mixer_controls)),
13236 SND_SOC_DAPM_MIXER("INTERNAL_BT_SCO_RX_Voice Mixer",
13237 SND_SOC_NOPM, 0, 0,
13238 bt_sco_rx_voice_mixer_controls,
13239 ARRAY_SIZE(bt_sco_rx_voice_mixer_controls)),
13240 SND_SOC_DAPM_MIXER("AFE_PCM_RX_Voice Mixer",
13241 SND_SOC_NOPM, 0, 0,
13242 afe_pcm_rx_voice_mixer_controls,
13243 ARRAY_SIZE(afe_pcm_rx_voice_mixer_controls)),
13244 SND_SOC_DAPM_MIXER("AUX_PCM_RX_Voice Mixer",
13245 SND_SOC_NOPM, 0, 0,
13246 aux_pcm_rx_voice_mixer_controls,
13247 ARRAY_SIZE(aux_pcm_rx_voice_mixer_controls)),
13248 SND_SOC_DAPM_MIXER("SEC_AUX_PCM_RX_Voice Mixer",
13249 SND_SOC_NOPM, 0, 0,
13250 sec_aux_pcm_rx_voice_mixer_controls,
13251 ARRAY_SIZE(sec_aux_pcm_rx_voice_mixer_controls)),
13252 SND_SOC_DAPM_MIXER("TERT_AUX_PCM_RX_Voice Mixer",
13253 SND_SOC_NOPM, 0, 0,
13254 tert_aux_pcm_rx_voice_mixer_controls,
13255 ARRAY_SIZE(tert_aux_pcm_rx_voice_mixer_controls)),
13256 SND_SOC_DAPM_MIXER("QUAT_AUX_PCM_RX_Voice Mixer",
13257 SND_SOC_NOPM, 0, 0,
13258 quat_aux_pcm_rx_voice_mixer_controls,
13259 ARRAY_SIZE(quat_aux_pcm_rx_voice_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013260 SND_SOC_DAPM_MIXER("QUIN_AUX_PCM_RX_Voice Mixer",
13261 SND_SOC_NOPM, 0, 0,
13262 quin_aux_pcm_rx_voice_mixer_controls,
13263 ARRAY_SIZE(quin_aux_pcm_rx_voice_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013264 SND_SOC_DAPM_MIXER("HDMI_RX_Voice Mixer",
13265 SND_SOC_NOPM, 0, 0,
13266 hdmi_rx_voice_mixer_controls,
13267 ARRAY_SIZE(hdmi_rx_voice_mixer_controls)),
13268 SND_SOC_DAPM_MIXER("MI2S_RX_Voice Mixer",
13269 SND_SOC_NOPM, 0, 0,
13270 mi2s_rx_voice_mixer_controls,
13271 ARRAY_SIZE(mi2s_rx_voice_mixer_controls)),
13272 SND_SOC_DAPM_MIXER("PRI_MI2S_RX_Voice Mixer",
13273 SND_SOC_NOPM, 0, 0,
13274 pri_mi2s_rx_voice_mixer_controls,
13275 ARRAY_SIZE(pri_mi2s_rx_voice_mixer_controls)),
13276 SND_SOC_DAPM_MIXER("INT0_MI2S_RX_Voice Mixer",
13277 SND_SOC_NOPM, 0, 0,
13278 int0_mi2s_rx_voice_mixer_controls,
13279 ARRAY_SIZE(int0_mi2s_rx_voice_mixer_controls)),
13280 SND_SOC_DAPM_MIXER("INT4_MI2S_RX_Voice Mixer",
13281 SND_SOC_NOPM, 0, 0,
13282 int4_mi2s_rx_voice_mixer_controls,
13283 ARRAY_SIZE(int4_mi2s_rx_voice_mixer_controls)),
13284 SND_SOC_DAPM_MIXER("TERT_MI2S_RX_Voice Mixer",
13285 SND_SOC_NOPM, 0, 0,
13286 tert_mi2s_rx_voice_mixer_controls,
13287 ARRAY_SIZE(tert_mi2s_rx_voice_mixer_controls)),
13288 SND_SOC_DAPM_MIXER("QUAT_MI2S_RX_Voice Mixer",
13289 SND_SOC_NOPM, 0, 0,
13290 quat_mi2s_rx_voice_mixer_controls,
13291 ARRAY_SIZE(quat_mi2s_rx_voice_mixer_controls)),
13292 SND_SOC_DAPM_MIXER("QUIN_MI2S_RX_Voice Mixer",
13293 SND_SOC_NOPM, 0, 0,
13294 quin_mi2s_rx_voice_mixer_controls,
13295 ARRAY_SIZE(quin_mi2s_rx_voice_mixer_controls)),
13296 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_2_Voice Mixer",
13297 SND_SOC_NOPM, 0, 0,
13298 quat_tdm_rx_2_voice_mixer_controls,
13299 ARRAY_SIZE(quat_tdm_rx_2_voice_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013300 SND_SOC_DAPM_MIXER("Voip_Tx Mixer",
13301 SND_SOC_NOPM, 0, 0, tx_voip_mixer_controls,
13302 ARRAY_SIZE(tx_voip_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013303 SND_SOC_DAPM_MIXER("VoiceMMode1_Tx Mixer",
13304 SND_SOC_NOPM, 0, 0, tx_voicemmode1_mixer_controls,
13305 ARRAY_SIZE(tx_voicemmode1_mixer_controls)),
13306 SND_SOC_DAPM_MIXER("VoiceMMode2_Tx Mixer",
13307 SND_SOC_NOPM, 0, 0, tx_voicemmode2_mixer_controls,
13308 ARRAY_SIZE(tx_voicemmode2_mixer_controls)),
13309 SND_SOC_DAPM_MIXER("INTERNAL_BT_SCO_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13310 int_bt_sco_rx_mixer_controls, ARRAY_SIZE(int_bt_sco_rx_mixer_controls)),
13311 SND_SOC_DAPM_MIXER("INTERNAL_A2DP_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13312 int_bt_a2dp_rx_mixer_controls,
13313 ARRAY_SIZE(int_bt_a2dp_rx_mixer_controls)),
13314 SND_SOC_DAPM_MIXER("INTERNAL_FM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13315 int_fm_rx_mixer_controls, ARRAY_SIZE(int_fm_rx_mixer_controls)),
13316 SND_SOC_DAPM_MIXER("AFE_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13317 afe_pcm_rx_mixer_controls, ARRAY_SIZE(afe_pcm_rx_mixer_controls)),
13318 SND_SOC_DAPM_MIXER("Voice Stub Tx Mixer", SND_SOC_NOPM, 0, 0,
13319 tx_voice_stub_mixer_controls, ARRAY_SIZE(tx_voice_stub_mixer_controls)),
13320 SND_SOC_DAPM_MIXER("Voice2 Stub Tx Mixer", SND_SOC_NOPM, 0, 0,
13321 tx_voice2_stub_mixer_controls,
13322 ARRAY_SIZE(tx_voice2_stub_mixer_controls)),
13323 SND_SOC_DAPM_MIXER("VoLTE Stub Tx Mixer", SND_SOC_NOPM, 0, 0,
13324 tx_volte_stub_mixer_controls, ARRAY_SIZE(tx_volte_stub_mixer_controls)),
13325 SND_SOC_DAPM_MIXER("STUB_RX Mixer", SND_SOC_NOPM, 0, 0,
13326 stub_rx_mixer_controls, ARRAY_SIZE(stub_rx_mixer_controls)),
13327 SND_SOC_DAPM_MIXER("SLIMBUS_1_RX Mixer", SND_SOC_NOPM, 0, 0,
13328 slimbus_1_rx_mixer_controls, ARRAY_SIZE(slimbus_1_rx_mixer_controls)),
13329 SND_SOC_DAPM_MIXER("SLIMBUS_3_RX_Voice Mixer", SND_SOC_NOPM, 0, 0,
13330 slimbus_3_rx_mixer_controls, ARRAY_SIZE(slimbus_3_rx_mixer_controls)),
13331 SND_SOC_DAPM_MIXER("SLIM_6_RX_Voice Mixer",
13332 SND_SOC_NOPM, 0, 0,
13333 slimbus_6_rx_voice_mixer_controls,
13334 ARRAY_SIZE(slimbus_6_rx_voice_mixer_controls)),
13335 SND_SOC_DAPM_MIXER("SLIM_7_RX_Voice Mixer", SND_SOC_NOPM, 0, 0,
13336 slimbus_7_rx_voice_mixer_controls,
13337 ARRAY_SIZE(slimbus_7_rx_voice_mixer_controls)),
13338 SND_SOC_DAPM_MIXER("SLIM_8_RX_Voice Mixer", SND_SOC_NOPM, 0, 0,
13339 slimbus_8_rx_voice_mixer_controls,
13340 ARRAY_SIZE(slimbus_8_rx_voice_mixer_controls)),
13341 /* port mixer */
13342 SND_SOC_DAPM_MIXER("SLIMBUS_0_RX Port Mixer",
13343 SND_SOC_NOPM, 0, 0, sbus_0_rx_port_mixer_controls,
13344 ARRAY_SIZE(sbus_0_rx_port_mixer_controls)),
13345 SND_SOC_DAPM_MIXER("AUX_PCM_RX Port Mixer",
13346 SND_SOC_NOPM, 0, 0, aux_pcm_rx_port_mixer_controls,
13347 ARRAY_SIZE(aux_pcm_rx_port_mixer_controls)),
13348 SND_SOC_DAPM_MIXER("SEC_AUXPCM_RX Port Mixer",
13349 SND_SOC_NOPM, 0, 0, sec_auxpcm_rx_port_mixer_controls,
13350 ARRAY_SIZE(sec_auxpcm_rx_port_mixer_controls)),
13351 SND_SOC_DAPM_MIXER("TERT_AUXPCM_RX Port Mixer",
13352 SND_SOC_NOPM, 0, 0, tert_auxpcm_rx_port_mixer_controls,
13353 ARRAY_SIZE(tert_auxpcm_rx_port_mixer_controls)),
13354 SND_SOC_DAPM_MIXER("QUAT_AUXPCM_RX Port Mixer",
13355 SND_SOC_NOPM, 0, 0, quat_auxpcm_rx_port_mixer_controls,
13356 ARRAY_SIZE(quat_auxpcm_rx_port_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013357 SND_SOC_DAPM_MIXER("QUIN_AUXPCM_RX Port Mixer",
13358 SND_SOC_NOPM, 0, 0, quin_auxpcm_rx_port_mixer_controls,
13359 ARRAY_SIZE(quin_auxpcm_rx_port_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013360 SND_SOC_DAPM_MIXER("SLIMBUS_1_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13361 sbus_1_rx_port_mixer_controls,
13362 ARRAY_SIZE(sbus_1_rx_port_mixer_controls)),
13363 SND_SOC_DAPM_MIXER("INTERNAL_BT_SCO_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13364 bt_sco_rx_port_mixer_controls,
13365 ARRAY_SIZE(bt_sco_rx_port_mixer_controls)),
13366 SND_SOC_DAPM_MIXER("AFE_PCM_RX Port Mixer",
13367 SND_SOC_NOPM, 0, 0, afe_pcm_rx_port_mixer_controls,
13368 ARRAY_SIZE(afe_pcm_rx_port_mixer_controls)),
13369 SND_SOC_DAPM_MIXER("HDMI_RX Port Mixer",
13370 SND_SOC_NOPM, 0, 0, hdmi_rx_port_mixer_controls,
13371 ARRAY_SIZE(hdmi_rx_port_mixer_controls)),
13372 SND_SOC_DAPM_MIXER("DISPLAY_PORT_RX Port Mixer",
13373 SND_SOC_NOPM, 0, 0, display_port_rx_port_mixer_controls,
13374 ARRAY_SIZE(display_port_rx_port_mixer_controls)),
13375 SND_SOC_DAPM_MIXER("SEC_I2S_RX Port Mixer",
13376 SND_SOC_NOPM, 0, 0, sec_i2s_rx_port_mixer_controls,
13377 ARRAY_SIZE(sec_i2s_rx_port_mixer_controls)),
13378 SND_SOC_DAPM_MIXER("SLIMBUS_3_RX Port Mixer",
13379 SND_SOC_NOPM, 0, 0, sbus_3_rx_port_mixer_controls,
13380 ARRAY_SIZE(sbus_3_rx_port_mixer_controls)),
13381 SND_SOC_DAPM_MIXER("SLIMBUS_6_RX Port Mixer",
13382 SND_SOC_NOPM, 0, 0, sbus_6_rx_port_mixer_controls,
13383 ARRAY_SIZE(sbus_6_rx_port_mixer_controls)),
13384 SND_SOC_DAPM_MIXER("MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13385 mi2s_rx_port_mixer_controls, ARRAY_SIZE(mi2s_rx_port_mixer_controls)),
13386 SND_SOC_DAPM_MIXER("PRI_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13387 primary_mi2s_rx_port_mixer_controls,
13388 ARRAY_SIZE(primary_mi2s_rx_port_mixer_controls)),
13389 SND_SOC_DAPM_MIXER("SEC_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13390 sec_mi2s_rx_port_mixer_controls,
13391 ARRAY_SIZE(sec_mi2s_rx_port_mixer_controls)),
13392 SND_SOC_DAPM_MIXER("TERT_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13393 tert_mi2s_rx_port_mixer_controls,
13394 ARRAY_SIZE(tert_mi2s_rx_port_mixer_controls)),
13395 SND_SOC_DAPM_MIXER("QUAT_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13396 quat_mi2s_rx_port_mixer_controls,
13397 ARRAY_SIZE(quat_mi2s_rx_port_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013398 SND_SOC_DAPM_MIXER("QUIN_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13399 quin_mi2s_rx_port_mixer_controls,
13400 ARRAY_SIZE(quin_mi2s_rx_port_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013401 SND_SOC_DAPM_MIXER("PRI_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
13402 pri_tdm_rx_0_port_mixer_controls,
13403 ARRAY_SIZE(pri_tdm_rx_0_port_mixer_controls)),
13404 SND_SOC_DAPM_MIXER("PRI_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
13405 pri_tdm_rx_1_port_mixer_controls,
13406 ARRAY_SIZE(pri_tdm_rx_1_port_mixer_controls)),
13407 SND_SOC_DAPM_MIXER("PRI_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
13408 pri_tdm_rx_2_port_mixer_controls,
13409 ARRAY_SIZE(pri_tdm_rx_2_port_mixer_controls)),
13410 SND_SOC_DAPM_MIXER("PRI_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
13411 pri_tdm_rx_3_port_mixer_controls,
13412 ARRAY_SIZE(pri_tdm_rx_3_port_mixer_controls)),
13413 SND_SOC_DAPM_MIXER("SEC_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
13414 sec_tdm_rx_0_port_mixer_controls,
13415 ARRAY_SIZE(sec_tdm_rx_0_port_mixer_controls)),
13416 SND_SOC_DAPM_MIXER("SEC_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
13417 sec_tdm_rx_1_port_mixer_controls,
13418 ARRAY_SIZE(sec_tdm_rx_1_port_mixer_controls)),
13419 SND_SOC_DAPM_MIXER("SEC_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
13420 sec_tdm_rx_2_port_mixer_controls,
13421 ARRAY_SIZE(sec_tdm_rx_2_port_mixer_controls)),
13422 SND_SOC_DAPM_MIXER("SEC_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
13423 sec_tdm_rx_3_port_mixer_controls,
13424 ARRAY_SIZE(sec_tdm_rx_3_port_mixer_controls)),
13425 SND_SOC_DAPM_MIXER("TERT_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
13426 tert_tdm_rx_0_port_mixer_controls,
13427 ARRAY_SIZE(tert_tdm_rx_0_port_mixer_controls)),
13428 SND_SOC_DAPM_MIXER("TERT_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
13429 tert_tdm_rx_1_port_mixer_controls,
13430 ARRAY_SIZE(tert_tdm_rx_1_port_mixer_controls)),
13431 SND_SOC_DAPM_MIXER("TERT_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
13432 tert_tdm_rx_2_port_mixer_controls,
13433 ARRAY_SIZE(tert_tdm_rx_2_port_mixer_controls)),
13434 SND_SOC_DAPM_MIXER("TERT_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
13435 tert_tdm_rx_3_port_mixer_controls,
13436 ARRAY_SIZE(tert_tdm_rx_3_port_mixer_controls)),
13437 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
13438 quat_tdm_rx_0_port_mixer_controls,
13439 ARRAY_SIZE(quat_tdm_rx_0_port_mixer_controls)),
13440 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
13441 quat_tdm_rx_1_port_mixer_controls,
13442 ARRAY_SIZE(quat_tdm_rx_1_port_mixer_controls)),
13443 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
13444 quat_tdm_rx_2_port_mixer_controls,
13445 ARRAY_SIZE(quat_tdm_rx_2_port_mixer_controls)),
13446 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
13447 quat_tdm_rx_3_port_mixer_controls,
13448 ARRAY_SIZE(quat_tdm_rx_3_port_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013449 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
13450 quin_tdm_rx_0_port_mixer_controls,
13451 ARRAY_SIZE(quin_tdm_rx_0_port_mixer_controls)),
13452 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
13453 quin_tdm_rx_1_port_mixer_controls,
13454 ARRAY_SIZE(quin_tdm_rx_1_port_mixer_controls)),
13455 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
13456 quin_tdm_rx_2_port_mixer_controls,
13457 ARRAY_SIZE(quin_tdm_rx_2_port_mixer_controls)),
13458 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
13459 quin_tdm_rx_3_port_mixer_controls,
13460 ARRAY_SIZE(quin_tdm_rx_3_port_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013461 SND_SOC_DAPM_MIXER("INT0_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13462 int0_mi2s_rx_port_mixer_controls,
13463 ARRAY_SIZE(int0_mi2s_rx_port_mixer_controls)),
13464 SND_SOC_DAPM_MIXER("INT4_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13465 int4_mi2s_rx_port_mixer_controls,
13466 ARRAY_SIZE(int4_mi2s_rx_port_mixer_controls)),
13467 SND_SOC_DAPM_MIXER("QCHAT_Tx Mixer",
13468 SND_SOC_NOPM, 0, 0, tx_qchat_mixer_controls,
13469 ARRAY_SIZE(tx_qchat_mixer_controls)),
13470 SND_SOC_DAPM_MIXER("USB_AUDIO_RX_Voice Mixer",
13471 SND_SOC_NOPM, 0, 0, usb_audio_rx_voice_mixer_controls,
13472 ARRAY_SIZE(usb_audio_rx_voice_mixer_controls)),
13473 SND_SOC_DAPM_MIXER("USB_AUDIO_RX Port Mixer",
13474 SND_SOC_NOPM, 0, 0, usb_rx_port_mixer_controls,
13475 ARRAY_SIZE(usb_rx_port_mixer_controls)),
Aalique Grahamee4fd7d52017-11-28 13:24:13 -080013476 SND_SOC_DAPM_MIXER("DISPLAY_PORT_RX_Voice Mixer",
13477 SND_SOC_NOPM, 0, 0, display_port_rx_voice_mixer_controls,
13478 ARRAY_SIZE(display_port_rx_voice_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013479 /* lsm mixer definitions */
13480 SND_SOC_DAPM_MIXER("LSM1 Mixer", SND_SOC_NOPM, 0, 0,
13481 lsm1_mixer_controls, ARRAY_SIZE(lsm1_mixer_controls)),
13482 SND_SOC_DAPM_MIXER("LSM2 Mixer", SND_SOC_NOPM, 0, 0,
13483 lsm2_mixer_controls, ARRAY_SIZE(lsm2_mixer_controls)),
13484 SND_SOC_DAPM_MIXER("LSM3 Mixer", SND_SOC_NOPM, 0, 0,
13485 lsm3_mixer_controls, ARRAY_SIZE(lsm3_mixer_controls)),
13486 SND_SOC_DAPM_MIXER("LSM4 Mixer", SND_SOC_NOPM, 0, 0,
13487 lsm4_mixer_controls, ARRAY_SIZE(lsm4_mixer_controls)),
13488 SND_SOC_DAPM_MIXER("LSM5 Mixer", SND_SOC_NOPM, 0, 0,
13489 lsm5_mixer_controls, ARRAY_SIZE(lsm5_mixer_controls)),
13490 SND_SOC_DAPM_MIXER("LSM6 Mixer", SND_SOC_NOPM, 0, 0,
13491 lsm6_mixer_controls, ARRAY_SIZE(lsm6_mixer_controls)),
13492 SND_SOC_DAPM_MIXER("LSM7 Mixer", SND_SOC_NOPM, 0, 0,
13493 lsm7_mixer_controls, ARRAY_SIZE(lsm7_mixer_controls)),
13494 SND_SOC_DAPM_MIXER("LSM8 Mixer", SND_SOC_NOPM, 0, 0,
13495 lsm8_mixer_controls, ARRAY_SIZE(lsm8_mixer_controls)),
13496 /* Virtual Pins to force backends ON atm */
13497 SND_SOC_DAPM_OUTPUT("BE_OUT"),
13498 SND_SOC_DAPM_INPUT("BE_IN"),
13499
13500 SND_SOC_DAPM_MUX("SLIM0_RX_VI_FB_LCH_MUX", SND_SOC_NOPM, 0, 0,
13501 &slim0_rx_vi_fb_lch_mux),
13502 SND_SOC_DAPM_MUX("SLIM0_RX_VI_FB_RCH_MUX", SND_SOC_NOPM, 0, 0,
13503 &slim0_rx_vi_fb_rch_mux),
13504 SND_SOC_DAPM_MUX("PRI_MI2S_RX_VI_FB_MUX", SND_SOC_NOPM, 0, 0,
13505 &mi2s_rx_vi_fb_mux),
13506 SND_SOC_DAPM_MUX("INT4_MI2S_RX_VI_FB_MONO_CH_MUX", SND_SOC_NOPM, 0, 0,
13507 &int4_mi2s_rx_vi_fb_mono_ch_mux),
13508 SND_SOC_DAPM_MUX("INT4_MI2S_RX_VI_FB_STEREO_CH_MUX", SND_SOC_NOPM, 0, 0,
13509 &int4_mi2s_rx_vi_fb_stereo_ch_mux),
13510
13511 SND_SOC_DAPM_MUX("VOC_EXT_EC MUX", SND_SOC_NOPM, 0, 0,
13512 &voc_ext_ec_mux),
13513 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL1 MUX", SND_SOC_NOPM, 0, 0,
13514 &ext_ec_ref_mux_ul1),
13515 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL2 MUX", SND_SOC_NOPM, 0, 0,
13516 &ext_ec_ref_mux_ul2),
13517 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL3 MUX", SND_SOC_NOPM, 0, 0,
13518 &ext_ec_ref_mux_ul3),
13519 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL4 MUX", SND_SOC_NOPM, 0, 0,
13520 &ext_ec_ref_mux_ul4),
13521 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL5 MUX", SND_SOC_NOPM, 0, 0,
13522 &ext_ec_ref_mux_ul5),
13523 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL6 MUX", SND_SOC_NOPM, 0, 0,
13524 &ext_ec_ref_mux_ul6),
13525 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL8 MUX", SND_SOC_NOPM, 0, 0,
13526 &ext_ec_ref_mux_ul8),
13527 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL9 MUX", SND_SOC_NOPM, 0, 0,
13528 &ext_ec_ref_mux_ul9),
Laxminath Kasam38070be2017-08-17 18:21:59 +053013529 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL10 MUX", SND_SOC_NOPM, 0, 0,
13530 &ext_ec_ref_mux_ul10),
Asish Bhattacharya34504582017-08-08 12:55:01 +053013531 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL16 MUX", SND_SOC_NOPM, 0, 0,
13532 &ext_ec_ref_mux_ul16),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013533 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL17 MUX", SND_SOC_NOPM, 0, 0,
13534 &ext_ec_ref_mux_ul17),
13535 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL18 MUX", SND_SOC_NOPM, 0, 0,
13536 &ext_ec_ref_mux_ul18),
13537 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL19 MUX", SND_SOC_NOPM, 0, 0,
13538 &ext_ec_ref_mux_ul19),
13539};
13540
13541static const struct snd_soc_dapm_route intercon[] = {
13542 {"PRI_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13543 {"PRI_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13544 {"PRI_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13545 {"PRI_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13546 {"PRI_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13547 {"PRI_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13548 {"PRI_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13549 {"PRI_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13550 {"PRI_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
13551 {"PRI_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13552 {"PRI_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13553 {"PRI_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13554 {"PRI_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13555 {"PRI_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13556 {"PRI_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13557 {"PRI_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13558 {"PRI_I2S_RX", NULL, "PRI_RX Audio Mixer"},
13559
13560 {"SEC_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13561 {"SEC_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13562 {"SEC_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13563 {"SEC_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13564 {"SEC_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13565 {"SEC_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13566 {"SEC_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13567 {"SEC_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13568 {"SEC_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
13569 {"SEC_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13570 {"SEC_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13571 {"SEC_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13572 {"SEC_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13573 {"SEC_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13574 {"SEC_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13575 {"SEC_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13576 {"SEC_I2S_RX", NULL, "SEC_RX Audio Mixer"},
13577
13578 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13579 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13580 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13581 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13582 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13583 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13584 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13585 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13586 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
13587 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13588 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13589 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13590 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13591 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13592 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13593 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13594 {"SLIMBUS_0_RX", NULL, "SLIMBUS_0_RX Audio Mixer"},
13595
13596 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13597 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13598 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13599 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13600 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13601 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13602 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13603 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13604 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
13605 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13606 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13607 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13608 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13609 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13610 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13611 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13612 {"SLIMBUS_2_RX", NULL, "SLIMBUS_2_RX Audio Mixer"},
13613
13614 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13615 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13616 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13617 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13618 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13619 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13620 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13621 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13622 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
13623 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13624 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13625 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13626 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13627 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13628 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13629 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13630 {"SLIMBUS_5_RX", NULL, "SLIMBUS_5_RX Audio Mixer"},
13631
13632 {"HDMI Mixer", "MultiMedia1", "MM_DL1"},
13633 {"HDMI Mixer", "MultiMedia2", "MM_DL2"},
13634 {"HDMI Mixer", "MultiMedia3", "MM_DL3"},
13635 {"HDMI Mixer", "MultiMedia4", "MM_DL4"},
13636 {"HDMI Mixer", "MultiMedia5", "MM_DL5"},
13637 {"HDMI Mixer", "MultiMedia6", "MM_DL6"},
13638 {"HDMI Mixer", "MultiMedia7", "MM_DL7"},
13639 {"HDMI Mixer", "MultiMedia8", "MM_DL8"},
13640 {"HDMI Mixer", "MultiMedia9", "MM_DL9"},
13641 {"HDMI Mixer", "MultiMedia10", "MM_DL10"},
13642 {"HDMI Mixer", "MultiMedia11", "MM_DL11"},
13643 {"HDMI Mixer", "MultiMedia12", "MM_DL12"},
13644 {"HDMI Mixer", "MultiMedia13", "MM_DL13"},
13645 {"HDMI Mixer", "MultiMedia14", "MM_DL14"},
13646 {"HDMI Mixer", "MultiMedia15", "MM_DL15"},
13647 {"HDMI Mixer", "MultiMedia16", "MM_DL16"},
13648 {"HDMI", NULL, "HDMI Mixer"},
13649
13650 {"DISPLAY_PORT Mixer", "MultiMedia1", "MM_DL1"},
13651 {"DISPLAY_PORT Mixer", "MultiMedia2", "MM_DL2"},
13652 {"DISPLAY_PORT Mixer", "MultiMedia3", "MM_DL3"},
13653 {"DISPLAY_PORT Mixer", "MultiMedia4", "MM_DL4"},
13654 {"DISPLAY_PORT Mixer", "MultiMedia5", "MM_DL5"},
13655 {"DISPLAY_PORT Mixer", "MultiMedia6", "MM_DL6"},
13656 {"DISPLAY_PORT Mixer", "MultiMedia7", "MM_DL7"},
13657 {"DISPLAY_PORT Mixer", "MultiMedia8", "MM_DL8"},
13658 {"DISPLAY_PORT Mixer", "MultiMedia9", "MM_DL9"},
13659 {"DISPLAY_PORT Mixer", "MultiMedia10", "MM_DL10"},
13660 {"DISPLAY_PORT Mixer", "MultiMedia11", "MM_DL11"},
13661 {"DISPLAY_PORT Mixer", "MultiMedia12", "MM_DL12"},
13662 {"DISPLAY_PORT Mixer", "MultiMedia13", "MM_DL13"},
13663 {"DISPLAY_PORT Mixer", "MultiMedia14", "MM_DL14"},
13664 {"DISPLAY_PORT Mixer", "MultiMedia15", "MM_DL15"},
13665 {"DISPLAY_PORT Mixer", "MultiMedia16", "MM_DL16"},
13666 {"DISPLAY_PORT", NULL, "DISPLAY_PORT Mixer"},
13667
13668 {"SPDIF_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13669 {"SPDIF_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13670 {"SPDIF_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13671 {"SPDIF_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13672 {"SPDIF_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13673 {"SPDIF_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13674 {"SPDIF_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13675 {"SPDIF_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13676 {"SPDIF_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
13677 {"SPDIF_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13678 {"SPDIF_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13679 {"SPDIF_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13680 {"SPDIF_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13681 {"SPDIF_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13682 {"SPDIF_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13683 {"SPDIF_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13684 {"SPDIF_RX", NULL, "SPDIF_RX Audio Mixer"},
13685
13686 /* incall */
13687 {"Incall_Music Audio Mixer", "MultiMedia1", "MM_DL1"},
13688 {"Incall_Music Audio Mixer", "MultiMedia2", "MM_DL2"},
13689 {"Incall_Music Audio Mixer", "MultiMedia5", "MM_DL5"},
13690 {"Incall_Music Audio Mixer", "MultiMedia9", "MM_DL9"},
13691 {"VOICE_PLAYBACK_TX", NULL, "Incall_Music Audio Mixer"},
13692 {"Incall_Music_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
13693 {"Incall_Music_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
13694 {"Incall_Music_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
13695 {"Incall_Music_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
13696 {"VOICE2_PLAYBACK_TX", NULL, "Incall_Music_2 Audio Mixer"},
13697 {"SLIMBUS_4_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13698 {"SLIMBUS_4_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13699 {"SLIMBUS_4_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13700 {"SLIMBUS_4_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
13701 {"SLIMBUS_4_RX", NULL, "SLIMBUS_4_RX Audio Mixer"},
13702
13703 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13704 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13705 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13706 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13707 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13708 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13709 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13710 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13711 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
13712 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13713 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13714 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13715 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13716 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13717 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13718 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13719 {"SLIMBUS_6_RX", NULL, "SLIMBUS_6_RX Audio Mixer"},
13720
13721 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13722 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13723 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13724 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13725 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13726 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13727 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13728 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13729 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
13730 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13731 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13732 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13733 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13734 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13735 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13736 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13737 {"SLIMBUS_7_RX", NULL, "SLIMBUS_7_RX Audio Mixer"},
13738
13739 {"USB_AUDIO_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13740 {"USB_AUDIO_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13741 {"USB_AUDIO_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13742 {"USB_AUDIO_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13743 {"USB_AUDIO_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13744 {"USB_AUDIO_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13745 {"USB_AUDIO_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13746 {"USB_AUDIO_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13747 {"USB_AUDIO_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
13748 {"USB_AUDIO_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13749 {"USB_AUDIO_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13750 {"USB_AUDIO_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13751 {"USB_AUDIO_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13752 {"USB_AUDIO_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13753 {"USB_AUDIO_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13754 {"USB_AUDIO_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13755 {"USB_AUDIO_RX", NULL, "USB_AUDIO_RX Audio Mixer"},
13756
13757 {"MultiMedia1 Mixer", "VOC_REC_UL", "INCALL_RECORD_TX"},
13758 {"MultiMedia4 Mixer", "VOC_REC_UL", "INCALL_RECORD_TX"},
13759 {"MultiMedia8 Mixer", "VOC_REC_UL", "INCALL_RECORD_TX"},
13760 {"MultiMedia1 Mixer", "VOC_REC_DL", "INCALL_RECORD_RX"},
13761 {"MultiMedia4 Mixer", "VOC_REC_DL", "INCALL_RECORD_RX"},
13762 {"MultiMedia8 Mixer", "VOC_REC_DL", "INCALL_RECORD_RX"},
13763 {"MultiMedia1 Mixer", "SLIM_4_TX", "SLIMBUS_4_TX"},
13764 {"MultiMedia1 Mixer", "SLIM_6_TX", "SLIMBUS_6_TX"},
13765 {"MultiMedia1 Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
13766 {"MultiMedia1 Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
13767 {"MultiMedia8 Mixer", "SLIM_6_TX", "SLIMBUS_6_TX"},
13768 {"MultiMedia8 Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
13769 {"MultiMedia4 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
13770 {"MultiMedia17 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
13771 {"MultiMedia18 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
13772 {"MultiMedia19 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
13773 {"MultiMedia8 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
13774 {"MultiMedia2 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
13775 {"MultiMedia4 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
13776 {"MultiMedia17 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
13777 {"MultiMedia18 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
13778 {"MultiMedia19 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
13779 {"MultiMedia8 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
13780 {"MultiMedia18 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
13781 {"MultiMedia8 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
13782 {"MultiMedia3 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
13783 {"MultiMedia5 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053013784 {"MultiMedia10 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053013785 {"MultiMedia16 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013786 {"MultiMedia5 Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
13787 {"MultiMedia5 Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053013788 {"MultiMedia10 Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013789 {"MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13790 {"MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13791 {"MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13792 {"MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13793 {"MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13794 {"MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13795 {"MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13796 {"MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13797 {"MI2S_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
13798 {"MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13799 {"MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13800 {"MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13801 {"MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13802 {"MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13803 {"MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13804 {"MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13805 {"MI2S_RX", NULL, "MI2S_RX Audio Mixer"},
13806
13807 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13808 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13809 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13810 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13811 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13812 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13813 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13814 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13815 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13816 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13817 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13818 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13819 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13820 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13821 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13822 {"QUAT_MI2S_RX", NULL, "QUAT_MI2S_RX Audio Mixer"},
13823
13824 {"TERT_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13825 {"TERT_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13826 {"TERT_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13827 {"TERT_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13828 {"TERT_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13829 {"TERT_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13830 {"TERT_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13831 {"TERT_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13832 {"TERT_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13833 {"TERT_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13834 {"TERT_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13835 {"TERT_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13836 {"TERT_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13837 {"TERT_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13838 {"TERT_MI2S_RX", NULL, "TERT_MI2S_RX Audio Mixer"},
13839
13840 {"SEC_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13841 {"SEC_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13842 {"SEC_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13843 {"SEC_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13844 {"SEC_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13845 {"SEC_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13846 {"SEC_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13847 {"SEC_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13848 {"SEC_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13849 {"SEC_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13850 {"SEC_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13851 {"SEC_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13852 {"SEC_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13853 {"SEC_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13854 {"SEC_MI2S_RX", NULL, "SEC_MI2S_RX Audio Mixer"},
13855
13856 {"SEC_MI2S_RX_SD1 Audio Mixer", "MultiMedia6", "MM_DL6"},
13857 {"SEC_MI2S_RX_SD1", NULL, "SEC_MI2S_RX_SD1 Audio Mixer"},
13858
13859 {"SEC_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
13860 {"SEC_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
13861
13862 {"PRI_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13863 {"PRI_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13864 {"PRI_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13865 {"PRI_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13866 {"PRI_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13867 {"PRI_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13868 {"PRI_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13869 {"PRI_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13870 {"PRI_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13871 {"PRI_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13872 {"PRI_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13873 {"PRI_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13874 {"PRI_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13875 {"PRI_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13876 {"PRI_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13877 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX Audio Mixer"},
13878
13879 {"INT0_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13880 {"INT0_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13881 {"INT0_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13882 {"INT0_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13883 {"INT0_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13884 {"INT0_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13885 {"INT0_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13886 {"INT0_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13887 {"INT0_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13888 {"INT0_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13889 {"INT0_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13890 {"INT0_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13891 {"INT0_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13892 {"INT0_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13893 {"INT0_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13894 {"INT0_MI2S_RX", NULL, "INT0_MI2S_RX Audio Mixer"},
13895
13896 {"INT4_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13897 {"INT4_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13898 {"INT4_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13899 {"INT4_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13900 {"INT4_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13901 {"INT4_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13902 {"INT4_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13903 {"INT4_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13904 {"INT4_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13905 {"INT4_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13906 {"INT4_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13907 {"INT4_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13908 {"INT4_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13909 {"INT4_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13910 {"INT4_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13911 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX Audio Mixer"},
13912
13913 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13914 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13915 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13916 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13917 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13918 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13919 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13920 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13921 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13922 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13923 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13924 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13925 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13926 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13927 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13928 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13929 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13930 {"QUIN_MI2S_RX", NULL, "QUIN_MI2S_RX Audio Mixer"},
13931
13932 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
13933 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
13934 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
13935 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
13936 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
13937 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
13938 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
13939 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
13940 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
13941 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
13942 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
13943 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
13944 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
13945 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
13946 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
13947 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
13948 {"PRI_TDM_RX_0", NULL, "PRI_TDM_RX_0 Audio Mixer"},
13949
13950 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
13951 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
13952 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
13953 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
13954 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
13955 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
13956 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
13957 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
13958 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
13959 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
13960 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
13961 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
13962 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
13963 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
13964 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
13965 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
13966 {"PRI_TDM_RX_1", NULL, "PRI_TDM_RX_1 Audio Mixer"},
13967
13968 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
13969 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
13970 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
13971 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
13972 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
13973 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
13974 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
13975 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
13976 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
13977 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
13978 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
13979 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
13980 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
13981 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
13982 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
13983 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
13984 {"PRI_TDM_RX_2", NULL, "PRI_TDM_RX_2 Audio Mixer"},
13985
13986 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
13987 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
13988 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
13989 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
13990 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
13991 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
13992 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
13993 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
13994 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
13995 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
13996 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
13997 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
13998 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
13999 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
14000 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
14001 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
14002 {"PRI_TDM_RX_3", NULL, "PRI_TDM_RX_3 Audio Mixer"},
14003
14004 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14005 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14006 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14007 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14008 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14009 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14010 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14011 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14012 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14013 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14014 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14015 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14016 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14017 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14018 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14019 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14020 {"PRI_TDM_TX_0", NULL, "PRI_TDM_TX_0 Audio Mixer"},
14021
14022 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14023 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14024 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14025 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14026 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14027 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14028 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14029 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14030 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14031 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14032 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14033 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14034 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14035 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14036 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14037 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14038 {"SEC_TDM_RX_0", NULL, "SEC_TDM_RX_0 Audio Mixer"},
14039
14040 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
14041 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
14042 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
14043 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
14044 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
14045 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
14046 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
14047 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
14048 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
14049 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
14050 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
14051 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
14052 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
14053 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
14054 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
14055 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
14056 {"SEC_TDM_RX_1", NULL, "SEC_TDM_RX_1 Audio Mixer"},
14057
14058 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
14059 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
14060 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
14061 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
14062 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
14063 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
14064 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
14065 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
14066 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
14067 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
14068 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
14069 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
14070 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
14071 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
14072 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
14073 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
14074 {"SEC_TDM_RX_2", NULL, "SEC_TDM_RX_2 Audio Mixer"},
14075
14076 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
14077 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
14078 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
14079 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
14080 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
14081 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
14082 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
14083 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
14084 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
14085 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
14086 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
14087 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
14088 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
14089 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
14090 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
14091 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
14092 {"SEC_TDM_RX_3", NULL, "SEC_TDM_RX_3 Audio Mixer"},
14093
14094 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14095 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14096 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14097 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14098 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14099 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14100 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14101 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14102 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14103 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14104 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14105 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14106 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14107 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14108 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14109 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14110 {"SEC_TDM_TX_0", NULL, "SEC_TDM_TX_0 Audio Mixer"},
14111
14112 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14113 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14114 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14115 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14116 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14117 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14118 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14119 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14120 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14121 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14122 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14123 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14124 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14125 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14126 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14127 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14128 {"TERT_TDM_RX_0", NULL, "TERT_TDM_RX_0 Audio Mixer"},
14129
14130 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14131 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14132 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14133 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14134 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14135 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14136 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14137 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14138 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14139 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14140 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14141 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14142 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14143 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14144 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14145 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14146 {"TERT_TDM_TX_0", NULL, "TERT_TDM_TX_0 Audio Mixer"},
14147
14148 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
14149 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
14150 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
14151 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
14152 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
14153 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
14154 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
14155 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
14156 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
14157 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
14158 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
14159 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
14160 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
14161 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
14162 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
14163 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
14164 {"TERT_TDM_RX_1", NULL, "TERT_TDM_RX_1 Audio Mixer"},
14165
14166 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
14167 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
14168 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
14169 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
14170 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
14171 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
14172 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
14173 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
14174 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
14175 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
14176 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
14177 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
14178 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
14179 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
14180 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
14181 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
14182 {"TERT_TDM_RX_2", NULL, "TERT_TDM_RX_2 Audio Mixer"},
14183
14184 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
14185 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
14186 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
14187 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
14188 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
14189 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
14190 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
14191 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
14192 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
14193 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
14194 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
14195 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
14196 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
14197 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
14198 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
14199 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
14200 {"TERT_TDM_RX_3", NULL, "TERT_TDM_RX_3 Audio Mixer"},
14201
14202 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia1", "MM_DL1"},
14203 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia2", "MM_DL2"},
14204 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia3", "MM_DL3"},
14205 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia4", "MM_DL4"},
14206 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia5", "MM_DL5"},
14207 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia6", "MM_DL6"},
14208 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia7", "MM_DL7"},
14209 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia8", "MM_DL8"},
14210 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia9", "MM_DL9"},
14211 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia10", "MM_DL10"},
14212 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia11", "MM_DL11"},
14213 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia12", "MM_DL12"},
14214 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia13", "MM_DL13"},
14215 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia14", "MM_DL14"},
14216 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia15", "MM_DL15"},
14217 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia16", "MM_DL16"},
14218 {"TERT_TDM_RX_4", NULL, "TERT_TDM_RX_4 Audio Mixer"},
14219
14220 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14221 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14222 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14223 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14224 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14225 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14226 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14227 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14228 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14229 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14230 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14231 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14232 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14233 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14234 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14235 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14236 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia20", "MM_DL20"},
14237 {"QUAT_TDM_RX_0", NULL, "QUAT_TDM_RX_0 Audio Mixer"},
14238
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014239 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14240 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14241 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14242 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14243 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14244 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14245 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14246 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14247 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14248 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14249 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14250 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14251 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14252 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14253 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14254 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14255 {"QUAT_TDM_TX_0", NULL, "QUAT_TDM_TX_0 Audio Mixer"},
14256
14257 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
14258 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
14259 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
14260 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
14261 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
14262 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
14263 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
14264 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
14265 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
14266 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
14267 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
14268 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
14269 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
14270 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
14271 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
14272 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
14273 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia20", "MM_DL20"},
14274 {"QUAT_TDM_RX_1", NULL, "QUAT_TDM_RX_1 Audio Mixer"},
14275
14276 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
14277 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
14278 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
14279 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
14280 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
14281 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
14282 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
14283 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
14284 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
14285 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
14286 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
14287 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
14288 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
14289 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
14290 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
14291 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
14292 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia20", "MM_DL20"},
14293 {"QUAT_TDM_RX_2", NULL, "QUAT_TDM_RX_2 Audio Mixer"},
14294
14295 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
14296 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
14297 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
14298 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
14299 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
14300 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
14301 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
14302 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
14303 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
14304 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
14305 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
14306 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
14307 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
14308 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
14309 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
14310 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
14311 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia20", "MM_DL20"},
14312 {"QUAT_TDM_RX_3", NULL, "QUAT_TDM_RX_3 Audio Mixer"},
14313
Rohit Kumara5077932017-09-10 22:05:05 +053014314 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14315 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14316 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14317 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14318 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14319 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14320 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14321 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14322 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14323 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14324 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14325 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14326 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14327 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14328 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14329 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14330 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia20", "MM_DL20"},
14331 {"QUIN_TDM_RX_0", NULL, "QUIN_TDM_RX_0 Audio Mixer"},
14332
14333 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14334 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14335 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14336 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14337 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14338 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14339 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14340 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14341 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14342 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14343 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14344 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14345 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14346 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14347 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14348 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14349 {"QUIN_TDM_TX_0", NULL, "QUIN_TDM_TX_0 Audio Mixer"},
14350
14351 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
14352 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
14353 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
14354 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
14355 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
14356 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
14357 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
14358 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
14359 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
14360 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
14361 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
14362 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
14363 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
14364 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
14365 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
14366 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
14367 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia20", "MM_DL20"},
14368 {"QUIN_TDM_RX_1", NULL, "QUIN_TDM_RX_1 Audio Mixer"},
14369
14370 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
14371 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
14372 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
14373 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
14374 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
14375 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
14376 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
14377 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
14378 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
14379 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
14380 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
14381 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
14382 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
14383 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
14384 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
14385 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
14386 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia20", "MM_DL20"},
14387 {"QUIN_TDM_RX_2", NULL, "QUIN_TDM_RX_2 Audio Mixer"},
14388
14389 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
14390 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
14391 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
14392 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
14393 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
14394 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
14395 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
14396 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
14397 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
14398 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
14399 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
14400 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
14401 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
14402 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
14403 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
14404 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
14405 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia20", "MM_DL20"},
14406 {"QUIN_TDM_RX_3", NULL, "QUIN_TDM_RX_3 Audio Mixer"},
14407
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014408 {"MultiMedia1 Mixer", "PRI_TX", "PRI_I2S_TX"},
14409 {"MultiMedia1 Mixer", "MI2S_TX", "MI2S_TX"},
14410 {"MultiMedia2 Mixer", "MI2S_TX", "MI2S_TX"},
14411 {"MultiMedia3 Mixer", "MI2S_TX", "MI2S_TX"},
14412 {"MultiMedia5 Mixer", "MI2S_TX", "MI2S_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014413 {"MultiMedia10 Mixer", "MI2S_TX", "MI2S_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014414 {"MultiMedia16 Mixer", "MI2S_TX", "MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014415 {"MultiMedia1 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14416 {"MultiMedia2 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14417 {"MultiMedia6 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14418 {"MultiMedia1 Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
14419 {"MultiMedia2 Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
14420 {"MultiMedia1 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14421 {"MultiMedia2 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14422 {"MultiMedia1 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
14423 {"MultiMedia2 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
14424 {"MultiMedia1 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14425 {"MultiMedia2 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14426 {"MultiMedia1 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14427 {"MultiMedia1 Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
14428 {"MultiMedia3 Mixer", "AUX_PCM_TX", "AUX_PCM_TX"},
14429 {"MultiMedia5 Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014430 {"MultiMedia10 Mixer", "AUX_PCM_TX", "AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014431 {"MultiMedia1 Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
14432 {"MultiMedia3 Mixer", "SEC_AUX_PCM_TX", "SEC_AUX_PCM_TX"},
14433 {"MultiMedia5 Mixer", "SEC_AUX_PCM_TX", "SEC_AUX_PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014434 {"MultiMedia10 Mixer", "SEC_AUX_PCM_TX", "SEC_AUX_PCM_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014435 {"MultiMedia16 Mixer", "AUX_PCM_TX", "AUX_PCM_TX"},
14436 {"MultiMedia16 Mixer", "SEC_AUX_PCM_TX", "SEC_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014437 {"MultiMedia1 Mixer", "TERT_AUXPCM_UL_TX", "TERT_AUX_PCM_TX"},
14438 {"MultiMedia3 Mixer", "TERT_AUX_PCM_TX", "TERT_AUX_PCM_TX"},
14439 {"MultiMedia5 Mixer", "TERT_AUX_PCM_TX", "TERT_AUX_PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014440 {"MultiMedia10 Mixer", "TERT_AUX_PCM_TX", "TERT_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014441 {"MultiMedia1 Mixer", "QUAT_AUXPCM_UL_TX", "QUAT_AUX_PCM_TX"},
14442 {"MultiMedia3 Mixer", "QUAT_AUX_PCM_TX", "QUAT_AUX_PCM_TX"},
14443 {"MultiMedia5 Mixer", "QUAT_AUX_PCM_TX", "QUAT_AUX_PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014444 {"MultiMedia10 Mixer", "QUAT_AUX_PCM_TX", "QUAT_AUX_PCM_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014445 {"MultiMedia16 Mixer", "QUAT_AUX_PCM_TX", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053014446 {"MultiMedia1 Mixer", "QUIN_AUXPCM_UL_TX", "QUIN_AUX_PCM_TX"},
14447 {"MultiMedia3 Mixer", "QUIN_AUX_PCM_TX", "QUIN_AUX_PCM_TX"},
14448 {"MultiMedia5 Mixer", "QUIN_AUX_PCM_TX", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014449 {"MultiMedia2 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14450 {"MultiMedia2 Mixer", "SLIM_6_TX", "SLIMBUS_6_TX"},
14451 {"MultiMedia2 Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
14452 {"MultiMedia2 Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
14453 {"MultiMedia1 Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
14454 {"MultiMedia1 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14455 {"MultiMedia2 Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
14456 {"MultiMedia6 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14457 {"MultiMedia6 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14458 {"MultiMedia3 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14459 {"MultiMedia5 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014460 {"MultiMedia10 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014461 {"MultiMedia6 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
14462 {"MultiMedia3 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
14463 {"MultiMedia5 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014464 {"MultiMedia10 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014465 {"MultiMedia16 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014466 {"MultiMedia6 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14467 {"MultiMedia3 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14468 {"MultiMedia5 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014469 {"MultiMedia10 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014470 {"MultiMedia16 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014471 {"MultiMedia6 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14472 {"MultiMedia6 Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
14473 {"MultiMedia6 Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
14474 {"MultiMedia6 Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053014475 {"MultiMedia6 Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014476
14477 {"MultiMedia1 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
14478 {"MultiMedia1 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
14479 {"MultiMedia1 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
14480 {"MultiMedia1 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
14481 {"MultiMedia1 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
14482 {"MultiMedia1 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
14483 {"MultiMedia1 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
14484 {"MultiMedia1 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
14485 {"MultiMedia1 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14486 {"MultiMedia1 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14487 {"MultiMedia1 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14488 {"MultiMedia1 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14489 {"MultiMedia1 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14490 {"MultiMedia1 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14491 {"MultiMedia1 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14492 {"MultiMedia1 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053014493 {"MultiMedia1 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
14494 {"MultiMedia1 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
14495 {"MultiMedia1 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
14496 {"MultiMedia1 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014497
14498 {"MultiMedia2 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
14499 {"MultiMedia2 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
14500 {"MultiMedia2 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
14501 {"MultiMedia2 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
14502 {"MultiMedia2 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
14503 {"MultiMedia2 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
14504 {"MultiMedia2 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
14505 {"MultiMedia2 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
14506 {"MultiMedia2 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14507 {"MultiMedia2 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14508 {"MultiMedia2 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14509 {"MultiMedia2 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14510 {"MultiMedia2 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14511 {"MultiMedia2 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14512 {"MultiMedia2 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14513 {"MultiMedia2 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053014514 {"MultiMedia2 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
14515 {"MultiMedia2 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
14516 {"MultiMedia2 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
14517 {"MultiMedia2 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014518
14519 {"MultiMedia3 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
14520 {"MultiMedia3 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
14521 {"MultiMedia3 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
14522 {"MultiMedia3 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
14523 {"MultiMedia3 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
14524 {"MultiMedia3 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
14525 {"MultiMedia3 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
14526 {"MultiMedia3 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
14527 {"MultiMedia3 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14528 {"MultiMedia3 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14529 {"MultiMedia3 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14530 {"MultiMedia3 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14531 {"MultiMedia3 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14532 {"MultiMedia3 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14533 {"MultiMedia3 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14534 {"MultiMedia3 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053014535 {"MultiMedia3 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
14536 {"MultiMedia3 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
14537 {"MultiMedia3 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
14538 {"MultiMedia3 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014539
14540 {"MultiMedia4 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
14541 {"MultiMedia4 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
14542 {"MultiMedia4 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
14543 {"MultiMedia4 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
14544 {"MultiMedia4 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
14545 {"MultiMedia4 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
14546 {"MultiMedia4 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
14547 {"MultiMedia4 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
14548 {"MultiMedia4 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14549 {"MultiMedia4 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14550 {"MultiMedia4 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14551 {"MultiMedia4 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14552 {"MultiMedia4 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14553 {"MultiMedia4 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14554 {"MultiMedia4 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14555 {"MultiMedia4 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053014556 {"MultiMedia4 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
14557 {"MultiMedia4 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
14558 {"MultiMedia4 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
14559 {"MultiMedia4 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014560
14561 {"MultiMedia5 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
14562 {"MultiMedia5 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
14563 {"MultiMedia5 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
14564 {"MultiMedia5 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
14565 {"MultiMedia5 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
14566 {"MultiMedia5 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
14567 {"MultiMedia5 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
14568 {"MultiMedia5 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
14569 {"MultiMedia5 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14570 {"MultiMedia5 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14571 {"MultiMedia5 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14572 {"MultiMedia5 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14573 {"MultiMedia5 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14574 {"MultiMedia5 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14575 {"MultiMedia5 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14576 {"MultiMedia5 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053014577 {"MultiMedia5 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
14578 {"MultiMedia5 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
14579 {"MultiMedia5 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
14580 {"MultiMedia5 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014581
14582 {"MultiMedia6 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
14583 {"MultiMedia6 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
14584 {"MultiMedia6 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
14585 {"MultiMedia6 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
14586 {"MultiMedia6 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
14587 {"MultiMedia6 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
14588 {"MultiMedia6 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
14589 {"MultiMedia6 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
14590 {"MultiMedia6 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14591 {"MultiMedia6 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14592 {"MultiMedia6 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14593 {"MultiMedia6 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14594 {"MultiMedia6 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14595 {"MultiMedia6 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14596 {"MultiMedia6 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14597 {"MultiMedia6 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053014598 {"MultiMedia6 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
14599 {"MultiMedia6 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
14600 {"MultiMedia6 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
14601 {"MultiMedia6 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014602
14603 {"MultiMedia8 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
14604 {"MultiMedia8 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
14605 {"MultiMedia8 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
14606 {"MultiMedia8 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
14607 {"MultiMedia8 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
14608 {"MultiMedia8 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
14609 {"MultiMedia8 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
14610 {"MultiMedia8 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
14611 {"MultiMedia8 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14612 {"MultiMedia8 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14613 {"MultiMedia8 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14614 {"MultiMedia8 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14615 {"MultiMedia8 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14616 {"MultiMedia8 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14617 {"MultiMedia8 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14618 {"MultiMedia8 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053014619 {"MultiMedia8 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
14620 {"MultiMedia8 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
14621 {"MultiMedia8 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
14622 {"MultiMedia8 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014623
14624 {"MultiMedia9 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14625 {"MultiMedia9 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14626 {"MultiMedia9 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14627 {"MultiMedia9 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14628 {"MultiMedia9 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14629 {"MultiMedia9 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14630 {"MultiMedia9 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14631 {"MultiMedia9 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053014632 {"MultiMedia9 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
14633 {"MultiMedia9 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
14634 {"MultiMedia9 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
14635 {"MultiMedia9 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014636
Laxminath Kasam38070be2017-08-17 18:21:59 +053014637 {"MultiMedia10 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14638 {"MultiMedia10 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14639 {"MultiMedia10 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14640 {"MultiMedia10 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14641 {"MultiMedia10 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14642 {"MultiMedia10 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14643 {"MultiMedia10 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14644 {"MultiMedia10 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014645 {"MultiMedia20 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14646 {"MultiMedia20 Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
14647 {"MultiMedia20 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14648 {"MultiMedia20 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053014649 {"MultiMedia20 Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014650 {"MultiMedia20 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
14651 {"MultiMedia20 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
14652 {"MultiMedia20 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
14653 {"MultiMedia20 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
14654 {"MultiMedia20 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
14655 {"MultiMedia20 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
14656 {"MultiMedia20 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
14657 {"MultiMedia20 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
14658 {"MultiMedia20 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14659 {"MultiMedia20 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14660 {"MultiMedia20 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14661 {"MultiMedia20 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14662 {"MultiMedia20 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14663 {"MultiMedia20 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14664 {"MultiMedia20 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14665 {"MultiMedia20 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053014666 {"MultiMedia20 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
14667 {"MultiMedia20 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
14668 {"MultiMedia20 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
14669 {"MultiMedia20 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014670
14671 {"MultiMedia1 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
14672 {"MultiMedia2 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
14673 {"MultiMedia4 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
14674 {"MultiMedia5 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
14675 {"MultiMedia6 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
14676 {"MultiMedia8 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014677 {"MultiMedia10 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014678
Asish Bhattacharya34504582017-08-08 12:55:01 +053014679 {"MultiMedia16 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
14680 {"MultiMedia16 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
14681 {"MultiMedia16 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
14682 {"MultiMedia16 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
14683 {"MultiMedia16 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
14684 {"MultiMedia16 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
14685 {"MultiMedia16 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
14686 {"MultiMedia16 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
14687 {"MultiMedia16 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14688 {"MultiMedia16 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14689 {"MultiMedia16 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14690 {"MultiMedia16 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14691 {"MultiMedia16 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14692 {"MultiMedia16 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14693 {"MultiMedia16 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14694 {"MultiMedia16 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
14695 {"MultiMedia16 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
14696
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014697 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14698 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14699 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14700 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14701 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14702 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14703 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14704 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14705 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14706 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14707 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14708 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14709 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14710 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14711 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14712 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14713 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia6", "MM_UL6"},
14714 {"INT_BT_SCO_RX", NULL, "INTERNAL_BT_SCO_RX Audio Mixer"},
14715
14716 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14717 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14718 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14719 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14720 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14721 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14722 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14723 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14724 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14725 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14726 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14727 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14728 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14729 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14730 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14731 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14732 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia6", "MM_UL6"},
14733 {"INT_BT_A2DP_RX", NULL, "INTERNAL_A2DP_RX Audio Mixer"},
14734
14735 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14736 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14737 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14738 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14739 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14740 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14741 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14742 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14743 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14744 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14745 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14746 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14747 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14748 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14749 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14750 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14751 {"INT_FM_RX", NULL, "INTERNAL_FM_RX Audio Mixer"},
14752
14753 {"AFE_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14754 {"AFE_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14755 {"AFE_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14756 {"AFE_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14757 {"AFE_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14758 {"AFE_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14759 {"AFE_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14760 {"AFE_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14761 {"AFE_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14762 {"AFE_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14763 {"AFE_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14764 {"AFE_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14765 {"AFE_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14766 {"AFE_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14767 {"AFE_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14768 {"AFE_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14769 {"PCM_RX", NULL, "AFE_PCM_RX Audio Mixer"},
14770
14771 {"MultiMedia1 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
14772 {"MultiMedia3 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
14773 {"MultiMedia4 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014774 {"MultiMedia10 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014775 {"MultiMedia17 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
14776 {"MultiMedia18 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
14777 {"MultiMedia19 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
14778 {"MultiMedia5 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
14779 {"MultiMedia8 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014780 {"MultiMedia16 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014781 {"MultiMedia1 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
14782 {"MultiMedia4 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014783 {"MultiMedia16 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014784 {"MultiMedia17 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
14785 {"MultiMedia18 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
14786 {"MultiMedia19 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
14787 {"MultiMedia5 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
14788 {"MultiMedia6 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
14789 {"MultiMedia8 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
14790
14791 {"MultiMedia1 Mixer", "AFE_PCM_TX", "PCM_TX"},
14792 {"MultiMedia3 Mixer", "AFE_PCM_TX", "PCM_TX"},
14793 {"MultiMedia4 Mixer", "AFE_PCM_TX", "PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014794 {"MultiMedia10 Mixer", "AFE_PCM_TX", "PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014795 {"MultiMedia17 Mixer", "AFE_PCM_TX", "PCM_TX"},
14796 {"MultiMedia18 Mixer", "AFE_PCM_TX", "PCM_TX"},
14797 {"MultiMedia19 Mixer", "AFE_PCM_TX", "PCM_TX"},
14798 {"MultiMedia5 Mixer", "AFE_PCM_TX", "PCM_TX"},
14799 {"MultiMedia8 Mixer", "AFE_PCM_TX", "PCM_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014800 {"MultiMedia16 Mixer", "AFE_PCM_TX", "PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014801 {"MM_UL1", NULL, "MultiMedia1 Mixer"},
14802 {"MultiMedia2 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
14803 {"MM_UL2", NULL, "MultiMedia2 Mixer"},
14804 {"MM_UL3", NULL, "MultiMedia3 Mixer"},
14805 {"MM_UL4", NULL, "MultiMedia4 Mixer"},
14806 {"MM_UL5", NULL, "MultiMedia5 Mixer"},
14807 {"MM_UL6", NULL, "MultiMedia6 Mixer"},
14808 {"MM_UL8", NULL, "MultiMedia8 Mixer"},
14809 {"MM_UL9", NULL, "MultiMedia9 Mixer"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014810 {"MM_UL10", NULL, "MultiMedia10 Mixer"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014811 {"MM_UL16", NULL, "MultiMedia16 Mixer"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014812 {"MM_UL17", NULL, "MultiMedia17 Mixer"},
14813 {"MM_UL18", NULL, "MultiMedia18 Mixer"},
14814 {"MM_UL19", NULL, "MultiMedia19 Mixer"},
14815 {"MM_UL20", NULL, "MultiMedia20 Mixer"},
14816
14817 {"AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14818 {"AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14819 {"AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14820 {"AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14821 {"AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14822 {"AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14823 {"AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14824 {"AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14825 {"AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14826 {"AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14827 {"AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14828 {"AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14829 {"AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14830 {"AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14831 {"AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14832 {"AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14833 {"AUX_PCM_RX", NULL, "AUX_PCM_RX Audio Mixer"},
14834
14835 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14836 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14837 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14838 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14839 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14840 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14841 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14842 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14843 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14844 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14845 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14846 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14847 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14848 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14849 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14850 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14851 {"SEC_AUX_PCM_RX", NULL, "SEC_AUX_PCM_RX Audio Mixer"},
14852
14853 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14854 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14855 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14856 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14857 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14858 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14859 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14860 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14861 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14862 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14863 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14864 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14865 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14866 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14867 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14868 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14869 {"TERT_AUX_PCM_RX", NULL, "TERT_AUX_PCM_RX Audio Mixer"},
14870
14871 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14872 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14873 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14874 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14875 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14876 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14877 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14878 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14879 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14880 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14881 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14882 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14883 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14884 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14885 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14886 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14887 {"QUAT_AUX_PCM_RX", NULL, "QUAT_AUX_PCM_RX Audio Mixer"},
14888
Rohit Kumara5077932017-09-10 22:05:05 +053014889 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14890 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14891 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14892 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14893 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14894 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14895 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14896 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14897 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14898 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14899 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14900 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14901 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14902 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14903 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14904 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14905 {"QUIN_AUX_PCM_RX", NULL, "QUIN_AUX_PCM_RX Audio Mixer"},
14906
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014907 {"PRI_RX_Voice Mixer", "Voip", "VOIP_DL"},
14908 {"PRI_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
14909 {"PRI_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
14910 {"PRI_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
14911 {"PRI_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
14912 {"PRI_I2S_RX", NULL, "PRI_RX_Voice Mixer"},
14913
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014914 {"SEC_RX_Voice Mixer", "Voip", "VOIP_DL"},
14915 {"SEC_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
14916 {"SEC_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
14917 {"SEC_I2S_RX", NULL, "SEC_RX_Voice Mixer"},
14918
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014919 {"SEC_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
14920 {"SEC_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
14921 {"SEC_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
14922 {"SEC_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
14923 {"SEC_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
14924 {"SEC_MI2S_RX", NULL, "SEC_MI2S_RX_Voice Mixer"},
14925
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014926 {"SLIM_0_RX_Voice Mixer", "Voip", "VOIP_DL"},
14927 {"SLIM_0_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014928 {"SLIM_0_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
14929 {"SLIM_0_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
14930 {"SLIM_0_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
14931 {"SLIMBUS_0_RX", NULL, "SLIM_0_RX_Voice Mixer"},
14932
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014933 {"SLIM_6_RX_Voice Mixer", "Voip", "VOIP_DL"},
14934 {"SLIM_6_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014935 {"SLIM_6_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
14936 {"SLIM_6_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
14937 {"SLIM_6_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
14938 {"SLIMBUS_6_RX", NULL, "SLIM_6_RX_Voice Mixer"},
14939
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014940 {"USB_AUDIO_RX_Voice Mixer", "Voip", "VOIP_DL"},
14941 {"USB_AUDIO_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014942 {"USB_AUDIO_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
14943 {"USB_AUDIO_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
14944 {"USB_AUDIO_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
14945 {"USB_AUDIO_RX", NULL, "USB_AUDIO_RX_Voice Mixer"},
14946
Aalique Grahamee4fd7d52017-11-28 13:24:13 -080014947 {"DISPLAY_PORT_RX_Voice Mixer", "Voip", "VOIP_DL"},
14948 {"DISPLAY_PORT_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Aalique Grahamee4fd7d52017-11-28 13:24:13 -080014949 {"DISPLAY_PORT_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
14950 {"DISPLAY_PORT_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
14951 {"DISPLAY_PORT_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
14952 {"DISPLAY_PORT", NULL, "DISPLAY_PORT_RX_Voice Mixer"},
14953
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014954 {"INTERNAL_BT_SCO_RX_Voice Mixer", "Voip", "VOIP_DL"},
14955 {"INTERNAL_BT_SCO_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
14956 {"INTERNAL_BT_SCO_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
14957 {"INTERNAL_BT_SCO_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
14958 {"INTERNAL_BT_SCO_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014959 {"INT_BT_SCO_RX", NULL, "INTERNAL_BT_SCO_RX_Voice Mixer"},
14960
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014961 {"AFE_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
14962 {"AFE_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
14963 {"AFE_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
14964 {"AFE_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
14965 {"AFE_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
14966 {"PCM_RX", NULL, "AFE_PCM_RX_Voice Mixer"},
14967
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014968 {"AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
14969 {"AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014970 {"AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
14971 {"AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
14972 {"AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
14973 {"AUX_PCM_RX", NULL, "AUX_PCM_RX_Voice Mixer"},
14974
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014975 {"SEC_AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
14976 {"SEC_AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014977 {"SEC_AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
14978 {"SEC_AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
14979 {"SEC_AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
14980 {"SEC_AUX_PCM_RX", NULL, "SEC_AUX_PCM_RX_Voice Mixer"},
14981
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014982 {"TERT_AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
14983 {"TERT_AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014984 {"TERT_AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
14985 {"TERT_AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
14986 {"TERT_AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
14987 {"TERT_AUX_PCM_RX", NULL, "TERT_AUX_PCM_RX_Voice Mixer"},
14988
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014989 {"QUAT_AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
14990 {"QUAT_AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014991 {"QUAT_AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
14992 {"QUAT_AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
14993 {"QUAT_AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
14994 {"QUAT_AUX_PCM_RX", NULL, "QUAT_AUX_PCM_RX_Voice Mixer"},
14995
Rohit Kumara5077932017-09-10 22:05:05 +053014996 {"QUIN_AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
14997 {"QUIN_AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Rohit Kumara5077932017-09-10 22:05:05 +053014998 {"QUIN_AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
14999 {"QUIN_AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15000 {"QUIN_AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15001 {"QUIN_AUX_PCM_RX", NULL, "QUIN_AUX_PCM_RX_Voice Mixer"},
15002
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015003 {"HDMI_RX_Voice Mixer", "Voip", "VOIP_DL"},
15004 {"HDMI_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15005 {"HDMI_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15006 {"HDMI_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15007 {"HDMI_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15008 {"HDMI", NULL, "HDMI_RX_Voice Mixer"},
15009 {"HDMI", NULL, "HDMI_DL_HL"},
15010
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015011 {"MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015012 {"MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15013 {"MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15014 {"MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
kunleiz8a60b822017-10-11 15:04:02 +080015015 {"MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015016 {"MI2S_RX", NULL, "MI2S_RX_Voice Mixer"},
15017
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015018 {"PRI_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015019 {"PRI_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15020 {"PRI_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15021 {"PRI_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15022 {"PRI_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15023 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX_Voice Mixer"},
15024
15025 {"INT0_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
15026 {"INT0_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15027 {"INT0_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15028 {"INT0_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15029 {"INT0_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15030 {"INT0_MI2S_RX", NULL, "INT0_MI2S_RX_Voice Mixer"},
15031
15032 {"INT4_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
15033 {"INT4_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15034 {"INT4_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15035 {"INT4_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15036 {"INT4_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15037 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX_Voice Mixer"},
15038
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015039 {"TERT_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015040 {"TERT_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15041 {"TERT_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15042 {"TERT_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15043 {"TERT_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15044 {"TERT_MI2S_RX", NULL, "TERT_MI2S_RX_Voice Mixer"},
15045
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015046 {"QUAT_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015047 {"QUAT_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15048 {"QUAT_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15049 {"QUAT_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15050 {"QUAT_MI2S_RX", NULL, "QUAT_MI2S_RX_Voice Mixer"},
15051
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015052 {"QUIN_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015053 {"QUIN_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15054 {"QUIN_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15055 {"QUIN_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15056 {"QUIN_MI2S_RX", NULL, "QUIN_MI2S_RX_Voice Mixer"},
15057
15058 {"QUAT_TDM_RX_2_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15059 {"QUAT_TDM_RX_2", NULL, "QUAT_TDM_RX_2_Voice Mixer"},
15060
15061 {"VOC_EXT_EC MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15062 {"VOC_EXT_EC MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15063 {"VOC_EXT_EC MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15064 {"VOC_EXT_EC MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015065 {"VOC_EXT_EC MUX", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015066 {"VOC_EXT_EC MUX", "SLIM_1_TX", "SLIMBUS_1_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015067 {"VOIP_UL", NULL, "VOC_EXT_EC MUX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015068 {"VOICEMMODE1_UL", NULL, "VOC_EXT_EC MUX"},
15069 {"VOICEMMODE2_UL", NULL, "VOC_EXT_EC MUX"},
15070
15071 {"AUDIO_REF_EC_UL1 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15072 {"AUDIO_REF_EC_UL1 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15073 {"AUDIO_REF_EC_UL1 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15074 {"AUDIO_REF_EC_UL1 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15075 {"AUDIO_REF_EC_UL1 MUX", "SLIM_1_TX", "SLIMBUS_1_TX"},
15076 {"AUDIO_REF_EC_UL1 MUX", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15077 {"AUDIO_REF_EC_UL1 MUX", "QUAT_TDM_RX_0", "QUAT_TDM_RX_0"},
15078 {"AUDIO_REF_EC_UL1 MUX", "QUAT_TDM_RX_1", "QUAT_TDM_RX_1"},
15079 {"AUDIO_REF_EC_UL1 MUX", "QUAT_TDM_RX_2", "QUAT_TDM_RX_2"},
15080 {"AUDIO_REF_EC_UL1 MUX", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15081
15082 {"AUDIO_REF_EC_UL2 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15083 {"AUDIO_REF_EC_UL2 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15084 {"AUDIO_REF_EC_UL2 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15085 {"AUDIO_REF_EC_UL2 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15086
15087 {"AUDIO_REF_EC_UL3 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15088 {"AUDIO_REF_EC_UL3 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15089 {"AUDIO_REF_EC_UL3 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15090 {"AUDIO_REF_EC_UL3 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15091
15092 {"AUDIO_REF_EC_UL4 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15093 {"AUDIO_REF_EC_UL4 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15094 {"AUDIO_REF_EC_UL4 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15095 {"AUDIO_REF_EC_UL4 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15096
15097 {"AUDIO_REF_EC_UL5 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15098 {"AUDIO_REF_EC_UL5 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15099 {"AUDIO_REF_EC_UL5 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15100 {"AUDIO_REF_EC_UL5 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15101
15102 {"AUDIO_REF_EC_UL6 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15103 {"AUDIO_REF_EC_UL6 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15104 {"AUDIO_REF_EC_UL6 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15105 {"AUDIO_REF_EC_UL6 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15106
15107 {"AUDIO_REF_EC_UL8 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15108 {"AUDIO_REF_EC_UL8 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15109 {"AUDIO_REF_EC_UL8 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15110 {"AUDIO_REF_EC_UL8 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15111
15112 {"AUDIO_REF_EC_UL9 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15113 {"AUDIO_REF_EC_UL9 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15114 {"AUDIO_REF_EC_UL9 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15115 {"AUDIO_REF_EC_UL9 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15116
Laxminath Kasam38070be2017-08-17 18:21:59 +053015117 {"AUDIO_REF_EC_UL10 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15118 {"AUDIO_REF_EC_UL10 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15119 {"AUDIO_REF_EC_UL10 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15120 {"AUDIO_REF_EC_UL10 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15121 {"AUDIO_REF_EC_UL10 MUX", "SLIM_1_TX", "SLIMBUS_1_TX"},
15122 {"AUDIO_REF_EC_UL10 MUX", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15123 {"AUDIO_REF_EC_UL10 MUX", "QUAT_TDM_RX_0", "QUAT_TDM_RX_0"},
15124 {"AUDIO_REF_EC_UL10 MUX", "QUAT_TDM_RX_1", "QUAT_TDM_RX_1"},
15125 {"AUDIO_REF_EC_UL10 MUX", "QUAT_TDM_RX_2", "QUAT_TDM_RX_2"},
15126 {"AUDIO_REF_EC_UL10 MUX", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
Vikram Panduranga016c49f2017-09-11 15:15:56 -070015127
15128 {"AUDIO_REF_EC_UL16 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15129 {"AUDIO_REF_EC_UL16 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15130 {"AUDIO_REF_EC_UL16 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15131 {"AUDIO_REF_EC_UL16 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15132
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015133 {"AUDIO_REF_EC_UL17 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15134 {"AUDIO_REF_EC_UL17 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15135 {"AUDIO_REF_EC_UL17 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15136 {"AUDIO_REF_EC_UL17 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15137
15138 {"AUDIO_REF_EC_UL18 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15139 {"AUDIO_REF_EC_UL18 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15140 {"AUDIO_REF_EC_UL18 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15141 {"AUDIO_REF_EC_UL18 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15142
15143 {"AUDIO_REF_EC_UL19 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15144 {"AUDIO_REF_EC_UL19 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15145 {"AUDIO_REF_EC_UL19 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15146 {"AUDIO_REF_EC_UL19 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15147
Yunfei Zhang3efc4a22017-11-07 16:30:13 +080015148
15149 {"LSM1_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15150 {"LSM2_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15151 {"LSM3_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15152 {"LSM4_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15153 {"LSM5_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15154 {"LSM6_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15155 {"LSM7_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15156 {"LSM8_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15157
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015158 {"MM_UL1", NULL, "AUDIO_REF_EC_UL1 MUX"},
15159 {"MM_UL2", NULL, "AUDIO_REF_EC_UL2 MUX"},
15160 {"MM_UL3", NULL, "AUDIO_REF_EC_UL3 MUX"},
15161 {"MM_UL4", NULL, "AUDIO_REF_EC_UL4 MUX"},
15162 {"MM_UL5", NULL, "AUDIO_REF_EC_UL5 MUX"},
15163 {"MM_UL6", NULL, "AUDIO_REF_EC_UL6 MUX"},
15164 {"MM_UL8", NULL, "AUDIO_REF_EC_UL8 MUX"},
15165 {"MM_UL9", NULL, "AUDIO_REF_EC_UL9 MUX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053015166 {"MM_UL10", NULL, "AUDIO_REF_EC_UL10 MUX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053015167 {"MM_UL16", NULL, "AUDIO_REF_EC_UL16 MUX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015168 {"MM_UL17", NULL, "AUDIO_REF_EC_UL17 MUX"},
15169 {"MM_UL18", NULL, "AUDIO_REF_EC_UL18 MUX"},
15170 {"MM_UL19", NULL, "AUDIO_REF_EC_UL19 MUX"},
15171
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015172 {"VoiceMMode1_Tx Mixer", "PRI_TX_MMode1", "PRI_I2S_TX"},
15173 {"VoiceMMode1_Tx Mixer", "PRI_MI2S_TX_MMode1", "PRI_MI2S_TX"},
15174 {"VoiceMMode1_Tx Mixer", "MI2S_TX_MMode1", "MI2S_TX"},
15175 {"VoiceMMode1_Tx Mixer", "TERT_MI2S_TX_MMode1", "TERT_MI2S_TX"},
15176 {"VoiceMMode1_Tx Mixer", "INT3_MI2S_TX_MMode1", "INT3_MI2S_TX"},
15177 {"VoiceMMode1_Tx Mixer", "SLIM_0_TX_MMode1", "SLIMBUS_0_TX"},
15178 {"VoiceMMode1_Tx Mixer", "SLIM_7_TX_MMode1", "SLIMBUS_7_TX"},
15179 {"VoiceMMode1_Tx Mixer", "SLIM_8_TX_MMode1", "SLIMBUS_8_TX"},
15180 {"VoiceMMode1_Tx Mixer", "USB_AUDIO_TX_MMode1", "USB_AUDIO_TX"},
15181 {"VoiceMMode1_Tx Mixer", "INT_BT_SCO_TX_MMode1", "INT_BT_SCO_TX"},
15182 {"VoiceMMode1_Tx Mixer", "AFE_PCM_TX_MMode1", "PCM_TX"},
15183 {"VoiceMMode1_Tx Mixer", "AUX_PCM_TX_MMode1", "AUX_PCM_TX"},
15184 {"VoiceMMode1_Tx Mixer", "SEC_AUX_PCM_TX_MMode1", "SEC_AUX_PCM_TX"},
15185 {"VoiceMMode1_Tx Mixer", "TERT_AUX_PCM_TX_MMode1", "TERT_AUX_PCM_TX"},
15186 {"VoiceMMode1_Tx Mixer", "QUAT_AUX_PCM_TX_MMode1", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015187 {"VoiceMMode1_Tx Mixer", "QUIN_AUX_PCM_TX_MMode1", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015188 {"VoiceMMode1_Tx Mixer", "QUAT_TDM_TX_0_MMode1", "QUAT_TDM_TX_0"},
15189 {"VOICEMMODE1_UL", NULL, "VoiceMMode1_Tx Mixer"},
15190
15191 {"VoiceMMode2_Tx Mixer", "PRI_TX_MMode2", "PRI_I2S_TX"},
15192 {"VoiceMMode2_Tx Mixer", "PRI_MI2S_TX_MMode2", "PRI_MI2S_TX"},
15193 {"VoiceMMode2_Tx Mixer", "MI2S_TX_MMode2", "MI2S_TX"},
15194 {"VoiceMMode2_Tx Mixer", "TERT_MI2S_TX_MMode2", "TERT_MI2S_TX"},
15195 {"VoiceMMode2_Tx Mixer", "INT3_MI2S_TX_MMode2", "INT3_MI2S_TX"},
15196 {"VoiceMMode2_Tx Mixer", "SLIM_0_TX_MMode2", "SLIMBUS_0_TX"},
15197 {"VoiceMMode2_Tx Mixer", "SLIM_7_TX_MMode2", "SLIMBUS_7_TX"},
15198 {"VoiceMMode2_Tx Mixer", "SLIM_8_TX_MMode2", "SLIMBUS_8_TX"},
15199 {"VoiceMMode2_Tx Mixer", "USB_AUDIO_TX_MMode2", "USB_AUDIO_TX"},
15200 {"VoiceMMode2_Tx Mixer", "INT_BT_SCO_TX_MMode2", "INT_BT_SCO_TX"},
15201 {"VoiceMMode2_Tx Mixer", "AFE_PCM_TX_MMode2", "PCM_TX"},
15202 {"VoiceMMode2_Tx Mixer", "AUX_PCM_TX_MMode2", "AUX_PCM_TX"},
15203 {"VoiceMMode2_Tx Mixer", "SEC_AUX_PCM_TX_MMode2", "SEC_AUX_PCM_TX"},
15204 {"VoiceMMode2_Tx Mixer", "TERT_AUX_PCM_TX_MMode2", "TERT_AUX_PCM_TX"},
15205 {"VoiceMMode2_Tx Mixer", "QUAT_AUX_PCM_TX_MMode2", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015206 {"VoiceMMode2_Tx Mixer", "QUIN_AUX_PCM_TX_MMode2", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015207 {"VOICEMMODE2_UL", NULL, "VoiceMMode2_Tx Mixer"},
15208
15209 {"Voip_Tx Mixer", "PRI_TX_Voip", "PRI_I2S_TX"},
15210 {"Voip_Tx Mixer", "MI2S_TX_Voip", "MI2S_TX"},
15211 {"Voip_Tx Mixer", "TERT_MI2S_TX_Voip", "TERT_MI2S_TX"},
15212 {"Voip_Tx Mixer", "INT3_MI2S_TX_Voip", "INT3_MI2S_TX"},
15213 {"Voip_Tx Mixer", "SLIM_0_TX_Voip", "SLIMBUS_0_TX"},
15214 {"Voip_Tx Mixer", "SLIM_7_TX_Voip", "SLIMBUS_7_TX"},
15215 {"Voip_Tx Mixer", "SLIM_8_TX_Voip", "SLIMBUS_8_TX"},
15216 {"Voip_Tx Mixer", "USB_AUDIO_TX_Voip", "USB_AUDIO_TX"},
15217 {"Voip_Tx Mixer", "INTERNAL_BT_SCO_TX_Voip", "INT_BT_SCO_TX"},
15218 {"Voip_Tx Mixer", "AFE_PCM_TX_Voip", "PCM_TX"},
15219 {"Voip_Tx Mixer", "AUX_PCM_TX_Voip", "AUX_PCM_TX"},
15220 {"Voip_Tx Mixer", "SEC_AUX_PCM_TX_Voip", "SEC_AUX_PCM_TX"},
15221 {"Voip_Tx Mixer", "TERT_AUX_PCM_TX_Voip", "TERT_AUX_PCM_TX"},
15222 {"Voip_Tx Mixer", "QUAT_AUX_PCM_TX_Voip", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015223 {"Voip_Tx Mixer", "QUIN_AUX_PCM_TX_Voip", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015224 {"Voip_Tx Mixer", "PRI_MI2S_TX_Voip", "PRI_MI2S_TX"},
15225 {"VOIP_UL", NULL, "Voip_Tx Mixer"},
15226
15227 {"SLIMBUS_DL_HL", "Switch", "SLIM0_DL_HL"},
15228 {"SLIMBUS_0_RX", NULL, "SLIMBUS_DL_HL"},
15229 {"SLIMBUS1_DL_HL", "Switch", "SLIM1_DL_HL"},
15230 {"SLIMBUS_1_RX", NULL, "SLIMBUS1_DL_HL"},
15231 {"SLIMBUS3_DL_HL", "Switch", "SLIM3_DL_HL"},
15232 {"SLIMBUS_3_RX", NULL, "SLIMBUS3_DL_HL"},
15233 {"SLIMBUS4_DL_HL", "Switch", "SLIM4_DL_HL"},
15234 {"SLIMBUS_4_RX", NULL, "SLIMBUS4_DL_HL"},
15235 {"SLIMBUS6_DL_HL", "Switch", "SLIM0_DL_HL"},
15236 {"SLIMBUS_6_RX", NULL, "SLIMBUS6_DL_HL"},
15237 {"SLIM0_UL_HL", NULL, "SLIMBUS_0_TX"},
15238 {"SLIM1_UL_HL", NULL, "SLIMBUS_1_TX"},
15239 {"SLIM3_UL_HL", NULL, "SLIMBUS_3_TX"},
15240 {"SLIM4_UL_HL", NULL, "SLIMBUS_4_TX"},
15241 {"SLIM8_UL_HL", NULL, "SLIMBUS_8_TX"},
15242
15243 {"LSM1 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15244 {"LSM1 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15245 {"LSM1 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15246 {"LSM1 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15247 {"LSM1 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15248 {"LSM1 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15249 {"LSM1 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15250 {"LSM1 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
15251 {"LSM1_UL_HL", NULL, "LSM1 Mixer"},
15252
15253 {"LSM2 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15254 {"LSM2 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15255 {"LSM2 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15256 {"LSM2 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15257 {"LSM2 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15258 {"LSM2 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15259 {"LSM2 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15260 {"LSM2 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
15261 {"LSM2_UL_HL", NULL, "LSM2 Mixer"},
15262
15263
15264 {"LSM3 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15265 {"LSM3 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15266 {"LSM3 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15267 {"LSM3 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15268 {"LSM3 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15269 {"LSM3 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15270 {"LSM3 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15271 {"LSM3 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
15272 {"LSM3_UL_HL", NULL, "LSM3 Mixer"},
15273
15274
15275 {"LSM4 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15276 {"LSM4 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15277 {"LSM4 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15278 {"LSM4 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15279 {"LSM4 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15280 {"LSM4 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15281 {"LSM4 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15282 {"LSM4 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
15283 {"LSM4_UL_HL", NULL, "LSM4 Mixer"},
15284
15285 {"LSM5 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15286 {"LSM5 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15287 {"LSM5 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15288 {"LSM5 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15289 {"LSM5 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15290 {"LSM5 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15291 {"LSM5 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15292 {"LSM5 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
15293 {"LSM5_UL_HL", NULL, "LSM5 Mixer"},
15294
15295 {"LSM6 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15296 {"LSM6 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15297 {"LSM6 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15298 {"LSM6 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15299 {"LSM6 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15300 {"LSM6 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15301 {"LSM6_UL_HL", NULL, "LSM6 Mixer"},
15302
15303 {"LSM7 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15304 {"LSM7 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15305 {"LSM7 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15306 {"LSM7 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15307 {"LSM7 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15308 {"LSM7 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15309 {"LSM7_UL_HL", NULL, "LSM7 Mixer"},
15310
15311 {"LSM8 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15312 {"LSM8 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15313 {"LSM8 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15314 {"LSM8 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15315 {"LSM8 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15316 {"LSM8 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15317 {"LSM8_UL_HL", NULL, "LSM8 Mixer"},
15318
15319
15320 {"CPE_LSM_UL_HL", NULL, "BE_IN"},
15321 {"QCHAT_Tx Mixer", "PRI_TX_QCHAT", "PRI_I2S_TX"},
15322 {"QCHAT_Tx Mixer", "SLIM_0_TX_QCHAT", "SLIMBUS_0_TX"},
15323 {"QCHAT_Tx Mixer", "SLIM_7_TX_QCHAT", "SLIMBUS_7_TX"},
15324 {"QCHAT_Tx Mixer", "SLIM_8_TX_QCHAT", "SLIMBUS_8_TX"},
15325 {"QCHAT_Tx Mixer", "INTERNAL_BT_SCO_TX_QCHAT", "INT_BT_SCO_TX"},
15326 {"QCHAT_Tx Mixer", "AFE_PCM_TX_QCHAT", "PCM_TX"},
15327 {"QCHAT_Tx Mixer", "AUX_PCM_TX_QCHAT", "AUX_PCM_TX"},
15328 {"QCHAT_Tx Mixer", "SEC_AUX_PCM_TX_QCHAT", "SEC_AUX_PCM_TX"},
15329 {"QCHAT_Tx Mixer", "TERT_AUX_PCM_TX_QCHAT", "TERT_AUX_PCM_TX"},
15330 {"QCHAT_Tx Mixer", "QUAT_AUX_PCM_TX_QCHAT", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015331 {"QCHAT_Tx Mixer", "QUIN_AUX_PCM_TX_QCHAT", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015332 {"QCHAT_Tx Mixer", "MI2S_TX_QCHAT", "MI2S_TX"},
15333 {"QCHAT_Tx Mixer", "PRI_MI2S_TX_QCHAT", "PRI_MI2S_TX"},
15334 {"QCHAT_Tx Mixer", "TERT_MI2S_TX_QCHAT", "TERT_MI2S_TX"},
15335 {"QCHAT_Tx Mixer", "INT3_MI2S_TX_QCHAT", "INT3_MI2S_TX"},
15336 {"QCHAT_Tx Mixer", "USB_AUDIO_TX_QCHAT", "USB_AUDIO_TX"},
15337 {"QCHAT_UL", NULL, "QCHAT_Tx Mixer"},
15338
15339 {"INT_FM_RX", NULL, "INTFM_DL_HL"},
15340 {"INTFM_UL_HL", NULL, "INT_FM_TX"},
15341 {"INTHFP_UL_HL", NULL, "HFP_PRI_AUX_UL_HL"},
15342 {"HFP_PRI_AUX_UL_HL", "Switch", "AUX_PCM_TX"},
15343 {"INTHFP_UL_HL", NULL, "HFP_AUX_UL_HL"},
15344 {"HFP_AUX_UL_HL", "Switch", "SEC_AUX_PCM_TX"},
15345 {"INTHFP_UL_HL", NULL, "HFP_INT_UL_HL"},
15346 {"HFP_INT_UL_HL", "Switch", "INT_BT_SCO_TX"},
15347 {"SLIM7_UL_HL", NULL, "HFP_SLIM7_UL_HL"},
15348 {"HFP_SLIM7_UL_HL", "Switch", "SLIMBUS_7_TX"},
15349 {"AUX_PCM_RX", NULL, "AUXPCM_DL_HL"},
15350 {"AUX_PCM_RX", NULL, "INTHFP_DL_HL"},
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -080015351 {"SEC_AUX_PCM_RX", NULL, "SEC_AUXPCM_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015352 {"AUXPCM_UL_HL", NULL, "AUX_PCM_TX"},
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -080015353 {"SEC_AUXPCM_UL_HL", NULL, "SEC_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015354 {"MI2S_RX", NULL, "MI2S_DL_HL"},
15355 {"MI2S_UL_HL", NULL, "MI2S_TX"},
15356 {"PCM_RX_DL_HL", "Switch", "SLIM0_DL_HL"},
15357 {"PCM_RX", NULL, "PCM_RX_DL_HL"},
15358
15359 /* connect to INT4_MI2S_DL_HL since same pcm_id */
15360 {"INT0_MI2S_RX_DL_HL", "Switch", "INT4_MI2S_DL_HL"},
15361 {"INT0_MI2S_RX", NULL, "INT0_MI2S_RX_DL_HL"},
15362 {"INT4_MI2S_RX_DL_HL", "Switch", "INT4_MI2S_DL_HL"},
15363 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX_DL_HL"},
15364 {"PRI_MI2S_RX_DL_HL", "Switch", "PRI_MI2S_DL_HL"},
15365 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX_DL_HL"},
15366 {"SEC_MI2S_RX_DL_HL", "Switch", "SEC_MI2S_DL_HL"},
15367 {"SEC_MI2S_RX", NULL, "SEC_MI2S_RX_DL_HL"},
15368 {"TERT_MI2S_RX_DL_HL", "Switch", "TERT_MI2S_DL_HL"},
15369 {"TERT_MI2S_RX", NULL, "TERT_MI2S_RX_DL_HL"},
15370
15371 {"QUAT_MI2S_RX_DL_HL", "Switch", "QUAT_MI2S_DL_HL"},
15372 {"QUAT_MI2S_RX", NULL, "QUAT_MI2S_RX_DL_HL"},
Rohit Kumara5077932017-09-10 22:05:05 +053015373 {"QUIN_MI2S_RX_DL_HL", "Switch", "QUIN_MI2S_DL_HL"},
15374 {"QUIN_MI2S_RX", NULL, "QUIN_MI2S_RX_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015375 {"MI2S_UL_HL", NULL, "TERT_MI2S_TX"},
15376 {"INT3_MI2S_UL_HL", NULL, "INT3_MI2S_TX"},
15377 {"TERT_MI2S_UL_HL", NULL, "TERT_MI2S_TX"},
15378 {"SEC_I2S_RX", NULL, "SEC_I2S_DL_HL"},
15379 {"PRI_MI2S_UL_HL", NULL, "PRI_MI2S_TX"},
15380 {"SEC_MI2S_UL_HL", NULL, "SEC_MI2S_TX"},
15381 {"SEC_MI2S_RX", NULL, "SEC_MI2S_DL_HL"},
15382 {"PRI_MI2S_RX", NULL, "PRI_MI2S_DL_HL"},
15383 {"TERT_MI2S_RX", NULL, "TERT_MI2S_DL_HL"},
15384 {"QUAT_MI2S_UL_HL", NULL, "QUAT_MI2S_TX"},
15385
15386 {"PRI_TDM_TX_0_UL_HL", NULL, "PRI_TDM_TX_0"},
15387 {"PRI_TDM_TX_1_UL_HL", NULL, "PRI_TDM_TX_1"},
15388 {"PRI_TDM_TX_2_UL_HL", NULL, "PRI_TDM_TX_2"},
15389 {"PRI_TDM_TX_3_UL_HL", NULL, "PRI_TDM_TX_3"},
15390 {"PRI_TDM_RX_0", NULL, "PRI_TDM_RX_0_DL_HL"},
15391 {"PRI_TDM_RX_1", NULL, "PRI_TDM_RX_1_DL_HL"},
15392 {"PRI_TDM_RX_2", NULL, "PRI_TDM_RX_2_DL_HL"},
15393 {"PRI_TDM_RX_3", NULL, "PRI_TDM_RX_3_DL_HL"},
15394 {"SEC_TDM_TX_0_UL_HL", NULL, "SEC_TDM_TX_0"},
15395 {"SEC_TDM_TX_1_UL_HL", NULL, "SEC_TDM_TX_1"},
15396 {"SEC_TDM_TX_2_UL_HL", NULL, "SEC_TDM_TX_2"},
15397 {"SEC_TDM_TX_3_UL_HL", NULL, "SEC_TDM_TX_3"},
15398 {"SEC_TDM_RX_0", NULL, "SEC_TDM_RX_0_DL_HL"},
15399 {"SEC_TDM_RX_1", NULL, "SEC_TDM_RX_1_DL_HL"},
15400 {"SEC_TDM_RX_2", NULL, "SEC_TDM_RX_2_DL_HL"},
15401 {"SEC_TDM_RX_3", NULL, "SEC_TDM_RX_3_DL_HL"},
15402 {"TERT_TDM_TX_0_UL_HL", NULL, "TERT_TDM_TX_0"},
15403 {"TERT_TDM_TX_1_UL_HL", NULL, "TERT_TDM_TX_1"},
15404 {"TERT_TDM_TX_2_UL_HL", NULL, "TERT_TDM_TX_2"},
15405 {"TERT_TDM_TX_3_UL_HL", NULL, "TERT_TDM_TX_3"},
15406 {"TERT_TDM_RX_0", NULL, "TERT_TDM_RX_0_DL_HL"},
15407 {"TERT_TDM_RX_1", NULL, "TERT_TDM_RX_1_DL_HL"},
15408 {"TERT_TDM_RX_2", NULL, "TERT_TDM_RX_2_DL_HL"},
15409 {"TERT_TDM_RX_3", NULL, "TERT_TDM_RX_3_DL_HL"},
15410 {"QUAT_TDM_TX_0_UL_HL", NULL, "QUAT_TDM_TX_0"},
15411 {"QUAT_TDM_TX_1_UL_HL", NULL, "QUAT_TDM_TX_1"},
15412 {"QUAT_TDM_TX_2_UL_HL", NULL, "QUAT_TDM_TX_2"},
15413 {"QUAT_TDM_TX_3_UL_HL", NULL, "QUAT_TDM_TX_3"},
15414 {"QUAT_TDM_RX_0", NULL, "QUAT_TDM_RX_0_DL_HL"},
15415 {"QUAT_TDM_RX_1", NULL, "QUAT_TDM_RX_1_DL_HL"},
15416 {"QUAT_TDM_RX_2", NULL, "QUAT_TDM_RX_2_DL_HL"},
15417 {"QUAT_TDM_RX_3", NULL, "QUAT_TDM_RX_3_DL_HL"},
Rohit Kumara5077932017-09-10 22:05:05 +053015418 {"QUIN_TDM_TX_0_UL_HL", NULL, "QUIN_TDM_TX_0"},
15419 {"QUIN_TDM_TX_1_UL_HL", NULL, "QUIN_TDM_TX_1"},
15420 {"QUIN_TDM_TX_2_UL_HL", NULL, "QUIN_TDM_TX_2"},
15421 {"QUIN_TDM_TX_3_UL_HL", NULL, "QUIN_TDM_TX_3"},
15422 {"QUIN_TDM_RX_0", NULL, "QUIN_TDM_RX_0_DL_HL"},
15423 {"QUIN_TDM_RX_1", NULL, "QUIN_TDM_RX_1_DL_HL"},
15424 {"QUIN_TDM_RX_2", NULL, "QUIN_TDM_RX_2_DL_HL"},
15425 {"QUIN_TDM_RX_3", NULL, "QUIN_TDM_RX_3_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015426
15427 {"PRI_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15428 {"PRI_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15429 {"PRI_TDM_RX_0 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15430 {"PRI_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15431 {"PRI_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15432 {"PRI_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15433 {"PRI_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15434 {"PRI_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15435 {"PRI_TDM_RX_0 Port Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15436 {"PRI_TDM_RX_0 Port Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15437 {"PRI_TDM_RX_0 Port Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15438 {"PRI_TDM_RX_0 Port Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15439 {"PRI_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15440 {"PRI_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15441 {"PRI_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15442 {"PRI_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015443 {"PRI_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15444 {"PRI_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15445 {"PRI_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15446 {"PRI_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015447 {"PRI_TDM_RX_0", NULL, "PRI_TDM_RX_0 Port Mixer"},
15448
15449 {"PRI_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15450 {"PRI_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15451 {"PRI_TDM_RX_1 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15452 {"PRI_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15453 {"PRI_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15454 {"PRI_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15455 {"PRI_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15456 {"PRI_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15457 {"PRI_TDM_RX_1 Port Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15458 {"PRI_TDM_RX_1 Port Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15459 {"PRI_TDM_RX_1 Port Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15460 {"PRI_TDM_RX_1 Port Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15461 {"PRI_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15462 {"PRI_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15463 {"PRI_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15464 {"PRI_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015465 {"PRI_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15466 {"PRI_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15467 {"PRI_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15468 {"PRI_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015469 {"PRI_TDM_RX_1", NULL, "PRI_TDM_RX_1 Port Mixer"},
15470
15471 {"PRI_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15472 {"PRI_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15473 {"PRI_TDM_RX_2 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15474 {"PRI_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15475 {"PRI_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15476 {"PRI_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15477 {"PRI_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15478 {"PRI_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15479 {"PRI_TDM_RX_2 Port Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15480 {"PRI_TDM_RX_2 Port Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15481 {"PRI_TDM_RX_2 Port Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15482 {"PRI_TDM_RX_2 Port Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15483 {"PRI_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15484 {"PRI_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15485 {"PRI_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15486 {"PRI_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015487 {"PRI_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15488 {"PRI_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15489 {"PRI_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15490 {"PRI_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015491 {"PRI_TDM_RX_2", NULL, "PRI_TDM_RX_2 Port Mixer"},
15492
15493 {"PRI_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15494 {"PRI_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15495 {"PRI_TDM_RX_3 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15496 {"PRI_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15497 {"PRI_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15498 {"PRI_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15499 {"PRI_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15500 {"PRI_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15501 {"PRI_TDM_RX_3 Port Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15502 {"PRI_TDM_RX_3 Port Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15503 {"PRI_TDM_RX_3 Port Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15504 {"PRI_TDM_RX_3 Port Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15505 {"PRI_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15506 {"PRI_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15507 {"PRI_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15508 {"PRI_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015509 {"PRI_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15510 {"PRI_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15511 {"PRI_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15512 {"PRI_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015513 {"PRI_TDM_RX_3", NULL, "PRI_TDM_RX_3 Port Mixer"},
15514
15515 {"SEC_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15516 {"SEC_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15517 {"SEC_TDM_RX_0 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15518 {"SEC_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15519 {"SEC_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15520 {"SEC_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15521 {"SEC_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15522 {"SEC_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15523 {"SEC_TDM_RX_0 Port Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15524 {"SEC_TDM_RX_0 Port Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15525 {"SEC_TDM_RX_0 Port Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15526 {"SEC_TDM_RX_0 Port Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15527 {"SEC_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15528 {"SEC_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15529 {"SEC_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15530 {"SEC_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015531 {"SEC_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15532 {"SEC_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15533 {"SEC_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15534 {"SEC_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015535 {"SEC_TDM_RX_0", NULL, "SEC_TDM_RX_0 Port Mixer"},
15536
15537 {"SEC_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15538 {"SEC_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15539 {"SEC_TDM_RX_1 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15540 {"SEC_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15541 {"SEC_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15542 {"SEC_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15543 {"SEC_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15544 {"SEC_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15545 {"SEC_TDM_RX_1 Port Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15546 {"SEC_TDM_RX_1 Port Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15547 {"SEC_TDM_RX_1 Port Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15548 {"SEC_TDM_RX_1 Port Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15549 {"SEC_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15550 {"SEC_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15551 {"SEC_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15552 {"SEC_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015553 {"SEC_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15554 {"SEC_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15555 {"SEC_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15556 {"SEC_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015557 {"SEC_TDM_RX_1", NULL, "SEC_TDM_RX_1 Port Mixer"},
15558
15559 {"SEC_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15560 {"SEC_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15561 {"SEC_TDM_RX_2 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15562 {"SEC_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15563 {"SEC_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15564 {"SEC_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15565 {"SEC_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15566 {"SEC_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15567 {"SEC_TDM_RX_2 Port Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15568 {"SEC_TDM_RX_2 Port Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15569 {"SEC_TDM_RX_2 Port Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15570 {"SEC_TDM_RX_2 Port Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15571 {"SEC_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15572 {"SEC_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15573 {"SEC_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15574 {"SEC_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015575 {"SEC_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15576 {"SEC_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15577 {"SEC_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15578 {"SEC_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015579 {"SEC_TDM_RX_2", NULL, "SEC_TDM_RX_2 Port Mixer"},
15580
15581 {"SEC_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15582 {"SEC_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15583 {"SEC_TDM_RX_3 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15584 {"SEC_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15585 {"SEC_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15586 {"SEC_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15587 {"SEC_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15588 {"SEC_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15589 {"SEC_TDM_RX_3 Port Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15590 {"SEC_TDM_RX_3 Port Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15591 {"SEC_TDM_RX_3 Port Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15592 {"SEC_TDM_RX_3 Port Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15593 {"SEC_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15594 {"SEC_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15595 {"SEC_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15596 {"SEC_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015597 {"SEC_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15598 {"SEC_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15599 {"SEC_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15600 {"SEC_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015601 {"SEC_TDM_RX_3", NULL, "SEC_TDM_RX_3 Port Mixer"},
15602
15603 {"TERT_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15604 {"TERT_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15605 {"TERT_TDM_RX_0 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15606 {"TERT_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15607 {"TERT_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15608 {"TERT_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15609 {"TERT_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15610 {"TERT_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15611 {"TERT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15612 {"TERT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15613 {"TERT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15614 {"TERT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15615 {"TERT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15616 {"TERT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15617 {"TERT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15618 {"TERT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015619 {"TERT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15620 {"TERT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15621 {"TERT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15622 {"TERT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015623 {"TERT_TDM_RX_0", NULL, "TERT_TDM_RX_0 Port Mixer"},
15624
15625 {"TERT_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15626 {"TERT_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15627 {"TERT_TDM_RX_1 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15628 {"TERT_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15629 {"TERT_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15630 {"TERT_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15631 {"TERT_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15632 {"TERT_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15633 {"TERT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15634 {"TERT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15635 {"TERT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15636 {"TERT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15637 {"TERT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15638 {"TERT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15639 {"TERT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15640 {"TERT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015641 {"TERT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15642 {"TERT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15643 {"TERT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15644 {"TERT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015645 {"TERT_TDM_RX_1", NULL, "TERT_TDM_RX_1 Port Mixer"},
15646
15647 {"TERT_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15648 {"TERT_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15649 {"TERT_TDM_RX_2 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15650 {"TERT_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15651 {"TERT_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15652 {"TERT_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15653 {"TERT_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15654 {"TERT_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15655 {"TERT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15656 {"TERT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15657 {"TERT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15658 {"TERT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15659 {"TERT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15660 {"TERT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15661 {"TERT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15662 {"TERT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015663 {"TERT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15664 {"TERT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15665 {"TERT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15666 {"TERT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015667 {"TERT_TDM_RX_2", NULL, "TERT_TDM_RX_2 Port Mixer"},
15668
15669 {"TERT_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15670 {"TERT_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15671 {"TERT_TDM_RX_3 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15672 {"TERT_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15673 {"TERT_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15674 {"TERT_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15675 {"TERT_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15676 {"TERT_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15677 {"TERT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15678 {"TERT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15679 {"TERT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15680 {"TERT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15681 {"TERT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15682 {"TERT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15683 {"TERT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15684 {"TERT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015685 {"TERT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15686 {"TERT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15687 {"TERT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15688 {"TERT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015689 {"TERT_TDM_RX_3", NULL, "TERT_TDM_RX_3 Port Mixer"},
15690
15691 {"QUAT_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15692 {"QUAT_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15693 {"QUAT_TDM_RX_0 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15694 {"QUAT_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15695 {"QUAT_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15696 {"QUAT_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15697 {"QUAT_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15698 {"QUAT_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15699 {"QUAT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15700 {"QUAT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15701 {"QUAT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15702 {"QUAT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15703 {"QUAT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15704 {"QUAT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15705 {"QUAT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15706 {"QUAT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015707 {"QUAT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15708 {"QUAT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15709 {"QUAT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15710 {"QUAT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015711 {"QUAT_TDM_RX_0", NULL, "QUAT_TDM_RX_0 Port Mixer"},
15712
15713 {"QUAT_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15714 {"QUAT_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15715 {"QUAT_TDM_RX_1 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15716 {"QUAT_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15717 {"QUAT_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15718 {"QUAT_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15719 {"QUAT_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15720 {"QUAT_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15721 {"QUAT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15722 {"QUAT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15723 {"QUAT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15724 {"QUAT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15725 {"QUAT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15726 {"QUAT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15727 {"QUAT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15728 {"QUAT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015729 {"QUAT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15730 {"QUAT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15731 {"QUAT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15732 {"QUAT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015733 {"QUAT_TDM_RX_1", NULL, "QUAT_TDM_RX_1 Port Mixer"},
15734
15735 {"QUAT_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15736 {"QUAT_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15737 {"QUAT_TDM_RX_2 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15738 {"QUAT_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15739 {"QUAT_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15740 {"QUAT_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15741 {"QUAT_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15742 {"QUAT_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15743 {"QUAT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15744 {"QUAT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15745 {"QUAT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15746 {"QUAT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15747 {"QUAT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15748 {"QUAT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15749 {"QUAT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15750 {"QUAT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015751 {"QUAT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15752 {"QUAT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15753 {"QUAT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15754 {"QUAT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015755 {"QUAT_TDM_RX_2", NULL, "QUAT_TDM_RX_2 Port Mixer"},
15756
15757 {"QUAT_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15758 {"QUAT_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15759 {"QUAT_TDM_RX_3 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15760 {"QUAT_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15761 {"QUAT_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15762 {"QUAT_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15763 {"QUAT_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15764 {"QUAT_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15765 {"QUAT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15766 {"QUAT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15767 {"QUAT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15768 {"QUAT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15769 {"QUAT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15770 {"QUAT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15771 {"QUAT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15772 {"QUAT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015773 {"QUAT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15774 {"QUAT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15775 {"QUAT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15776 {"QUAT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015777 {"QUAT_TDM_RX_3", NULL, "QUAT_TDM_RX_3 Port Mixer"},
15778
Rohit Kumara5077932017-09-10 22:05:05 +053015779 {"QUIN_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15780 {"QUIN_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15781 {"QUIN_TDM_RX_0 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15782 {"QUIN_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15783 {"QUIN_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15784 {"QUIN_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15785 {"QUIN_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15786 {"QUIN_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15787 {"QUIN_TDM_RX_0 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15788 {"QUIN_TDM_RX_0 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15789 {"QUIN_TDM_RX_0 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15790 {"QUIN_TDM_RX_0 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15791 {"QUIN_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15792 {"QUIN_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15793 {"QUIN_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15794 {"QUIN_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
15795 {"QUIN_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15796 {"QUIN_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15797 {"QUIN_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15798 {"QUIN_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Rohit Kumarc08b14f2017-10-06 10:52:17 +053015799 {"QUIN_TDM_RX_0", NULL, "QUIN_TDM_RX_0 Port Mixer"},
Rohit Kumara5077932017-09-10 22:05:05 +053015800
15801 {"QUIN_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15802 {"QUIN_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15803 {"QUIN_TDM_RX_1 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15804 {"QUIN_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15805 {"QUIN_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15806 {"QUIN_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15807 {"QUIN_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15808 {"QUIN_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15809 {"QUIN_TDM_RX_1 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15810 {"QUIN_TDM_RX_1 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15811 {"QUIN_TDM_RX_1 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15812 {"QUIN_TDM_RX_1 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15813 {"QUIN_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15814 {"QUIN_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15815 {"QUIN_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15816 {"QUIN_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
15817 {"QUIN_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15818 {"QUIN_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15819 {"QUIN_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15820 {"QUIN_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Rohit Kumarc08b14f2017-10-06 10:52:17 +053015821 {"QUIN_TDM_RX_1", NULL, "QUIN_TDM_RX_1 Port Mixer"},
Rohit Kumara5077932017-09-10 22:05:05 +053015822
15823 {"QUIN_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15824 {"QUIN_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15825 {"QUIN_TDM_RX_2 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15826 {"QUIN_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15827 {"QUIN_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15828 {"QUIN_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15829 {"QUIN_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15830 {"QUIN_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15831 {"QUIN_TDM_RX_2 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15832 {"QUIN_TDM_RX_2 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15833 {"QUIN_TDM_RX_2 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15834 {"QUIN_TDM_RX_2 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15835 {"QUIN_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15836 {"QUIN_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15837 {"QUIN_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15838 {"QUIN_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
15839 {"QUIN_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15840 {"QUIN_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15841 {"QUIN_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15842 {"QUIN_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Rohit Kumarc08b14f2017-10-06 10:52:17 +053015843 {"QUIN_TDM_RX_2", NULL, "QUIN_TDM_RX_2 Port Mixer"},
Rohit Kumara5077932017-09-10 22:05:05 +053015844
15845 {"QUIN_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15846 {"QUIN_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15847 {"QUIN_TDM_RX_3 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15848 {"QUIN_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15849 {"QUIN_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15850 {"QUIN_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15851 {"QUIN_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15852 {"QUIN_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15853 {"QUIN_TDM_RX_3 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15854 {"QUIN_TDM_RX_3 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15855 {"QUIN_TDM_RX_3 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15856 {"QUIN_TDM_RX_3 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15857 {"QUIN_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15858 {"QUIN_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15859 {"QUIN_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15860 {"QUIN_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
15861 {"QUIN_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15862 {"QUIN_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15863 {"QUIN_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15864 {"QUIN_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Rohit Kumarc08b14f2017-10-06 10:52:17 +053015865 {"QUIN_TDM_RX_3", NULL, "QUIN_TDM_RX_3 Port Mixer"},
Rohit Kumara5077932017-09-10 22:05:05 +053015866
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015867 {"INT0_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15868 {"INT0_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15869 {"INT0_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15870 {"INT0_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015871 {"INT0_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015872 {"INT0_MI2S_RX Port Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
15873 {"INT0_MI2S_RX Port Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
15874 {"INT0_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
15875 {"INT0_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15876 {"INT0_MI2S_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15877 {"INT0_MI2S_RX", NULL, "INT0_MI2S_RX Port Mixer"},
15878
15879 {"INT4_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15880 {"INT4_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15881 {"INT4_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15882 {"INT4_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015883 {"INT4_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015884 {"INT4_MI2S_RX Port Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
15885 {"INT4_MI2S_RX Port Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
15886 {"INT4_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
15887 {"INT4_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15888 {"INT4_MI2S_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15889 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX Port Mixer"},
15890
15891 {"SLIMBUS_0_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15892 {"SLIMBUS_0_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
15893 {"SLIMBUS_0_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
15894 {"SLIMBUS_0_RX Port Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
15895 {"SLIMBUS_0_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
15896 {"SLIMBUS_0_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15897 {"SLIMBUS_0_RX Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15898 {"SLIMBUS_0_RX Port Mixer", "TERT_AUXPCM_UL_TX", "TERT_AUX_PCM_TX"},
15899 {"SLIMBUS_0_RX Port Mixer", "QUAT_AUXPCM_UL_TX", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015900 {"SLIMBUS_0_RX Port Mixer", "QUIN_AUXPCM_UL_TX", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015901 {"SLIMBUS_0_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
15902 {"SLIMBUS_0_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15903 {"SLIMBUS_0_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15904 {"SLIMBUS_0_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15905 {"SLIMBUS_0_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015906 {"SLIMBUS_0_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015907 {"SLIMBUS_0_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15908 {"SLIMBUS_0_RX", NULL, "SLIMBUS_0_RX Port Mixer"},
15909 {"AFE_PCM_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15910 {"AFE_PCM_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
15911 {"PCM_RX", NULL, "AFE_PCM_RX Port Mixer"},
15912 {"USB_AUDIO_RX Port Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
15913 {"USB_AUDIO_RX", NULL, "USB_AUDIO_RX Port Mixer"},
15914 {"USB_DL_HL", "Switch", "USBAUDIO_DL_HL"},
15915 {"USB_AUDIO_RX", NULL, "USB_DL_HL"},
15916 {"USBAUDIO_UL_HL", NULL, "USB_AUDIO_TX"},
15917
15918
15919 {"AUX_PCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15920 {"AUX_PCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
15921 {"AUX_PCM_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
15922 {"AUX_PCM_RX Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15923 {"AUX_PCM_RX Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -080015924 {"AUX_PCM_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015925 {"AUX_PCM_RX", NULL, "AUX_PCM_RX Port Mixer"},
15926
15927 {"SEC_AUXPCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15928 {"SEC_AUXPCM_RX Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15929 {"SEC_AUXPCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -080015930 {"SEC_AUXPCM_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015931 {"SEC_AUX_PCM_RX", NULL, "SEC_AUXPCM_RX Port Mixer"},
15932
15933 {"TERT_AUXPCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15934 {"TERT_AUXPCM_RX Port Mixer", "TERT_AUXPCM_UL_TX", "TERT_AUX_PCM_TX"},
15935 {"TERT_AUXPCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
15936 {"TERT_AUX_PCM_RX", NULL, "TERT_AUXPCM_RX Port Mixer"},
15937
15938 {"QUAT_AUXPCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15939 {"QUAT_AUXPCM_RX Port Mixer", "QUAT_AUXPCM_UL_TX", "QUAT_AUX_PCM_TX"},
15940 {"QUAT_AUXPCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
15941 {"QUAT_AUX_PCM_RX", NULL, "QUAT_AUXPCM_RX Port Mixer"},
15942
Rohit Kumara5077932017-09-10 22:05:05 +053015943 {"QUIN_AUXPCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15944 {"QUIN_AUXPCM_RX Port Mixer", "QUIN_AUXPCM_UL_TX", "QUIN_AUX_PCM_TX"},
15945 {"QUIN_AUXPCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
15946 {"QUIN_AUX_PCM_RX", NULL, "QUIN_AUXPCM_RX Port Mixer"},
15947
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015948 {"Voice Stub Tx Mixer", "STUB_TX_HL", "STUB_TX"},
15949 {"Voice Stub Tx Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
15950 {"Voice Stub Tx Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15951 {"Voice Stub Tx Mixer", "STUB_1_TX_HL", "STUB_1_TX"},
15952 {"Voice Stub Tx Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15953 {"Voice Stub Tx Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15954 {"Voice Stub Tx Mixer", "TERT_AUXPCM_UL_TX", "TERT_AUX_PCM_TX"},
15955 {"Voice Stub Tx Mixer", "QUAT_AUXPCM_UL_TX", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015956 {"Voice Stub Tx Mixer", "QUIN_AUXPCM_UL_TX", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015957 {"Voice Stub Tx Mixer", "MI2S_TX", "MI2S_TX"},
15958 {"Voice Stub Tx Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15959 {"Voice Stub Tx Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15960 {"Voice Stub Tx Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
15961 {"Voice Stub Tx Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15962 {"Voice Stub Tx Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
15963 {"Voice Stub Tx Mixer", "SLIM_3_TX", "SLIMBUS_3_TX"},
15964 {"Voice Stub Tx Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
15965 {"Voice Stub Tx Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
15966 {"Voice Stub Tx Mixer", "AFE_PCM_TX", "PCM_TX"},
15967 {"VOICE_STUB_UL", NULL, "Voice Stub Tx Mixer"},
15968
15969 {"VoLTE Stub Tx Mixer", "STUB_TX_HL", "STUB_TX"},
15970 {"VoLTE Stub Tx Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
15971 {"VoLTE Stub Tx Mixer", "STUB_1_TX_HL", "STUB_1_TX"},
15972 {"VoLTE Stub Tx Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15973 {"VoLTE Stub Tx Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
15974 {"VoLTE Stub Tx Mixer", "SLIM_3_TX", "SLIMBUS_3_TX"},
15975 {"VoLTE Stub Tx Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
15976 {"VoLTE Stub Tx Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
15977 {"VoLTE Stub Tx Mixer", "AFE_PCM_TX", "PCM_TX"},
15978 {"VoLTE Stub Tx Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15979 {"VoLTE Stub Tx Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15980 {"VOLTE_STUB_UL", NULL, "VoLTE Stub Tx Mixer"},
15981
15982 {"Voice2 Stub Tx Mixer", "STUB_TX_HL", "STUB_TX"},
15983 {"Voice2 Stub Tx Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
15984 {"Voice2 Stub Tx Mixer", "STUB_1_TX_HL", "STUB_1_TX"},
15985 {"Voice2 Stub Tx Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15986 {"Voice2 Stub Tx Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
15987 {"Voice2 Stub Tx Mixer", "SLIM_3_TX", "SLIMBUS_3_TX"},
15988 {"Voice2 Stub Tx Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
15989 {"Voice2 Stub Tx Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
15990 {"Voice2 Stub Tx Mixer", "AFE_PCM_TX", "PCM_TX"},
15991 {"Voice2 Stub Tx Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15992 {"Voice2 Stub Tx Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15993 {"VOICE2_STUB_UL", NULL, "Voice2 Stub Tx Mixer"},
15994
kunleizdf5a00a2017-11-27 15:27:36 +080015995 {"STUB_RX Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15996 {"STUB_RX Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015997 {"STUB_RX", NULL, "STUB_RX Mixer"},
kunleizdf5a00a2017-11-27 15:27:36 +080015998
15999 {"SLIMBUS_1_RX Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
16000 {"SLIMBUS_1_RX Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016001 {"SLIMBUS_1_RX", NULL, "SLIMBUS_1_RX Mixer"},
kunleizdf5a00a2017-11-27 15:27:36 +080016002
16003 {"SLIMBUS_3_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
16004 {"SLIMBUS_3_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016005 {"SLIMBUS_3_RX", NULL, "SLIMBUS_3_RX_Voice Mixer"},
16006
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016007 {"SLIM_7_RX_Voice Mixer", "Voip", "VOIP_DL"},
16008 {"SLIM_7_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016009 {"SLIM_7_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
16010 {"SLIM_7_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
16011 {"SLIM_7_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
16012 {"SLIMBUS_7_RX", NULL, "SLIM_7_RX_Voice Mixer"},
16013
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016014 {"SLIM_8_RX_Voice Mixer", "Voip", "VOIP_DL"},
16015 {"SLIM_8_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016016 {"SLIM_8_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
16017 {"SLIM_8_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
16018 {"SLIM_8_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
16019 {"SLIMBUS_8_RX", NULL, "SLIM_8_RX_Voice Mixer"},
16020
16021 {"SLIMBUS_1_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16022 {"SLIMBUS_1_RX Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16023 {"SLIMBUS_1_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16024 {"SLIMBUS_1_RX", NULL, "SLIMBUS_1_RX Port Mixer"},
16025 {"INTERNAL_BT_SCO_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16026 {"INTERNAL_BT_SCO_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16027 {"INT_BT_SCO_RX", NULL, "INTERNAL_BT_SCO_RX Port Mixer"},
16028 {"SLIMBUS_3_RX Port Mixer", "INTERNAL_BT_SCO_RX", "INT_BT_SCO_RX"},
16029 {"SLIMBUS_3_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16030 {"SLIMBUS_3_RX Port Mixer", "AFE_PCM_RX", "PCM_RX"},
16031 {"SLIMBUS_3_RX Port Mixer", "AUX_PCM_RX", "AUX_PCM_RX"},
16032 {"SLIMBUS_3_RX Port Mixer", "SLIM_0_RX", "SLIMBUS_0_RX"},
16033 {"SLIMBUS_3_RX", NULL, "SLIMBUS_3_RX Port Mixer"},
16034
16035 {"SLIMBUS_6_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16036 {"SLIMBUS_6_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16037 {"SLIMBUS_6_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16038 {"SLIMBUS_6_RX Port Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16039 {"SLIMBUS_6_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16040 {"SLIMBUS_6_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16041 {"SLIMBUS_6_RX Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16042 {"SLIMBUS_6_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16043 {"SLIMBUS_6_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16044 {"SLIMBUS_6_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16045 {"SLIMBUS_6_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16046 {"SLIMBUS_6_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16047 {"SLIMBUS_6_RX", NULL, "SLIMBUS_6_RX Port Mixer"},
16048
16049 {"HDMI_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16050 {"HDMI", NULL, "HDMI_RX Port Mixer"},
16051
16052 {"DISPLAY_PORT_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16053 {"DISPLAY_PORT", NULL, "DISPLAY_PORT_RX Port Mixer"},
16054
16055 {"SEC_I2S_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16056 {"SEC_I2S_RX", NULL, "SEC_I2S_RX Port Mixer"},
16057
16058 {"MI2S_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16059 {"MI2S_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16060 {"MI2S_RX", NULL, "MI2S_RX Port Mixer"},
16061
16062 {"PRI_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16063 {"PRI_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16064 {"PRI_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16065 {"PRI_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016066 {"PRI_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016067 {"PRI_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16068 {"PRI_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16069 {"PRI_MI2S_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16070 {"PRI_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -080016071 {"PRI_MI2S_RX Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016072 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX Port Mixer"},
16073
16074 {"SEC_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16075 {"SEC_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16076 {"SEC_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16077 {"SEC_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016078 {"SEC_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016079 {"SEC_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16080 {"SEC_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16081 {"SEC_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
Karthikeyan Mani87fb1dd2017-12-13 13:38:46 -080016082 {"SEC_MI2S_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016083 {"SEC_MI2S_RX", NULL, "SEC_MI2S_RX Port Mixer"},
16084
16085 {"TERT_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16086 {"TERT_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16087 {"TERT_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16088 {"TERT_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016089 {"TERT_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016090 {"TERT_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16091 {"TERT_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16092 {"TERT_MI2S_RX", NULL, "TERT_MI2S_RX Port Mixer"},
16093
16094 {"QUAT_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16095 {"QUAT_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16096 {"QUAT_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16097 {"QUAT_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016098 {"QUAT_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016099 {"QUAT_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16100 {"QUAT_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16101 {"QUAT_MI2S_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16102 {"QUAT_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16103 {"QUAT_MI2S_RX", NULL, "QUAT_MI2S_RX Port Mixer"},
16104
Rohit Kumara5077932017-09-10 22:05:05 +053016105 {"QUIN_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16106 {"QUIN_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16107 {"QUIN_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16108 {"QUIN_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16109 {"QUIN_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
16110 {"QUIN_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16111 {"QUIN_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16112 {"QUIN_MI2S_RX", NULL, "QUIN_MI2S_RX Port Mixer"},
16113
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016114 /* Backend Enablement */
16115
16116 {"BE_OUT", NULL, "PRI_I2S_RX"},
16117 {"BE_OUT", NULL, "SEC_I2S_RX"},
16118 {"BE_OUT", NULL, "SLIMBUS_0_RX"},
16119 {"BE_OUT", NULL, "SLIMBUS_1_RX"},
16120 {"BE_OUT", NULL, "SLIMBUS_2_RX"},
16121 {"BE_OUT", NULL, "SLIMBUS_3_RX"},
16122 {"BE_OUT", NULL, "SLIMBUS_4_RX"},
16123 {"BE_OUT", NULL, "SLIMBUS_5_RX"},
16124 {"BE_OUT", NULL, "SLIMBUS_6_RX"},
16125 {"BE_OUT", NULL, "SLIMBUS_7_RX"},
16126 {"BE_OUT", NULL, "SLIMBUS_8_RX"},
16127 {"BE_OUT", NULL, "USB_AUDIO_RX"},
16128 {"BE_OUT", NULL, "HDMI"},
16129 {"BE_OUT", NULL, "DISPLAY_PORT"},
16130 {"BE_OUT", NULL, "SPDIF_RX"},
16131 {"BE_OUT", NULL, "MI2S_RX"},
16132 {"BE_OUT", NULL, "QUAT_MI2S_RX"},
16133 {"BE_OUT", NULL, "QUIN_MI2S_RX"},
16134 {"BE_OUT", NULL, "TERT_MI2S_RX"},
16135 {"BE_OUT", NULL, "SEC_MI2S_RX"},
16136 {"BE_OUT", NULL, "SEC_MI2S_RX_SD1"},
16137 {"BE_OUT", NULL, "PRI_MI2S_RX"},
16138 {"BE_OUT", NULL, "INT0_MI2S_RX"},
16139 {"BE_OUT", NULL, "INT4_MI2S_RX"},
Laxminath Kasam52697fe2017-11-29 15:44:14 +053016140 {"BE_OUT", NULL, "INT2_MI2S_RX"},
16141 {"BE_OUT", NULL, "INT3_MI2S_RX"},
16142 {"BE_OUT", NULL, "INT5_MI2S_RX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016143 {"BE_OUT", NULL, "INT_BT_SCO_RX"},
16144 {"BE_OUT", NULL, "INT_BT_A2DP_RX"},
16145 {"BE_OUT", NULL, "INT_FM_RX"},
16146 {"BE_OUT", NULL, "PCM_RX"},
16147 {"BE_OUT", NULL, "SLIMBUS_3_RX"},
16148 {"BE_OUT", NULL, "AUX_PCM_RX"},
16149 {"BE_OUT", NULL, "SEC_AUX_PCM_RX"},
16150 {"BE_OUT", NULL, "TERT_AUX_PCM_RX"},
16151 {"BE_OUT", NULL, "QUAT_AUX_PCM_RX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016152 {"BE_OUT", NULL, "QUIN_AUX_PCM_RX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016153 {"BE_OUT", NULL, "INT_BT_SCO_RX"},
16154 {"BE_OUT", NULL, "INT_FM_RX"},
16155 {"BE_OUT", NULL, "PCM_RX"},
16156 {"BE_OUT", NULL, "SLIMBUS_3_RX"},
16157 {"BE_OUT", NULL, "VOICE_PLAYBACK_TX"},
16158 {"BE_OUT", NULL, "VOICE2_PLAYBACK_TX"},
16159 {"BE_OUT", NULL, "PRI_TDM_RX_0"},
16160 {"BE_OUT", NULL, "PRI_TDM_RX_1"},
16161 {"BE_OUT", NULL, "PRI_TDM_RX_2"},
16162 {"BE_OUT", NULL, "PRI_TDM_RX_3"},
16163 {"BE_OUT", NULL, "SEC_TDM_RX_0"},
16164 {"BE_OUT", NULL, "SEC_TDM_RX_1"},
16165 {"BE_OUT", NULL, "SEC_TDM_RX_2"},
16166 {"BE_OUT", NULL, "SEC_TDM_RX_3"},
16167 {"BE_OUT", NULL, "TERT_TDM_RX_0"},
16168 {"BE_OUT", NULL, "TERT_TDM_RX_1"},
16169 {"BE_OUT", NULL, "TERT_TDM_RX_2"},
16170 {"BE_OUT", NULL, "TERT_TDM_RX_3"},
16171 {"BE_OUT", NULL, "TERT_TDM_RX_4"},
16172 {"BE_OUT", NULL, "QUAT_TDM_RX_0"},
16173 {"BE_OUT", NULL, "QUAT_TDM_RX_1"},
16174 {"BE_OUT", NULL, "QUAT_TDM_RX_2"},
16175 {"BE_OUT", NULL, "QUAT_TDM_RX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016176 {"BE_OUT", NULL, "QUIN_TDM_RX_0"},
16177 {"BE_OUT", NULL, "QUIN_TDM_RX_1"},
16178 {"BE_OUT", NULL, "QUIN_TDM_RX_2"},
16179 {"BE_OUT", NULL, "QUIN_TDM_RX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016180
16181 {"PRI_I2S_TX", NULL, "BE_IN"},
16182 {"MI2S_TX", NULL, "BE_IN"},
16183 {"QUAT_MI2S_TX", NULL, "BE_IN"},
16184 {"QUIN_MI2S_TX", NULL, "BE_IN"},
16185 {"PRI_MI2S_TX", NULL, "BE_IN"},
16186 {"TERT_MI2S_TX", NULL, "BE_IN"},
Laxminath Kasam52697fe2017-11-29 15:44:14 +053016187 {"INT0_MI2S_TX", NULL, "BE_IN"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016188 {"INT2_MI2S_TX", NULL, "BE_IN"},
16189 {"INT3_MI2S_TX", NULL, "BE_IN"},
Laxminath Kasam52697fe2017-11-29 15:44:14 +053016190 {"INT4_MI2S_TX", NULL, "BE_IN"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016191 {"INT5_MI2S_TX", NULL, "BE_IN"},
16192 {"SEC_MI2S_TX", NULL, "BE_IN"},
16193 {"SENARY_MI2S_TX", NULL, "BE_IN" },
16194 {"SLIMBUS_0_TX", NULL, "BE_IN" },
16195 {"SLIMBUS_1_TX", NULL, "BE_IN" },
16196 {"SLIMBUS_3_TX", NULL, "BE_IN" },
16197 {"SLIMBUS_4_TX", NULL, "BE_IN" },
16198 {"SLIMBUS_5_TX", NULL, "BE_IN" },
16199 {"SLIMBUS_6_TX", NULL, "BE_IN" },
16200 {"SLIMBUS_7_TX", NULL, "BE_IN" },
16201 {"SLIMBUS_8_TX", NULL, "BE_IN" },
16202 {"USB_AUDIO_TX", NULL, "BE_IN" },
16203 {"INT_BT_SCO_TX", NULL, "BE_IN"},
16204 {"INT_FM_TX", NULL, "BE_IN"},
16205 {"PCM_TX", NULL, "BE_IN"},
16206 {"BE_OUT", NULL, "SLIMBUS_3_RX"},
16207 {"BE_OUT", NULL, "STUB_RX"},
16208 {"STUB_TX", NULL, "BE_IN"},
16209 {"STUB_1_TX", NULL, "BE_IN"},
16210 {"BE_OUT", NULL, "AUX_PCM_RX"},
16211 {"AUX_PCM_TX", NULL, "BE_IN"},
16212 {"SEC_AUX_PCM_TX", NULL, "BE_IN"},
16213 {"TERT_AUX_PCM_TX", NULL, "BE_IN"},
16214 {"QUAT_AUX_PCM_TX", NULL, "BE_IN"},
Rohit Kumara5077932017-09-10 22:05:05 +053016215 {"QUIN_AUX_PCM_TX", NULL, "BE_IN"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016216 {"INCALL_RECORD_TX", NULL, "BE_IN"},
16217 {"INCALL_RECORD_RX", NULL, "BE_IN"},
16218 {"SLIM0_RX_VI_FB_LCH_MUX", "SLIM4_TX", "SLIMBUS_4_TX"},
16219 {"SLIM0_RX_VI_FB_RCH_MUX", "SLIM4_TX", "SLIMBUS_4_TX"},
16220 {"PRI_MI2S_RX_VI_FB_MUX", "SENARY_TX", "SENARY_TX"},
16221 {"INT4_MI2S_RX_VI_FB_MONO_CH_MUX", "INT5_MI2S_TX", "INT5_MI2S_TX"},
16222 {"INT4_MI2S_RX_VI_FB_STEREO_CH_MUX", "INT5_MI2S_TX", "INT5_MI2S_TX"},
16223 {"SLIMBUS_0_RX", NULL, "SLIM0_RX_VI_FB_LCH_MUX"},
16224 {"SLIMBUS_0_RX", NULL, "SLIM0_RX_VI_FB_RCH_MUX"},
16225 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX_VI_FB_MUX"},
16226 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX_VI_FB_MONO_CH_MUX"},
16227 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX_VI_FB_STEREO_CH_MUX"},
16228 {"PRI_TDM_TX_0", NULL, "BE_IN"},
16229 {"PRI_TDM_TX_1", NULL, "BE_IN"},
16230 {"PRI_TDM_TX_2", NULL, "BE_IN"},
16231 {"PRI_TDM_TX_3", NULL, "BE_IN"},
16232 {"SEC_TDM_TX_0", NULL, "BE_IN"},
16233 {"SEC_TDM_TX_1", NULL, "BE_IN"},
16234 {"SEC_TDM_TX_2", NULL, "BE_IN"},
16235 {"SEC_TDM_TX_3", NULL, "BE_IN"},
16236 {"TERT_TDM_TX_0", NULL, "BE_IN"},
16237 {"TERT_TDM_TX_1", NULL, "BE_IN"},
16238 {"TERT_TDM_TX_2", NULL, "BE_IN"},
16239 {"TERT_TDM_TX_3", NULL, "BE_IN"},
16240 {"QUAT_TDM_TX_0", NULL, "BE_IN"},
16241 {"QUAT_TDM_TX_1", NULL, "BE_IN"},
16242 {"QUAT_TDM_TX_2", NULL, "BE_IN"},
16243 {"QUAT_TDM_TX_3", NULL, "BE_IN"},
Rohit Kumara5077932017-09-10 22:05:05 +053016244 {"QUIN_TDM_TX_0", NULL, "BE_IN"},
16245 {"QUIN_TDM_TX_1", NULL, "BE_IN"},
16246 {"QUIN_TDM_TX_2", NULL, "BE_IN"},
16247 {"QUIN_TDM_TX_3", NULL, "BE_IN"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016248};
16249
16250static int msm_pcm_routing_hw_params(struct snd_pcm_substream *substream,
16251 struct snd_pcm_hw_params *params)
16252{
16253 struct snd_soc_pcm_runtime *rtd = substream->private_data;
16254 unsigned int be_id = rtd->dai_link->id;
16255
16256 if (be_id >= MSM_BACKEND_DAI_MAX) {
16257 pr_err("%s: unexpected BE id %d\n", __func__, be_id);
16258 return -EINVAL;
16259 }
16260
16261 mutex_lock(&routing_lock);
16262 msm_bedais[be_id].sample_rate = params_rate(params);
16263 msm_bedais[be_id].channel = params_channels(params);
16264 msm_bedais[be_id].format = params_format(params);
16265 pr_debug("%s: BE Sample Rate (%d) format (%d) BE id %d\n",
16266 __func__, msm_bedais[be_id].sample_rate,
16267 msm_bedais[be_id].format, be_id);
16268 mutex_unlock(&routing_lock);
16269 return 0;
16270}
16271
16272static int msm_pcm_routing_close(struct snd_pcm_substream *substream)
16273{
16274 struct snd_soc_pcm_runtime *rtd = substream->private_data;
16275 unsigned int be_id = rtd->dai_link->id;
16276 int i, session_type, path_type, topology;
16277 struct msm_pcm_routing_bdai_data *bedai;
16278 struct msm_pcm_routing_fdai_data *fdai;
16279
16280 pr_debug("%s: substream->pcm->id:%s\n",
16281 __func__, substream->pcm->id);
16282
16283 if (be_id >= MSM_BACKEND_DAI_MAX) {
16284 pr_err("%s: unexpected BE id %d\n", __func__, be_id);
16285 return -EINVAL;
16286 }
16287
16288 bedai = &msm_bedais[be_id];
16289 session_type = (substream->stream == SNDRV_PCM_STREAM_PLAYBACK ?
16290 0 : 1);
16291 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
16292 path_type = ADM_PATH_PLAYBACK;
16293 else
16294 path_type = ADM_PATH_LIVE_REC;
16295
16296 mutex_lock(&routing_lock);
16297 for_each_set_bit(i, &bedai->fe_sessions[0], MSM_FRONTEND_DAI_MAX) {
16298 if (!is_mm_lsm_fe_id(i))
16299 continue;
16300 fdai = &fe_dai_map[i][session_type];
16301 if (fdai->strm_id != INVALID_SESSION) {
16302 int idx;
16303 int port_id;
16304 unsigned long copp =
16305 session_copp_map[i][session_type][be_id];
16306 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++)
16307 if (test_bit(idx, &copp))
16308 break;
16309 fdai->be_srate = bedai->sample_rate;
16310 port_id = bedai->port_id;
16311 topology = adm_get_topology_for_port_copp_idx(port_id,
16312 idx);
16313 adm_close(bedai->port_id, fdai->perf_mode, idx);
16314 pr_debug("%s: copp:%ld,idx bit fe:%d, type:%d,be:%d topology=0x%x\n",
16315 __func__, copp, i, session_type, be_id,
16316 topology);
16317 clear_bit(idx,
16318 &session_copp_map[i][session_type][be_id]);
16319 if ((fdai->perf_mode == LEGACY_PCM_MODE) &&
16320 (bedai->passthr_mode[i] == LEGACY_PCM))
16321 msm_pcm_routing_deinit_pp(bedai->port_id,
16322 topology);
16323 }
16324 }
16325
16326 bedai->active = 0;
16327 bedai->sample_rate = 0;
16328 bedai->channel = 0;
16329 for (i = 0; i < MSM_FRONTEND_DAI_MAX; i++) {
16330 if (bedai->passthr_mode[i] != LISTEN)
16331 bedai->passthr_mode[i] = LEGACY_PCM;
16332 }
16333 mutex_unlock(&routing_lock);
16334
16335 return 0;
16336}
16337
16338static int msm_pcm_routing_prepare(struct snd_pcm_substream *substream)
16339{
16340 struct snd_soc_pcm_runtime *rtd = substream->private_data;
16341 unsigned int be_id = rtd->dai_link->id;
16342 int i, path_type, topology;
16343 int session_type = INVALID_SESSION;
16344 struct msm_pcm_routing_bdai_data *bedai;
16345 u32 channels, sample_rate;
16346 uint16_t bits_per_sample = 16, voc_path_type;
16347 struct msm_pcm_routing_fdai_data *fdai;
16348 u32 session_id;
16349 struct media_format_info voc_be_media_format;
16350 bool is_lsm;
16351
16352 pr_debug("%s: substream->pcm->id:%s\n",
16353 __func__, substream->pcm->id);
16354
16355 if (be_id >= MSM_BACKEND_DAI_MAX) {
16356 pr_err("%s: unexpected BE id %d\n", __func__, be_id);
16357 return -EINVAL;
16358 }
16359
16360 bedai = &msm_bedais[be_id];
16361
16362 mutex_lock(&routing_lock);
16363 if (bedai->active == 1)
16364 goto done; /* Ignore prepare if back-end already active */
16365
16366 /* AFE port is not active at this point. However, still
16367 * go ahead setting active flag under the notion that
16368 * QDSP6 is able to handle ADM starting before AFE port
16369 * is started.
16370 */
16371 bedai->active = 1;
16372
16373 for_each_set_bit(i, &bedai->fe_sessions[0], MSM_FRONTEND_DAI_MAX) {
16374 if (!(is_mm_lsm_fe_id(i) &&
16375 route_check_fe_id_adm_support(i)))
16376 continue;
16377
16378 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
16379 if (bedai->passthr_mode[i] != LEGACY_PCM)
16380 path_type = ADM_PATH_COMPRESSED_RX;
16381 else
16382 path_type = ADM_PATH_PLAYBACK;
16383 session_type = SESSION_TYPE_RX;
16384 } else {
16385 path_type = ADM_PATH_LIVE_REC;
16386 session_type = SESSION_TYPE_TX;
16387 }
16388
16389 is_lsm = (i >= MSM_FRONTEND_DAI_LSM1) &&
16390 (i <= MSM_FRONTEND_DAI_LSM8);
16391 fdai = &fe_dai_map[i][session_type];
16392 if (fdai->strm_id != INVALID_SESSION) {
16393 int app_type, app_type_idx, copp_idx, acdb_dev_id;
16394
16395 if (session_type == SESSION_TYPE_TX &&
16396 fdai->be_srate &&
16397 (fdai->be_srate != bedai->sample_rate)) {
16398 pr_debug("%s: flush strm %d diff BE rates\n",
16399 __func__,
16400 fdai->strm_id);
16401
16402 if (fdai->event_info.event_func)
16403 fdai->event_info.event_func(
16404 MSM_PCM_RT_EVT_BUF_RECFG,
16405 fdai->event_info.priv_data);
16406 fdai->be_srate = 0; /* might not need it */
16407 }
16408 bits_per_sample = msm_routing_get_bit_width(
16409 bedai->format);
16410
16411 app_type =
16412 fe_dai_app_type_cfg[i][session_type][be_id].app_type;
16413 if (app_type && is_lsm) {
16414 app_type_idx =
16415 msm_pcm_routing_get_lsm_app_type_idx(app_type);
16416 sample_rate =
16417 fe_dai_app_type_cfg[i][session_type][be_id]
16418 .sample_rate;
16419 bits_per_sample =
16420 lsm_app_type_cfg[app_type_idx].bit_width;
16421 } else if (app_type) {
16422 app_type_idx =
16423 msm_pcm_routing_get_app_type_idx(app_type);
16424 sample_rate =
16425 fe_dai_app_type_cfg[i][session_type]
16426 [be_id].sample_rate;
16427 bits_per_sample =
16428 app_type_cfg[app_type_idx].bit_width;
16429 } else
16430 sample_rate = bedai->sample_rate;
16431 /*
16432 * check if ADM needs to be configured with different
16433 * channel mapping than backend
16434 */
16435 if (!bedai->adm_override_ch)
16436 channels = bedai->channel;
16437 else
16438 channels = bedai->adm_override_ch;
16439 acdb_dev_id =
16440 fe_dai_app_type_cfg[i][session_type][be_id].acdb_dev_id;
16441 topology = msm_routing_get_adm_topology(i, session_type,
16442 be_id);
16443 copp_idx = adm_open(bedai->port_id, path_type,
16444 sample_rate, channels, topology,
16445 fdai->perf_mode, bits_per_sample,
16446 app_type, acdb_dev_id);
16447 if ((copp_idx < 0) ||
16448 (copp_idx >= MAX_COPPS_PER_PORT)) {
16449 pr_err("%s: adm open failed\n", __func__);
16450 mutex_unlock(&routing_lock);
16451 return -EINVAL;
16452 }
16453 pr_debug("%s: setting idx bit of fe:%d, type: %d, be:%d\n",
16454 __func__, i, session_type, be_id);
16455 set_bit(copp_idx,
16456 &session_copp_map[i][session_type][be_id]);
16457
16458 if (msm_is_resample_needed(
16459 sample_rate,
16460 bedai->sample_rate))
16461 adm_copp_mfc_cfg(
16462 bedai->port_id, copp_idx,
16463 bedai->sample_rate);
16464
16465 msm_pcm_routing_build_matrix(i, session_type, path_type,
16466 fdai->perf_mode,
16467 bedai->passthr_mode[i]);
16468 if ((fdai->perf_mode == LEGACY_PCM_MODE) &&
16469 (bedai->passthr_mode[i] == LEGACY_PCM))
16470 msm_pcm_routing_cfg_pp(bedai->port_id, copp_idx,
16471 topology, channels);
16472 }
16473 }
16474
16475 for_each_set_bit(i, &bedai->fe_sessions[0], MSM_FRONTEND_DAI_MAX) {
16476 session_id = msm_pcm_routing_get_voc_sessionid(i);
16477 if (session_id) {
16478 pr_debug("%s voice session_id: 0x%x\n", __func__,
16479 session_id);
16480
16481 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
16482 voc_path_type = RX_PATH;
16483 else
16484 voc_path_type = TX_PATH;
16485
16486 voc_set_route_flag(session_id, voc_path_type, 1);
16487
16488 memset(&voc_be_media_format, 0,
16489 sizeof(struct media_format_info));
16490
16491 voc_be_media_format.port_id = bedai->port_id;
16492 voc_be_media_format.num_channels = bedai->channel;
16493 voc_be_media_format.sample_rate = bedai->sample_rate;
16494 voc_be_media_format.bits_per_sample = bedai->format;
16495 /* Defaulting this to 1 for voice call usecases */
16496 voc_be_media_format.channel_mapping[0] = 1;
16497
16498 voc_set_device_config(session_id, voc_path_type,
16499 &voc_be_media_format);
16500
16501 if (voc_get_route_flag(session_id, RX_PATH) &&
16502 voc_get_route_flag(session_id, TX_PATH))
16503 voc_enable_device(session_id);
16504 }
16505 }
16506
16507 /* Check if backend is an external ec ref port and set as needed */
16508 if (unlikely(bedai->port_id == voc_get_ext_ec_ref_port_id())) {
16509
16510 memset(&voc_be_media_format, 0,
16511 sizeof(struct media_format_info));
16512
16513 /* Get format info for ec ref port from msm_bedais[] */
16514 voc_be_media_format.port_id = bedai->port_id;
16515 voc_be_media_format.num_channels = bedai->channel;
16516 voc_be_media_format.bits_per_sample = bedai->format;
16517 voc_be_media_format.sample_rate = bedai->sample_rate;
16518 /* Defaulting this to 1 for voice call usecases */
16519 voc_be_media_format.channel_mapping[0] = 1;
16520 voc_set_ext_ec_ref_media_fmt_info(&voc_be_media_format);
16521 pr_debug("%s: EC Ref media format info set to port_id=%d, num_channels=%d, bits_per_sample=%d, sample_rate=%d\n",
16522 __func__, voc_be_media_format.port_id,
16523 voc_be_media_format.num_channels,
16524 voc_be_media_format.bits_per_sample,
16525 voc_be_media_format.sample_rate);
16526 }
16527
16528done:
16529 mutex_unlock(&routing_lock);
16530
16531 return 0;
16532}
16533
16534static int msm_routing_send_device_pp_params(int port_id, int copp_idx,
16535 int fe_id)
16536{
16537 int index, topo_id, be_idx;
16538 unsigned long pp_config = 0;
16539 bool mute_on;
16540 int latency;
16541 bool compr_passthr_mode = true;
16542
16543 pr_debug("%s: port_id %d, copp_idx %d\n", __func__, port_id, copp_idx);
16544
16545 if (port_id != HDMI_RX && port_id != DISPLAY_PORT_RX) {
16546 pr_err("%s: Device pp params on invalid port %d\n",
16547 __func__, port_id);
16548 return -EINVAL;
16549 }
16550
16551 for (be_idx = 0; be_idx < MSM_BACKEND_DAI_MAX; be_idx++) {
16552 if (port_id == msm_bedais[be_idx].port_id)
16553 break;
16554 }
16555
16556 if (be_idx >= MSM_BACKEND_DAI_MAX) {
16557 pr_debug("%s: Invalid be id %d\n", __func__, be_idx);
16558 return -EINVAL;
16559 }
16560
16561 for (index = 0; index < MSM_BACKEND_DAI_PP_PARAMS_REQ_MAX; index++) {
16562 if (msm_bedais_pp_params[index].port_id == port_id)
16563 break;
16564 }
16565 if (index >= MSM_BACKEND_DAI_PP_PARAMS_REQ_MAX) {
16566 pr_err("%s: Invalid backend pp params index %d\n",
16567 __func__, index);
16568 return -EINVAL;
16569 }
16570
16571 topo_id = adm_get_topology_for_port_copp_idx(port_id, copp_idx);
16572 if (topo_id != COMPRESSED_PASSTHROUGH_DEFAULT_TOPOLOGY) {
16573 pr_err("%s: Invalid passthrough topology 0x%x\n",
16574 __func__, topo_id);
16575 return -EINVAL;
16576 }
16577
16578 if ((msm_bedais[be_idx].passthr_mode[fe_id] == LEGACY_PCM) ||
16579 (msm_bedais[be_idx].passthr_mode[fe_id] == LISTEN))
16580 compr_passthr_mode = false;
16581
16582 pp_config = msm_bedais_pp_params[index].pp_params_config;
16583 if (test_bit(ADM_PP_PARAM_MUTE_BIT, &pp_config)) {
16584 pr_debug("%s: ADM_PP_PARAM_MUTE\n", __func__);
16585 clear_bit(ADM_PP_PARAM_MUTE_BIT, &pp_config);
16586 mute_on = msm_bedais_pp_params[index].mute_on;
16587 if ((msm_bedais[be_idx].active) && compr_passthr_mode)
16588 adm_send_compressed_device_mute(port_id,
16589 copp_idx,
16590 mute_on);
16591 }
16592 if (test_bit(ADM_PP_PARAM_LATENCY_BIT, &pp_config)) {
16593 pr_debug("%s: ADM_PP_PARAM_LATENCY\n", __func__);
16594 clear_bit(ADM_PP_PARAM_LATENCY_BIT,
16595 &pp_config);
16596 latency = msm_bedais_pp_params[index].latency;
16597 if ((msm_bedais[be_idx].active) && compr_passthr_mode)
16598 adm_send_compressed_device_latency(port_id,
16599 copp_idx,
16600 latency);
16601 }
16602 return 0;
16603}
16604
16605static int msm_routing_put_device_pp_params_mixer(struct snd_kcontrol *kcontrol,
16606 struct snd_ctl_elem_value *ucontrol)
16607{
16608 int pp_id = ucontrol->value.integer.value[0];
16609 int port_id = 0;
16610 int index, be_idx, i, topo_id, idx;
16611 bool mute;
16612 int latency;
16613 bool compr_passthr_mode = true;
16614
16615 pr_debug("%s: pp_id: 0x%x\n", __func__, pp_id);
16616
16617 for (be_idx = 0; be_idx < MSM_BACKEND_DAI_MAX; be_idx++) {
16618 port_id = msm_bedais[be_idx].port_id;
16619 if (port_id == HDMI_RX || port_id == DISPLAY_PORT_RX)
16620 break;
16621 }
16622
16623 if (be_idx >= MSM_BACKEND_DAI_MAX) {
16624 pr_debug("%s: Invalid be id %d\n", __func__, be_idx);
16625 return -EINVAL;
16626 }
16627
16628 for (index = 0; index < MSM_BACKEND_DAI_PP_PARAMS_REQ_MAX; index++) {
16629 if (msm_bedais_pp_params[index].port_id == port_id)
16630 break;
16631 }
16632 if (index >= MSM_BACKEND_DAI_PP_PARAMS_REQ_MAX) {
16633 pr_err("%s: Invalid pp params backend index %d\n",
16634 __func__, index);
16635 return -EINVAL;
16636 }
16637
16638 for_each_set_bit(i, &msm_bedais[be_idx].fe_sessions[0],
16639 MSM_FRONTEND_DAI_MM_SIZE) {
16640 if ((msm_bedais[be_idx].passthr_mode[i] == LEGACY_PCM) ||
16641 (msm_bedais[be_idx].passthr_mode[i] == LISTEN))
16642 compr_passthr_mode = false;
16643
16644 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++) {
16645 unsigned long copp =
16646 session_copp_map[i]
16647 [SESSION_TYPE_RX][be_idx];
16648 if (!test_bit(idx, &copp))
16649 continue;
16650 topo_id = adm_get_topology_for_port_copp_idx(port_id,
16651 idx);
16652 if (topo_id != COMPRESSED_PASSTHROUGH_DEFAULT_TOPOLOGY)
16653 continue;
16654 pr_debug("%s: port: 0x%x, copp %ld, be active: %d, passt: %d\n",
16655 __func__, port_id, copp, msm_bedais[be_idx].active,
16656 msm_bedais[be_idx].passthr_mode[i]);
16657 switch (pp_id) {
16658 case ADM_PP_PARAM_MUTE_ID:
16659 pr_debug("%s: ADM_PP_PARAM_MUTE\n", __func__);
16660 mute = ucontrol->value.integer.value[1] ? true : false;
16661 msm_bedais_pp_params[index].mute_on = mute;
16662 set_bit(ADM_PP_PARAM_MUTE_BIT,
16663 &msm_bedais_pp_params[index].pp_params_config);
16664 if ((msm_bedais[be_idx].active) && compr_passthr_mode)
16665 adm_send_compressed_device_mute(port_id,
16666 idx, mute);
16667 break;
16668 case ADM_PP_PARAM_LATENCY_ID:
16669 pr_debug("%s: ADM_PP_PARAM_LATENCY\n", __func__);
16670 msm_bedais_pp_params[index].latency =
16671 ucontrol->value.integer.value[1];
16672 set_bit(ADM_PP_PARAM_LATENCY_BIT,
16673 &msm_bedais_pp_params[index].pp_params_config);
16674 latency = msm_bedais_pp_params[index].latency =
16675 ucontrol->value.integer.value[1];
16676 if ((msm_bedais[be_idx].active) && compr_passthr_mode)
16677 adm_send_compressed_device_latency(port_id,
16678 idx, latency);
16679 break;
16680 default:
16681 pr_info("%s, device pp param %d not supported\n",
16682 __func__, pp_id);
16683 break;
16684 }
16685 }
16686 }
16687 return 0;
16688}
16689
16690static int msm_routing_get_device_pp_params_mixer(struct snd_kcontrol *kcontrol,
16691 struct snd_ctl_elem_value *ucontrol)
16692{
16693 pr_debug("%s:msm_routing_get_device_pp_params_mixer", __func__);
16694 return 0;
16695}
16696
16697static const struct snd_kcontrol_new device_pp_params_mixer_controls[] = {
16698 SOC_SINGLE_MULTI_EXT("Device PP Params", SND_SOC_NOPM, 0, 0xFFFFFFFF,
16699 0, 3, msm_routing_get_device_pp_params_mixer,
16700 msm_routing_put_device_pp_params_mixer),
16701};
16702
16703static int msm_aptx_dec_license_control_get(struct snd_kcontrol *kcontrol,
16704 struct snd_ctl_elem_value *ucontrol)
16705{
16706 ucontrol->value.integer.value[0] =
16707 core_get_license_status(ASM_MEDIA_FMT_APTX);
16708 pr_debug("%s: status %ld\n", __func__,
16709 ucontrol->value.integer.value[0]);
16710 return 0;
16711}
16712
16713static int msm_aptx_dec_license_control_put(struct snd_kcontrol *kcontrol,
16714 struct snd_ctl_elem_value *ucontrol)
16715{
16716 int32_t status = 0;
16717
16718 status = core_set_license(ucontrol->value.integer.value[0],
16719 APTX_CLASSIC_DEC_LICENSE_ID);
16720 pr_debug("%s: status %d\n", __func__, status);
16721 return status;
16722}
16723
16724static const struct snd_kcontrol_new aptx_dec_license_controls[] = {
16725 SOC_SINGLE_EXT("APTX Dec License", SND_SOC_NOPM, 0,
16726 0xFFFF, 0, msm_aptx_dec_license_control_get,
16727 msm_aptx_dec_license_control_put),
16728};
16729
16730static int msm_routing_be_dai_name_table_info(struct snd_kcontrol *kcontrol,
16731 struct snd_ctl_elem_info *uinfo)
16732{
16733 uinfo->type = SNDRV_CTL_ELEM_TYPE_BYTES;
16734 uinfo->count = sizeof(be_dai_name_table);
16735 return 0;
16736}
16737
16738static int msm_routing_be_dai_name_table_tlv_get(struct snd_kcontrol *kcontrol,
16739 unsigned int __user *bytes,
16740 unsigned int size)
16741{
16742 int i;
16743 int ret;
16744
16745 if (size < sizeof(be_dai_name_table)) {
16746 pr_err("%s: invalid size %d requested, returning\n",
16747 __func__, size);
16748 ret = -EINVAL;
16749 goto done;
16750 }
16751
16752 /*
16753 * Fill be_dai_name_table from msm_bedais table to reduce code changes
16754 * needed when adding new backends
16755 */
16756 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
16757 be_dai_name_table[i].be_id = i;
16758 strlcpy(be_dai_name_table[i].be_name,
16759 msm_bedais[i].name,
16760 LPASS_BE_NAME_MAX_LENGTH);
16761 }
16762
16763 ret = copy_to_user(bytes, &be_dai_name_table,
16764 sizeof(be_dai_name_table));
16765 if (ret) {
16766 pr_err("%s: failed to copy be_dai_name_table\n", __func__);
16767 ret = -EFAULT;
16768 }
16769
16770done:
16771 return ret;
16772}
16773
16774static const struct snd_kcontrol_new
16775 msm_routing_be_dai_name_table_mixer_controls[] = {
16776 {
16777 .access = SNDRV_CTL_ELEM_ACCESS_TLV_READ |
16778 SNDRV_CTL_ELEM_ACCESS_TLV_CALLBACK,
16779 .info = msm_routing_be_dai_name_table_info,
16780 .name = "Backend DAI Name Table",
16781 .tlv.c = snd_soc_bytes_tlv_callback,
16782 .private_value = (unsigned long) &(struct soc_bytes_ext) {
16783 .max = sizeof(be_dai_name_table),
16784 .get = msm_routing_be_dai_name_table_tlv_get,
16785 }
16786 },
16787};
16788
16789static int msm_routing_stereo_channel_reverse_control_get(
16790 struct snd_kcontrol *kcontrol,
16791 struct snd_ctl_elem_value *ucontrol)
16792{
16793 ucontrol->value.integer.value[0] = swap_ch;
16794 pr_debug("%s: Swap channel value: %ld\n", __func__,
16795 ucontrol->value.integer.value[0]);
16796 return 0;
16797}
16798
16799static int msm_routing_stereo_channel_reverse_control_put(
16800 struct snd_kcontrol *kcontrol,
16801 struct snd_ctl_elem_value *ucontrol)
16802{
16803 int i, idx, be_index, port_id;
16804 int ret = 0;
16805 unsigned long copp;
16806
16807 pr_debug("%s Swap channel value:%ld\n", __func__,
16808 ucontrol->value.integer.value[0]);
16809
16810 swap_ch = ucontrol->value.integer.value[0];
16811
16812 mutex_lock(&routing_lock);
16813 for (be_index = 0; be_index < MSM_BACKEND_DAI_MAX; be_index++) {
16814 port_id = msm_bedais[be_index].port_id;
16815 if (!msm_bedais[be_index].active)
16816 continue;
16817
16818 for_each_set_bit(i, &msm_bedais[be_index].fe_sessions[0],
16819 MSM_FRONTEND_DAI_MM_SIZE) {
16820 copp = session_copp_map[i][SESSION_TYPE_RX][be_index];
16821 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++) {
16822 if (!test_bit(idx, &copp))
16823 continue;
16824
16825 pr_debug("%s: swap channel control of portid:%d, coppid:%d\n",
16826 __func__, port_id, idx);
16827 ret = adm_swap_speaker_channels(
16828 port_id, idx,
16829 msm_bedais[be_index].sample_rate,
16830 swap_ch);
16831 if (ret) {
16832 pr_err("%s:Swap_channel failed, err=%d\n",
16833 __func__, ret);
16834 goto done;
16835 }
16836 }
16837 }
16838 }
16839done:
16840 mutex_unlock(&routing_lock);
16841 return ret;
16842}
16843
16844static const struct snd_kcontrol_new stereo_channel_reverse_control[] = {
16845 SOC_SINGLE_EXT("Swap channel", SND_SOC_NOPM, 0,
16846 1, 0, msm_routing_stereo_channel_reverse_control_get,
16847 msm_routing_stereo_channel_reverse_control_put),
16848};
16849
16850static const struct snd_pcm_ops msm_routing_pcm_ops = {
16851 .hw_params = msm_pcm_routing_hw_params,
16852 .close = msm_pcm_routing_close,
16853 .prepare = msm_pcm_routing_prepare,
16854};
16855
16856/* Not used but frame seems to require it */
16857static int msm_routing_probe(struct snd_soc_platform *platform)
16858{
16859 snd_soc_dapm_new_controls(&platform->component.dapm, msm_qdsp6_widgets,
16860 ARRAY_SIZE(msm_qdsp6_widgets));
16861 snd_soc_dapm_add_routes(&platform->component.dapm, intercon,
16862 ARRAY_SIZE(intercon));
16863
16864 snd_soc_dapm_new_widgets(platform->component.dapm.card);
16865
16866 snd_soc_add_platform_controls(platform, lsm_controls,
16867 ARRAY_SIZE(lsm_controls));
16868
16869 snd_soc_add_platform_controls(platform, aanc_slim_0_rx_mux,
16870 ARRAY_SIZE(aanc_slim_0_rx_mux));
16871
16872 snd_soc_add_platform_controls(platform, msm_voc_session_controls,
16873 ARRAY_SIZE(msm_voc_session_controls));
16874
16875 snd_soc_add_platform_controls(platform, app_type_cfg_controls,
16876 ARRAY_SIZE(app_type_cfg_controls));
16877
16878 snd_soc_add_platform_controls(platform, lsm_app_type_cfg_controls,
16879 ARRAY_SIZE(lsm_app_type_cfg_controls));
16880
Vikram Pandurangaee9c03a2017-09-07 15:06:17 -070016881 snd_soc_add_platform_controls(platform, module_cfg_controls,
16882 ARRAY_SIZE(module_cfg_controls));
16883
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016884 snd_soc_add_platform_controls(platform,
16885 stereo_to_custom_stereo_controls,
16886 ARRAY_SIZE(stereo_to_custom_stereo_controls));
16887
16888 snd_soc_add_platform_controls(platform, ec_ref_param_controls,
16889 ARRAY_SIZE(ec_ref_param_controls));
16890
16891 snd_soc_add_platform_controls(platform, channel_mixer_controls,
16892 ARRAY_SIZE(channel_mixer_controls));
16893
16894 msm_qti_pp_add_controls(platform);
16895
16896 msm_dts_srs_tm_add_controls(platform);
16897
16898 msm_dolby_dap_add_controls(platform);
16899
16900 snd_soc_add_platform_controls(platform,
16901 use_ds1_or_ds2_controls,
16902 ARRAY_SIZE(use_ds1_or_ds2_controls));
16903
16904 snd_soc_add_platform_controls(platform,
16905 device_pp_params_mixer_controls,
16906 ARRAY_SIZE(device_pp_params_mixer_controls));
16907
16908 snd_soc_add_platform_controls(platform,
16909 msm_routing_be_dai_name_table_mixer_controls,
16910 ARRAY_SIZE(msm_routing_be_dai_name_table_mixer_controls));
16911
16912 snd_soc_add_platform_controls(platform, msm_source_tracking_controls,
16913 ARRAY_SIZE(msm_source_tracking_controls));
16914 snd_soc_add_platform_controls(platform, adm_channel_config_controls,
16915 ARRAY_SIZE(adm_channel_config_controls));
16916
16917 snd_soc_add_platform_controls(platform, aptx_dec_license_controls,
16918 ARRAY_SIZE(aptx_dec_license_controls));
16919 snd_soc_add_platform_controls(platform, stereo_channel_reverse_control,
16920 ARRAY_SIZE(stereo_channel_reverse_control));
16921 return 0;
16922}
16923
16924int msm_routing_pcm_new(struct snd_soc_pcm_runtime *runtime)
16925{
16926 return msm_pcm_routing_hwdep_new(runtime, msm_bedais);
16927}
16928
16929void msm_routing_pcm_free(struct snd_pcm *pcm)
16930{
16931 msm_pcm_routing_hwdep_free(pcm);
16932}
16933
16934static struct snd_soc_platform_driver msm_soc_routing_platform = {
16935 .ops = &msm_routing_pcm_ops,
16936 .probe = msm_routing_probe,
16937 .pcm_new = msm_routing_pcm_new,
16938 .pcm_free = msm_routing_pcm_free,
16939};
16940
16941static int msm_routing_pcm_probe(struct platform_device *pdev)
16942{
16943
16944 dev_dbg(&pdev->dev, "dev name %s\n", dev_name(&pdev->dev));
16945 return snd_soc_register_platform(&pdev->dev,
16946 &msm_soc_routing_platform);
16947}
16948
16949static int msm_routing_pcm_remove(struct platform_device *pdev)
16950{
16951 snd_soc_unregister_platform(&pdev->dev);
16952 return 0;
16953}
16954
16955static const struct of_device_id msm_pcm_routing_dt_match[] = {
16956 {.compatible = "qcom,msm-pcm-routing"},
16957 {}
16958};
16959MODULE_DEVICE_TABLE(of, msm_pcm_routing_dt_match);
16960
16961static struct platform_driver msm_routing_pcm_driver = {
16962 .driver = {
16963 .name = "msm-pcm-routing",
16964 .owner = THIS_MODULE,
16965 .of_match_table = msm_pcm_routing_dt_match,
16966 },
16967 .probe = msm_routing_pcm_probe,
16968 .remove = msm_routing_pcm_remove,
16969};
16970
16971int msm_routing_check_backend_enabled(int fedai_id)
16972{
16973 int i;
16974
16975 if (fedai_id > MSM_FRONTEND_DAI_MM_MAX_ID) {
16976 /* bad ID assigned in machine driver */
16977 pr_err("%s: bad MM ID\n", __func__);
16978 return 0;
16979 }
16980 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
16981 if (test_bit(fedai_id, &msm_bedais[i].fe_sessions[0]))
16982 return msm_bedais[i].active;
16983 }
16984 return 0;
16985}
16986
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053016987static int get_cal_type_index(int32_t cal_type)
16988{
16989 int ret = -EINVAL;
16990
16991 switch (cal_type) {
16992 case ADM_TOPOLOGY_CAL_TYPE:
16993 ret = ADM_TOPOLOGY_CAL_TYPE_IDX;
16994 break;
16995 case ADM_LSM_TOPOLOGY_CAL_TYPE:
16996 ret = ADM_LSM_TOPOLOGY_CAL_TYPE_IDX;
16997 break;
16998 default:
16999 pr_err("%s: Invalid cal type %d\n", __func__, cal_type);
17000 }
17001 return ret;
17002}
17003
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017004static int msm_routing_set_cal(int32_t cal_type,
17005 size_t data_size, void *data)
17006{
17007 int ret = 0;
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053017008 int cal_index;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017009 pr_debug("%s\n", __func__);
17010
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053017011 cal_index = get_cal_type_index(cal_type);
17012 if (cal_index < 0) {
17013 pr_err("%s: Could not get cal index %d\n",
17014 __func__, cal_index);
17015 ret = -EINVAL;
17016 goto done;
17017 }
17018
17019 ret = cal_utils_set_cal(data_size, data, cal_data[cal_index], 0, NULL);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017020 if (ret < 0) {
17021 pr_err("%s: cal_utils_set_cal failed, ret = %d, cal type = %d!\n",
17022 __func__, ret, cal_type);
17023 ret = -EINVAL;
17024 goto done;
17025 }
17026done:
17027 return ret;
17028}
17029
17030static void msm_routing_delete_cal_data(void)
17031{
17032 pr_debug("%s\n", __func__);
17033
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053017034 cal_utils_destroy_cal_types(MAX_ROUTING_CAL_TYPES, &cal_data[0]);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017035}
17036
17037static int msm_routing_init_cal_data(void)
17038{
17039 int ret = 0;
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053017040 struct cal_type_info cal_type_info[] = {
17041 {{ADM_TOPOLOGY_CAL_TYPE,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017042 {NULL, NULL, NULL,
17043 msm_routing_set_cal, NULL, NULL} },
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053017044 {NULL, NULL, cal_utils_match_buf_num} },
17045
17046 {{ADM_LSM_TOPOLOGY_CAL_TYPE,
17047 {NULL, NULL, NULL,
17048 msm_routing_set_cal, NULL, NULL} },
17049 {NULL, NULL, cal_utils_match_buf_num} },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017050 };
17051 pr_debug("%s\n", __func__);
17052
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053017053 ret = cal_utils_create_cal_types(MAX_ROUTING_CAL_TYPES, &cal_data[0],
17054 &cal_type_info[0]);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017055 if (ret < 0) {
17056 pr_err("%s: could not create cal type!\n",
17057 __func__);
17058 ret = -EINVAL;
17059 goto err;
17060 }
17061
17062 return ret;
17063err:
17064 msm_routing_delete_cal_data();
17065 return ret;
17066}
17067
Laxminath Kasam8b1366a2017-10-05 01:44:16 +053017068int __init msm_soc_routing_platform_init(void)
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017069{
17070 mutex_init(&routing_lock);
17071 if (msm_routing_init_cal_data())
17072 pr_err("%s: could not init cal data!\n", __func__);
17073
17074 afe_set_routing_callback(
17075 (routing_cb)msm_pcm_get_dev_acdb_id_by_port_id);
17076
17077 memset(&be_dai_name_table, 0, sizeof(be_dai_name_table));
17078 memset(&last_be_id_configured, 0, sizeof(last_be_id_configured));
17079
17080 return platform_driver_register(&msm_routing_pcm_driver);
17081}
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017082
Asish Bhattacharya5faacb32017-12-04 17:23:15 +053017083void msm_soc_routing_platform_exit(void)
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017084{
17085 msm_routing_delete_cal_data();
17086 memset(&be_dai_name_table, 0, sizeof(be_dai_name_table));
17087 mutex_destroy(&routing_lock);
17088 platform_driver_unregister(&msm_routing_pcm_driver);
17089}
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017090
17091MODULE_DESCRIPTION("MSM routing platform driver");
17092MODULE_LICENSE("GPL v2");