blob: 29dfade94f0f04d4ce92c2ace71126c8b9216353 [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>
33#include <asoc/msm-dts-srs-tm-config.h>
34#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
60static struct cal_type_data *cal_data;
61
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;
70static int fm_pcmrx_switch_enable;
71static int usb_switch_enable;
72static int lsm_port_index;
73static int slim0_rx_aanc_fb_port;
74static int msm_route_ec_ref_rx;
75static int msm_ec_ref_ch = 4;
76static int msm_ec_ref_bit_format = SNDRV_PCM_FORMAT_S16_LE;
77static int msm_ec_ref_sampling_rate = 48000;
78static uint32_t voc_session_id = ALL_SESSION_VSID;
79static int msm_route_ext_ec_ref;
80static bool is_custom_stereo_on;
81static bool is_ds2_on;
82static bool swap_ch;
83
84#define WEIGHT_0_DB 0x4000
85/* all the FEs which can support channel mixer */
86static struct msm_pcm_channel_mixer channel_mixer[MSM_FRONTEND_DAI_MM_SIZE];
87/* input BE for each FE */
88static int channel_input[MSM_FRONTEND_DAI_MM_SIZE][ADM_MAX_CHANNELS];
89
90enum {
91 MADNONE,
92 MADAUDIO,
93 MADBEACON,
94 MADULTRASOUND,
95 MADSWAUDIO,
96};
97
98#define ADM_LSM_PORT_INDEX 9
99
100#define SLIMBUS_0_TX_TEXT "SLIMBUS_0_TX"
101#define SLIMBUS_1_TX_TEXT "SLIMBUS_1_TX"
102#define SLIMBUS_2_TX_TEXT "SLIMBUS_2_TX"
103#define SLIMBUS_3_TX_TEXT "SLIMBUS_3_TX"
104#define SLIMBUS_4_TX_TEXT "SLIMBUS_4_TX"
105#define SLIMBUS_5_TX_TEXT "SLIMBUS_5_TX"
106#define TERT_MI2S_TX_TEXT "TERT_MI2S_TX"
107#define QUAT_MI2S_TX_TEXT "QUAT_MI2S_TX"
108#define ADM_LSM_TX_TEXT "ADM_LSM_TX"
109#define INT3_MI2S_TX_TEXT "INT3_MI2S_TX"
110
111#define LSM_FUNCTION_TEXT "LSM Function"
112static const char * const lsm_port_text[] = {
113 "None",
114 SLIMBUS_0_TX_TEXT, SLIMBUS_1_TX_TEXT, SLIMBUS_2_TX_TEXT,
115 SLIMBUS_3_TX_TEXT, SLIMBUS_4_TX_TEXT, SLIMBUS_5_TX_TEXT,
116 TERT_MI2S_TX_TEXT, QUAT_MI2S_TX_TEXT, ADM_LSM_TX_TEXT,
117 INT3_MI2S_TX_TEXT
118};
119
120struct msm_pcm_route_bdai_pp_params {
121 u16 port_id; /* AFE port ID */
122 unsigned long pp_params_config;
123 bool mute_on;
124 int latency;
125};
126
127static struct msm_pcm_route_bdai_pp_params
128 msm_bedais_pp_params[MSM_BACKEND_DAI_PP_PARAMS_REQ_MAX] = {
129 {HDMI_RX, 0, 0, 0},
130 {DISPLAY_PORT_RX, 0, 0, 0},
131};
132
133/*
134 * The be_dai_name_table is passed to HAL so that it can specify the
135 * BE ID for the BE it wants to enable based on the name. Thus there
136 * is a matching table and structure in HAL that need to be updated
137 * if any changes to these are made.
138 */
139struct msm_pcm_route_bdai_name {
140 unsigned int be_id;
141 char be_name[LPASS_BE_NAME_MAX_LENGTH];
142};
143static struct msm_pcm_route_bdai_name be_dai_name_table[MSM_BACKEND_DAI_MAX];
144
145static int msm_routing_send_device_pp_params(int port_id, int copp_idx,
146 int fe_id);
147
148static int msm_routing_get_bit_width(unsigned int format)
149{
150 int bit_width;
151
152 switch (format) {
153 case SNDRV_PCM_FORMAT_S32_LE:
154 bit_width = 32;
155 break;
156 case SNDRV_PCM_FORMAT_S24_LE:
157 case SNDRV_PCM_FORMAT_S24_3LE:
158 bit_width = 24;
159 break;
160 case SNDRV_PCM_FORMAT_S16_LE:
161 default:
162 bit_width = 16;
163 }
164 return bit_width;
165}
166
167static bool msm_is_resample_needed(int input_sr, int output_sr)
168{
169 bool rc = false;
170
171 if (input_sr != output_sr)
172 rc = true;
173
174 pr_debug("perform resampling (%s) for copp rate (%d)afe rate (%d)",
175 (rc ? "oh yes" : "not really"),
176 input_sr, output_sr);
177
178 return rc;
179}
180
181static void msm_pcm_routing_cfg_pp(int port_id, int copp_idx, int topology,
182 int channels)
183{
184 int rc = 0;
185
186 switch (topology) {
187 case SRS_TRUMEDIA_TOPOLOGY_ID:
188 pr_debug("%s: SRS_TRUMEDIA_TOPOLOGY_ID\n", __func__);
189 msm_dts_srs_tm_init(port_id, copp_idx);
190 break;
191 case DS2_ADM_COPP_TOPOLOGY_ID:
192 pr_debug("%s: DS2_ADM_COPP_TOPOLOGY %d\n",
193 __func__, DS2_ADM_COPP_TOPOLOGY_ID);
194 rc = msm_ds2_dap_init(port_id, copp_idx, channels,
195 is_custom_stereo_on);
196 if (rc < 0)
197 pr_err("%s: DS2 topo_id 0x%x, port %d, CS %d rc %d\n",
198 __func__, topology, port_id,
199 is_custom_stereo_on, rc);
200 break;
201 case DOLBY_ADM_COPP_TOPOLOGY_ID:
202 if (is_ds2_on) {
203 pr_debug("%s: DS2_ADM_COPP_TOPOLOGY\n", __func__);
204 rc = msm_ds2_dap_init(port_id, copp_idx, channels,
205 is_custom_stereo_on);
206 if (rc < 0)
207 pr_err("%s:DS2 topo_id 0x%x, port %d, rc %d\n",
208 __func__, topology, port_id, rc);
209 } else {
210 pr_debug("%s: DOLBY_ADM_COPP_TOPOLOGY_ID\n", __func__);
211 rc = msm_dolby_dap_init(port_id, copp_idx, channels,
212 is_custom_stereo_on);
213 if (rc < 0)
214 pr_err("%s: DS1 topo_id 0x%x, port %d, rc %d\n",
215 __func__, topology, port_id, rc);
216 }
217 break;
218 case ADM_CMD_COPP_OPEN_TOPOLOGY_ID_AUDIOSPHERE:
219 pr_debug("%s: TOPOLOGY_ID_AUDIOSPHERE\n", __func__);
220 rc = msm_qti_pp_asphere_init(port_id, copp_idx);
221 if (rc < 0)
222 pr_err("%s: topo_id 0x%x, port %d, copp %d, rc %d\n",
223 __func__, topology, port_id, copp_idx, rc);
224 break;
225 default:
226 /* custom topology specific feature param handlers */
227 break;
228 }
229}
230
231static void msm_pcm_routing_deinit_pp(int port_id, int topology)
232{
233 switch (topology) {
234 case SRS_TRUMEDIA_TOPOLOGY_ID:
235 pr_debug("%s: SRS_TRUMEDIA_TOPOLOGY_ID\n", __func__);
236 msm_dts_srs_tm_deinit(port_id);
237 break;
238 case DS2_ADM_COPP_TOPOLOGY_ID:
239 pr_debug("%s: DS2_ADM_COPP_TOPOLOGY_ID %d\n",
240 __func__, DS2_ADM_COPP_TOPOLOGY_ID);
241 msm_ds2_dap_deinit(port_id);
242 break;
243 case DOLBY_ADM_COPP_TOPOLOGY_ID:
244 if (is_ds2_on) {
245 pr_debug("%s: DS2_ADM_COPP_TOPOLOGY_ID\n", __func__);
246 msm_ds2_dap_deinit(port_id);
247 } else {
248 pr_debug("%s: DOLBY_ADM_COPP_TOPOLOGY_ID\n", __func__);
249 msm_dolby_dap_deinit(port_id);
250 }
251 break;
252 case ADM_CMD_COPP_OPEN_TOPOLOGY_ID_AUDIOSPHERE:
253 pr_debug("%s: TOPOLOGY_ID_AUDIOSPHERE\n", __func__);
254 msm_qti_pp_asphere_deinit(port_id);
255 break;
256 default:
257 /* custom topology specific feature deinit handlers */
258 break;
259 }
260}
261
262static void msm_pcm_routng_cfg_matrix_map_pp(struct route_payload payload,
263 int path_type, int perf_mode)
264{
265 int itr = 0, rc = 0;
266
267 if ((path_type == ADM_PATH_PLAYBACK) &&
268 (perf_mode == LEGACY_PCM_MODE) &&
269 is_custom_stereo_on) {
270 for (itr = 0; itr < payload.num_copps; itr++) {
271 if ((payload.port_id[itr] != SLIMBUS_0_RX) &&
272 (payload.port_id[itr] != RT_PROXY_PORT_001_RX)) {
273 continue;
274 }
275
276 rc = msm_qti_pp_send_stereo_to_custom_stereo_cmd(
277 payload.port_id[itr],
278 payload.copp_idx[itr],
279 payload.session_id,
280 Q14_GAIN_ZERO_POINT_FIVE,
281 Q14_GAIN_ZERO_POINT_FIVE,
282 Q14_GAIN_ZERO_POINT_FIVE,
283 Q14_GAIN_ZERO_POINT_FIVE);
284 if (rc < 0)
285 pr_err("%s: err setting custom stereo\n",
286 __func__);
287 }
288 }
289}
290
291#define SLIMBUS_EXTPROC_RX AFE_PORT_INVALID
292struct msm_pcm_routing_bdai_data msm_bedais[MSM_BACKEND_DAI_MAX] = {
293 { PRIMARY_I2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_PRI_I2S_RX},
294 { PRIMARY_I2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_PRI_I2S_TX},
295 { SLIMBUS_0_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_0_RX},
296 { SLIMBUS_0_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_0_TX},
297 { HDMI_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_HDMI},
298 { INT_BT_SCO_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_INT_BT_SCO_RX},
299 { INT_BT_SCO_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_INT_BT_SCO_TX},
300 { INT_FM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_INT_FM_RX},
301 { INT_FM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_INT_FM_TX},
302 { RT_PROXY_PORT_001_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
303 LPASS_BE_AFE_PCM_RX},
304 { RT_PROXY_PORT_001_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
305 LPASS_BE_AFE_PCM_TX},
306 { AFE_PORT_ID_PRIMARY_PCM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
307 LPASS_BE_AUXPCM_RX},
308 { AFE_PORT_ID_PRIMARY_PCM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
309 LPASS_BE_AUXPCM_TX},
310 { VOICE_PLAYBACK_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
311 LPASS_BE_VOICE_PLAYBACK_TX},
312 { VOICE2_PLAYBACK_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
313 LPASS_BE_VOICE2_PLAYBACK_TX},
314 { VOICE_RECORD_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
315 LPASS_BE_INCALL_RECORD_RX},
316 { VOICE_RECORD_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
317 LPASS_BE_INCALL_RECORD_TX},
318 { MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_MI2S_RX},
319 { MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_MI2S_TX},
320 { SECONDARY_I2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SEC_I2S_RX},
321 { SLIMBUS_1_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_1_RX},
322 { SLIMBUS_1_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_1_TX},
323 { SLIMBUS_2_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_2_RX},
324 { SLIMBUS_2_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_2_TX},
325 { SLIMBUS_3_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_3_RX},
326 { SLIMBUS_3_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_3_TX},
327 { SLIMBUS_4_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_4_RX},
328 { SLIMBUS_4_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_4_TX},
329 { SLIMBUS_5_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_5_RX},
330 { SLIMBUS_5_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_5_TX},
331 { SLIMBUS_6_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_6_RX},
332 { SLIMBUS_6_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_6_TX},
333 { SLIMBUS_7_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_7_RX},
334 { SLIMBUS_7_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_7_TX},
335 { SLIMBUS_8_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_8_RX},
336 { SLIMBUS_8_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_8_TX},
337 { SLIMBUS_EXTPROC_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_STUB_RX},
338 { SLIMBUS_EXTPROC_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_STUB_TX},
339 { SLIMBUS_EXTPROC_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_STUB_1_TX},
340 { AFE_PORT_ID_QUATERNARY_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
341 LPASS_BE_QUAT_MI2S_RX},
342 { AFE_PORT_ID_QUATERNARY_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
343 LPASS_BE_QUAT_MI2S_TX},
344 { AFE_PORT_ID_SECONDARY_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
345 LPASS_BE_SEC_MI2S_RX},
346 { AFE_PORT_ID_SECONDARY_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
347 LPASS_BE_SEC_MI2S_TX},
348 { AFE_PORT_ID_PRIMARY_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
349 LPASS_BE_PRI_MI2S_RX},
350 { AFE_PORT_ID_PRIMARY_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
351 LPASS_BE_PRI_MI2S_TX},
352 { AFE_PORT_ID_TERTIARY_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
353 LPASS_BE_TERT_MI2S_RX},
354 { AFE_PORT_ID_TERTIARY_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
355 LPASS_BE_TERT_MI2S_TX},
356 { AUDIO_PORT_ID_I2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
357 LPASS_BE_AUDIO_I2S_RX},
358 { AFE_PORT_ID_SECONDARY_PCM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
359 LPASS_BE_SEC_AUXPCM_RX},
360 { AFE_PORT_ID_SECONDARY_PCM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
361 LPASS_BE_SEC_AUXPCM_TX},
362 { AFE_PORT_ID_SPDIF_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
363 LPASS_BE_SPDIF_RX},
364 { AFE_PORT_ID_SECONDARY_MI2S_RX_SD1, 0, {0}, {0}, 0, 0, 0, 0, {0},
365 LPASS_BE_SEC_MI2S_RX_SD1},
366 { AFE_PORT_ID_QUINARY_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
367 LPASS_BE_QUIN_MI2S_RX},
368 { AFE_PORT_ID_QUINARY_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
369 LPASS_BE_QUIN_MI2S_TX},
370 { AFE_PORT_ID_SENARY_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
371 LPASS_BE_SENARY_MI2S_TX},
372 { AFE_PORT_ID_PRIMARY_TDM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
373 LPASS_BE_PRI_TDM_RX_0},
374 { AFE_PORT_ID_PRIMARY_TDM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
375 LPASS_BE_PRI_TDM_TX_0},
376 { AFE_PORT_ID_PRIMARY_TDM_RX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
377 LPASS_BE_PRI_TDM_RX_1},
378 { AFE_PORT_ID_PRIMARY_TDM_TX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
379 LPASS_BE_PRI_TDM_TX_1},
380 { AFE_PORT_ID_PRIMARY_TDM_RX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
381 LPASS_BE_PRI_TDM_RX_2},
382 { AFE_PORT_ID_PRIMARY_TDM_TX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
383 LPASS_BE_PRI_TDM_TX_2},
384 { AFE_PORT_ID_PRIMARY_TDM_RX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
385 LPASS_BE_PRI_TDM_RX_3},
386 { AFE_PORT_ID_PRIMARY_TDM_TX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
387 LPASS_BE_PRI_TDM_TX_3},
388 { AFE_PORT_ID_PRIMARY_TDM_RX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
389 LPASS_BE_PRI_TDM_RX_4},
390 { AFE_PORT_ID_PRIMARY_TDM_TX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
391 LPASS_BE_PRI_TDM_TX_4},
392 { AFE_PORT_ID_PRIMARY_TDM_RX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
393 LPASS_BE_PRI_TDM_RX_5},
394 { AFE_PORT_ID_PRIMARY_TDM_TX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
395 LPASS_BE_PRI_TDM_TX_5},
396 { AFE_PORT_ID_PRIMARY_TDM_RX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
397 LPASS_BE_PRI_TDM_RX_6},
398 { AFE_PORT_ID_PRIMARY_TDM_TX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
399 LPASS_BE_PRI_TDM_TX_6},
400 { AFE_PORT_ID_PRIMARY_TDM_RX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
401 LPASS_BE_PRI_TDM_RX_7},
402 { AFE_PORT_ID_PRIMARY_TDM_TX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
403 LPASS_BE_PRI_TDM_TX_7},
404 { AFE_PORT_ID_SECONDARY_TDM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
405 LPASS_BE_SEC_TDM_RX_0},
406 { AFE_PORT_ID_SECONDARY_TDM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
407 LPASS_BE_SEC_TDM_TX_0},
408 { AFE_PORT_ID_SECONDARY_TDM_RX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
409 LPASS_BE_SEC_TDM_RX_1},
410 { AFE_PORT_ID_SECONDARY_TDM_TX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
411 LPASS_BE_SEC_TDM_TX_1},
412 { AFE_PORT_ID_SECONDARY_TDM_RX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
413 LPASS_BE_SEC_TDM_RX_2},
414 { AFE_PORT_ID_SECONDARY_TDM_TX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
415 LPASS_BE_SEC_TDM_TX_2},
416 { AFE_PORT_ID_SECONDARY_TDM_RX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
417 LPASS_BE_SEC_TDM_RX_3},
418 { AFE_PORT_ID_SECONDARY_TDM_TX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
419 LPASS_BE_SEC_TDM_TX_3},
420 { AFE_PORT_ID_SECONDARY_TDM_RX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
421 LPASS_BE_SEC_TDM_RX_4},
422 { AFE_PORT_ID_SECONDARY_TDM_TX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
423 LPASS_BE_SEC_TDM_TX_4},
424 { AFE_PORT_ID_SECONDARY_TDM_RX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
425 LPASS_BE_SEC_TDM_RX_5},
426 { AFE_PORT_ID_SECONDARY_TDM_TX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
427 LPASS_BE_SEC_TDM_TX_5},
428 { AFE_PORT_ID_SECONDARY_TDM_RX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
429 LPASS_BE_SEC_TDM_RX_6},
430 { AFE_PORT_ID_SECONDARY_TDM_TX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
431 LPASS_BE_SEC_TDM_TX_6},
432 { AFE_PORT_ID_SECONDARY_TDM_RX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
433 LPASS_BE_SEC_TDM_RX_7},
434 { AFE_PORT_ID_SECONDARY_TDM_TX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
435 LPASS_BE_SEC_TDM_TX_7},
436 { AFE_PORT_ID_TERTIARY_TDM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
437 LPASS_BE_TERT_TDM_RX_0},
438 { AFE_PORT_ID_TERTIARY_TDM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
439 LPASS_BE_TERT_TDM_TX_0},
440 { AFE_PORT_ID_TERTIARY_TDM_RX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
441 LPASS_BE_TERT_TDM_RX_1},
442 { AFE_PORT_ID_TERTIARY_TDM_TX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
443 LPASS_BE_TERT_TDM_TX_1},
444 { AFE_PORT_ID_TERTIARY_TDM_RX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
445 LPASS_BE_TERT_TDM_RX_2},
446 { AFE_PORT_ID_TERTIARY_TDM_TX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
447 LPASS_BE_TERT_TDM_TX_2},
448 { AFE_PORT_ID_TERTIARY_TDM_RX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
449 LPASS_BE_TERT_TDM_RX_3},
450 { AFE_PORT_ID_TERTIARY_TDM_TX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
451 LPASS_BE_TERT_TDM_TX_3},
452 { AFE_PORT_ID_TERTIARY_TDM_RX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
453 LPASS_BE_TERT_TDM_RX_4},
454 { AFE_PORT_ID_TERTIARY_TDM_TX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
455 LPASS_BE_TERT_TDM_TX_4},
456 { AFE_PORT_ID_TERTIARY_TDM_RX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
457 LPASS_BE_TERT_TDM_RX_5},
458 { AFE_PORT_ID_TERTIARY_TDM_TX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
459 LPASS_BE_TERT_TDM_TX_5},
460 { AFE_PORT_ID_TERTIARY_TDM_RX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
461 LPASS_BE_TERT_TDM_RX_6},
462 { AFE_PORT_ID_TERTIARY_TDM_TX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
463 LPASS_BE_TERT_TDM_TX_6},
464 { AFE_PORT_ID_TERTIARY_TDM_RX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
465 LPASS_BE_TERT_TDM_RX_7},
466 { AFE_PORT_ID_TERTIARY_TDM_TX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
467 LPASS_BE_TERT_TDM_TX_7},
468 { AFE_PORT_ID_QUATERNARY_TDM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
469 LPASS_BE_QUAT_TDM_RX_0},
470 { AFE_PORT_ID_QUATERNARY_TDM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
471 LPASS_BE_QUAT_TDM_TX_0},
472 { AFE_PORT_ID_QUATERNARY_TDM_RX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
473 LPASS_BE_QUAT_TDM_RX_1},
474 { AFE_PORT_ID_QUATERNARY_TDM_TX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
475 LPASS_BE_QUAT_TDM_TX_1},
476 { AFE_PORT_ID_QUATERNARY_TDM_RX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
477 LPASS_BE_QUAT_TDM_RX_2},
478 { AFE_PORT_ID_QUATERNARY_TDM_TX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
479 LPASS_BE_QUAT_TDM_TX_2},
480 { AFE_PORT_ID_QUATERNARY_TDM_RX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
481 LPASS_BE_QUAT_TDM_RX_3},
482 { AFE_PORT_ID_QUATERNARY_TDM_TX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
483 LPASS_BE_QUAT_TDM_TX_3},
484 { AFE_PORT_ID_QUATERNARY_TDM_RX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
485 LPASS_BE_QUAT_TDM_RX_4},
486 { AFE_PORT_ID_QUATERNARY_TDM_TX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
487 LPASS_BE_QUAT_TDM_TX_4},
488 { AFE_PORT_ID_QUATERNARY_TDM_RX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
489 LPASS_BE_QUAT_TDM_RX_5},
490 { AFE_PORT_ID_QUATERNARY_TDM_TX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
491 LPASS_BE_QUAT_TDM_TX_5},
492 { AFE_PORT_ID_QUATERNARY_TDM_RX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
493 LPASS_BE_QUAT_TDM_RX_6},
494 { AFE_PORT_ID_QUATERNARY_TDM_TX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
495 LPASS_BE_QUAT_TDM_TX_6},
496 { AFE_PORT_ID_QUATERNARY_TDM_RX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
497 LPASS_BE_QUAT_TDM_RX_7},
498 { AFE_PORT_ID_QUATERNARY_TDM_TX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
499 LPASS_BE_QUAT_TDM_TX_7},
500 { INT_BT_A2DP_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
501 LPASS_BE_INT_BT_A2DP_RX},
502 { AFE_PORT_ID_USB_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
503 LPASS_BE_USB_AUDIO_RX},
504 { AFE_PORT_ID_USB_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
505 LPASS_BE_USB_AUDIO_TX},
506 { DISPLAY_PORT_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
507 LPASS_BE_DISPLAY_PORT},
508 { AFE_PORT_ID_TERTIARY_PCM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
509 LPASS_BE_TERT_AUXPCM_RX},
510 { AFE_PORT_ID_TERTIARY_PCM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
511 LPASS_BE_TERT_AUXPCM_TX},
512 { AFE_PORT_ID_QUATERNARY_PCM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
513 LPASS_BE_QUAT_AUXPCM_RX},
514 { AFE_PORT_ID_QUATERNARY_PCM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
515 LPASS_BE_QUAT_AUXPCM_TX},
516 { AFE_PORT_ID_INT0_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
517 LPASS_BE_INT0_MI2S_RX},
518 { AFE_PORT_ID_INT0_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
519 LPASS_BE_INT0_MI2S_TX},
520 { AFE_PORT_ID_INT1_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
521 LPASS_BE_INT1_MI2S_RX},
522 { AFE_PORT_ID_INT1_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
523 LPASS_BE_INT1_MI2S_TX},
524 { AFE_PORT_ID_INT2_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
525 LPASS_BE_INT2_MI2S_RX},
526 { AFE_PORT_ID_INT2_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
527 LPASS_BE_INT2_MI2S_TX},
528 { AFE_PORT_ID_INT3_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
529 LPASS_BE_INT3_MI2S_RX},
530 { AFE_PORT_ID_INT3_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
531 LPASS_BE_INT3_MI2S_TX},
532 { AFE_PORT_ID_INT4_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
533 LPASS_BE_INT4_MI2S_RX},
534 { AFE_PORT_ID_INT4_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
535 LPASS_BE_INT4_MI2S_TX},
536 { AFE_PORT_ID_INT5_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
537 LPASS_BE_INT5_MI2S_RX},
538 { AFE_PORT_ID_INT5_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
539 LPASS_BE_INT5_MI2S_TX},
540 { AFE_PORT_ID_INT6_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
541 LPASS_BE_INT6_MI2S_RX},
542 { AFE_PORT_ID_INT6_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
543 LPASS_BE_INT6_MI2S_TX},
544};
545
546/* Track ASM playback & capture sessions of DAI
547 * Track LSM listen sessions
548 */
549static struct msm_pcm_routing_fdai_data
550 fe_dai_map[MSM_FRONTEND_DAI_MAX][2] = {
551 /* MULTIMEDIA1 */
552 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
553 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
554 /* MULTIMEDIA2 */
555 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
556 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
557 /* MULTIMEDIA3 */
558 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
559 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
560 /* MULTIMEDIA4 */
561 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
562 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
563 /* MULTIMEDIA5 */
564 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
565 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
566 /* MULTIMEDIA6 */
567 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
568 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
569 /* MULTIMEDIA7*/
570 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
571 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
572 /* MULTIMEDIA8 */
573 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
574 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
575 /* MULTIMEDIA9 */
576 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
577 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
578 /* MULTIMEDIA10 */
579 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
580 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
581 /* MULTIMEDIA11 */
582 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
583 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
584 /* MULTIMEDIA12 */
585 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
586 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
587 /* MULTIMEDIA13 */
588 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
589 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
590 /* MULTIMEDIA14 */
591 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
592 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
593 /* MULTIMEDIA15 */
594 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
595 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
596 /* MULTIMEDIA16 */
597 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
598 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
599 /* MULTIMEDIA17 */
600 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
601 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
602 /* MULTIMEDIA18 */
603 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
604 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
605 /* MULTIMEDIA19 */
606 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
607 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
608 /* MULTIMEDIA20 */
609 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
610 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
611 /* CS_VOICE */
612 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
613 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
614 /* VOIP */
615 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
616 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
617 /* AFE_RX */
618 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
619 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
620 /* AFE_TX */
621 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
622 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
623 /* VOICE_STUB */
624 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
625 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
626 /* VOLTE */
627 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
628 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
629 /* DTMF_RX */
630 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
631 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
632 /* VOICE2 */
633 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
634 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
635 /* QCHAT */
636 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
637 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
638 /* VOLTE_STUB */
639 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
640 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
641 /* LSM1 */
642 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
643 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
644 /* LSM2 */
645 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
646 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
647 /* LSM3 */
648 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
649 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
650 /* LSM4 */
651 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
652 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
653 /* LSM5 */
654 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
655 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
656 /* LSM6 */
657 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
658 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
659 /* LSM7 */
660 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
661 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
662 /* LSM8 */
663 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
664 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
665 /* VOICE2_STUB */
666 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
667 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
668 /* VOWLAN */
669 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
670 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
671 /* VOICEMMODE1 */
672 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
673 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
674 /* VOICEMMODE2 */
675 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
676 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
677};
678
679static unsigned long session_copp_map[MSM_FRONTEND_DAI_MAX][2]
680 [MSM_BACKEND_DAI_MAX];
681static struct msm_pcm_routing_app_type_data app_type_cfg[MAX_APP_TYPES];
682static struct msm_pcm_routing_app_type_data lsm_app_type_cfg[MAX_APP_TYPES];
683static struct msm_pcm_stream_app_type_cfg
684 fe_dai_app_type_cfg[MSM_FRONTEND_DAI_MAX][2][MSM_BACKEND_DAI_MAX];
685
686static int last_be_id_configured[MSM_FRONTEND_DAI_MAX][MAX_SESSION_TYPES];
687
688/* The caller of this should aqcuire routing lock */
689void msm_pcm_routing_get_bedai_info(int be_idx,
690 struct msm_pcm_routing_bdai_data *be_dai)
691{
692 if (be_idx >= 0 && be_idx < MSM_BACKEND_DAI_MAX)
693 memcpy(be_dai, &msm_bedais[be_idx],
694 sizeof(struct msm_pcm_routing_bdai_data));
695}
696
697/* The caller of this should aqcuire routing lock */
698void msm_pcm_routing_get_fedai_info(int fe_idx, int sess_type,
699 struct msm_pcm_routing_fdai_data *fe_dai)
700{
701 if ((sess_type == SESSION_TYPE_TX) || (sess_type == SESSION_TYPE_RX))
702 memcpy(fe_dai, &fe_dai_map[fe_idx][sess_type],
703 sizeof(struct msm_pcm_routing_fdai_data));
704}
705
706void msm_pcm_routing_acquire_lock(void)
707{
708 mutex_lock(&routing_lock);
709}
710
711void msm_pcm_routing_release_lock(void)
712{
713 mutex_unlock(&routing_lock);
714}
715
716static int msm_pcm_routing_get_app_type_idx(int app_type)
717{
718 int idx;
719
720 pr_debug("%s: app_type: %d\n", __func__, app_type);
721 for (idx = 0; idx < MAX_APP_TYPES; idx++) {
722 if (app_type_cfg[idx].app_type == app_type)
723 return idx;
724 }
725 pr_info("%s: App type not available, fallback to default\n", __func__);
726 return 0;
727}
728
729static int msm_pcm_routing_get_lsm_app_type_idx(int app_type)
730{
731 int idx;
732
733 pr_debug("%s: app_type: %d\n", __func__, app_type);
734 for (idx = 0; idx < MAX_APP_TYPES; idx++) {
735 if (lsm_app_type_cfg[idx].app_type == app_type)
736 return idx;
737 }
738 pr_debug("%s: App type not available, fallback to default\n", __func__);
739 return 0;
740}
741
742static bool is_mm_lsm_fe_id(int fe_id)
743{
744 bool rc = true;
745
746 if (fe_id > MSM_FRONTEND_DAI_MM_MAX_ID &&
747 ((fe_id < MSM_FRONTEND_DAI_LSM1) ||
748 (fe_id > MSM_FRONTEND_DAI_LSM8))) {
749 rc = false;
750 }
751 return rc;
752}
753
754int msm_pcm_routing_reg_stream_app_type_cfg(
755 int fedai_id, int session_type, int be_id,
756 struct msm_pcm_stream_app_type_cfg *cfg_data)
757{
758 int ret = 0;
759
760 if (cfg_data == NULL) {
761 pr_err("%s: Received NULL pointer for cfg_data\n", __func__);
762 ret = -EINVAL;
763 goto done;
764 }
765
766 pr_debug("%s: fedai_id %d, session_type %d, be_id %d, app_type %d, acdb_dev_id %d, sample_rate %d\n",
767 __func__, fedai_id, session_type, be_id,
768 cfg_data->app_type, cfg_data->acdb_dev_id,
769 cfg_data->sample_rate);
770
771 if (!is_mm_lsm_fe_id(fedai_id)) {
772 pr_err("%s: Invalid machine driver ID %d\n",
773 __func__, fedai_id);
774 ret = -EINVAL;
775 goto done;
776 }
777 if (session_type != SESSION_TYPE_RX &&
778 session_type != SESSION_TYPE_TX) {
779 pr_err("%s: Invalid session type %d\n",
780 __func__, session_type);
781 ret = -EINVAL;
782 goto done;
783 }
784 if (be_id < 0 || be_id >= MSM_BACKEND_DAI_MAX) {
785 pr_err("%s: Received out of bounds be_id %d\n",
786 __func__, be_id);
787 ret = -EINVAL;
788 goto done;
789 }
790
791 fe_dai_app_type_cfg[fedai_id][session_type][be_id] = *cfg_data;
792
793 /*
794 * Store the BE ID of the configuration information set as the latest so
795 * the get mixer control knows what to return.
796 */
797 last_be_id_configured[fedai_id][session_type] = be_id;
798
799done:
800 return ret;
801}
802EXPORT_SYMBOL(msm_pcm_routing_reg_stream_app_type_cfg);
803
804/**
805 * msm_pcm_routing_get_stream_app_type_cfg
806 *
807 * Receives fedai_id, session_type, be_id, and populates app_type,
808 * acdb_dev_id, & sample rate. Returns 0 on success. On failure returns
809 * -EINVAL and does not alter passed values.
810 *
811 * fedai_id - Passed value, front end ID for which app type config is wanted
812 * session_type - Passed value, session type for which app type config
813 * is wanted
814 * be_id - Returned value, back end device id the app type config data is for
815 * cfg_data - Returned value, configuration data used by app type config
816 */
817int msm_pcm_routing_get_stream_app_type_cfg(
818 int fedai_id, int session_type, int *bedai_id,
819 struct msm_pcm_stream_app_type_cfg *cfg_data)
820{
821 int be_id;
822 int ret = 0;
823
824 if (bedai_id == NULL) {
825 pr_err("%s: Received NULL pointer for backend ID\n", __func__);
826 ret = -EINVAL;
827 goto done;
828 } else if (cfg_data == NULL) {
829 pr_err("%s: NULL pointer sent for cfg_data\n", __func__);
830 ret = -EINVAL;
831 goto done;
832 } else if (!is_mm_lsm_fe_id(fedai_id)) {
833 pr_err("%s: Invalid FE ID %d\n", __func__, fedai_id);
834 ret = -EINVAL;
835 goto done;
836 } else if (session_type != SESSION_TYPE_RX &&
837 session_type != SESSION_TYPE_TX) {
838 pr_err("%s: Invalid session type %d\n", __func__, session_type);
839 ret = -EINVAL;
840 goto done;
841 }
842
843 be_id = last_be_id_configured[fedai_id][session_type];
844 if (be_id < 0 || be_id >= MSM_BACKEND_DAI_MAX) {
845 pr_err("%s: Invalid BE ID %d\n", __func__, be_id);
846 ret = -EINVAL;
847 goto done;
848 }
849
850 *bedai_id = be_id;
851 *cfg_data = fe_dai_app_type_cfg[fedai_id][session_type][be_id];
852 pr_debug("%s: fedai_id %d, session_type %d, be_id %d, app_type %d, acdb_dev_id %d, sample_rate %d\n",
853 __func__, fedai_id, session_type, *bedai_id,
854 cfg_data->app_type, cfg_data->acdb_dev_id,
855 cfg_data->sample_rate);
856done:
857 return ret;
858}
859EXPORT_SYMBOL(msm_pcm_routing_get_stream_app_type_cfg);
860
861static struct cal_block_data *msm_routing_find_topology_by_path(int path)
862{
863 struct list_head *ptr, *next;
864 struct cal_block_data *cal_block = NULL;
865
866 pr_debug("%s\n", __func__);
867
868 list_for_each_safe(ptr, next,
869 &cal_data->cal_blocks) {
870
871 cal_block = list_entry(ptr,
872 struct cal_block_data, list);
873
874 if (((struct audio_cal_info_adm_top *)cal_block->cal_info)
875 ->path == path) {
876 return cal_block;
877 }
878 }
879 pr_debug("%s: Can't find topology for path %d\n", __func__, path);
880 return NULL;
881}
882
883static struct cal_block_data *msm_routing_find_topology(int path,
884 int app_type,
885 int acdb_id)
886{
887 struct list_head *ptr, *next;
888 struct cal_block_data *cal_block = NULL;
889 struct audio_cal_info_adm_top *cal_info;
890
891 pr_debug("%s\n", __func__);
892
893 list_for_each_safe(ptr, next,
894 &cal_data->cal_blocks) {
895
896 cal_block = list_entry(ptr,
897 struct cal_block_data, list);
898
899 cal_info = (struct audio_cal_info_adm_top *)
900 cal_block->cal_info;
901 if ((cal_info->path == path) &&
902 (cal_info->app_type == app_type) &&
903 (cal_info->acdb_id == acdb_id)) {
904 return cal_block;
905 }
906 }
907 pr_debug("%s: Can't find topology for path %d, app %d, acdb_id %d defaulting to search by path\n",
908 __func__, path, app_type, acdb_id);
909 return msm_routing_find_topology_by_path(path);
910}
911
912static int msm_routing_get_adm_topology(int fedai_id, int session_type,
913 int be_id)
914{
915 int topology = NULL_COPP_TOPOLOGY;
916 struct cal_block_data *cal_block = NULL;
917 int app_type = 0, acdb_dev_id = 0;
918
919
920 pr_debug("%s: fedai_id %d, session_type %d, be_id %d\n",
921 __func__, fedai_id, session_type, be_id);
922
923 if (cal_data == NULL)
924 goto done;
925
926 mutex_lock(&cal_data->lock);
927
928 app_type = fe_dai_app_type_cfg[fedai_id][session_type][be_id].app_type;
929 acdb_dev_id =
930 fe_dai_app_type_cfg[fedai_id][session_type][be_id].acdb_dev_id;
931
932 cal_block = msm_routing_find_topology(session_type, app_type,
933 acdb_dev_id);
934 if (cal_block == NULL)
935 goto unlock;
936
937 topology = ((struct audio_cal_info_adm_top *)
938 cal_block->cal_info)->topology;
939unlock:
940 mutex_unlock(&cal_data->lock);
941done:
942 pr_debug("%s: Using topology %d\n", __func__, topology);
943 return topology;
944}
945
946static uint8_t is_be_dai_extproc(int be_dai)
947{
948 if (be_dai == MSM_BACKEND_DAI_EXTPROC_RX ||
949 be_dai == MSM_BACKEND_DAI_EXTPROC_TX ||
950 be_dai == MSM_BACKEND_DAI_EXTPROC_EC_TX)
951 return 1;
952 else
953 return 0;
954}
955
956static void msm_pcm_routing_build_matrix(int fedai_id, int sess_type,
957 int path_type, int perf_mode,
958 uint32_t passthr_mode)
959{
960 int i, port_type, j, num_copps = 0;
961 struct route_payload payload;
962
963 port_type = ((path_type == ADM_PATH_PLAYBACK ||
964 path_type == ADM_PATH_COMPRESSED_RX) ?
965 MSM_AFE_PORT_TYPE_RX : MSM_AFE_PORT_TYPE_TX);
966
967 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
968 if (!is_be_dai_extproc(i) &&
969 (afe_get_port_type(msm_bedais[i].port_id) == port_type) &&
970 (msm_bedais[i].active) &&
971 (test_bit(fedai_id, &msm_bedais[i].fe_sessions[0]))) {
972 for (j = 0; j < MAX_COPPS_PER_PORT; j++) {
973 unsigned long copp =
974 session_copp_map[fedai_id][sess_type][i];
975 if (test_bit(j, &copp)) {
976 payload.port_id[num_copps] =
977 msm_bedais[i].port_id;
978 payload.copp_idx[num_copps] = j;
979 payload.app_type[num_copps] =
980 fe_dai_app_type_cfg
981 [fedai_id][sess_type][i]
982 .app_type;
983 payload.acdb_dev_id[num_copps] =
984 fe_dai_app_type_cfg
985 [fedai_id][sess_type][i]
986 .acdb_dev_id;
987 payload.sample_rate[num_copps] =
988 fe_dai_app_type_cfg
989 [fedai_id][sess_type][i]
990 .sample_rate;
991 num_copps++;
992 }
993 }
994 }
995 }
996
997 if (num_copps) {
998 payload.num_copps = num_copps;
999 payload.session_id = fe_dai_map[fedai_id][sess_type].strm_id;
1000 adm_matrix_map(path_type, payload, perf_mode, passthr_mode);
1001 msm_pcm_routng_cfg_matrix_map_pp(payload, path_type, perf_mode);
1002 }
1003}
1004
1005void msm_pcm_routing_reg_psthr_stream(int fedai_id, int dspst_id,
1006 int stream_type)
1007{
1008 int i, session_type, path_type, port_type;
1009 u32 mode = 0;
1010
1011 if (fedai_id > MSM_FRONTEND_DAI_MM_MAX_ID) {
1012 /* bad ID assigned in machine driver */
1013 pr_err("%s: bad MM ID\n", __func__);
1014 return;
1015 }
1016
1017 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK) {
1018 session_type = SESSION_TYPE_RX;
1019 path_type = ADM_PATH_PLAYBACK;
1020 port_type = MSM_AFE_PORT_TYPE_RX;
1021 } else {
1022 session_type = SESSION_TYPE_TX;
1023 path_type = ADM_PATH_LIVE_REC;
1024 port_type = MSM_AFE_PORT_TYPE_TX;
1025 }
1026
1027 mutex_lock(&routing_lock);
1028
1029 fe_dai_map[fedai_id][session_type].strm_id = dspst_id;
1030 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
1031 if (!is_be_dai_extproc(i) &&
1032 (afe_get_port_type(msm_bedais[i].port_id) == port_type) &&
1033 (msm_bedais[i].active) &&
1034 (test_bit(fedai_id, &msm_bedais[i].fe_sessions[0]))) {
1035 mode = afe_get_port_type(msm_bedais[i].port_id);
1036 adm_connect_afe_port(mode, dspst_id,
1037 msm_bedais[i].port_id);
1038 break;
1039 }
1040 }
1041 mutex_unlock(&routing_lock);
1042}
1043
1044static bool route_check_fe_id_adm_support(int fe_id)
1045{
1046 bool rc = true;
1047
1048 if ((fe_id >= MSM_FRONTEND_DAI_LSM1) &&
1049 (fe_id <= MSM_FRONTEND_DAI_LSM8)) {
1050 /* fe id is listen while port is set to afe */
1051 if (lsm_port_index != ADM_LSM_PORT_INDEX) {
1052 pr_debug("%s: fe_id %d, lsm mux slim port %d\n",
1053 __func__, fe_id, lsm_port_index);
1054 rc = false;
1055 }
1056 }
1057
1058 return rc;
1059}
1060
1061int msm_pcm_routing_reg_phy_compr_stream(int fe_id, int perf_mode,
1062 int dspst_id, int stream_type,
1063 uint32_t passthr_mode)
1064{
1065 int i, j, session_type, path_type, port_type, topology;
1066 int num_copps = 0;
1067 struct route_payload payload;
1068 u32 channels, sample_rate;
1069 u16 bit_width = 16;
1070 bool is_lsm;
1071
1072 pr_debug("%s:fe_id[%d] perf_mode[%d] id[%d] stream_type[%d] passt[%d]",
1073 __func__, fe_id, perf_mode, dspst_id,
1074 stream_type, passthr_mode);
1075 if (!is_mm_lsm_fe_id(fe_id)) {
1076 /* bad ID assigned in machine driver */
1077 pr_err("%s: bad MM ID %d\n", __func__, fe_id);
1078 return -EINVAL;
1079 }
1080
1081 if (!route_check_fe_id_adm_support(fe_id)) {
1082 /* ignore adm open if not supported for fe_id */
1083 pr_debug("%s: No ADM support for fe id %d\n", __func__, fe_id);
1084 return 0;
1085 }
1086
1087 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK) {
1088 session_type = SESSION_TYPE_RX;
1089 if (passthr_mode != LEGACY_PCM)
1090 path_type = ADM_PATH_COMPRESSED_RX;
1091 else
1092 path_type = ADM_PATH_PLAYBACK;
1093 port_type = MSM_AFE_PORT_TYPE_RX;
1094 } else if (stream_type == SNDRV_PCM_STREAM_CAPTURE) {
1095 session_type = SESSION_TYPE_TX;
Laxminath Kasam38070be2017-08-17 18:21:59 +05301096 if ((passthr_mode != LEGACY_PCM) && (passthr_mode != LISTEN))
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301097 path_type = ADM_PATH_COMPRESSED_TX;
1098 else
1099 path_type = ADM_PATH_LIVE_REC;
1100 port_type = MSM_AFE_PORT_TYPE_TX;
1101 } else {
1102 pr_err("%s: invalid stream type %d\n", __func__, stream_type);
1103 return -EINVAL;
1104 }
1105
1106 is_lsm = (fe_id >= MSM_FRONTEND_DAI_LSM1) &&
1107 (fe_id <= MSM_FRONTEND_DAI_LSM8);
1108 mutex_lock(&routing_lock);
1109
1110 payload.num_copps = 0; /* only RX needs to use payload */
1111 fe_dai_map[fe_id][session_type].strm_id = dspst_id;
1112 /* re-enable EQ if active */
1113 msm_qti_pp_send_eq_values(fe_id);
1114 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
1115 if (test_bit(fe_id, &msm_bedais[i].fe_sessions[0]))
1116 msm_bedais[i].passthr_mode[fe_id] = passthr_mode;
1117
1118 if (!is_be_dai_extproc(i) &&
1119 (afe_get_port_type(msm_bedais[i].port_id) ==
1120 port_type) &&
1121 (msm_bedais[i].active) &&
1122 (test_bit(fe_id, &msm_bedais[i].fe_sessions[0]))) {
1123 int app_type, app_type_idx, copp_idx, acdb_dev_id;
1124
1125 /*
1126 * check if ADM needs to be configured with different
1127 * channel mapping than backend
1128 */
1129 if (!msm_bedais[i].adm_override_ch)
1130 channels = msm_bedais[i].channel;
1131 else
1132 channels = msm_bedais[i].adm_override_ch;
1133
1134 bit_width = msm_routing_get_bit_width(
1135 msm_bedais[i].format);
1136 app_type =
1137 fe_dai_app_type_cfg[fe_id][session_type][i].app_type;
1138 if (app_type && is_lsm) {
1139 app_type_idx =
1140 msm_pcm_routing_get_lsm_app_type_idx(app_type);
1141 sample_rate =
1142 fe_dai_app_type_cfg[fe_id][session_type][i]
1143 .sample_rate;
1144 bit_width =
1145 lsm_app_type_cfg[app_type_idx].bit_width;
1146 } else if (app_type) {
1147 app_type_idx =
1148 msm_pcm_routing_get_app_type_idx(
1149 app_type);
1150 sample_rate =
1151 fe_dai_app_type_cfg[fe_id][session_type][i].sample_rate;
1152 bit_width =
1153 app_type_cfg[app_type_idx].bit_width;
1154 } else {
1155 sample_rate = msm_bedais[i].sample_rate;
1156 }
1157 acdb_dev_id =
1158 fe_dai_app_type_cfg[fe_id][session_type][i].acdb_dev_id;
1159 topology = msm_routing_get_adm_topology(fe_id,
1160 session_type,
1161 i);
1162 if ((passthr_mode == COMPRESSED_PASSTHROUGH_DSD)
1163 || (passthr_mode ==
1164 COMPRESSED_PASSTHROUGH_GEN))
1165 topology = COMPRESSED_PASSTHROUGH_NONE_TOPOLOGY;
1166 pr_debug("%s: Before adm open topology %d\n", __func__,
1167 topology);
1168
1169 copp_idx =
1170 adm_open(msm_bedais[i].port_id,
1171 path_type, sample_rate, channels,
1172 topology, perf_mode, bit_width,
1173 app_type, acdb_dev_id);
1174 if ((copp_idx < 0) ||
1175 (copp_idx >= MAX_COPPS_PER_PORT)) {
1176 pr_err("%s:adm open failed coppid:%d\n",
1177 __func__, copp_idx);
1178 mutex_unlock(&routing_lock);
1179 return -EINVAL;
1180 }
1181 pr_debug("%s: set idx bit of fe:%d, type: %d, be:%d\n",
1182 __func__, fe_id, session_type, i);
1183 set_bit(copp_idx,
1184 &session_copp_map[fe_id][session_type][i]);
1185
1186 if (msm_is_resample_needed(
1187 sample_rate,
1188 msm_bedais[i].sample_rate))
1189 adm_copp_mfc_cfg(
1190 msm_bedais[i].port_id, copp_idx,
1191 msm_bedais[i].sample_rate);
1192
1193 for (j = 0; j < MAX_COPPS_PER_PORT; j++) {
1194 unsigned long copp =
1195 session_copp_map[fe_id][session_type][i];
1196 if (test_bit(j, &copp)) {
1197 payload.port_id[num_copps] =
1198 msm_bedais[i].port_id;
1199 payload.copp_idx[num_copps] = j;
1200 payload.app_type[num_copps] =
1201 fe_dai_app_type_cfg
1202 [fe_id][session_type][i]
1203 .app_type;
1204 payload.acdb_dev_id[num_copps] =
1205 fe_dai_app_type_cfg
1206 [fe_id][session_type][i]
1207 .acdb_dev_id;
1208 payload.sample_rate[num_copps] =
1209 fe_dai_app_type_cfg
1210 [fe_id][session_type][i]
1211 .sample_rate;
1212 num_copps++;
1213 }
1214 }
1215 if (passthr_mode != COMPRESSED_PASSTHROUGH_DSD
1216 && passthr_mode !=
1217 COMPRESSED_PASSTHROUGH_GEN) {
1218 msm_routing_send_device_pp_params(
1219 msm_bedais[i].port_id,
1220 copp_idx, fe_id);
1221 }
1222 }
1223 }
1224 if (num_copps) {
1225 payload.num_copps = num_copps;
1226 payload.session_id = fe_dai_map[fe_id][session_type].strm_id;
1227 adm_matrix_map(path_type, payload, perf_mode, passthr_mode);
1228 msm_pcm_routng_cfg_matrix_map_pp(payload, path_type, perf_mode);
1229 }
1230 mutex_unlock(&routing_lock);
1231 return 0;
1232}
1233
1234static u32 msm_pcm_routing_get_voc_sessionid(u16 val)
1235{
1236 u32 session_id;
1237
1238 switch (val) {
1239 case MSM_FRONTEND_DAI_CS_VOICE:
1240 session_id = voc_get_session_id(VOICE_SESSION_NAME);
1241 break;
1242 case MSM_FRONTEND_DAI_VOLTE:
1243 session_id = voc_get_session_id(VOLTE_SESSION_NAME);
1244 break;
1245 case MSM_FRONTEND_DAI_VOWLAN:
1246 session_id = voc_get_session_id(VOWLAN_SESSION_NAME);
1247 break;
1248 case MSM_FRONTEND_DAI_VOICE2:
1249 session_id = voc_get_session_id(VOICE2_SESSION_NAME);
1250 break;
1251 case MSM_FRONTEND_DAI_QCHAT:
1252 session_id = voc_get_session_id(QCHAT_SESSION_NAME);
1253 break;
1254 case MSM_FRONTEND_DAI_VOIP:
1255 session_id = voc_get_session_id(VOIP_SESSION_NAME);
1256 break;
1257 case MSM_FRONTEND_DAI_VOICEMMODE1:
1258 session_id = voc_get_session_id(VOICEMMODE1_NAME);
1259 break;
1260 case MSM_FRONTEND_DAI_VOICEMMODE2:
1261 session_id = voc_get_session_id(VOICEMMODE2_NAME);
1262 break;
1263 default:
1264 session_id = 0;
1265 }
1266
1267 pr_debug("%s session_id 0x%x", __func__, session_id);
1268 return session_id;
1269}
1270
1271static int msm_pcm_routing_channel_mixer(int fe_id, bool perf_mode,
1272 int dspst_id, int stream_type)
1273{
1274 int copp_idx = 0;
1275 int sess_type = 0;
1276 int i = 0, j = 0, be_id;
1277 int ret = 0;
1278
1279 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
1280 pr_err("%s: invalid FE %d\n", __func__, fe_id);
1281 return 0;
1282 }
1283
1284 if (!(channel_mixer[fe_id].enable)) {
1285 pr_debug("%s: channel mixer not enabled for FE %d\n",
1286 __func__, fe_id);
1287 return 0;
1288 }
1289
1290 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK)
1291 sess_type = SESSION_TYPE_RX;
1292 else
1293 sess_type = SESSION_TYPE_TX;
1294
1295 for (i = 0; i < ADM_MAX_CHANNELS && channel_input[fe_id][i] > 0;
1296 ++i) {
1297 be_id = channel_input[fe_id][i] - 1;
1298 channel_mixer[fe_id].input_channels[i] =
1299 msm_bedais[be_id].channel;
1300
1301 if ((msm_bedais[be_id].active) &&
1302 test_bit(fe_id,
1303 &msm_bedais[be_id].fe_sessions[0])) {
1304 unsigned long copp =
1305 session_copp_map[fe_id][sess_type][be_id];
1306 for (j = 0; j < MAX_COPPS_PER_PORT; j++) {
1307 if (test_bit(j, &copp)) {
1308 copp_idx = j;
1309 break;
1310 }
1311 }
1312
1313 pr_debug("%s: fe %d, be %d, channel %d, copp %d\n",
1314 __func__,
1315 fe_id, be_id, msm_bedais[be_id].channel,
1316 copp_idx);
1317 ret = adm_programable_channel_mixer(
1318 msm_bedais[be_id].port_id,
1319 copp_idx, dspst_id, sess_type,
1320 channel_mixer + fe_id, i);
1321 }
1322 }
1323
1324 return ret;
1325}
1326
1327int msm_pcm_routing_reg_phy_stream(int fedai_id, int perf_mode,
1328 int dspst_id, int stream_type)
1329{
1330 int i, j, session_type, path_type, port_type, topology, num_copps = 0;
1331 struct route_payload payload;
1332 u32 channels, sample_rate;
1333 uint16_t bits_per_sample = 16;
1334 uint32_t passthr_mode = LEGACY_PCM;
1335 int ret = 0;
1336
1337 if (fedai_id > MSM_FRONTEND_DAI_MM_MAX_ID) {
1338 /* bad ID assigned in machine driver */
1339 pr_err("%s: bad MM ID %d\n", __func__, fedai_id);
1340 return -EINVAL;
1341 }
1342
1343 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK) {
1344 session_type = SESSION_TYPE_RX;
1345 path_type = ADM_PATH_PLAYBACK;
1346 port_type = MSM_AFE_PORT_TYPE_RX;
1347 } else {
1348 session_type = SESSION_TYPE_TX;
1349 path_type = ADM_PATH_LIVE_REC;
1350 port_type = MSM_AFE_PORT_TYPE_TX;
1351 }
1352
1353 mutex_lock(&routing_lock);
1354
1355 payload.num_copps = 0; /* only RX needs to use payload */
1356 fe_dai_map[fedai_id][session_type].strm_id = dspst_id;
1357 fe_dai_map[fedai_id][session_type].perf_mode = perf_mode;
1358
1359 /* re-enable EQ if active */
1360 msm_qti_pp_send_eq_values(fedai_id);
1361 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
1362 if (!is_be_dai_extproc(i) &&
1363 (afe_get_port_type(msm_bedais[i].port_id) == port_type) &&
1364 (msm_bedais[i].active) &&
1365 (test_bit(fedai_id, &msm_bedais[i].fe_sessions[0]))) {
1366 int app_type, app_type_idx, copp_idx, acdb_dev_id;
1367 /*
1368 * check if ADM needs to be configured with different
1369 * channel mapping than backend
1370 */
1371 if (!msm_bedais[i].adm_override_ch)
1372 channels = msm_bedais[i].channel;
1373 else
1374 channels = msm_bedais[i].adm_override_ch;
1375 msm_bedais[i].passthr_mode[fedai_id] =
1376 LEGACY_PCM;
1377
1378 bits_per_sample = msm_routing_get_bit_width(
1379 msm_bedais[i].format);
1380
1381 app_type =
1382 fe_dai_app_type_cfg[fedai_id][session_type][i].app_type;
1383 if (app_type) {
1384 app_type_idx =
1385 msm_pcm_routing_get_app_type_idx(app_type);
1386 sample_rate =
1387 fe_dai_app_type_cfg[fedai_id][session_type][i]
1388 .sample_rate;
1389 bits_per_sample =
1390 app_type_cfg[app_type_idx].bit_width;
1391 } else
1392 sample_rate = msm_bedais[i].sample_rate;
1393
1394 acdb_dev_id =
1395 fe_dai_app_type_cfg[fedai_id][session_type][i]
1396 .acdb_dev_id;
1397 topology = msm_routing_get_adm_topology(fedai_id,
1398 session_type,
1399 i);
1400 copp_idx = adm_open(msm_bedais[i].port_id, path_type,
1401 sample_rate, channels, topology,
1402 perf_mode, bits_per_sample,
1403 app_type, acdb_dev_id);
1404 if ((copp_idx < 0) ||
1405 (copp_idx >= MAX_COPPS_PER_PORT)) {
1406 pr_err("%s: adm open failed copp_idx:%d\n",
1407 __func__, copp_idx);
1408 mutex_unlock(&routing_lock);
1409 return -EINVAL;
1410 }
1411 pr_debug("%s: setting idx bit of fe:%d, type: %d, be:%d\n",
1412 __func__, fedai_id, session_type, i);
1413 set_bit(copp_idx,
1414 &session_copp_map[fedai_id][session_type][i]);
1415
1416 if (msm_is_resample_needed(
1417 sample_rate,
1418 msm_bedais[i].sample_rate))
1419 adm_copp_mfc_cfg(
1420 msm_bedais[i].port_id, copp_idx,
1421 msm_bedais[i].sample_rate);
1422
1423 for (j = 0; j < MAX_COPPS_PER_PORT; j++) {
1424 unsigned long copp =
1425 session_copp_map[fedai_id][session_type][i];
1426 if (test_bit(j, &copp)) {
1427 payload.port_id[num_copps] =
1428 msm_bedais[i].port_id;
1429 payload.copp_idx[num_copps] = j;
1430 payload.app_type[num_copps] =
1431 fe_dai_app_type_cfg
1432 [fedai_id][session_type]
1433 [i].app_type;
1434 payload.acdb_dev_id[num_copps] =
1435 fe_dai_app_type_cfg
1436 [fedai_id][session_type]
1437 [i].acdb_dev_id;
1438 payload.sample_rate[num_copps] =
1439 fe_dai_app_type_cfg
1440 [fedai_id][session_type]
1441 [i].sample_rate;
1442 num_copps++;
1443 }
1444 }
1445 if ((perf_mode == LEGACY_PCM_MODE) &&
1446 (msm_bedais[i].passthr_mode[fedai_id] ==
1447 LEGACY_PCM))
1448 msm_pcm_routing_cfg_pp(msm_bedais[i].port_id,
1449 copp_idx, topology,
1450 channels);
1451 }
1452 }
1453 if (num_copps) {
1454 payload.num_copps = num_copps;
1455 payload.session_id = fe_dai_map[fedai_id][session_type].strm_id;
1456 adm_matrix_map(path_type, payload, perf_mode, passthr_mode);
1457 msm_pcm_routng_cfg_matrix_map_pp(payload, path_type, perf_mode);
1458 }
1459
1460 ret = msm_pcm_routing_channel_mixer(fedai_id, perf_mode,
1461 dspst_id, stream_type);
1462 mutex_unlock(&routing_lock);
1463 return ret;
1464}
1465
1466int msm_pcm_routing_reg_phy_stream_v2(int fedai_id, int perf_mode,
1467 int dspst_id, int stream_type,
1468 struct msm_pcm_routing_evt event_info)
1469{
1470 if (msm_pcm_routing_reg_phy_stream(fedai_id, perf_mode, dspst_id,
1471 stream_type)) {
1472 pr_err("%s: failed to reg phy stream\n", __func__);
1473 return -EINVAL;
1474 }
1475
1476 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK)
1477 fe_dai_map[fedai_id][SESSION_TYPE_RX].event_info = event_info;
1478 else
1479 fe_dai_map[fedai_id][SESSION_TYPE_TX].event_info = event_info;
1480 return 0;
1481}
1482
1483void msm_pcm_routing_dereg_phy_stream(int fedai_id, int stream_type)
1484{
1485 int i, port_type, session_type, path_type, topology;
1486 struct msm_pcm_routing_fdai_data *fdai;
1487
1488 if (!is_mm_lsm_fe_id(fedai_id)) {
1489 /* bad ID assigned in machine driver */
1490 pr_err("%s: bad MM ID\n", __func__);
1491 return;
1492 }
1493
1494 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK) {
1495 port_type = MSM_AFE_PORT_TYPE_RX;
1496 session_type = SESSION_TYPE_RX;
1497 path_type = ADM_PATH_PLAYBACK;
1498 } else {
1499 port_type = MSM_AFE_PORT_TYPE_TX;
1500 session_type = SESSION_TYPE_TX;
1501 path_type = ADM_PATH_LIVE_REC;
1502 }
1503
1504 mutex_lock(&routing_lock);
1505 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
1506 if (!is_be_dai_extproc(i) &&
1507 (afe_get_port_type(msm_bedais[i].port_id) == port_type) &&
1508 (msm_bedais[i].active) &&
1509 (test_bit(fedai_id, &msm_bedais[i].fe_sessions[0]))) {
1510 int idx;
1511 unsigned long copp =
1512 session_copp_map[fedai_id][session_type][i];
1513 fdai = &fe_dai_map[fedai_id][session_type];
1514
1515 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++)
1516 if (test_bit(idx, &copp))
1517 break;
1518
1519 if (idx >= MAX_COPPS_PER_PORT || idx < 0) {
1520 pr_debug("%s: copp idx is invalid, exiting\n",
1521 __func__);
1522 continue;
1523 }
1524 topology = adm_get_topology_for_port_copp_idx(
1525 msm_bedais[i].port_id, idx);
1526 adm_close(msm_bedais[i].port_id, fdai->perf_mode, idx);
1527 pr_debug("%s:copp:%ld,idx bit fe:%d,type:%d,be:%d\n",
1528 __func__, copp, fedai_id, session_type, i);
1529 clear_bit(idx,
1530 &session_copp_map[fedai_id][session_type][i]);
1531 if ((topology == DOLBY_ADM_COPP_TOPOLOGY_ID ||
1532 topology == DS2_ADM_COPP_TOPOLOGY_ID) &&
1533 (fdai->perf_mode == LEGACY_PCM_MODE) &&
1534 (msm_bedais[i].passthr_mode[fedai_id] ==
1535 LEGACY_PCM))
1536 msm_pcm_routing_deinit_pp(msm_bedais[i].port_id,
1537 topology);
1538 }
1539 }
1540
1541 fe_dai_map[fedai_id][session_type].strm_id = INVALID_SESSION;
1542 fe_dai_map[fedai_id][session_type].be_srate = 0;
1543 mutex_unlock(&routing_lock);
1544}
1545
1546/* Check if FE/BE route is set */
1547static bool msm_pcm_routing_route_is_set(u16 be_id, u16 fe_id)
1548{
1549 bool rc = false;
1550
1551 if (!is_mm_lsm_fe_id(fe_id)) {
1552 /* recheck FE ID in the mixer control defined in this file */
1553 pr_err("%s: bad MM ID\n", __func__);
1554 return rc;
1555 }
1556
1557 if (test_bit(fe_id, &msm_bedais[be_id].fe_sessions[0]))
1558 rc = true;
1559
1560 return rc;
1561}
1562
1563static void msm_pcm_routing_process_audio(u16 reg, u16 val, int set)
1564{
1565 int session_type, path_type, topology;
1566 u32 channels, sample_rate;
1567 uint16_t bits_per_sample = 16;
1568 struct msm_pcm_routing_fdai_data *fdai;
1569 uint32_t passthr_mode;
1570 bool is_lsm;
1571
1572 pr_debug("%s: reg %x val %x set %x\n", __func__, reg, val, set);
1573
1574 if (!is_mm_lsm_fe_id(val)) {
1575 /* recheck FE ID in the mixer control defined in this file */
1576 pr_err("%s: bad MM ID\n", __func__);
1577 return;
1578 }
1579
1580 if (!route_check_fe_id_adm_support(val)) {
1581 /* ignore adm open if not supported for fe_id */
1582 pr_debug("%s: No ADM support for fe id %d\n", __func__, val);
1583 return;
1584 }
1585
1586 passthr_mode = msm_bedais[reg].passthr_mode[val];
1587 if (afe_get_port_type(msm_bedais[reg].port_id) ==
1588 MSM_AFE_PORT_TYPE_RX) {
1589 session_type = SESSION_TYPE_RX;
1590 if (passthr_mode != LEGACY_PCM)
1591 path_type = ADM_PATH_COMPRESSED_RX;
1592 else
1593 path_type = ADM_PATH_PLAYBACK;
1594 } else {
1595 session_type = SESSION_TYPE_TX;
1596 if (passthr_mode != LEGACY_PCM)
1597 path_type = ADM_PATH_COMPRESSED_TX;
1598 else
1599 path_type = ADM_PATH_LIVE_REC;
1600 }
1601 is_lsm = (val >= MSM_FRONTEND_DAI_LSM1) &&
1602 (val <= MSM_FRONTEND_DAI_LSM8);
1603
1604 mutex_lock(&routing_lock);
1605 if (set) {
1606 if (!test_bit(val, &msm_bedais[reg].fe_sessions[0]) &&
1607 ((msm_bedais[reg].port_id == VOICE_PLAYBACK_TX) ||
1608 (msm_bedais[reg].port_id == VOICE2_PLAYBACK_TX)))
1609 voc_start_playback(set, msm_bedais[reg].port_id);
1610
1611 set_bit(val, &msm_bedais[reg].fe_sessions[0]);
1612 fdai = &fe_dai_map[val][session_type];
1613 if (msm_bedais[reg].active && fdai->strm_id !=
1614 INVALID_SESSION) {
1615 int app_type, app_type_idx, copp_idx, acdb_dev_id;
1616 /*
1617 * check if ADM needs to be configured with different
1618 * channel mapping than backend
1619 */
1620 if (!msm_bedais[reg].adm_override_ch)
1621 channels = msm_bedais[reg].channel;
1622 else
1623 channels = msm_bedais[reg].adm_override_ch;
1624 if (session_type == SESSION_TYPE_TX &&
1625 fdai->be_srate &&
1626 (fdai->be_srate != msm_bedais[reg].sample_rate)) {
1627 pr_debug("%s: flush strm %d diff BE rates\n",
1628 __func__, fdai->strm_id);
1629
1630 if (fdai->event_info.event_func)
1631 fdai->event_info.event_func(
1632 MSM_PCM_RT_EVT_BUF_RECFG,
1633 fdai->event_info.priv_data);
1634 fdai->be_srate = 0; /* might not need it */
1635 }
1636
1637 bits_per_sample = msm_routing_get_bit_width(
1638 msm_bedais[reg].format);
1639
1640 app_type =
1641 fe_dai_app_type_cfg[val][session_type][reg].app_type;
1642 if (app_type && is_lsm) {
1643 app_type_idx =
1644 msm_pcm_routing_get_lsm_app_type_idx(app_type);
1645 sample_rate =
1646 fe_dai_app_type_cfg[val][session_type][reg]
1647 .sample_rate;
1648 bits_per_sample =
1649 lsm_app_type_cfg[app_type_idx].bit_width;
1650 } else if (app_type) {
1651 app_type_idx =
1652 msm_pcm_routing_get_app_type_idx(app_type);
1653 sample_rate =
1654 fe_dai_app_type_cfg[val][session_type][reg]
1655 .sample_rate;
1656 bits_per_sample =
1657 app_type_cfg[app_type_idx].bit_width;
1658 } else
1659 sample_rate = msm_bedais[reg].sample_rate;
1660
1661 topology = msm_routing_get_adm_topology(val,
1662 session_type,
1663 reg);
1664 acdb_dev_id =
1665 fe_dai_app_type_cfg[val][session_type][reg].acdb_dev_id;
1666 copp_idx = adm_open(msm_bedais[reg].port_id, path_type,
1667 sample_rate, channels, topology,
1668 fdai->perf_mode, bits_per_sample,
1669 app_type, acdb_dev_id);
1670 if ((copp_idx < 0) ||
1671 (copp_idx >= MAX_COPPS_PER_PORT)) {
1672 pr_err("%s: adm open failed\n", __func__);
1673 mutex_unlock(&routing_lock);
1674 return;
1675 }
1676 pr_debug("%s: setting idx bit of fe:%d, type: %d, be:%d\n",
1677 __func__, val, session_type, reg);
1678 set_bit(copp_idx,
1679 &session_copp_map[val][session_type][reg]);
1680
1681 if (msm_is_resample_needed(
1682 sample_rate,
1683 msm_bedais[reg].sample_rate))
1684 adm_copp_mfc_cfg(
1685 msm_bedais[reg].port_id, copp_idx,
1686 msm_bedais[reg].sample_rate);
1687
1688 if (session_type == SESSION_TYPE_RX &&
1689 fdai->event_info.event_func)
1690 fdai->event_info.event_func(
1691 MSM_PCM_RT_EVT_DEVSWITCH,
1692 fdai->event_info.priv_data);
1693
1694 msm_pcm_routing_build_matrix(val, session_type,
1695 path_type,
1696 fdai->perf_mode,
1697 passthr_mode);
1698 if ((fdai->perf_mode == LEGACY_PCM_MODE) &&
1699 (passthr_mode == LEGACY_PCM))
1700 msm_pcm_routing_cfg_pp(msm_bedais[reg].port_id,
1701 copp_idx, topology,
1702 channels);
1703 }
1704 } else {
1705 if (test_bit(val, &msm_bedais[reg].fe_sessions[0]) &&
1706 ((msm_bedais[reg].port_id == VOICE_PLAYBACK_TX) ||
1707 (msm_bedais[reg].port_id == VOICE2_PLAYBACK_TX)))
1708 voc_start_playback(set, msm_bedais[reg].port_id);
1709 clear_bit(val, &msm_bedais[reg].fe_sessions[0]);
1710 fdai = &fe_dai_map[val][session_type];
1711 if (msm_bedais[reg].active && fdai->strm_id !=
1712 INVALID_SESSION) {
1713 int idx;
1714 int port_id;
1715 unsigned long copp =
1716 session_copp_map[val][session_type][reg];
1717 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++)
1718 if (test_bit(idx, &copp))
1719 break;
1720
1721 port_id = msm_bedais[reg].port_id;
1722 topology = adm_get_topology_for_port_copp_idx(port_id,
1723 idx);
1724 adm_close(msm_bedais[reg].port_id, fdai->perf_mode,
1725 idx);
1726 pr_debug("%s: copp: %ld, reset idx bit fe:%d, type: %d, be:%d topology=0x%x\n",
1727 __func__, copp, val, session_type, reg,
1728 topology);
1729 clear_bit(idx,
1730 &session_copp_map[val][session_type][reg]);
1731 if ((topology == DOLBY_ADM_COPP_TOPOLOGY_ID ||
1732 topology == DS2_ADM_COPP_TOPOLOGY_ID) &&
1733 (fdai->perf_mode == LEGACY_PCM_MODE) &&
1734 (passthr_mode == LEGACY_PCM))
1735 msm_pcm_routing_deinit_pp(
1736 msm_bedais[reg].port_id,
1737 topology);
1738 msm_pcm_routing_build_matrix(val, session_type,
1739 path_type,
1740 fdai->perf_mode,
1741 passthr_mode);
1742 }
1743 }
1744 if ((msm_bedais[reg].port_id == VOICE_RECORD_RX)
1745 || (msm_bedais[reg].port_id == VOICE_RECORD_TX))
1746 voc_start_record(msm_bedais[reg].port_id, set, voc_session_id);
1747
1748 mutex_unlock(&routing_lock);
1749}
1750
1751static int msm_routing_get_audio_mixer(struct snd_kcontrol *kcontrol,
1752 struct snd_ctl_elem_value *ucontrol)
1753{
1754 struct soc_mixer_control *mc =
1755 (struct soc_mixer_control *)kcontrol->private_value;
1756
1757 if (test_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]))
1758 ucontrol->value.integer.value[0] = 1;
1759 else
1760 ucontrol->value.integer.value[0] = 0;
1761
1762 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
1763 ucontrol->value.integer.value[0]);
1764
1765 return 0;
1766}
1767
1768static int msm_routing_put_audio_mixer(struct snd_kcontrol *kcontrol,
1769 struct snd_ctl_elem_value *ucontrol)
1770{
Asish Bhattacharya34504582017-08-08 12:55:01 +05301771 struct snd_soc_dapm_widget *widget =
1772 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301773 struct soc_mixer_control *mc =
1774 (struct soc_mixer_control *)kcontrol->private_value;
1775 struct snd_soc_dapm_update *update = NULL;
1776
1777 if (ucontrol->value.integer.value[0] &&
1778 msm_pcm_routing_route_is_set(mc->reg, mc->shift) == false) {
1779 msm_pcm_routing_process_audio(mc->reg, mc->shift, 1);
1780 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
1781 update);
1782 } else if (!ucontrol->value.integer.value[0] &&
1783 msm_pcm_routing_route_is_set(mc->reg, mc->shift) == true) {
1784 msm_pcm_routing_process_audio(mc->reg, mc->shift, 0);
1785 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
1786 update);
1787 }
1788
1789 return 1;
1790}
1791
1792static int msm_routing_get_listen_mixer(struct snd_kcontrol *kcontrol,
1793 struct snd_ctl_elem_value *ucontrol)
1794{
1795 struct soc_mixer_control *mc =
1796 (struct soc_mixer_control *)kcontrol->private_value;
1797
1798 if (test_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]))
1799 ucontrol->value.integer.value[0] = 1;
1800 else
1801 ucontrol->value.integer.value[0] = 0;
1802
1803 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
1804 ucontrol->value.integer.value[0]);
1805
1806 return 0;
1807}
1808
1809static int msm_routing_put_listen_mixer(struct snd_kcontrol *kcontrol,
1810 struct snd_ctl_elem_value *ucontrol)
1811{
Asish Bhattacharya34504582017-08-08 12:55:01 +05301812 struct snd_soc_dapm_widget *widget =
1813 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301814 struct soc_mixer_control *mc =
1815 (struct soc_mixer_control *)kcontrol->private_value;
1816 struct snd_soc_dapm_update *update = NULL;
1817
1818 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
1819 ucontrol->value.integer.value[0]);
1820
1821 if (ucontrol->value.integer.value[0]) {
1822 if (msm_pcm_routing_route_is_set(mc->reg, mc->shift) == false)
1823 msm_pcm_routing_process_audio(mc->reg, mc->shift, 1);
1824 snd_soc_dapm_mixer_update_power(widget->dapm,
1825 kcontrol, 1, update);
1826 } else if (!ucontrol->value.integer.value[0]) {
1827 if (msm_pcm_routing_route_is_set(mc->reg, mc->shift) == true)
1828 msm_pcm_routing_process_audio(mc->reg, mc->shift, 0);
1829 snd_soc_dapm_mixer_update_power(widget->dapm,
1830 kcontrol, 0, update);
1831 }
1832
1833 return 1;
1834}
1835
1836static void msm_pcm_routing_process_voice(u16 reg, u16 val, int set)
1837{
1838 u32 session_id = 0;
1839 u16 path_type;
1840 struct media_format_info voc_be_media_format;
1841
1842 pr_debug("%s: reg %x val %x set %x\n", __func__, reg, val, set);
1843
1844 session_id = msm_pcm_routing_get_voc_sessionid(val);
1845
1846 pr_debug("%s: FE DAI 0x%x session_id 0x%x\n",
1847 __func__, val, session_id);
1848
1849 mutex_lock(&routing_lock);
1850
1851 if (set)
1852 set_bit(val, &msm_bedais[reg].fe_sessions[0]);
1853 else
1854 clear_bit(val, &msm_bedais[reg].fe_sessions[0]);
1855
1856 if (val == MSM_FRONTEND_DAI_DTMF_RX &&
1857 afe_get_port_type(msm_bedais[reg].port_id) ==
1858 MSM_AFE_PORT_TYPE_RX) {
1859 pr_debug("%s(): set=%d port id=0x%x for dtmf generation\n",
1860 __func__, set, msm_bedais[reg].port_id);
1861 afe_set_dtmf_gen_rx_portid(msm_bedais[reg].port_id, set);
1862 }
1863
1864 if (afe_get_port_type(msm_bedais[reg].port_id) ==
1865 MSM_AFE_PORT_TYPE_RX)
1866 path_type = RX_PATH;
1867 else
1868 path_type = TX_PATH;
1869
1870 if (set) {
1871 if (msm_bedais[reg].active) {
1872 voc_set_route_flag(session_id, path_type, 1);
1873
1874 memset(&voc_be_media_format, 0,
1875 sizeof(struct media_format_info));
1876
1877 voc_be_media_format.port_id = msm_bedais[reg].port_id;
1878 voc_be_media_format.num_channels =
1879 msm_bedais[reg].channel;
1880 voc_be_media_format.sample_rate =
1881 msm_bedais[reg].sample_rate;
1882 voc_be_media_format.bits_per_sample =
1883 msm_bedais[reg].format;
1884 /* Defaulting this to 1 for voice call usecases */
1885 voc_be_media_format.channel_mapping[0] = 1;
1886
1887 voc_set_device_config(session_id, path_type,
1888 &voc_be_media_format);
1889
1890 if (voc_get_route_flag(session_id, TX_PATH) &&
1891 voc_get_route_flag(session_id, RX_PATH))
1892 voc_enable_device(session_id);
1893 } else {
1894 pr_debug("%s BE is not active\n", __func__);
1895 }
1896 } else {
1897 voc_set_route_flag(session_id, path_type, 0);
1898 voc_disable_device(session_id);
1899 }
1900
1901 mutex_unlock(&routing_lock);
1902
1903}
1904
1905static int msm_routing_get_voice_mixer(struct snd_kcontrol *kcontrol,
1906 struct snd_ctl_elem_value *ucontrol)
1907{
1908 struct soc_mixer_control *mc =
1909 (struct soc_mixer_control *)kcontrol->private_value;
1910
1911 mutex_lock(&routing_lock);
1912
1913 if (test_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]))
1914 ucontrol->value.integer.value[0] = 1;
1915 else
1916 ucontrol->value.integer.value[0] = 0;
1917
1918 mutex_unlock(&routing_lock);
1919
1920 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
1921 ucontrol->value.integer.value[0]);
1922
1923 return 0;
1924}
1925
1926static int msm_routing_put_voice_mixer(struct snd_kcontrol *kcontrol,
1927 struct snd_ctl_elem_value *ucontrol)
1928{
Asish Bhattacharya34504582017-08-08 12:55:01 +05301929 struct snd_soc_dapm_widget *widget =
1930 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301931 struct soc_mixer_control *mc =
1932 (struct soc_mixer_control *)kcontrol->private_value;
1933 struct snd_soc_dapm_update *update = NULL;
1934
1935 if (ucontrol->value.integer.value[0]) {
1936 msm_pcm_routing_process_voice(mc->reg, mc->shift, 1);
1937 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
1938 update);
1939 } else {
1940 msm_pcm_routing_process_voice(mc->reg, mc->shift, 0);
1941 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
1942 update);
1943 }
1944
1945 return 1;
1946}
1947
1948static int msm_routing_get_voice_stub_mixer(struct snd_kcontrol *kcontrol,
1949 struct snd_ctl_elem_value *ucontrol)
1950{
1951 struct soc_mixer_control *mc =
1952 (struct soc_mixer_control *)kcontrol->private_value;
1953
1954 mutex_lock(&routing_lock);
1955
1956 if (test_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]))
1957 ucontrol->value.integer.value[0] = 1;
1958 else
1959 ucontrol->value.integer.value[0] = 0;
1960
1961 mutex_unlock(&routing_lock);
1962
1963 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
1964 ucontrol->value.integer.value[0]);
1965
1966 return 0;
1967}
1968
1969static int msm_routing_put_voice_stub_mixer(struct snd_kcontrol *kcontrol,
1970 struct snd_ctl_elem_value *ucontrol)
1971{
Asish Bhattacharya34504582017-08-08 12:55:01 +05301972 struct snd_soc_dapm_widget *widget =
1973 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301974 struct soc_mixer_control *mc =
1975 (struct soc_mixer_control *)kcontrol->private_value;
1976 struct snd_soc_dapm_update *update = NULL;
1977
1978 if (ucontrol->value.integer.value[0]) {
1979 mutex_lock(&routing_lock);
1980 set_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]);
1981 mutex_unlock(&routing_lock);
1982
1983 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
1984 update);
1985 } else {
1986 mutex_lock(&routing_lock);
1987 clear_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]);
1988 mutex_unlock(&routing_lock);
1989
1990 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
1991 update);
1992 }
1993
1994 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
1995 ucontrol->value.integer.value[0]);
1996
1997 return 1;
1998}
1999
2000/*
2001 * Return the mapping between port ID and backend ID to enable the AFE callback
2002 * to determine the acdb_dev_id from the port id
2003 */
2004int msm_pcm_get_be_id_from_port_id(int port_id)
2005{
2006 int i;
2007 int be_id = -EINVAL;
2008
2009 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
2010 if (msm_bedais[i].port_id == port_id) {
2011 be_id = i;
2012 break;
2013 }
2014 }
2015
2016 return be_id;
2017}
2018
2019/*
2020 * Return the registered dev_acdb_id given a port ID to enable identifying the
2021 * correct AFE calibration information by comparing the header information.
2022 */
2023static int msm_pcm_get_dev_acdb_id_by_port_id(int port_id)
2024{
2025 int acdb_id = -EINVAL;
2026 int i = 0;
2027 int session;
2028 int port_type = afe_get_port_type(port_id);
2029 int be_id = msm_pcm_get_be_id_from_port_id(port_id);
2030
2031 pr_debug("%s:port_id %d be_id %d, port_type 0x%x\n",
2032 __func__, port_id, be_id, port_type);
2033
2034 if (port_type == MSM_AFE_PORT_TYPE_TX) {
2035 session = SESSION_TYPE_TX;
2036 } else if (port_type == MSM_AFE_PORT_TYPE_RX) {
2037 session = SESSION_TYPE_RX;
2038 } else {
2039 pr_err("%s: Invalid port type %d\n", __func__, port_type);
2040 acdb_id = -EINVAL;
2041 goto exit;
2042 }
2043
2044 if (be_id < 0) {
2045 pr_err("%s: Error getting backend id %d\n", __func__, be_id);
2046 goto exit;
2047 }
2048
2049 mutex_lock(&routing_lock);
2050 i = find_first_bit(&msm_bedais[be_id].fe_sessions[0],
2051 MSM_FRONTEND_DAI_MAX);
2052 if (i < MSM_FRONTEND_DAI_MAX)
2053 acdb_id = fe_dai_app_type_cfg[i][session][be_id].acdb_dev_id;
2054
2055 pr_debug("%s: FE[%d] session[%d] BE[%d] acdb_id(%d)\n",
2056 __func__, i, session, be_id, acdb_id);
2057 mutex_unlock(&routing_lock);
2058exit:
2059 return acdb_id;
2060}
2061
2062static int msm_routing_get_switch_mixer(struct snd_kcontrol *kcontrol,
2063 struct snd_ctl_elem_value *ucontrol)
2064{
2065 ucontrol->value.integer.value[0] = fm_switch_enable;
2066 pr_debug("%s: FM Switch enable %ld\n", __func__,
2067 ucontrol->value.integer.value[0]);
2068 return 0;
2069}
2070
2071static int msm_routing_put_switch_mixer(struct snd_kcontrol *kcontrol,
2072 struct snd_ctl_elem_value *ucontrol)
2073{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302074 struct snd_soc_dapm_widget *widget =
2075 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302076 struct snd_soc_dapm_update *update = NULL;
2077
2078 pr_debug("%s: FM Switch enable %ld\n", __func__,
2079 ucontrol->value.integer.value[0]);
2080 if (ucontrol->value.integer.value[0])
2081 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2082 update);
2083 else
2084 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2085 update);
2086 fm_switch_enable = ucontrol->value.integer.value[0];
2087 return 1;
2088}
2089
2090static int msm_routing_get_hfp_switch_mixer(struct snd_kcontrol *kcontrol,
2091 struct snd_ctl_elem_value *ucontrol)
2092{
2093 ucontrol->value.integer.value[0] = hfp_switch_enable;
2094 pr_debug("%s: HFP Switch enable %ld\n", __func__,
2095 ucontrol->value.integer.value[0]);
2096 return 0;
2097}
2098
2099static int msm_routing_put_hfp_switch_mixer(struct snd_kcontrol *kcontrol,
2100 struct snd_ctl_elem_value *ucontrol)
2101{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302102 struct snd_soc_dapm_widget *widget =
2103 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302104 struct snd_soc_dapm_update *update = NULL;
2105
2106 pr_debug("%s: HFP Switch enable %ld\n", __func__,
2107 ucontrol->value.integer.value[0]);
2108 if (ucontrol->value.integer.value[0])
2109 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol,
2110 1, update);
2111 else
2112 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol,
2113 0, update);
2114 hfp_switch_enable = ucontrol->value.integer.value[0];
2115 return 1;
2116}
2117
2118static int msm_routing_get_int0_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2119 struct snd_ctl_elem_value *ucontrol)
2120{
2121 ucontrol->value.integer.value[0] = int0_mi2s_switch_enable;
2122 pr_debug("%s: INT0 MI2S Switch enable %ld\n", __func__,
2123 ucontrol->value.integer.value[0]);
2124 return 0;
2125}
2126
2127static int msm_routing_put_int0_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2128 struct snd_ctl_elem_value *ucontrol)
2129{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302130 struct snd_soc_dapm_widget *widget =
2131 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302132 struct snd_soc_dapm_update *update = NULL;
2133
2134 pr_debug("%s: INT0 MI2S Switch enable %ld\n", __func__,
2135 ucontrol->value.integer.value[0]);
2136 if (ucontrol->value.integer.value[0])
2137 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2138 update);
2139 else
2140 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2141 update);
2142 int0_mi2s_switch_enable = ucontrol->value.integer.value[0];
2143 return 1;
2144}
2145
2146static int msm_routing_get_int4_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2147 struct snd_ctl_elem_value *ucontrol)
2148{
2149 ucontrol->value.integer.value[0] = int4_mi2s_switch_enable;
2150 pr_debug("%s: INT4 MI2S Switch enable %ld\n", __func__,
2151 ucontrol->value.integer.value[0]);
2152 return 0;
2153}
2154
2155static int msm_routing_put_int4_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2156 struct snd_ctl_elem_value *ucontrol)
2157{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302158 struct snd_soc_dapm_widget *widget =
2159 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302160 struct snd_soc_dapm_update *update = NULL;
2161
2162 pr_debug("%s: INT4 MI2S Switch enable %ld\n", __func__,
2163 ucontrol->value.integer.value[0]);
2164 if (ucontrol->value.integer.value[0])
2165 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2166 update);
2167 else
2168 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2169 update);
2170 int4_mi2s_switch_enable = ucontrol->value.integer.value[0];
2171 return 1;
2172}
2173
2174static int msm_routing_get_usb_switch_mixer(struct snd_kcontrol *kcontrol,
2175 struct snd_ctl_elem_value *ucontrol)
2176{
2177 ucontrol->value.integer.value[0] = usb_switch_enable;
2178 pr_debug("%s: HFP Switch enable %ld\n", __func__,
2179 ucontrol->value.integer.value[0]);
2180 return 0;
2181}
2182
2183static int msm_routing_put_usb_switch_mixer(struct snd_kcontrol *kcontrol,
2184 struct snd_ctl_elem_value *ucontrol)
2185{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302186 struct snd_soc_dapm_widget *widget =
2187 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302188 struct snd_soc_dapm_update *update = NULL;
2189
2190 pr_debug("%s: USB Switch enable %ld\n", __func__,
2191 ucontrol->value.integer.value[0]);
2192 if (ucontrol->value.integer.value[0])
2193 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol,
2194 1, update);
2195 else
2196 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol,
2197 0, update);
2198 usb_switch_enable = ucontrol->value.integer.value[0];
2199 return 1;
2200}
2201
2202static int msm_routing_get_pri_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2203 struct snd_ctl_elem_value *ucontrol)
2204{
2205 ucontrol->value.integer.value[0] = pri_mi2s_switch_enable;
2206 pr_debug("%s: PRI MI2S Switch enable %ld\n", __func__,
2207 ucontrol->value.integer.value[0]);
2208 return 0;
2209}
2210
2211static int msm_routing_put_pri_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2212 struct snd_ctl_elem_value *ucontrol)
2213{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302214 struct snd_soc_dapm_widget *widget =
2215 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302216 struct snd_soc_dapm_update *update = NULL;
2217
2218 pr_debug("%s: PRI MI2S Switch enable %ld\n", __func__,
2219 ucontrol->value.integer.value[0]);
2220 if (ucontrol->value.integer.value[0])
2221 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2222 update);
2223 else
2224 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2225 update);
2226 pri_mi2s_switch_enable = ucontrol->value.integer.value[0];
2227 return 1;
2228}
2229
2230static int msm_routing_get_sec_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2231 struct snd_ctl_elem_value *ucontrol)
2232{
2233 ucontrol->value.integer.value[0] = sec_mi2s_switch_enable;
2234 pr_debug("%s: SEC MI2S Switch enable %ld\n", __func__,
2235 ucontrol->value.integer.value[0]);
2236 return 0;
2237}
2238
2239static int msm_routing_put_sec_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2240 struct snd_ctl_elem_value *ucontrol)
2241{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302242 struct snd_soc_dapm_widget *widget =
2243 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302244 struct snd_soc_dapm_update *update = NULL;
2245
2246 pr_debug("%s: SEC MI2S Switch enable %ld\n", __func__,
2247 ucontrol->value.integer.value[0]);
2248 if (ucontrol->value.integer.value[0])
2249 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2250 update);
2251 else
2252 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2253 update);
2254 sec_mi2s_switch_enable = ucontrol->value.integer.value[0];
2255 return 1;
2256}
2257
2258static int msm_routing_get_tert_mi2s_switch_mixer(
2259 struct snd_kcontrol *kcontrol,
2260 struct snd_ctl_elem_value *ucontrol)
2261{
2262 ucontrol->value.integer.value[0] = tert_mi2s_switch_enable;
2263 pr_debug("%s: TERT MI2S Switch enable %ld\n", __func__,
2264 ucontrol->value.integer.value[0]);
2265 return 0;
2266}
2267
2268static int msm_routing_put_tert_mi2s_switch_mixer(
2269 struct snd_kcontrol *kcontrol,
2270 struct snd_ctl_elem_value *ucontrol)
2271{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302272 struct snd_soc_dapm_widget *widget =
2273 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302274 struct snd_soc_dapm_update *update = NULL;
2275
2276 pr_debug("%s: TERT MI2S Switch enable %ld\n", __func__,
2277 ucontrol->value.integer.value[0]);
2278 if (ucontrol->value.integer.value[0])
2279 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2280 update);
2281 else
2282 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2283 update);
2284 tert_mi2s_switch_enable = ucontrol->value.integer.value[0];
2285 return 1;
2286}
2287
2288static int msm_routing_get_quat_mi2s_switch_mixer(
2289 struct snd_kcontrol *kcontrol,
2290 struct snd_ctl_elem_value *ucontrol)
2291{
2292 ucontrol->value.integer.value[0] = quat_mi2s_switch_enable;
2293 pr_debug("%s: QUAT MI2S Switch enable %ld\n", __func__,
2294 ucontrol->value.integer.value[0]);
2295 return 0;
2296}
2297
2298static int msm_routing_put_quat_mi2s_switch_mixer(
2299 struct snd_kcontrol *kcontrol,
2300 struct snd_ctl_elem_value *ucontrol)
2301{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302302 struct snd_soc_dapm_widget *widget =
2303 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302304 struct snd_soc_dapm_update *update = NULL;
2305
2306 pr_debug("%s: QUAT MI2S Switch enable %ld\n", __func__,
2307 ucontrol->value.integer.value[0]);
2308 if (ucontrol->value.integer.value[0])
2309 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2310 update);
2311 else
2312 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2313 update);
2314 quat_mi2s_switch_enable = ucontrol->value.integer.value[0];
2315 return 1;
2316}
2317
2318static int msm_routing_get_fm_pcmrx_switch_mixer(struct snd_kcontrol *kcontrol,
2319 struct snd_ctl_elem_value *ucontrol)
2320{
2321 ucontrol->value.integer.value[0] = fm_pcmrx_switch_enable;
2322 pr_debug("%s: FM Switch enable %ld\n", __func__,
2323 ucontrol->value.integer.value[0]);
2324 return 0;
2325}
2326
2327static int msm_routing_put_fm_pcmrx_switch_mixer(struct snd_kcontrol *kcontrol,
2328 struct snd_ctl_elem_value *ucontrol)
2329{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302330 struct snd_soc_dapm_widget *widget =
2331 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302332 struct snd_soc_dapm_update *update = NULL;
2333
2334 pr_debug("%s: FM Switch enable %ld\n", __func__,
2335 ucontrol->value.integer.value[0]);
2336 if (ucontrol->value.integer.value[0])
2337 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2338 update);
2339 else
2340 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2341 update);
2342 fm_pcmrx_switch_enable = ucontrol->value.integer.value[0];
2343 return 1;
2344}
2345
2346static int msm_routing_lsm_port_get(struct snd_kcontrol *kcontrol,
2347 struct snd_ctl_elem_value *ucontrol)
2348{
2349 ucontrol->value.integer.value[0] = lsm_port_index;
2350 return 0;
2351}
2352
2353static int msm_routing_lsm_port_put(struct snd_kcontrol *kcontrol,
2354 struct snd_ctl_elem_value *ucontrol)
2355{
2356 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
2357 int mux = ucontrol->value.enumerated.item[0];
2358 int lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_5_TX;
2359
2360 if (mux >= e->items) {
2361 pr_err("%s: Invalid mux value %d\n", __func__, mux);
2362 return -EINVAL;
2363 }
2364
2365 pr_debug("%s: LSM enable %ld\n", __func__,
2366 ucontrol->value.integer.value[0]);
2367 switch (ucontrol->value.integer.value[0]) {
2368 case 1:
2369 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_0_TX;
2370 break;
2371 case 2:
2372 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_1_TX;
2373 break;
2374 case 3:
2375 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_2_TX;
2376 break;
2377 case 4:
2378 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_3_TX;
2379 break;
2380 case 5:
2381 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_4_TX;
2382 break;
2383 case 6:
2384 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_5_TX;
2385 break;
2386 case 7:
2387 lsm_port = AFE_PORT_ID_TERTIARY_MI2S_TX;
2388 break;
2389 case 8:
2390 lsm_port = AFE_PORT_ID_QUATERNARY_MI2S_TX;
2391 break;
2392 case 9:
2393 lsm_port = ADM_LSM_PORT_ID;
2394 break;
2395 case 10:
2396 lsm_port = AFE_PORT_ID_INT3_MI2S_TX;
2397 break;
2398 default:
2399 pr_err("Default lsm port");
2400 break;
2401 }
2402 set_lsm_port(lsm_port);
2403 lsm_port_index = ucontrol->value.integer.value[0];
2404
2405 return 0;
2406}
2407
2408static int msm_routing_lsm_func_get(struct snd_kcontrol *kcontrol,
2409 struct snd_ctl_elem_value *ucontrol)
2410{
2411 int i;
2412 u16 port_id;
2413 enum afe_mad_type mad_type;
2414
2415 pr_debug("%s: enter\n", __func__);
2416 for (i = 0; i < ARRAY_SIZE(lsm_port_text); i++)
2417 if (!strnstr(kcontrol->id.name, lsm_port_text[i],
2418 strlen(lsm_port_text[i])))
2419 break;
2420
2421 if (i-- == ARRAY_SIZE(lsm_port_text)) {
2422 WARN(1, "Invalid id name %s\n", kcontrol->id.name);
2423 return -EINVAL;
2424 }
2425
2426 port_id = i * 2 + 1 + SLIMBUS_0_RX;
2427
2428 /*Check for Tertiary/Quaternary/INT3 TX port*/
2429 if (strnstr(kcontrol->id.name, lsm_port_text[7],
2430 strlen(lsm_port_text[7])))
2431 port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
2432
2433 if (strnstr(kcontrol->id.name, lsm_port_text[8],
2434 strlen(lsm_port_text[8])))
2435 port_id = AFE_PORT_ID_QUATERNARY_MI2S_TX;
2436
2437 if (strnstr(kcontrol->id.name, lsm_port_text[10],
2438 strlen(lsm_port_text[10])))
2439 port_id = AFE_PORT_ID_INT3_MI2S_TX;
2440
2441 mad_type = afe_port_get_mad_type(port_id);
2442 pr_debug("%s: port_id 0x%x, mad_type %d\n", __func__, port_id,
2443 mad_type);
2444 switch (mad_type) {
2445 case MAD_HW_NONE:
2446 ucontrol->value.integer.value[0] = MADNONE;
2447 break;
2448 case MAD_HW_AUDIO:
2449 ucontrol->value.integer.value[0] = MADAUDIO;
2450 break;
2451 case MAD_HW_BEACON:
2452 ucontrol->value.integer.value[0] = MADBEACON;
2453 break;
2454 case MAD_HW_ULTRASOUND:
2455 ucontrol->value.integer.value[0] = MADULTRASOUND;
2456 break;
2457 case MAD_SW_AUDIO:
2458 ucontrol->value.integer.value[0] = MADSWAUDIO;
2459 break;
2460 default:
2461 WARN(1, "Unknown\n");
2462 return -EINVAL;
2463 }
2464 return 0;
2465}
2466
2467static int msm_routing_lsm_func_put(struct snd_kcontrol *kcontrol,
2468 struct snd_ctl_elem_value *ucontrol)
2469{
2470 int i;
2471 u16 port_id;
2472 enum afe_mad_type mad_type;
2473
2474 pr_debug("%s: enter\n", __func__);
2475 for (i = 0; i < ARRAY_SIZE(lsm_port_text); i++)
2476 if (strnstr(kcontrol->id.name, lsm_port_text[i],
2477 strlen(lsm_port_text[i])))
2478 break;
2479
2480 if (i-- == ARRAY_SIZE(lsm_port_text)) {
2481 WARN(1, "Invalid id name %s\n", kcontrol->id.name);
2482 return -EINVAL;
2483 }
2484
2485 port_id = i * 2 + 1 + SLIMBUS_0_RX;
2486 switch (ucontrol->value.integer.value[0]) {
2487 case MADNONE:
2488 mad_type = MAD_HW_NONE;
2489 break;
2490 case MADAUDIO:
2491 mad_type = MAD_HW_AUDIO;
2492 break;
2493 case MADBEACON:
2494 mad_type = MAD_HW_BEACON;
2495 break;
2496 case MADULTRASOUND:
2497 mad_type = MAD_HW_ULTRASOUND;
2498 break;
2499 case MADSWAUDIO:
2500 mad_type = MAD_SW_AUDIO;
2501 break;
2502 default:
2503 WARN(1, "Unknown\n");
2504 return -EINVAL;
2505 }
2506
2507 /*Check for Tertiary/Quaternary/INT3 TX port*/
2508 if (strnstr(kcontrol->id.name, lsm_port_text[7],
2509 strlen(lsm_port_text[7])))
2510 port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
2511
2512 if (strnstr(kcontrol->id.name, lsm_port_text[8],
2513 strlen(lsm_port_text[8])))
2514 port_id = AFE_PORT_ID_QUATERNARY_MI2S_TX;
2515
2516 if (strnstr(kcontrol->id.name, lsm_port_text[10],
2517 strlen(lsm_port_text[10])))
2518 port_id = AFE_PORT_ID_INT3_MI2S_TX;
2519
2520 pr_debug("%s: port_id 0x%x, mad_type %d\n", __func__, port_id,
2521 mad_type);
2522 return afe_port_set_mad_type(port_id, mad_type);
2523}
2524
2525static const char *const adm_override_chs_text[] = {"Zero", "One", "Two"};
2526
2527static SOC_ENUM_SINGLE_EXT_DECL(slim_7_rx_adm_override_chs,
2528 adm_override_chs_text);
2529
2530static int msm_routing_adm_get_backend_idx(struct snd_kcontrol *kcontrol)
2531{
2532 int backend_id;
2533
2534 if (strnstr(kcontrol->id.name, "SLIM7_RX", sizeof("SLIM7_RX"))) {
2535 backend_id = MSM_BACKEND_DAI_SLIMBUS_7_RX;
2536 } else {
2537 pr_err("%s: unsupported backend id: %s",
2538 __func__, kcontrol->id.name);
2539 return -EINVAL;
2540 }
2541
2542 return backend_id;
2543}
2544static int msm_routing_adm_channel_config_get(
2545 struct snd_kcontrol *kcontrol,
2546 struct snd_ctl_elem_value *ucontrol)
2547{
2548 int backend_id = msm_routing_adm_get_backend_idx(kcontrol);
2549
2550 if (backend_id >= 0) {
2551 mutex_lock(&routing_lock);
2552 ucontrol->value.integer.value[0] =
2553 msm_bedais[backend_id].adm_override_ch;
2554 pr_debug("%s: adm channel count %ld for BE:%d\n", __func__,
2555 ucontrol->value.integer.value[0], backend_id);
2556 mutex_unlock(&routing_lock);
2557 }
2558
2559 return 0;
2560}
2561
2562static int msm_routing_adm_channel_config_put(
2563 struct snd_kcontrol *kcontrol,
2564 struct snd_ctl_elem_value *ucontrol)
2565{
2566 int backend_id = msm_routing_adm_get_backend_idx(kcontrol);
2567
2568 if (backend_id >= 0) {
2569 mutex_lock(&routing_lock);
2570 msm_bedais[backend_id].adm_override_ch =
2571 ucontrol->value.integer.value[0];
2572 pr_debug("%s:updating BE :%d adm channels: %d\n",
2573 __func__, backend_id,
2574 msm_bedais[backend_id].adm_override_ch);
2575 mutex_unlock(&routing_lock);
2576 }
2577
2578 return 0;
2579}
2580
2581static const struct snd_kcontrol_new adm_channel_config_controls[] = {
2582 SOC_ENUM_EXT("SLIM7_RX ADM Channels", slim_7_rx_adm_override_chs,
2583 msm_routing_adm_channel_config_get,
2584 msm_routing_adm_channel_config_put),
2585};
2586
2587static int msm_routing_slim_0_rx_aanc_mux_get(struct snd_kcontrol *kcontrol,
2588 struct snd_ctl_elem_value *ucontrol)
2589{
2590
2591 mutex_lock(&routing_lock);
2592 ucontrol->value.integer.value[0] = slim0_rx_aanc_fb_port;
2593 mutex_unlock(&routing_lock);
2594 pr_debug("%s: AANC Mux Port %ld\n", __func__,
2595 ucontrol->value.integer.value[0]);
2596 return 0;
2597};
2598
2599static int msm_routing_slim_0_rx_aanc_mux_put(struct snd_kcontrol *kcontrol,
2600 struct snd_ctl_elem_value *ucontrol)
2601{
2602 struct aanc_data aanc_info;
2603
2604 mutex_lock(&routing_lock);
2605 memset(&aanc_info, 0x00, sizeof(aanc_info));
2606 pr_debug("%s: AANC Mux Port %ld\n", __func__,
2607 ucontrol->value.integer.value[0]);
2608 slim0_rx_aanc_fb_port = ucontrol->value.integer.value[0];
2609 if (ucontrol->value.integer.value[0] == 0) {
2610 aanc_info.aanc_active = false;
2611 aanc_info.aanc_tx_port = 0;
2612 aanc_info.aanc_rx_port = 0;
2613 } else {
2614 aanc_info.aanc_active = true;
2615 aanc_info.aanc_rx_port = SLIMBUS_0_RX;
2616 aanc_info.aanc_tx_port =
2617 (SLIMBUS_0_RX - 1 + (slim0_rx_aanc_fb_port * 2));
2618 }
2619 afe_set_aanc_info(&aanc_info);
2620 mutex_unlock(&routing_lock);
2621 return 0;
2622};
2623static int msm_routing_get_port_mixer(struct snd_kcontrol *kcontrol,
2624 struct snd_ctl_elem_value *ucontrol)
2625{
2626 int idx = 0, shift = 0;
2627 struct soc_mixer_control *mc =
2628 (struct soc_mixer_control *)kcontrol->private_value;
2629
2630 idx = mc->shift/(sizeof(msm_bedais[mc->reg].port_sessions[0]) * 8);
2631 shift = mc->shift%(sizeof(msm_bedais[mc->reg].port_sessions[0]) * 8);
2632
2633 if (idx >= BE_DAI_PORT_SESSIONS_IDX_MAX) {
2634 pr_err("%s: Invalid idx = %d\n", __func__, idx);
2635 return -EINVAL;
2636 }
2637
2638 if (test_bit(shift,
2639 (unsigned long *)&msm_bedais[mc->reg].port_sessions[idx]))
2640 ucontrol->value.integer.value[0] = 1;
2641 else
2642 ucontrol->value.integer.value[0] = 0;
2643
2644 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
2645 ucontrol->value.integer.value[0]);
2646
2647 return 0;
2648}
2649
2650static int msm_routing_put_port_mixer(struct snd_kcontrol *kcontrol,
2651 struct snd_ctl_elem_value *ucontrol)
2652{
2653 int idx = 0, shift = 0;
2654 struct soc_mixer_control *mc =
2655 (struct soc_mixer_control *)kcontrol->private_value;
2656
2657 idx = mc->shift/(sizeof(msm_bedais[mc->reg].port_sessions[0]) * 8);
2658 shift = mc->shift%(sizeof(msm_bedais[mc->reg].port_sessions[0]) * 8);
2659
2660 if (idx >= BE_DAI_PORT_SESSIONS_IDX_MAX) {
2661 pr_err("%s: Invalid idx = %d\n", __func__, idx);
2662 return -EINVAL;
2663 }
2664
2665 pr_debug("%s: reg 0x%x shift 0x%x val %ld idx %d reminder shift %d\n",
2666 __func__, mc->reg, mc->shift,
2667 ucontrol->value.integer.value[0], idx, shift);
2668
2669 if (ucontrol->value.integer.value[0]) {
2670 afe_loopback(1, msm_bedais[mc->reg].port_id,
2671 msm_bedais[mc->shift].port_id);
2672 set_bit(shift,
2673 (unsigned long *)&msm_bedais[mc->reg].port_sessions[idx]);
2674 } else {
2675 afe_loopback(0, msm_bedais[mc->reg].port_id,
2676 msm_bedais[mc->shift].port_id);
2677 clear_bit(shift,
2678 (unsigned long *)&msm_bedais[mc->reg].port_sessions[idx]);
2679 }
2680
2681 return 1;
2682}
2683
2684static int msm_pcm_get_channel_rule_index(struct snd_kcontrol *kcontrol,
2685 struct snd_ctl_elem_value *ucontrol)
2686{
2687 u16 fe_id = 0;
2688
2689 fe_id = ((struct soc_mixer_control *)
2690 kcontrol->private_value)->shift;
2691 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2692 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2693 return -EINVAL;
2694 }
2695
2696 ucontrol->value.integer.value[0] = channel_mixer[fe_id].rule;
2697
2698 return 0;
2699}
2700
2701static int msm_pcm_put_channel_rule_index(struct snd_kcontrol *kcontrol,
2702 struct snd_ctl_elem_value *ucontrol)
2703{
2704 u16 fe_id = 0;
2705
2706 fe_id = ((struct soc_mixer_control *)
2707 kcontrol->private_value)->shift;
2708 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2709 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2710 return -EINVAL;
2711 }
2712
2713 channel_mixer[fe_id].rule = ucontrol->value.integer.value[0];
2714
2715 return 1;
2716}
2717
2718static int msm_pcm_get_out_chs(struct snd_kcontrol *kcontrol,
2719 struct snd_ctl_elem_value *ucontrol)
2720{
2721 u16 fe_id = 0;
2722
2723 fe_id = ((struct soc_multi_mixer_control *)
2724 kcontrol->private_value)->shift;
2725 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2726 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2727 return -EINVAL;
2728 }
2729
2730 ucontrol->value.integer.value[0] =
2731 channel_mixer[fe_id].output_channel;
2732 return 0;
2733}
2734
2735static int msm_pcm_put_out_chs(struct snd_kcontrol *kcontrol,
2736 struct snd_ctl_elem_value *ucontrol)
2737{
2738 u16 fe_id = 0;
2739
2740 fe_id = ((struct soc_multi_mixer_control *)
2741 kcontrol->private_value)->shift;
2742 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2743 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2744 return -EINVAL;
2745 }
2746
2747 pr_debug("%s: fe_id is %d, output channels = %d\n", __func__,
2748 fe_id,
2749 (unsigned int)(ucontrol->value.integer.value[0]));
2750 channel_mixer[fe_id].output_channel =
2751 (unsigned int)(ucontrol->value.integer.value[0]);
2752
2753 return 1;
2754}
2755
2756static const char *const ch_mixer[] = {"Disable", "Enable"};
2757
2758/* If new backend is added, need update this array */
2759static const char *const be_name[] = {
2760"ZERO", "PRI_I2S_RX", "PRI_I2S_TX", "SLIM_0_RX",
2761"SLIM_0_TX", "HDMI_RX", "INT_BT_SCO_RX", "INT_BT_SCO_TX",
2762"INT_FM_RX", "INT_FM_TX", "AFE_PCM_RX", "AFE_PCM_TX",
2763"AUXPCM_RX", "AUXPCM_TX", "VOICE_PLAYBACK_TX", "VOICE2_PLAYBACK_TX",
2764"INCALL_RECORD_RX", "INCALL_RECORD_TX", "MI2S_RX", "MI2S_TX",
2765"SEC_I2S_RX", "SLIM_1_RX", "SLIM_1_TX", "SLIM_2_RX",
2766"SLIM_2_TX", "SLIM_3_RX", "SLIM_3_TX", "SLIM_4_RX",
2767"SLIM_4_TX", "SLIM_5_RX", "SLIM_5_TX", "SLIM_6_RX",
2768"SLIM_6_TX", "SLIM_7_RX", "SLIM_7_TX", "SLIM_8_RX",
2769"SLIM_8_TX", "EXTPROC_RX", "EXTPROC_TX", "EXPROC_EC_TX",
2770"QUAT_MI2S_RX", "QUAT_MI2S_TX", "SECOND_MI2S_RX", "SECOND_MI2S_TX",
2771"PRI_MI2S_RX", "PRI_MI2S_TX", "TERT_MI2S_RX", "TERT_MI2S_TX",
2772"AUDIO_I2S_RX", "SEC_AUXPCM_RX", "SEC_AUXPCM_TX", "SPDIF_RX",
2773"SECOND_MI2S_RX_SD1", "QUIN_MI2S_RX", "QUIN_MI2S_TX", "SENARY_MI2S_TX",
2774"PRI_TDM_RX_0", "PRI_TDM_TX_0", "PRI_TDM_RX_1", "PRI_TDM_TX_1",
2775"PRI_TDM_RX_2", "PRI_TDM_TX_2", "PRI_TDM_RX_3", "PRI_TDM_TX_3",
2776"PRI_TDM_RX_4", "PRI_TDM_TX_4", "PRI_TDM_RX_5", "PRI_TDM_TX_5",
2777"PRI_TDM_RX_6", "PRI_TDM_TX_6", "PRI_TDM_RX_7", "PRI_TDM_TX_7",
2778"SEC_TDM_RX_0", "SEC_TDM_TX_0", "SEC_TDM_RX_1", "SEC_TDM_TX_1",
2779"SEC_TDM_RX_2", "SEC_TDM_TX_2", "SEC_TDM_RX_3", "SEC_TDM_TX_3",
2780"SEC_TDM_RX_4", "SEC_TDM_TX_4", "SEC_TDM_RX_5", "SEC_TDM_TX_5",
2781"SEC_TDM_RX_6", "SEC_TDM_TX_6", "SEC_TDM_RX_7", "SEC_TDM_TX_7",
2782"TERT_TDM_RX_0", "TERT_TDM_TX_0", "TERT_TDM_RX_1", "TERT_TDM_TX_1",
2783"TERT_TDM_RX_2", "TERT_TDM_TX_2", "TERT_TDM_RX_3", "TERT_TDM_TX_3",
2784"TERT_TDM_RX_4", "TERT_TDM_TX_4", "TERT_TDM_RX_5", "TERT_TDM_TX_5",
2785"TERT_TDM_RX_6", "TERT_TDM_TX_6", "TERT_TDM_RX_7", "TERT_TDM_TX_7",
2786"QUAT_TDM_RX_0", "QUAT_TDM_TX_0", "QUAT_TDM_RX_1", "QUAT_TDM_TX_1",
2787"QUAT_TDM_RX_2", "QUAT_TDM_TX_2", "QUAT_TDM_RX_3", "QUAT_TDM_TX_3",
2788"QUAT_TDM_RX_4", "QUAT_TDM_TX_4", "QUAT_TDM_RX_5", "QUAT_TDM_TX_5",
2789"QUAT_TDM_RX_6", "QUAT_TDM_TX_6", "QUAT_TDM_RX_7", "QUAT_TDM_TX_7",
2790"INT_BT_A2DP_RX", "USB_RX", "USB_TX", "DISPLAY_PORT_RX",
2791"TERT_AUXPCM_RX", "TERT_AUXPCM_TX", "QUAT_AUXPCM_RX", "QUAT_AUXPCM_TX",
2792"INT0_MI2S_RX", "INT0_MI2S_TX", "INT1_MI2S_RX", "INT1_MI2S_TX",
2793"INT2_MI2S_RX", "INT2_MI2S_TX", "INT3_MI2S_RX", "INT3_MI2S_TX",
2794"INT4_MI2S_RX", "INT4_MI2S_TX", "INT5_MI2S_RX", "INT5_MI2S_TX",
2795"INT6_MI2S_RX", "INT6_MI2S_TX"
2796};
2797
2798static SOC_ENUM_SINGLE_DECL(mm1_channel_mux,
2799 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, ch_mixer);
2800static SOC_ENUM_SINGLE_DECL(mm2_channel_mux,
2801 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA2, ch_mixer);
2802static SOC_ENUM_SINGLE_DECL(mm3_channel_mux,
2803 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA3, ch_mixer);
2804static SOC_ENUM_SINGLE_DECL(mm4_channel_mux,
2805 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA4, ch_mixer);
2806
2807static SOC_ENUM_DOUBLE_DECL(mm1_ch1_enum,
2808 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 0, be_name);
2809static SOC_ENUM_DOUBLE_DECL(mm1_ch2_enum,
2810 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 1, be_name);
2811static SOC_ENUM_DOUBLE_DECL(mm1_ch3_enum,
2812 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 2, be_name);
2813static SOC_ENUM_DOUBLE_DECL(mm1_ch4_enum,
2814 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 3, be_name);
2815static SOC_ENUM_DOUBLE_DECL(mm1_ch5_enum,
2816 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 4, be_name);
2817static SOC_ENUM_DOUBLE_DECL(mm1_ch6_enum,
2818 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 5, be_name);
2819static SOC_ENUM_DOUBLE_DECL(mm1_ch7_enum,
2820 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 6, be_name);
2821static SOC_ENUM_DOUBLE_DECL(mm1_ch8_enum,
2822 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 7, be_name);
2823
2824static int msm_pcm_get_ctl_enum_info(struct snd_ctl_elem_info *uinfo,
2825 unsigned int channels,
2826 unsigned int items, const char *const names[])
2827{
2828 if (uinfo->value.enumerated.item >= items)
2829 uinfo->value.enumerated.item = items - 1;
2830
2831 WARN(strlen(names[uinfo->value.enumerated.item]) >=
2832 sizeof(uinfo->value.enumerated.name),
2833 "ALSA: too long item name '%s'\n",
2834 names[uinfo->value.enumerated.item]);
2835 strlcpy(uinfo->value.enumerated.name,
2836 names[uinfo->value.enumerated.item],
2837 sizeof(uinfo->value.enumerated.name));
2838 return 0;
2839}
2840
2841static int msm_pcm_channel_mixer_info(struct snd_kcontrol *kcontrol,
2842 struct snd_ctl_elem_info *uinfo)
2843{
2844 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
2845
2846 uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED;
2847 uinfo->count = 1;
2848
2849 uinfo->value.enumerated.items = ARRAY_SIZE(ch_mixer);
2850 msm_pcm_get_ctl_enum_info(uinfo, 1, e->items, e->texts);
2851
2852 return 0;
2853}
2854static int msm_pcm_channel_mixer_get(struct snd_kcontrol *kcontrol,
2855 struct snd_ctl_elem_value *ucontrol)
2856{
2857 u16 fe_id = 0;
2858
2859 fe_id = ((struct soc_enum *)
2860 kcontrol->private_value)->shift_l;
2861 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2862 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2863 return -EINVAL;
2864 }
2865
2866 pr_debug("%s: FE %d %s\n", __func__,
2867 fe_id,
2868 channel_mixer[fe_id].enable ? "Enabled" : "Disabled");
2869 ucontrol->value.enumerated.item[0] = channel_mixer[fe_id].enable;
2870 return 0;
2871}
2872
2873static int msm_pcm_channel_mixer_put(struct snd_kcontrol *kcontrol,
2874 struct snd_ctl_elem_value *ucontrol)
2875{
2876 u16 fe_id = 0;
2877
2878 fe_id = ((struct soc_enum *)
2879 kcontrol->private_value)->shift_l;
2880 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2881 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2882 return -EINVAL;
2883 }
2884
2885 channel_mixer[fe_id].enable = ucontrol->value.enumerated.item[0];
2886 pr_debug("%s: %s FE %d\n", __func__,
2887 channel_mixer[fe_id].enable ? "Enable" : "Disable",
2888 fe_id);
2889 return 0;
2890}
2891
2892static int msm_pcm_channel_input_be_info(struct snd_kcontrol *kcontrol,
2893 struct snd_ctl_elem_info *uinfo)
2894{
2895 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
2896
2897 uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED;
2898 uinfo->count = 1;
2899
2900 uinfo->value.enumerated.items = ARRAY_SIZE(be_name);
2901 msm_pcm_get_ctl_enum_info(uinfo, 1, e->items, e->texts);
2902
2903 return 0;
2904}
2905
2906static int msm_pcm_channel_input_be_put(struct snd_kcontrol *kcontrol,
2907 struct snd_ctl_elem_value *ucontrol)
2908{
2909 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
2910 u16 fe_id = 0, in_ch = 0;
2911
2912 fe_id = e->shift_l;
2913 in_ch = e->shift_r;
2914 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2915 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2916 return -EINVAL;
2917 }
2918 if (in_ch >= ADM_MAX_CHANNELS) {
2919 pr_err("%s: invalid input channel %d\n", __func__, in_ch);
2920 return -EINVAL;
2921 }
2922
2923 channel_input[fe_id][in_ch] = ucontrol->value.enumerated.item[0];
2924 return 1;
2925}
2926
2927static int msm_pcm_channel_input_be_get(struct snd_kcontrol *kcontrol,
2928 struct snd_ctl_elem_value *ucontrol)
2929{
2930 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
2931 u16 fe_id = 0, in_ch = 0;
2932
2933 fe_id = e->shift_l;
2934 in_ch = e->shift_r;
2935 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2936 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2937 return -EINVAL;
2938 }
2939 if (in_ch >= ADM_MAX_CHANNELS) {
2940 pr_err("%s: invalid input channel %d\n", __func__, in_ch);
2941 return -EINVAL;
2942 }
2943
2944 ucontrol->value.enumerated.item[0] = channel_input[fe_id][in_ch];
2945 return 1;
2946}
2947
2948
2949static int msm_pcm_channel_weight_info(struct snd_kcontrol *kcontrol,
2950 struct snd_ctl_elem_info *uinfo)
2951{
2952 uinfo->type = SNDRV_CTL_ELEM_TYPE_INTEGER;
2953 uinfo->count = ADM_MAX_CHANNELS;
2954 uinfo->value.integer.min = 0;
2955 uinfo->value.integer.max = WEIGHT_0_DB;
2956
2957 return 0;
2958}
2959
2960static int msm_pcm_channel_weight_put(struct snd_kcontrol *kcontrol,
2961 struct snd_ctl_elem_value *ucontrol)
2962{
2963 u16 fe_id = 0, out_ch = 0;
2964 int i, weight;
2965
2966 fe_id = ((struct soc_multi_mixer_control *)
2967 kcontrol->private_value)->shift;
2968 out_ch = ((struct soc_multi_mixer_control *)
2969 kcontrol->private_value)->rshift;
2970 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2971 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2972 return -EINVAL;
2973 }
2974 if (out_ch >= ADM_MAX_CHANNELS) {
2975 pr_err("%s: invalid input channel %d\n", __func__, out_ch);
2976 return -EINVAL;
2977 }
2978
2979 pr_debug("%s: FE_ID: %d, channel weight %ld, %ld, %ld, %ld, %ld, %ld, %ld, %ld\n",
2980 __func__, fe_id,
2981 ucontrol->value.integer.value[0],
2982 ucontrol->value.integer.value[1],
2983 ucontrol->value.integer.value[2],
2984 ucontrol->value.integer.value[3],
2985 ucontrol->value.integer.value[4],
2986 ucontrol->value.integer.value[5],
2987 ucontrol->value.integer.value[6],
2988 ucontrol->value.integer.value[7]);
2989
2990 for (i = 0; i < ADM_MAX_CHANNELS; ++i) {
2991 weight = ucontrol->value.integer.value[i];
2992 channel_mixer[fe_id].channel_weight[out_ch][i] = weight;
2993 pr_debug("%s: FE_ID %d, output %d input %d weight %d\n",
2994 __func__, fe_id, out_ch, i,
2995 channel_mixer[fe_id].channel_weight[out_ch][i]);
2996 }
2997
2998 return 0;
2999}
3000
3001static int msm_pcm_channel_weight_get(struct snd_kcontrol *kcontrol,
3002 struct snd_ctl_elem_value *ucontrol)
3003{
3004 u16 fe_id = 0, out_ch = 0;
3005 int i;
3006
3007 fe_id = ((struct soc_multi_mixer_control *)
3008 kcontrol->private_value)->shift;
3009 out_ch = ((struct soc_multi_mixer_control *)
3010 kcontrol->private_value)->rshift;
3011 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
3012 pr_err("%s: invalid FE %d\n", __func__, fe_id);
3013 return -EINVAL;
3014 }
3015 if (out_ch >= ADM_MAX_CHANNELS) {
3016 pr_err("%s: invalid input channel %d\n", __func__, out_ch);
3017 return -EINVAL;
3018 }
3019
3020 for (i = 0; i < ADM_MAX_CHANNELS; ++i)
3021 ucontrol->value.integer.value[i] =
3022 channel_mixer[fe_id].channel_weight[out_ch][i];
3023
3024 pr_debug("%s: FE_ID: %d, weight %ld, %ld, %ld, %ld, %ld, %ld, %ld, %ld",
3025 __func__, fe_id,
3026 ucontrol->value.integer.value[0],
3027 ucontrol->value.integer.value[1],
3028 ucontrol->value.integer.value[2],
3029 ucontrol->value.integer.value[3],
3030 ucontrol->value.integer.value[4],
3031 ucontrol->value.integer.value[5],
3032 ucontrol->value.integer.value[6],
3033 ucontrol->value.integer.value[7]);
3034
3035 return 0;
3036}
3037
3038static const struct snd_kcontrol_new channel_mixer_controls[] = {
3039 SOC_SINGLE_EXT("MultiMedia1 Channel Rule", SND_SOC_NOPM,
3040 MSM_FRONTEND_DAI_MULTIMEDIA1, 8, 0,
3041 msm_pcm_get_channel_rule_index,
3042 msm_pcm_put_channel_rule_index),
3043 SOC_SINGLE_EXT("MultiMedia2 Channel Rule", SND_SOC_NOPM,
3044 MSM_FRONTEND_DAI_MULTIMEDIA2, 8, 0,
3045 msm_pcm_get_channel_rule_index,
3046 msm_pcm_put_channel_rule_index),
3047 SOC_SINGLE_EXT("MultiMedia3 Channel Rule", SND_SOC_NOPM,
3048 MSM_FRONTEND_DAI_MULTIMEDIA3, 8, 0,
3049 msm_pcm_get_channel_rule_index,
3050 msm_pcm_put_channel_rule_index),
3051 SOC_SINGLE_EXT("MultiMedia4 Channel Rule", SND_SOC_NOPM,
3052 MSM_FRONTEND_DAI_MULTIMEDIA4, 8, 0,
3053 msm_pcm_get_channel_rule_index,
3054 msm_pcm_put_channel_rule_index),
3055 SOC_SINGLE_EXT("MultiMedia5 Channel Rule", SND_SOC_NOPM,
3056 MSM_FRONTEND_DAI_MULTIMEDIA5, 8, 0,
3057 msm_pcm_get_channel_rule_index,
3058 msm_pcm_put_channel_rule_index),
3059 SOC_SINGLE_EXT("MultiMedia6 Channel Rule", SND_SOC_NOPM,
3060 MSM_FRONTEND_DAI_MULTIMEDIA6, 8, 0,
3061 msm_pcm_get_channel_rule_index,
3062 msm_pcm_put_channel_rule_index),
3063
3064 SOC_SINGLE_EXT("MultiMedia1 Channels", SND_SOC_NOPM,
3065 MSM_FRONTEND_DAI_MULTIMEDIA1, 8, 0,
3066 msm_pcm_get_out_chs,
3067 msm_pcm_put_out_chs),
3068 SOC_SINGLE_EXT("MultiMedia2 Channels", SND_SOC_NOPM,
3069 MSM_FRONTEND_DAI_MULTIMEDIA2, 8, 0,
3070 msm_pcm_get_out_chs,
3071 msm_pcm_put_out_chs),
3072 SOC_SINGLE_EXT("MultiMedia3 Channels", SND_SOC_NOPM,
3073 MSM_FRONTEND_DAI_MULTIMEDIA3, 8, 0,
3074 msm_pcm_get_out_chs,
3075 msm_pcm_put_out_chs),
3076 SOC_SINGLE_EXT("MultiMedia4 Channels", SND_SOC_NOPM,
3077 MSM_FRONTEND_DAI_MULTIMEDIA4, 8, 0,
3078 msm_pcm_get_out_chs,
3079 msm_pcm_put_out_chs),
3080 SOC_SINGLE_EXT("MultiMedia5 Channels", SND_SOC_NOPM,
3081 MSM_FRONTEND_DAI_MULTIMEDIA5, 8, 0,
3082 msm_pcm_get_out_chs,
3083 msm_pcm_put_out_chs),
3084 SOC_SINGLE_EXT("MultiMedia6 Channels", SND_SOC_NOPM,
3085 MSM_FRONTEND_DAI_MULTIMEDIA6, 8, 0,
3086 msm_pcm_get_out_chs,
3087 msm_pcm_put_out_chs),
3088 {
3089 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3090 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3091 .name = "MultiMedia1 Channel Mixer",
3092 .info = msm_pcm_channel_mixer_info,
3093 .get = msm_pcm_channel_mixer_get,
3094 .put = msm_pcm_channel_mixer_put,
3095 .private_value = (unsigned long)&(mm1_channel_mux)
3096 },
3097 {
3098 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3099 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3100 .name = "MultiMedia2 Channel Mixer",
3101 .info = msm_pcm_channel_mixer_info,
3102 .get = msm_pcm_channel_mixer_get,
3103 .put = msm_pcm_channel_mixer_put,
3104 .private_value = (unsigned long)&(mm2_channel_mux)
3105 },
3106 {
3107 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3108 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3109 .name = "MultiMedia3 Channel Mixer",
3110 .info = msm_pcm_channel_mixer_info,
3111 .get = msm_pcm_channel_mixer_get,
3112 .put = msm_pcm_channel_mixer_put,
3113 .private_value = (unsigned long)&(mm3_channel_mux)
3114 },
3115 {
3116 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3117 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3118 .name = "MultiMedia4 Channel Mixer",
3119 .info = msm_pcm_channel_mixer_info,
3120 .get = msm_pcm_channel_mixer_get,
3121 .put = msm_pcm_channel_mixer_put,
3122 .private_value = (unsigned long)&(mm4_channel_mux)
3123 },
3124 {
3125 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3126 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3127 .name = "MultiMedia1 Output Channel1",
3128 .info = msm_pcm_channel_weight_info,
3129 .get = msm_pcm_channel_weight_get,
3130 .put = msm_pcm_channel_weight_put,
3131 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3132 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 0,}
3133 },
3134 {
3135 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3136 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3137 .name = "MultiMedia1 Output Channel2",
3138 .info = msm_pcm_channel_weight_info,
3139 .get = msm_pcm_channel_weight_get,
3140 .put = msm_pcm_channel_weight_put,
3141 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3142 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 1, }
3143 },
3144 {
3145 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3146 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3147 .name = "MultiMedia1 Output Channel3",
3148 .info = msm_pcm_channel_weight_info,
3149 .get = msm_pcm_channel_weight_get,
3150 .put = msm_pcm_channel_weight_put,
3151 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3152 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 2,}
3153 },
3154 {
3155 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3156 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3157 .name = "MultiMedia1 Output Channel4",
3158 .info = msm_pcm_channel_weight_info,
3159 .get = msm_pcm_channel_weight_get,
3160 .put = msm_pcm_channel_weight_put,
3161 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3162 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 3,}
3163 },
3164 {
3165 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3166 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3167 .name = "MultiMedia1 Output Channel5",
3168 .info = msm_pcm_channel_weight_info,
3169 .get = msm_pcm_channel_weight_get,
3170 .put = msm_pcm_channel_weight_put,
3171 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3172 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 4,}
3173 },
3174 {
3175 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3176 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3177 .name = "MultiMedia1 Output Channel6",
3178 .info = msm_pcm_channel_weight_info,
3179 .get = msm_pcm_channel_weight_get,
3180 .put = msm_pcm_channel_weight_put,
3181 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3182 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 5,}
3183 },
3184 {
3185 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3186 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3187 .name = "MultiMedia1 Output Channel7",
3188 .info = msm_pcm_channel_weight_info,
3189 .get = msm_pcm_channel_weight_get,
3190 .put = msm_pcm_channel_weight_put,
3191 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3192 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 6,}
3193 },
3194 {
3195 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3196 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3197 .name = "MultiMedia1 Output Channel8",
3198 .info = msm_pcm_channel_weight_info,
3199 .get = msm_pcm_channel_weight_get,
3200 .put = msm_pcm_channel_weight_put,
3201 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3202 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 7,}
3203 },
3204 {
3205 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3206 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3207 .name = "MultiMedia2 Output Channel1",
3208 .info = msm_pcm_channel_weight_info,
3209 .get = msm_pcm_channel_weight_get,
3210 .put = msm_pcm_channel_weight_put,
3211 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3212 {.shift = MSM_FRONTEND_DAI_MULTIMEDIA2, .rshift = 0,}
3213 },
3214 {
3215 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3216 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3217 .name = "MultiMedia2 Output Channel2",
3218 .info = msm_pcm_channel_weight_info,
3219 .get = msm_pcm_channel_weight_get,
3220 .put = msm_pcm_channel_weight_put,
3221 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3222 {.shift = MSM_FRONTEND_DAI_MULTIMEDIA2, .rshift = 1,}
3223 },
3224 {
3225 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3226 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3227 .name = "MultiMedia2 Output Channel3",
3228 .info = msm_pcm_channel_weight_info,
3229 .get = msm_pcm_channel_weight_get,
3230 .put = msm_pcm_channel_weight_put,
3231 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3232 {.shift = MSM_FRONTEND_DAI_MULTIMEDIA2, .rshift = 2,}
3233 },
3234 {
3235 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3236 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3237 .name = "MultiMedia3 Output Channel1",
3238 .info = msm_pcm_channel_weight_info,
3239 .get = msm_pcm_channel_weight_get,
3240 .put = msm_pcm_channel_weight_put,
3241 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3242 {.shift = MSM_FRONTEND_DAI_MULTIMEDIA3, .rshift = 0,}
3243 },
3244 {
3245 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3246 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3247 .name = "MultiMedia3 Output Channel2",
3248 .info = msm_pcm_channel_weight_info,
3249 .get = msm_pcm_channel_weight_get,
3250 .put = msm_pcm_channel_weight_put,
3251 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3252 {.shift = MSM_FRONTEND_DAI_MULTIMEDIA3, .rshift = 1,}
3253 },
3254 {
3255 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3256 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3257 .name = "MultiMedia1 Channel1",
3258 .info = msm_pcm_channel_input_be_info,
3259 .get = msm_pcm_channel_input_be_get,
3260 .put = msm_pcm_channel_input_be_put,
3261 .private_value = (unsigned long)&(mm1_ch1_enum)
3262 },
3263 {
3264 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3265 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3266 .name = "MultiMedia1 Channel2",
3267 .info = msm_pcm_channel_input_be_info,
3268 .get = msm_pcm_channel_input_be_get,
3269 .put = msm_pcm_channel_input_be_put,
3270 .private_value = (unsigned long)&(mm1_ch2_enum)
3271 },
3272 {
3273 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3274 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3275 .name = "MultiMedia1 Channel3",
3276 .info = msm_pcm_channel_input_be_info,
3277 .get = msm_pcm_channel_input_be_get,
3278 .put = msm_pcm_channel_input_be_put,
3279 .private_value = (unsigned long)&(mm1_ch3_enum)
3280 },
3281 {
3282 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3283 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3284 .name = "MultiMedia1 Channel4",
3285 .info = msm_pcm_channel_input_be_info,
3286 .get = msm_pcm_channel_input_be_get,
3287 .put = msm_pcm_channel_input_be_put,
3288 .private_value = (unsigned long)&(mm1_ch4_enum)
3289 },
3290 {
3291 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3292 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3293 .name = "MultiMedia1 Channel5",
3294 .info = msm_pcm_channel_input_be_info,
3295 .get = msm_pcm_channel_input_be_get,
3296 .put = msm_pcm_channel_input_be_put,
3297 .private_value = (unsigned long)&(mm1_ch5_enum)
3298 },
3299 {
3300 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3301 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3302 .name = "MultiMedia1 Channel6",
3303 .info = msm_pcm_channel_input_be_info,
3304 .get = msm_pcm_channel_input_be_get,
3305 .put = msm_pcm_channel_input_be_put,
3306 .private_value = (unsigned long)&(mm1_ch6_enum)
3307 },
3308 {
3309 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3310 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3311 .name = "MultiMedia1 Channel7",
3312 .info = msm_pcm_channel_input_be_info,
3313 .get = msm_pcm_channel_input_be_get,
3314 .put = msm_pcm_channel_input_be_put,
3315 .private_value = (unsigned long)&(mm1_ch7_enum)
3316 },
3317 {
3318 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3319 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3320 .name = "MultiMedia1 Channel8",
3321 .info = msm_pcm_channel_input_be_info,
3322 .get = msm_pcm_channel_input_be_get,
3323 .put = msm_pcm_channel_input_be_put,
3324 .private_value = (unsigned long)&(mm1_ch8_enum)
3325 },
3326};
3327static int msm_ec_ref_ch_get(struct snd_kcontrol *kcontrol,
3328 struct snd_ctl_elem_value *ucontrol)
3329{
3330 ucontrol->value.integer.value[0] = msm_ec_ref_ch;
3331 pr_debug("%s: msm_ec_ref_ch = %ld\n", __func__,
3332 ucontrol->value.integer.value[0]);
3333 return 0;
3334}
3335
3336static int msm_ec_ref_ch_put(struct snd_kcontrol *kcontrol,
3337 struct snd_ctl_elem_value *ucontrol)
3338{
3339 msm_ec_ref_ch = ucontrol->value.integer.value[0];
3340 pr_debug("%s: msm_ec_ref_ch = %d\n", __func__, msm_ec_ref_ch);
3341 adm_num_ec_ref_rx_chans(msm_ec_ref_ch);
3342 return 0;
3343}
3344
3345static const char *const ec_ref_ch_text[] = {"Zero", "One", "Two", "Three",
3346 "Four", "Five", "Six", "Seven", "Eight"};
3347
3348static int msm_ec_ref_bit_format_get(struct snd_kcontrol *kcontrol,
3349 struct snd_ctl_elem_value *ucontrol)
3350{
3351 switch (msm_ec_ref_bit_format) {
3352 case SNDRV_PCM_FORMAT_S24_LE:
3353 ucontrol->value.integer.value[0] = 2;
3354 break;
3355 case SNDRV_PCM_FORMAT_S16_LE:
3356 ucontrol->value.integer.value[0] = 1;
3357 break;
3358 default:
3359 ucontrol->value.integer.value[0] = 0;
3360 break;
3361 }
3362 pr_debug("%s: msm_ec_ref_bit_format = %ld\n",
3363 __func__, ucontrol->value.integer.value[0]);
3364 return 0;
3365}
3366
3367static int msm_ec_ref_bit_format_put(struct snd_kcontrol *kcontrol,
3368 struct snd_ctl_elem_value *ucontrol)
3369{
3370 u16 bit_width = 0;
3371
3372 switch (ucontrol->value.integer.value[0]) {
3373 case 2:
3374 msm_ec_ref_bit_format = SNDRV_PCM_FORMAT_S24_LE;
3375 break;
3376 case 1:
3377 msm_ec_ref_bit_format = SNDRV_PCM_FORMAT_S16_LE;
3378 break;
3379 default:
3380 msm_ec_ref_bit_format = 0;
3381 break;
3382 }
3383
3384 if (msm_ec_ref_bit_format == SNDRV_PCM_FORMAT_S16_LE)
3385 bit_width = 16;
3386 else if (msm_ec_ref_bit_format == SNDRV_PCM_FORMAT_S24_LE)
3387 bit_width = 24;
3388
3389 pr_debug("%s: msm_ec_ref_bit_format = %d\n",
3390 __func__, msm_ec_ref_bit_format);
3391 adm_ec_ref_rx_bit_width(bit_width);
3392 return 0;
3393}
3394
3395static char const *ec_ref_bit_format_text[] = {"0", "S16_LE", "S24_LE"};
3396
3397static int msm_ec_ref_rate_get(struct snd_kcontrol *kcontrol,
3398 struct snd_ctl_elem_value *ucontrol)
3399{
3400 ucontrol->value.integer.value[0] = msm_ec_ref_sampling_rate;
3401 pr_debug("%s: msm_ec_ref_sampling_rate = %ld\n",
3402 __func__, ucontrol->value.integer.value[0]);
3403 return 0;
3404}
3405
3406static int msm_ec_ref_rate_put(struct snd_kcontrol *kcontrol,
3407 struct snd_ctl_elem_value *ucontrol)
3408{
3409 switch (ucontrol->value.integer.value[0]) {
3410 case 0:
3411 msm_ec_ref_sampling_rate = 0;
3412 break;
3413 case 1:
3414 msm_ec_ref_sampling_rate = 8000;
3415 break;
3416 case 2:
3417 msm_ec_ref_sampling_rate = 16000;
3418 break;
3419 case 3:
3420 msm_ec_ref_sampling_rate = 32000;
3421 break;
3422 case 4:
3423 msm_ec_ref_sampling_rate = 44100;
3424 break;
3425 case 5:
3426 msm_ec_ref_sampling_rate = 48000;
3427 break;
3428 case 6:
3429 msm_ec_ref_sampling_rate = 96000;
3430 break;
3431 case 7:
3432 msm_ec_ref_sampling_rate = 192000;
3433 break;
3434 case 8:
3435 msm_ec_ref_sampling_rate = 384000;
3436 break;
3437 default:
3438 msm_ec_ref_sampling_rate = 48000;
3439 break;
3440 }
3441 pr_debug("%s: msm_ec_ref_sampling_rate = %d\n",
3442 __func__, msm_ec_ref_sampling_rate);
3443 adm_ec_ref_rx_sampling_rate(msm_ec_ref_sampling_rate);
3444 return 0;
3445}
3446
3447static const char *const ec_ref_rate_text[] = {"0", "8000", "16000",
3448 "32000", "44100", "48000", "96000", "192000", "384000"};
3449
3450static const struct soc_enum msm_route_ec_ref_params_enum[] = {
3451 SOC_ENUM_SINGLE_EXT(9, ec_ref_ch_text),
3452 SOC_ENUM_SINGLE_EXT(3, ec_ref_bit_format_text),
3453 SOC_ENUM_SINGLE_EXT(9, ec_ref_rate_text),
3454};
3455
3456static const struct snd_kcontrol_new ec_ref_param_controls[] = {
3457 SOC_ENUM_EXT("EC Reference Channels", msm_route_ec_ref_params_enum[0],
3458 msm_ec_ref_ch_get, msm_ec_ref_ch_put),
3459 SOC_ENUM_EXT("EC Reference Bit Format", msm_route_ec_ref_params_enum[1],
3460 msm_ec_ref_bit_format_get, msm_ec_ref_bit_format_put),
3461 SOC_ENUM_EXT("EC Reference SampleRate", msm_route_ec_ref_params_enum[2],
3462 msm_ec_ref_rate_get, msm_ec_ref_rate_put),
3463};
3464
3465static int msm_routing_ec_ref_rx_get(struct snd_kcontrol *kcontrol,
3466 struct snd_ctl_elem_value *ucontrol)
3467{
3468 pr_debug("%s: ec_ref_rx = %d", __func__, msm_route_ec_ref_rx);
3469 mutex_lock(&routing_lock);
3470 ucontrol->value.integer.value[0] = msm_route_ec_ref_rx;
3471 mutex_unlock(&routing_lock);
3472 return 0;
3473}
3474
3475static int msm_routing_ec_ref_rx_put(struct snd_kcontrol *kcontrol,
3476 struct snd_ctl_elem_value *ucontrol)
3477{
3478 int ec_ref_port_id;
Asish Bhattacharya34504582017-08-08 12:55:01 +05303479 struct snd_soc_dapm_widget *widget =
3480 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303481 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
3482 struct snd_soc_dapm_update *update = NULL;
3483
3484
3485 mutex_lock(&routing_lock);
3486 switch (ucontrol->value.integer.value[0]) {
3487 case 0:
3488 msm_route_ec_ref_rx = 0;
3489 ec_ref_port_id = AFE_PORT_INVALID;
3490 break;
3491 case 1:
3492 msm_route_ec_ref_rx = 1;
3493 ec_ref_port_id = SLIMBUS_0_RX;
3494 break;
3495 case 2:
3496 msm_route_ec_ref_rx = 2;
3497 ec_ref_port_id = AFE_PORT_ID_PRIMARY_MI2S_RX;
3498 break;
3499 case 3:
3500 msm_route_ec_ref_rx = 3;
3501 ec_ref_port_id = AFE_PORT_ID_PRIMARY_MI2S_TX;
3502 break;
3503 case 4:
3504 msm_route_ec_ref_rx = 4;
3505 ec_ref_port_id = AFE_PORT_ID_SECONDARY_MI2S_TX;
3506 break;
3507 case 5:
3508 msm_route_ec_ref_rx = 5;
3509 ec_ref_port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
3510 break;
3511 case 6:
3512 msm_route_ec_ref_rx = 6;
3513 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_MI2S_TX;
3514 break;
3515 case 7:
3516 msm_route_ec_ref_rx = 7;
3517 ec_ref_port_id = AFE_PORT_ID_SECONDARY_MI2S_RX;
3518 break;
3519 case 9:
3520 msm_route_ec_ref_rx = 9;
3521 ec_ref_port_id = SLIMBUS_5_RX;
3522 break;
3523 case 10:
3524 msm_route_ec_ref_rx = 10;
3525 ec_ref_port_id = SLIMBUS_1_TX;
3526 break;
3527 case 11:
3528 msm_route_ec_ref_rx = 11;
3529 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_TDM_TX_1;
3530 break;
3531 case 12:
3532 msm_route_ec_ref_rx = 12;
3533 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_TDM_RX;
3534 break;
3535 case 13:
3536 msm_route_ec_ref_rx = 13;
3537 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_TDM_RX_1;
3538 break;
3539 case 14:
3540 msm_route_ec_ref_rx = 14;
3541 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_TDM_RX_2;
3542 break;
3543 case 15:
3544 msm_route_ec_ref_rx = 15;
3545 ec_ref_port_id = SLIMBUS_6_RX;
3546 break;
3547 case 16:
3548 msm_route_ec_ref_rx = 16;
3549 ec_ref_port_id = AFE_PORT_ID_TERTIARY_MI2S_RX;
3550 break;
3551 case 17:
3552 msm_route_ec_ref_rx = 17;
3553 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_MI2S_RX;
3554 break;
3555 case 18:
3556 msm_route_ec_ref_rx = 18;
3557 ec_ref_port_id = AFE_PORT_ID_TERTIARY_TDM_TX;
3558 break;
3559 case 19:
3560 msm_route_ec_ref_rx = 19;
3561 ec_ref_port_id = AFE_PORT_ID_USB_RX;
3562 break;
3563 case 20:
3564 msm_route_ec_ref_rx = 20;
3565 ec_ref_port_id = AFE_PORT_ID_INT0_MI2S_RX;
3566 break;
3567 case 21:
3568 msm_route_ec_ref_rx = 21;
3569 ec_ref_port_id = AFE_PORT_ID_INT4_MI2S_RX;
3570 break;
3571 case 22:
3572 msm_route_ec_ref_rx = 22;
3573 ec_ref_port_id = AFE_PORT_ID_INT3_MI2S_TX;
3574 break;
3575 default:
3576 msm_route_ec_ref_rx = 0; /* NONE */
3577 pr_err("%s EC ref rx %ld not valid\n",
3578 __func__, ucontrol->value.integer.value[0]);
3579 ec_ref_port_id = AFE_PORT_INVALID;
3580 break;
3581 }
3582 adm_ec_ref_rx_id(ec_ref_port_id);
3583 pr_debug("%s: msm_route_ec_ref_rx = %d\n",
3584 __func__, msm_route_ec_ref_rx);
3585 mutex_unlock(&routing_lock);
3586 snd_soc_dapm_mux_update_power(widget->dapm, kcontrol,
3587 msm_route_ec_ref_rx, e, update);
3588 return 0;
3589}
3590
3591static const char *const ec_ref_rx[] = { "None", "SLIM_RX", "I2S_RX",
3592 "PRI_MI2S_TX", "SEC_MI2S_TX",
3593 "TERT_MI2S_TX", "QUAT_MI2S_TX", "SEC_I2S_RX", "PROXY_RX",
3594 "SLIM_5_RX", "SLIM_1_TX", "QUAT_TDM_TX_1",
3595 "QUAT_TDM_RX_0", "QUAT_TDM_RX_1", "QUAT_TDM_RX_2", "SLIM_6_RX",
3596 "TERT_MI2S_RX", "QUAT_MI2S_RX", "TERT_TDM_TX_0", "USB_AUDIO_RX",
3597 "INT0_MI2S_RX", "INT4_MI2S_RX", "INT3_MI2S_TX"};
3598
3599static const struct soc_enum msm_route_ec_ref_rx_enum[] = {
3600 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(ec_ref_rx), ec_ref_rx),
3601};
3602
3603static const struct snd_kcontrol_new ext_ec_ref_mux_ul1 =
3604 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL1 MUX Mux",
3605 msm_route_ec_ref_rx_enum[0],
3606 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3607
3608static const struct snd_kcontrol_new ext_ec_ref_mux_ul2 =
3609 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL2 MUX Mux",
3610 msm_route_ec_ref_rx_enum[0],
3611 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3612
3613static const struct snd_kcontrol_new ext_ec_ref_mux_ul3 =
3614 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL3 MUX Mux",
3615 msm_route_ec_ref_rx_enum[0],
3616 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3617
3618static const struct snd_kcontrol_new ext_ec_ref_mux_ul4 =
3619 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL4 MUX Mux",
3620 msm_route_ec_ref_rx_enum[0],
3621 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3622
3623static const struct snd_kcontrol_new ext_ec_ref_mux_ul5 =
3624 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL5 MUX Mux",
3625 msm_route_ec_ref_rx_enum[0],
3626 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3627
3628static const struct snd_kcontrol_new ext_ec_ref_mux_ul6 =
3629 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL6 MUX Mux",
3630 msm_route_ec_ref_rx_enum[0],
3631 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3632
3633static const struct snd_kcontrol_new ext_ec_ref_mux_ul8 =
3634 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL8 MUX Mux",
3635 msm_route_ec_ref_rx_enum[0],
3636 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3637
3638static const struct snd_kcontrol_new ext_ec_ref_mux_ul9 =
3639 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL9 MUX Mux",
3640 msm_route_ec_ref_rx_enum[0],
3641 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3642
Asish Bhattacharya34504582017-08-08 12:55:01 +05303643static const struct snd_kcontrol_new ext_ec_ref_mux_ul16 =
3644 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL16 MUX Mux",
3645 msm_route_ec_ref_rx_enum[0],
3646 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3647
Laxminath Kasam38070be2017-08-17 18:21:59 +05303648static const struct snd_kcontrol_new ext_ec_ref_mux_ul10 =
3649 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL10 MUX Mux",
3650 msm_route_ec_ref_rx_enum[0],
3651 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3652
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303653static const struct snd_kcontrol_new ext_ec_ref_mux_ul17 =
3654 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL17 MUX Mux",
3655 msm_route_ec_ref_rx_enum[0],
3656 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3657
3658static const struct snd_kcontrol_new ext_ec_ref_mux_ul18 =
3659 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL18 MUX Mux",
3660 msm_route_ec_ref_rx_enum[0],
3661 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3662
3663static const struct snd_kcontrol_new ext_ec_ref_mux_ul19 =
3664 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL19 MUX Mux",
3665 msm_route_ec_ref_rx_enum[0],
3666 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3667
3668static int msm_routing_ext_ec_get(struct snd_kcontrol *kcontrol,
3669 struct snd_ctl_elem_value *ucontrol)
3670{
3671 pr_debug("%s: ext_ec_ref_rx = %x\n", __func__, msm_route_ext_ec_ref);
3672
3673 mutex_lock(&routing_lock);
3674 ucontrol->value.integer.value[0] = msm_route_ext_ec_ref;
3675 mutex_unlock(&routing_lock);
3676 return 0;
3677}
3678
3679static int msm_routing_ext_ec_put(struct snd_kcontrol *kcontrol,
3680 struct snd_ctl_elem_value *ucontrol)
3681{
Asish Bhattacharya34504582017-08-08 12:55:01 +05303682 struct snd_soc_dapm_widget *widget =
3683 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303684 int mux = ucontrol->value.enumerated.item[0];
3685 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
3686 int ret = 1;
3687 bool state = true;
3688 uint16_t ext_ec_ref_port_id;
3689 struct snd_soc_dapm_update *update = NULL;
3690
3691 if (mux >= e->items) {
3692 pr_err("%s: Invalid mux value %d\n", __func__, mux);
3693 return -EINVAL;
3694 }
3695
3696 mutex_lock(&routing_lock);
3697 msm_route_ext_ec_ref = ucontrol->value.integer.value[0];
3698
3699 switch (msm_route_ext_ec_ref) {
3700 case EXT_EC_REF_PRI_MI2S_TX:
3701 ext_ec_ref_port_id = AFE_PORT_ID_PRIMARY_MI2S_TX;
3702 break;
3703 case EXT_EC_REF_SEC_MI2S_TX:
3704 ext_ec_ref_port_id = AFE_PORT_ID_SECONDARY_MI2S_TX;
3705 break;
3706 case EXT_EC_REF_TERT_MI2S_TX:
3707 ext_ec_ref_port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
3708 break;
3709 case EXT_EC_REF_QUAT_MI2S_TX:
3710 ext_ec_ref_port_id = AFE_PORT_ID_QUATERNARY_MI2S_TX;
3711 break;
3712 case EXT_EC_REF_QUIN_MI2S_TX:
3713 ext_ec_ref_port_id = AFE_PORT_ID_QUINARY_MI2S_TX;
3714 break;
3715 case EXT_EC_REF_SLIM_1_TX:
3716 ext_ec_ref_port_id = SLIMBUS_1_TX;
3717 break;
3718 case EXT_EC_REF_NONE:
3719 default:
3720 ext_ec_ref_port_id = AFE_PORT_INVALID;
3721 state = false;
3722 break;
3723 }
3724
3725 pr_debug("%s: val = %d ext_ec_ref_port_id = 0x%0x state = %d\n",
3726 __func__, msm_route_ext_ec_ref, ext_ec_ref_port_id, state);
3727
3728 if (!voc_set_ext_ec_ref_port_id(ext_ec_ref_port_id, state)) {
3729 mutex_unlock(&routing_lock);
3730 snd_soc_dapm_mux_update_power(widget->dapm, kcontrol, mux, e,
3731 update);
3732 } else {
3733 ret = -EINVAL;
3734 mutex_unlock(&routing_lock);
3735 }
3736 return ret;
3737}
3738
3739static const char * const ext_ec_ref_rx[] = {"NONE", "PRI_MI2S_TX",
3740 "SEC_MI2S_TX", "TERT_MI2S_TX",
3741 "QUAT_MI2S_TX", "QUIN_MI2S_TX",
3742 "SLIM_1_TX"};
3743
3744static const struct soc_enum msm_route_ext_ec_ref_rx_enum[] = {
3745 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(ext_ec_ref_rx), ext_ec_ref_rx),
3746};
3747
3748static const struct snd_kcontrol_new voc_ext_ec_mux =
3749 SOC_DAPM_ENUM_EXT("VOC_EXT_EC MUX Mux", msm_route_ext_ec_ref_rx_enum[0],
3750 msm_routing_ext_ec_get, msm_routing_ext_ec_put);
3751
3752
3753static const struct snd_kcontrol_new pri_i2s_rx_mixer_controls[] = {
3754 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_I2S_RX,
3755 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
3756 msm_routing_put_audio_mixer),
3757 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_I2S_RX,
3758 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
3759 msm_routing_put_audio_mixer),
3760 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_I2S_RX,
3761 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
3762 msm_routing_put_audio_mixer),
3763 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_I2S_RX,
3764 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
3765 msm_routing_put_audio_mixer),
3766 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_I2S_RX,
3767 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
3768 msm_routing_put_audio_mixer),
3769 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_I2S_RX,
3770 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
3771 msm_routing_put_audio_mixer),
3772 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_I2S_RX,
3773 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
3774 msm_routing_put_audio_mixer),
3775 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_I2S_RX,
3776 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
3777 msm_routing_put_audio_mixer),
3778 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_I2S_RX,
3779 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
3780 msm_routing_put_audio_mixer),
3781 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_I2S_RX,
3782 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
3783 msm_routing_put_audio_mixer),
3784 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_I2S_RX,
3785 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
3786 msm_routing_put_audio_mixer),
3787 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_I2S_RX,
3788 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
3789 msm_routing_put_audio_mixer),
3790 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_I2S_RX,
3791 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
3792 msm_routing_put_audio_mixer),
3793 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_I2S_RX,
3794 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
3795 msm_routing_put_audio_mixer),
3796 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_I2S_RX,
3797 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
3798 msm_routing_put_audio_mixer),
3799 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_I2S_RX,
3800 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
3801 msm_routing_put_audio_mixer),
3802 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_PRI_I2S_RX,
3803 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
3804 msm_routing_put_audio_mixer),
3805 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_PRI_I2S_RX,
3806 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
3807 msm_routing_put_audio_mixer),
3808 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_PRI_I2S_RX,
3809 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
3810 msm_routing_put_audio_mixer),
3811};
3812
3813static const struct snd_kcontrol_new sec_i2s_rx_mixer_controls[] = {
3814 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_I2S_RX,
3815 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
3816 msm_routing_put_audio_mixer),
3817 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_I2S_RX,
3818 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
3819 msm_routing_put_audio_mixer),
3820 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_I2S_RX,
3821 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
3822 msm_routing_put_audio_mixer),
3823 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_I2S_RX,
3824 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
3825 msm_routing_put_audio_mixer),
3826 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_I2S_RX,
3827 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
3828 msm_routing_put_audio_mixer),
3829 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_I2S_RX,
3830 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
3831 msm_routing_put_audio_mixer),
3832 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_I2S_RX,
3833 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
3834 msm_routing_put_audio_mixer),
3835 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_I2S_RX,
3836 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
3837 msm_routing_put_audio_mixer),
3838 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_I2S_RX,
3839 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
3840 msm_routing_put_audio_mixer),
3841 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_I2S_RX,
3842 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
3843 msm_routing_put_audio_mixer),
3844 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_I2S_RX,
3845 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
3846 msm_routing_put_audio_mixer),
3847 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_I2S_RX,
3848 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
3849 msm_routing_put_audio_mixer),
3850 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_I2S_RX,
3851 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
3852 msm_routing_put_audio_mixer),
3853 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_I2S_RX,
3854 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
3855 msm_routing_put_audio_mixer),
3856 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_I2S_RX,
3857 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
3858 msm_routing_put_audio_mixer),
3859 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_I2S_RX,
3860 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
3861 msm_routing_put_audio_mixer),
3862 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SEC_I2S_RX,
3863 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
3864 msm_routing_put_audio_mixer),
3865 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SEC_I2S_RX,
3866 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
3867 msm_routing_put_audio_mixer),
3868 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SEC_I2S_RX,
3869 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
3870 msm_routing_put_audio_mixer),
3871};
3872
3873static const struct snd_kcontrol_new spdif_rx_mixer_controls[] = {
3874 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SPDIF_RX,
3875 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
3876 msm_routing_put_audio_mixer),
3877 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SPDIF_RX,
3878 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
3879 msm_routing_put_audio_mixer),
3880 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SPDIF_RX,
3881 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
3882 msm_routing_put_audio_mixer),
3883 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SPDIF_RX,
3884 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
3885 msm_routing_put_audio_mixer),
3886 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SPDIF_RX,
3887 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
3888 msm_routing_put_audio_mixer),
3889 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SPDIF_RX,
3890 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
3891 msm_routing_put_audio_mixer),
3892 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SPDIF_RX,
3893 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
3894 msm_routing_put_audio_mixer),
3895 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SPDIF_RX,
3896 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
3897 msm_routing_put_audio_mixer),
3898 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SPDIF_RX,
3899 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
3900 msm_routing_put_audio_mixer),
3901 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SPDIF_RX,
3902 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
3903 msm_routing_put_audio_mixer),
3904 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SPDIF_RX,
3905 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
3906 msm_routing_put_audio_mixer),
3907 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SPDIF_RX,
3908 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
3909 msm_routing_put_audio_mixer),
3910 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SPDIF_RX,
3911 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
3912 msm_routing_put_audio_mixer),
3913 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SPDIF_RX,
3914 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
3915 msm_routing_put_audio_mixer),
3916 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SPDIF_RX,
3917 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
3918 msm_routing_put_audio_mixer),
3919 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SPDIF_RX,
3920 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
3921 msm_routing_put_audio_mixer),
3922 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SPDIF_RX,
3923 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
3924 msm_routing_put_audio_mixer),
3925 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SPDIF_RX,
3926 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
3927 msm_routing_put_audio_mixer),
3928 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SPDIF_RX,
3929 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
3930 msm_routing_put_audio_mixer),
3931
3932};
3933
3934static const struct snd_kcontrol_new slimbus_2_rx_mixer_controls[] = {
3935 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_2_RX,
3936 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
3937 msm_routing_put_audio_mixer),
3938 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_2_RX,
3939 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
3940 msm_routing_put_audio_mixer),
3941 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SLIMBUS_2_RX,
3942 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
3943 msm_routing_put_audio_mixer),
3944 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SLIMBUS_2_RX,
3945 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
3946 msm_routing_put_audio_mixer),
3947 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_2_RX,
3948 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
3949 msm_routing_put_audio_mixer),
3950 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SLIMBUS_2_RX,
3951 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
3952 msm_routing_put_audio_mixer),
3953 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SLIMBUS_2_RX,
3954 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
3955 msm_routing_put_audio_mixer),
3956 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SLIMBUS_2_RX,
3957 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
3958 msm_routing_put_audio_mixer),
3959 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_2_RX,
3960 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
3961 msm_routing_put_audio_mixer),
3962 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SLIMBUS_2_RX,
3963 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
3964 msm_routing_put_audio_mixer),
3965 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SLIMBUS_2_RX,
3966 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
3967 msm_routing_put_audio_mixer),
3968 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SLIMBUS_2_RX,
3969 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
3970 msm_routing_put_audio_mixer),
3971 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SLIMBUS_2_RX,
3972 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
3973 msm_routing_put_audio_mixer),
3974 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SLIMBUS_2_RX,
3975 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
3976 msm_routing_put_audio_mixer),
3977 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SLIMBUS_2_RX,
3978 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
3979 msm_routing_put_audio_mixer),
3980 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SLIMBUS_2_RX,
3981 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
3982 msm_routing_put_audio_mixer),
3983};
3984
3985static const struct snd_kcontrol_new slimbus_5_rx_mixer_controls[] = {
3986 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_5_RX,
3987 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
3988 msm_routing_put_audio_mixer),
3989 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_5_RX,
3990 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
3991 msm_routing_put_audio_mixer),
3992 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SLIMBUS_5_RX,
3993 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
3994 msm_routing_put_audio_mixer),
3995 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SLIMBUS_5_RX,
3996 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
3997 msm_routing_put_audio_mixer),
3998 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_5_RX,
3999 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4000 msm_routing_put_audio_mixer),
4001 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4002 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4003 msm_routing_put_audio_mixer),
4004 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4005 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4006 msm_routing_put_audio_mixer),
4007 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4008 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4009 msm_routing_put_audio_mixer),
4010 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4011 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4012 msm_routing_put_audio_mixer),
4013 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4014 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4015 msm_routing_put_audio_mixer),
4016 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4017 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4018 msm_routing_put_audio_mixer),
4019 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4020 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4021 msm_routing_put_audio_mixer),
4022 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4023 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4024 msm_routing_put_audio_mixer),
4025 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4026 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4027 msm_routing_put_audio_mixer),
4028 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4029 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4030 msm_routing_put_audio_mixer),
4031 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4032 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4033 msm_routing_put_audio_mixer),
4034 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4035 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4036 msm_routing_put_audio_mixer),
4037 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4038 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4039 msm_routing_put_audio_mixer),
4040 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4041 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4042 msm_routing_put_audio_mixer),
4043};
4044
4045static const struct snd_kcontrol_new slimbus_rx_mixer_controls[] = {
4046 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4047 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4048 msm_routing_put_audio_mixer),
4049 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4050 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4051 msm_routing_put_audio_mixer),
4052 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4053 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4054 msm_routing_put_audio_mixer),
4055 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4056 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4057 msm_routing_put_audio_mixer),
4058 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4059 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4060 msm_routing_put_audio_mixer),
4061 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4062 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4063 msm_routing_put_audio_mixer),
4064 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4065 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4066 msm_routing_put_audio_mixer),
4067 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4068 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4069 msm_routing_put_audio_mixer),
4070 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4071 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4072 msm_routing_put_audio_mixer),
4073 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4074 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4075 msm_routing_put_audio_mixer),
4076 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4077 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4078 msm_routing_put_audio_mixer),
4079 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4080 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4081 msm_routing_put_audio_mixer),
4082 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4083 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4084 msm_routing_put_audio_mixer),
4085 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4086 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4087 msm_routing_put_audio_mixer),
4088 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4089 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4090 msm_routing_put_audio_mixer),
4091 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4092 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4093 msm_routing_put_audio_mixer),
4094 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4095 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4096 msm_routing_put_audio_mixer),
4097 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4098 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4099 msm_routing_put_audio_mixer),
4100 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4101 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4102 msm_routing_put_audio_mixer),
4103};
4104
4105static const struct snd_kcontrol_new mi2s_rx_mixer_controls[] = {
4106 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_MI2S_RX,
4107 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4108 msm_routing_put_audio_mixer),
4109 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_MI2S_RX,
4110 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4111 msm_routing_put_audio_mixer),
4112 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_MI2S_RX,
4113 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4114 msm_routing_put_audio_mixer),
4115 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_MI2S_RX,
4116 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4117 msm_routing_put_audio_mixer),
4118 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_MI2S_RX,
4119 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4120 msm_routing_put_audio_mixer),
4121 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_MI2S_RX,
4122 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4123 msm_routing_put_audio_mixer),
4124 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_MI2S_RX,
4125 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4126 msm_routing_put_audio_mixer),
4127 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_MI2S_RX,
4128 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4129 msm_routing_put_audio_mixer),
4130 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_MI2S_RX,
4131 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4132 msm_routing_put_audio_mixer),
4133 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_MI2S_RX,
4134 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4135 msm_routing_put_audio_mixer),
4136 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_MI2S_RX,
4137 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4138 msm_routing_put_audio_mixer),
4139 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_MI2S_RX,
4140 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4141 msm_routing_put_audio_mixer),
4142 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_MI2S_RX,
4143 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4144 msm_routing_put_audio_mixer),
4145 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_MI2S_RX,
4146 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4147 msm_routing_put_audio_mixer),
4148 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_MI2S_RX,
4149 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4150 msm_routing_put_audio_mixer),
4151 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_MI2S_RX,
4152 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4153 msm_routing_put_audio_mixer),
4154 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_MI2S_RX,
4155 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4156 msm_routing_put_audio_mixer),
4157 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_MI2S_RX,
4158 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4159 msm_routing_put_audio_mixer),
4160 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_MI2S_RX,
4161 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4162 msm_routing_put_audio_mixer),
4163};
4164
4165static const struct snd_kcontrol_new quaternary_mi2s_rx_mixer_controls[] = {
4166 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4167 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4168 msm_routing_put_audio_mixer),
4169 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4170 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4171 msm_routing_put_audio_mixer),
4172 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4173 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4174 msm_routing_put_audio_mixer),
4175 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4176 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4177 msm_routing_put_audio_mixer),
4178 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4179 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4180 msm_routing_put_audio_mixer),
4181 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4182 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4183 msm_routing_put_audio_mixer),
4184 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4185 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4186 msm_routing_put_audio_mixer),
4187 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4188 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4189 msm_routing_put_audio_mixer),
4190 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4191 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4192 msm_routing_put_audio_mixer),
4193 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4194 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4195 msm_routing_put_audio_mixer),
4196 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4197 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4198 msm_routing_put_audio_mixer),
4199 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4200 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4201 msm_routing_put_audio_mixer),
4202 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4203 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4204 msm_routing_put_audio_mixer),
4205 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4206 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4207 msm_routing_put_audio_mixer),
4208 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4209 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4210 msm_routing_put_audio_mixer),
4211 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4212 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4213 msm_routing_put_audio_mixer),
4214 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4215 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4216 msm_routing_put_audio_mixer),
4217 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4218 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4219 msm_routing_put_audio_mixer),
4220 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4221 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4222 msm_routing_put_audio_mixer),
4223};
4224
4225static const struct snd_kcontrol_new quinary_mi2s_rx_mixer_controls[] = {
4226 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4227 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4228 msm_routing_put_audio_mixer),
4229 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4230 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4231 msm_routing_put_audio_mixer),
4232 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4233 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4234 msm_routing_put_audio_mixer),
4235 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4236 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4237 msm_routing_put_audio_mixer),
4238 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4239 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4240 msm_routing_put_audio_mixer),
4241 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4242 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4243 msm_routing_put_audio_mixer),
4244 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4245 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4246 msm_routing_put_audio_mixer),
4247 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4248 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4249 msm_routing_put_audio_mixer),
4250 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4251 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4252 msm_routing_put_audio_mixer),
4253 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4254 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4255 msm_routing_put_audio_mixer),
4256 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4257 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4258 msm_routing_put_audio_mixer),
4259 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4260 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4261 msm_routing_put_audio_mixer),
4262 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4263 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4264 msm_routing_put_audio_mixer),
4265 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4266 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4267 msm_routing_put_audio_mixer),
4268 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4269 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4270 msm_routing_put_audio_mixer),
4271 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4272 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4273 msm_routing_put_audio_mixer),
4274 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4275 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4276 msm_routing_put_audio_mixer),
4277 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4278 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4279 msm_routing_put_audio_mixer),
4280 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4281 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4282 msm_routing_put_audio_mixer),
4283};
4284
4285static const struct snd_kcontrol_new tertiary_mi2s_rx_mixer_controls[] = {
4286 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4287 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4288 msm_routing_put_audio_mixer),
4289 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4290 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4291 msm_routing_put_audio_mixer),
4292 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4293 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4294 msm_routing_put_audio_mixer),
4295 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4296 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4297 msm_routing_put_audio_mixer),
4298 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4299 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4300 msm_routing_put_audio_mixer),
4301 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4302 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4303 msm_routing_put_audio_mixer),
4304 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4305 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4306 msm_routing_put_audio_mixer),
4307 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4308 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4309 msm_routing_put_audio_mixer),
4310 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4311 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4312 msm_routing_put_audio_mixer),
4313 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4314 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4315 msm_routing_put_audio_mixer),
4316 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4317 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4318 msm_routing_put_audio_mixer),
4319 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4320 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4321 msm_routing_put_audio_mixer),
4322 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4323 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4324 msm_routing_put_audio_mixer),
4325 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4326 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4327 msm_routing_put_audio_mixer),
4328 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4329 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4330 msm_routing_put_audio_mixer),
4331 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4332 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4333 msm_routing_put_audio_mixer),
4334 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4335 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4336 msm_routing_put_audio_mixer),
4337};
4338
4339static const struct snd_kcontrol_new secondary_mi2s_rx2_mixer_controls[] = {
4340 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SECONDARY_MI2S_RX_SD1,
4341 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4342 msm_routing_put_audio_mixer),
4343};
4344
4345static const struct snd_kcontrol_new secondary_mi2s_rx_mixer_controls[] = {
4346 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4347 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4348 msm_routing_put_audio_mixer),
4349 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4350 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4351 msm_routing_put_audio_mixer),
4352 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4353 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4354 msm_routing_put_audio_mixer),
4355 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4356 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4357 msm_routing_put_audio_mixer),
4358 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4359 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4360 msm_routing_put_audio_mixer),
4361 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4362 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4363 msm_routing_put_audio_mixer),
4364 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SECONDARY_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_SECONDARY_MI2S_RX,
4368 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4369 msm_routing_put_audio_mixer),
4370 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4371 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4372 msm_routing_put_audio_mixer),
4373 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4374 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4375 msm_routing_put_audio_mixer),
4376 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4377 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4378 msm_routing_put_audio_mixer),
4379 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4380 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4381 msm_routing_put_audio_mixer),
4382 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4383 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4384 msm_routing_put_audio_mixer),
4385 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4386 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4387 msm_routing_put_audio_mixer),
4388 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4389 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4390 msm_routing_put_audio_mixer),
4391 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4392 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4393 msm_routing_put_audio_mixer),
4394 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4395 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4396 msm_routing_put_audio_mixer),
4397 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4398 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4399 msm_routing_put_audio_mixer),
4400 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4401 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4402 msm_routing_put_audio_mixer),
4403};
4404
4405static const struct snd_kcontrol_new primary_mi2s_rx_mixer_controls[] = {
4406 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_MI2S_RX,
4407 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4408 msm_routing_put_audio_mixer),
4409 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_MI2S_RX,
4410 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4411 msm_routing_put_audio_mixer),
4412 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_MI2S_RX,
4413 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4414 msm_routing_put_audio_mixer),
4415 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_MI2S_RX,
4416 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4417 msm_routing_put_audio_mixer),
4418 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_MI2S_RX,
4419 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4420 msm_routing_put_audio_mixer),
4421 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_MI2S_RX,
4422 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4423 msm_routing_put_audio_mixer),
4424 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_MI2S_RX,
4425 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4426 msm_routing_put_audio_mixer),
4427 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_MI2S_RX,
4428 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4429 msm_routing_put_audio_mixer),
4430 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_MI2S_RX,
4431 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4432 msm_routing_put_audio_mixer),
4433 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_MI2S_RX,
4434 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4435 msm_routing_put_audio_mixer),
4436 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_MI2S_RX,
4437 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4438 msm_routing_put_audio_mixer),
4439 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_MI2S_RX,
4440 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4441 msm_routing_put_audio_mixer),
4442 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_MI2S_RX,
4443 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4444 msm_routing_put_audio_mixer),
4445 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_MI2S_RX,
4446 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4447 msm_routing_put_audio_mixer),
4448 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_MI2S_RX,
4449 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4450 msm_routing_put_audio_mixer),
4451 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_MI2S_RX,
4452 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4453 msm_routing_put_audio_mixer),
4454 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_PRI_MI2S_RX,
4455 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4456 msm_routing_put_audio_mixer),
4457 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_PRI_MI2S_RX,
4458 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4459 msm_routing_put_audio_mixer),
4460 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_PRI_MI2S_RX,
4461 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4462 msm_routing_put_audio_mixer),
4463};
4464
4465static const struct snd_kcontrol_new int0_mi2s_rx_mixer_controls[] = {
4466 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_INT0_MI2S_RX,
4467 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4468 msm_routing_put_audio_mixer),
4469 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_INT0_MI2S_RX,
4470 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4471 msm_routing_put_audio_mixer),
4472 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_INT0_MI2S_RX,
4473 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4474 msm_routing_put_audio_mixer),
4475 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_INT0_MI2S_RX,
4476 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4477 msm_routing_put_audio_mixer),
4478 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_INT0_MI2S_RX,
4479 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4480 msm_routing_put_audio_mixer),
4481 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_INT0_MI2S_RX,
4482 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4483 msm_routing_put_audio_mixer),
4484 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_INT0_MI2S_RX,
4485 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4486 msm_routing_put_audio_mixer),
4487 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_INT0_MI2S_RX,
4488 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4489 msm_routing_put_audio_mixer),
4490 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_INT0_MI2S_RX,
4491 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4492 msm_routing_put_audio_mixer),
4493 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_INT0_MI2S_RX,
4494 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4495 msm_routing_put_audio_mixer),
4496 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_INT0_MI2S_RX,
4497 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4498 msm_routing_put_audio_mixer),
4499 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_INT0_MI2S_RX,
4500 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4501 msm_routing_put_audio_mixer),
4502 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_INT0_MI2S_RX,
4503 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4504 msm_routing_put_audio_mixer),
4505 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_INT0_MI2S_RX,
4506 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4507 msm_routing_put_audio_mixer),
4508 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_INT0_MI2S_RX,
4509 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4510 msm_routing_put_audio_mixer),
4511 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_INT0_MI2S_RX,
4512 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4513 msm_routing_put_audio_mixer),
4514};
4515
4516static const struct snd_kcontrol_new int4_mi2s_rx_mixer_controls[] = {
4517 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_INT4_MI2S_RX,
4518 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4519 msm_routing_put_audio_mixer),
4520 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_INT4_MI2S_RX,
4521 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4522 msm_routing_put_audio_mixer),
4523 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_INT4_MI2S_RX,
4524 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4525 msm_routing_put_audio_mixer),
4526 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_INT4_MI2S_RX,
4527 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4528 msm_routing_put_audio_mixer),
4529 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_INT4_MI2S_RX,
4530 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4531 msm_routing_put_audio_mixer),
4532 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_INT4_MI2S_RX,
4533 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4534 msm_routing_put_audio_mixer),
4535 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_INT4_MI2S_RX,
4536 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4537 msm_routing_put_audio_mixer),
4538 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_INT4_MI2S_RX,
4539 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4540 msm_routing_put_audio_mixer),
4541 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_INT4_MI2S_RX,
4542 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4543 msm_routing_put_audio_mixer),
4544 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_INT4_MI2S_RX,
4545 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4546 msm_routing_put_audio_mixer),
4547 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_INT4_MI2S_RX,
4548 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4549 msm_routing_put_audio_mixer),
4550 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_INT4_MI2S_RX,
4551 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4552 msm_routing_put_audio_mixer),
4553 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_INT4_MI2S_RX,
4554 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4555 msm_routing_put_audio_mixer),
4556 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_INT4_MI2S_RX,
4557 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4558 msm_routing_put_audio_mixer),
4559 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_INT4_MI2S_RX,
4560 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4561 msm_routing_put_audio_mixer),
4562 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_INT4_MI2S_RX,
4563 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4564 msm_routing_put_audio_mixer),
4565};
4566
4567static const struct snd_kcontrol_new hdmi_mixer_controls[] = {
4568 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_HDMI_RX,
4569 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4570 msm_routing_put_audio_mixer),
4571 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_HDMI_RX,
4572 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4573 msm_routing_put_audio_mixer),
4574 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_HDMI_RX,
4575 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4576 msm_routing_put_audio_mixer),
4577 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_HDMI_RX,
4578 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4579 msm_routing_put_audio_mixer),
4580 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_HDMI_RX,
4581 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4582 msm_routing_put_audio_mixer),
4583 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_HDMI_RX,
4584 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4585 msm_routing_put_audio_mixer),
4586 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_HDMI_RX,
4587 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4588 msm_routing_put_audio_mixer),
4589 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_HDMI_RX,
4590 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4591 msm_routing_put_audio_mixer),
4592 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_HDMI_RX,
4593 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4594 msm_routing_put_audio_mixer),
4595 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_HDMI_RX,
4596 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4597 msm_routing_put_audio_mixer),
4598 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_HDMI_RX,
4599 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4600 msm_routing_put_audio_mixer),
4601 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_HDMI_RX,
4602 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4603 msm_routing_put_audio_mixer),
4604 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_HDMI_RX,
4605 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4606 msm_routing_put_audio_mixer),
4607 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_HDMI_RX,
4608 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4609 msm_routing_put_audio_mixer),
4610 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_HDMI_RX,
4611 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4612 msm_routing_put_audio_mixer),
4613 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_HDMI_RX,
4614 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4615 msm_routing_put_audio_mixer),
4616 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_HDMI_RX,
4617 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4618 msm_routing_put_audio_mixer),
4619 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_HDMI_RX,
4620 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4621 msm_routing_put_audio_mixer),
4622 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_HDMI_RX,
4623 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4624 msm_routing_put_audio_mixer),
4625};
4626
4627static const struct snd_kcontrol_new display_port_mixer_controls[] = {
4628 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4629 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4630 msm_routing_put_audio_mixer),
4631 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4632 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4633 msm_routing_put_audio_mixer),
4634 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4635 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4636 msm_routing_put_audio_mixer),
4637 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4638 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4639 msm_routing_put_audio_mixer),
4640 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4641 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4642 msm_routing_put_audio_mixer),
4643 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4644 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4645 msm_routing_put_audio_mixer),
4646 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4647 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4648 msm_routing_put_audio_mixer),
4649 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4650 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4651 msm_routing_put_audio_mixer),
4652 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4653 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4654 msm_routing_put_audio_mixer),
4655 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4656 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4657 msm_routing_put_audio_mixer),
4658 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4659 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4660 msm_routing_put_audio_mixer),
4661 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4662 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4663 msm_routing_put_audio_mixer),
4664 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4665 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4666 msm_routing_put_audio_mixer),
4667 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4668 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4669 msm_routing_put_audio_mixer),
4670 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4671 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4672 msm_routing_put_audio_mixer),
4673 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4674 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4675 msm_routing_put_audio_mixer),
4676};
4677
4678 /* incall music delivery mixer */
4679static const struct snd_kcontrol_new incall_music_delivery_mixer_controls[] = {
4680 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_VOICE_PLAYBACK_TX,
4681 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4682 msm_routing_put_audio_mixer),
4683 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_VOICE_PLAYBACK_TX,
4684 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4685 msm_routing_put_audio_mixer),
4686 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_VOICE_PLAYBACK_TX,
4687 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4688 msm_routing_put_audio_mixer),
4689 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_VOICE_PLAYBACK_TX,
4690 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4691 msm_routing_put_audio_mixer),
4692};
4693
4694static const struct snd_kcontrol_new incall_music2_delivery_mixer_controls[] = {
4695 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_VOICE2_PLAYBACK_TX,
4696 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4697 msm_routing_put_audio_mixer),
4698 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_VOICE2_PLAYBACK_TX,
4699 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4700 msm_routing_put_audio_mixer),
4701 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_VOICE2_PLAYBACK_TX,
4702 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4703 msm_routing_put_audio_mixer),
4704 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_VOICE2_PLAYBACK_TX,
4705 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4706 msm_routing_put_audio_mixer),
4707};
4708
4709static const struct snd_kcontrol_new slimbus_4_rx_mixer_controls[] = {
4710 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_4_RX,
4711 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4712 msm_routing_put_audio_mixer),
4713 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_4_RX,
4714 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4715 msm_routing_put_audio_mixer),
4716 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_4_RX,
4717 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4718 msm_routing_put_audio_mixer),
4719 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_4_RX,
4720 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4721 msm_routing_put_audio_mixer),
4722};
4723
4724static const struct snd_kcontrol_new slimbus_6_rx_mixer_controls[] = {
4725 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4726 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4727 msm_routing_put_audio_mixer),
4728 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4729 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4730 msm_routing_put_audio_mixer),
4731 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4732 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4733 msm_routing_put_audio_mixer),
4734 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4735 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4736 msm_routing_put_audio_mixer),
4737 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4738 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4739 msm_routing_put_audio_mixer),
4740 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4741 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4742 msm_routing_put_audio_mixer),
4743 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4744 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4745 msm_routing_put_audio_mixer),
4746 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4747 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4748 msm_routing_put_audio_mixer),
4749 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4750 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4751 msm_routing_put_audio_mixer),
4752 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4753 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4754 msm_routing_put_audio_mixer),
4755 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4756 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4757 msm_routing_put_audio_mixer),
4758 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4759 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4760 msm_routing_put_audio_mixer),
4761 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4762 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4763 msm_routing_put_audio_mixer),
4764 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4765 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4766 msm_routing_put_audio_mixer),
4767 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4768 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4769 msm_routing_put_audio_mixer),
4770 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4771 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4772 msm_routing_put_audio_mixer),
4773};
4774
4775static const struct snd_kcontrol_new slimbus_7_rx_mixer_controls[] = {
4776 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4777 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4778 msm_routing_put_audio_mixer),
4779 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4780 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4781 msm_routing_put_audio_mixer),
4782 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4783 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4784 msm_routing_put_audio_mixer),
4785 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4786 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4787 msm_routing_put_audio_mixer),
4788 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4789 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4790 msm_routing_put_audio_mixer),
4791 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4792 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4793 msm_routing_put_audio_mixer),
4794 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4795 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4796 msm_routing_put_audio_mixer),
4797 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4798 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4799 msm_routing_put_audio_mixer),
4800 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4801 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4802 msm_routing_put_audio_mixer),
4803 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4804 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4805 msm_routing_put_audio_mixer),
4806 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4807 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4808 msm_routing_put_audio_mixer),
4809 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4810 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4811 msm_routing_put_audio_mixer),
4812 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4813 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4814 msm_routing_put_audio_mixer),
4815 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4816 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4817 msm_routing_put_audio_mixer),
4818 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4819 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4820 msm_routing_put_audio_mixer),
4821 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4822 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4823 msm_routing_put_audio_mixer),
4824};
4825
4826static const struct snd_kcontrol_new usb_audio_rx_mixer_controls[] = {
4827 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_USB_RX,
4828 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4829 msm_routing_put_audio_mixer),
4830 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_USB_RX,
4831 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4832 msm_routing_put_audio_mixer),
4833 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_USB_RX,
4834 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4835 msm_routing_put_audio_mixer),
4836 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_USB_RX,
4837 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4838 msm_routing_put_audio_mixer),
4839 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_USB_RX,
4840 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4841 msm_routing_put_audio_mixer),
4842 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_USB_RX,
4843 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4844 msm_routing_put_audio_mixer),
4845 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_USB_RX,
4846 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4847 msm_routing_put_audio_mixer),
4848 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_USB_RX,
4849 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4850 msm_routing_put_audio_mixer),
4851 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_USB_RX,
4852 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4853 msm_routing_put_audio_mixer),
4854 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_USB_RX,
4855 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4856 msm_routing_put_audio_mixer),
4857 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_USB_RX,
4858 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4859 msm_routing_put_audio_mixer),
4860 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_USB_RX,
4861 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4862 msm_routing_put_audio_mixer),
4863 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_USB_RX,
4864 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4865 msm_routing_put_audio_mixer),
4866 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_USB_RX,
4867 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4868 msm_routing_put_audio_mixer),
4869 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_USB_RX,
4870 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4871 msm_routing_put_audio_mixer),
4872 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_USB_RX,
4873 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4874 msm_routing_put_audio_mixer),
4875};
4876
4877static const struct snd_kcontrol_new int_bt_sco_rx_mixer_controls[] = {
4878 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4879 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4880 msm_routing_put_audio_mixer),
4881 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4882 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4883 msm_routing_put_audio_mixer),
4884 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4885 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4886 msm_routing_put_audio_mixer),
4887 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4888 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4889 msm_routing_put_audio_mixer),
4890 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4891 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4892 msm_routing_put_audio_mixer),
4893 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4894 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4895 msm_routing_put_audio_mixer),
4896 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4897 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4898 msm_routing_put_audio_mixer),
4899 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4900 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4901 msm_routing_put_audio_mixer),
4902 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4903 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4904 msm_routing_put_audio_mixer),
4905 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4906 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4907 msm_routing_put_audio_mixer),
4908 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4909 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4910 msm_routing_put_audio_mixer),
4911 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4912 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4913 msm_routing_put_audio_mixer),
4914 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4915 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4916 msm_routing_put_audio_mixer),
4917 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4918 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4919 msm_routing_put_audio_mixer),
4920 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4921 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4922 msm_routing_put_audio_mixer),
4923 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4924 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4925 msm_routing_put_audio_mixer),
4926 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4927 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4928 msm_routing_put_audio_mixer),
4929 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4930 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4931 msm_routing_put_audio_mixer),
4932 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4933 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4934 msm_routing_put_audio_mixer),
4935};
4936
4937static const struct snd_kcontrol_new int_bt_a2dp_rx_mixer_controls[] = {
4938 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
4939 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4940 msm_routing_put_audio_mixer),
4941 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
4942 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4943 msm_routing_put_audio_mixer),
4944 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
4945 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4946 msm_routing_put_audio_mixer),
4947 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
4948 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4949 msm_routing_put_audio_mixer),
4950 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
4951 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4952 msm_routing_put_audio_mixer),
4953 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
4954 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4955 msm_routing_put_audio_mixer),
4956 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
4957 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4958 msm_routing_put_audio_mixer),
4959 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
4960 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4961 msm_routing_put_audio_mixer),
4962 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
4963 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4964 msm_routing_put_audio_mixer),
4965 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
4966 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4967 msm_routing_put_audio_mixer),
4968 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
4969 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4970 msm_routing_put_audio_mixer),
4971 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
4972 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4973 msm_routing_put_audio_mixer),
4974 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
4975 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4976 msm_routing_put_audio_mixer),
4977 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
4978 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4979 msm_routing_put_audio_mixer),
4980 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
4981 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4982 msm_routing_put_audio_mixer),
4983 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
4984 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4985 msm_routing_put_audio_mixer),
4986};
4987
4988static const struct snd_kcontrol_new int_fm_rx_mixer_controls[] = {
4989 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_INT_FM_RX,
4990 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4991 msm_routing_put_audio_mixer),
4992 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_INT_FM_RX,
4993 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4994 msm_routing_put_audio_mixer),
4995 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_INT_FM_RX,
4996 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4997 msm_routing_put_audio_mixer),
4998 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_INT_FM_RX,
4999 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5000 msm_routing_put_audio_mixer),
5001 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_INT_FM_RX,
5002 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5003 msm_routing_put_audio_mixer),
5004 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_INT_FM_RX,
5005 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5006 msm_routing_put_audio_mixer),
5007 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_INT_FM_RX,
5008 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5009 msm_routing_put_audio_mixer),
5010 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_INT_FM_RX,
5011 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5012 msm_routing_put_audio_mixer),
5013 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_INT_FM_RX,
5014 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5015 msm_routing_put_audio_mixer),
5016 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_INT_FM_RX,
5017 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5018 msm_routing_put_audio_mixer),
5019 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_INT_FM_RX,
5020 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5021 msm_routing_put_audio_mixer),
5022 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_INT_FM_RX,
5023 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5024 msm_routing_put_audio_mixer),
5025 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_INT_FM_RX,
5026 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5027 msm_routing_put_audio_mixer),
5028 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_INT_FM_RX,
5029 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5030 msm_routing_put_audio_mixer),
5031 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_INT_FM_RX,
5032 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5033 msm_routing_put_audio_mixer),
5034 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_INT_FM_RX,
5035 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5036 msm_routing_put_audio_mixer),
5037 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_INT_FM_RX,
5038 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
5039 msm_routing_put_audio_mixer),
5040 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_INT_FM_RX,
5041 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
5042 msm_routing_put_audio_mixer),
5043 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_INT_FM_RX,
5044 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
5045 msm_routing_put_audio_mixer),
5046};
5047
5048static const struct snd_kcontrol_new afe_pcm_rx_mixer_controls[] = {
5049 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_AFE_PCM_RX,
5050 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5051 msm_routing_put_audio_mixer),
5052 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_AFE_PCM_RX,
5053 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5054 msm_routing_put_audio_mixer),
5055 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_AFE_PCM_RX,
5056 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5057 msm_routing_put_audio_mixer),
5058 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_AFE_PCM_RX,
5059 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5060 msm_routing_put_audio_mixer),
5061 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_AFE_PCM_RX,
5062 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5063 msm_routing_put_audio_mixer),
5064 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_AFE_PCM_RX,
5065 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5066 msm_routing_put_audio_mixer),
5067 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_AFE_PCM_RX,
5068 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5069 msm_routing_put_audio_mixer),
5070 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_AFE_PCM_RX,
5071 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5072 msm_routing_put_audio_mixer),
5073 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_AFE_PCM_RX,
5074 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5075 msm_routing_put_audio_mixer),
5076 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_AFE_PCM_RX,
5077 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5078 msm_routing_put_audio_mixer),
5079 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_AFE_PCM_RX,
5080 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5081 msm_routing_put_audio_mixer),
5082 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_AFE_PCM_RX,
5083 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5084 msm_routing_put_audio_mixer),
5085 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_AFE_PCM_RX,
5086 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5087 msm_routing_put_audio_mixer),
5088 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_AFE_PCM_RX,
5089 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5090 msm_routing_put_audio_mixer),
5091 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_AFE_PCM_RX,
5092 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5093 msm_routing_put_audio_mixer),
5094 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_AFE_PCM_RX,
5095 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5096 msm_routing_put_audio_mixer),
5097 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_AFE_PCM_RX,
5098 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
5099 msm_routing_put_audio_mixer),
5100 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_AFE_PCM_RX,
5101 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
5102 msm_routing_put_audio_mixer),
5103 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_AFE_PCM_RX,
5104 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
5105 msm_routing_put_audio_mixer),
5106};
5107
5108static const struct snd_kcontrol_new auxpcm_rx_mixer_controls[] = {
5109 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_AUXPCM_RX,
5110 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5111 msm_routing_put_audio_mixer),
5112 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_AUXPCM_RX,
5113 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5114 msm_routing_put_audio_mixer),
5115 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_AUXPCM_RX,
5116 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5117 msm_routing_put_audio_mixer),
5118 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_AUXPCM_RX,
5119 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5120 msm_routing_put_audio_mixer),
5121 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_AUXPCM_RX,
5122 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5123 msm_routing_put_audio_mixer),
5124 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_AUXPCM_RX,
5125 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5126 msm_routing_put_audio_mixer),
5127 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_AUXPCM_RX,
5128 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5129 msm_routing_put_audio_mixer),
5130 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_AUXPCM_RX,
5131 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5132 msm_routing_put_audio_mixer),
5133 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_AUXPCM_RX,
5134 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5135 msm_routing_put_audio_mixer),
5136 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_AUXPCM_RX,
5137 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5138 msm_routing_put_audio_mixer),
5139 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_AUXPCM_RX,
5140 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5141 msm_routing_put_audio_mixer),
5142 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_AUXPCM_RX,
5143 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5144 msm_routing_put_audio_mixer),
5145 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_AUXPCM_RX,
5146 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5147 msm_routing_put_audio_mixer),
5148 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_AUXPCM_RX,
5149 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5150 msm_routing_put_audio_mixer),
5151 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_AUXPCM_RX,
5152 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5153 msm_routing_put_audio_mixer),
5154 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_AUXPCM_RX,
5155 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5156 msm_routing_put_audio_mixer),
5157 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_AUXPCM_RX,
5158 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
5159 msm_routing_put_audio_mixer),
5160 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_AUXPCM_RX,
5161 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
5162 msm_routing_put_audio_mixer),
5163 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_AUXPCM_RX,
5164 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
5165 msm_routing_put_audio_mixer),
5166};
5167
5168static const struct snd_kcontrol_new sec_auxpcm_rx_mixer_controls[] = {
5169 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5170 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5171 msm_routing_put_audio_mixer),
5172 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5173 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5174 msm_routing_put_audio_mixer),
5175 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5176 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5177 msm_routing_put_audio_mixer),
5178 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5179 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5180 msm_routing_put_audio_mixer),
5181 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5182 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5183 msm_routing_put_audio_mixer),
5184 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5185 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5186 msm_routing_put_audio_mixer),
5187 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5188 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5189 msm_routing_put_audio_mixer),
5190 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5191 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5192 msm_routing_put_audio_mixer),
5193 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5194 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5195 msm_routing_put_audio_mixer),
5196 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5197 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5198 msm_routing_put_audio_mixer),
5199 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5200 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5201 msm_routing_put_audio_mixer),
5202 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5203 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5204 msm_routing_put_audio_mixer),
5205 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5206 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5207 msm_routing_put_audio_mixer),
5208 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5209 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5210 msm_routing_put_audio_mixer),
5211 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5212 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5213 msm_routing_put_audio_mixer),
5214 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5215 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5216 msm_routing_put_audio_mixer),
5217 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5218 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
5219 msm_routing_put_audio_mixer),
5220 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5221 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
5222 msm_routing_put_audio_mixer),
5223 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5224 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
5225 msm_routing_put_audio_mixer),
5226};
5227
5228static const struct snd_kcontrol_new tert_auxpcm_rx_mixer_controls[] = {
5229 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5230 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5231 msm_routing_put_audio_mixer),
5232 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5233 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5234 msm_routing_put_audio_mixer),
5235 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5236 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5237 msm_routing_put_audio_mixer),
5238 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5239 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5240 msm_routing_put_audio_mixer),
5241 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5242 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5243 msm_routing_put_audio_mixer),
5244 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5245 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5246 msm_routing_put_audio_mixer),
5247 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5248 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5249 msm_routing_put_audio_mixer),
5250 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5251 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5252 msm_routing_put_audio_mixer),
5253 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5254 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5255 msm_routing_put_audio_mixer),
5256 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5257 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5258 msm_routing_put_audio_mixer),
5259 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5260 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5261 msm_routing_put_audio_mixer),
5262 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5263 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5264 msm_routing_put_audio_mixer),
5265 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5266 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5267 msm_routing_put_audio_mixer),
5268 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5269 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5270 msm_routing_put_audio_mixer),
5271 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5272 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5273 msm_routing_put_audio_mixer),
5274 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5275 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5276 msm_routing_put_audio_mixer),
5277};
5278
5279static const struct snd_kcontrol_new quat_auxpcm_rx_mixer_controls[] = {
5280 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5281 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5282 msm_routing_put_audio_mixer),
5283 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5284 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5285 msm_routing_put_audio_mixer),
5286 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5287 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5288 msm_routing_put_audio_mixer),
5289 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5290 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5291 msm_routing_put_audio_mixer),
5292 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5293 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5294 msm_routing_put_audio_mixer),
5295 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5296 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5297 msm_routing_put_audio_mixer),
5298 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5299 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5300 msm_routing_put_audio_mixer),
5301 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5302 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5303 msm_routing_put_audio_mixer),
5304 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5305 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5306 msm_routing_put_audio_mixer),
5307 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5308 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5309 msm_routing_put_audio_mixer),
5310 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5311 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5312 msm_routing_put_audio_mixer),
5313 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5314 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5315 msm_routing_put_audio_mixer),
5316 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5317 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5318 msm_routing_put_audio_mixer),
5319 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5320 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5321 msm_routing_put_audio_mixer),
5322 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5323 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5324 msm_routing_put_audio_mixer),
5325 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5326 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5327 msm_routing_put_audio_mixer),
5328};
5329
5330static const struct snd_kcontrol_new pri_tdm_rx_0_mixer_controls[] = {
5331 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5332 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5333 msm_routing_put_audio_mixer),
5334 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5335 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5336 msm_routing_put_audio_mixer),
5337 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5338 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5339 msm_routing_put_audio_mixer),
5340 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5341 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5342 msm_routing_put_audio_mixer),
5343 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5344 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5345 msm_routing_put_audio_mixer),
5346 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5347 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5348 msm_routing_put_audio_mixer),
5349 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5350 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5351 msm_routing_put_audio_mixer),
5352 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5353 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5354 msm_routing_put_audio_mixer),
5355 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5356 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5357 msm_routing_put_audio_mixer),
5358 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5359 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5360 msm_routing_put_audio_mixer),
5361 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5362 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5363 msm_routing_put_audio_mixer),
5364 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5365 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5366 msm_routing_put_audio_mixer),
5367 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5368 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5369 msm_routing_put_audio_mixer),
5370 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5371 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5372 msm_routing_put_audio_mixer),
5373 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5374 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5375 msm_routing_put_audio_mixer),
5376 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5377 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5378 msm_routing_put_audio_mixer),
5379};
5380
5381static const struct snd_kcontrol_new pri_tdm_rx_1_mixer_controls[] = {
5382 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5383 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5384 msm_routing_put_audio_mixer),
5385 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5386 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5387 msm_routing_put_audio_mixer),
5388 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5389 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5390 msm_routing_put_audio_mixer),
5391 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5392 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5393 msm_routing_put_audio_mixer),
5394 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5395 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5396 msm_routing_put_audio_mixer),
5397 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5398 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5399 msm_routing_put_audio_mixer),
5400 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5401 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5402 msm_routing_put_audio_mixer),
5403 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5404 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5405 msm_routing_put_audio_mixer),
5406 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5407 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5408 msm_routing_put_audio_mixer),
5409 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5410 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5411 msm_routing_put_audio_mixer),
5412 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5413 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5414 msm_routing_put_audio_mixer),
5415 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5416 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5417 msm_routing_put_audio_mixer),
5418 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5419 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5420 msm_routing_put_audio_mixer),
5421 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5422 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5423 msm_routing_put_audio_mixer),
5424 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5425 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5426 msm_routing_put_audio_mixer),
5427 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5428 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5429 msm_routing_put_audio_mixer),
5430};
5431
5432static const struct snd_kcontrol_new pri_tdm_rx_2_mixer_controls[] = {
5433 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5434 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5435 msm_routing_put_audio_mixer),
5436 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5437 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5438 msm_routing_put_audio_mixer),
5439 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5440 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5441 msm_routing_put_audio_mixer),
5442 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5443 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5444 msm_routing_put_audio_mixer),
5445 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5446 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5447 msm_routing_put_audio_mixer),
5448 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5449 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5450 msm_routing_put_audio_mixer),
5451 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5452 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5453 msm_routing_put_audio_mixer),
5454 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5455 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5456 msm_routing_put_audio_mixer),
5457 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5458 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5459 msm_routing_put_audio_mixer),
5460 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5461 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5462 msm_routing_put_audio_mixer),
5463 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5464 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5465 msm_routing_put_audio_mixer),
5466 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5467 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5468 msm_routing_put_audio_mixer),
5469 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5470 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5471 msm_routing_put_audio_mixer),
5472 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5473 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5474 msm_routing_put_audio_mixer),
5475 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5476 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5477 msm_routing_put_audio_mixer),
5478 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5479 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5480 msm_routing_put_audio_mixer),
5481};
5482
5483static const struct snd_kcontrol_new pri_tdm_rx_3_mixer_controls[] = {
5484 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5485 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5486 msm_routing_put_audio_mixer),
5487 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5488 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5489 msm_routing_put_audio_mixer),
5490 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5491 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5492 msm_routing_put_audio_mixer),
5493 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5494 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5495 msm_routing_put_audio_mixer),
5496 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5497 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5498 msm_routing_put_audio_mixer),
5499 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5500 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5501 msm_routing_put_audio_mixer),
5502 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5503 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5504 msm_routing_put_audio_mixer),
5505 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5506 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5507 msm_routing_put_audio_mixer),
5508 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5509 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5510 msm_routing_put_audio_mixer),
5511 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5512 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5513 msm_routing_put_audio_mixer),
5514 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5515 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5516 msm_routing_put_audio_mixer),
5517 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5518 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5519 msm_routing_put_audio_mixer),
5520 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5521 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5522 msm_routing_put_audio_mixer),
5523 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5524 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5525 msm_routing_put_audio_mixer),
5526 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5527 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5528 msm_routing_put_audio_mixer),
5529 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5530 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5531 msm_routing_put_audio_mixer),
5532};
5533
5534static const struct snd_kcontrol_new pri_tdm_tx_0_mixer_controls[] = {
5535 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5536 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5537 msm_routing_put_audio_mixer),
5538 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5539 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5540 msm_routing_put_audio_mixer),
5541 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5542 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5543 msm_routing_put_audio_mixer),
5544 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5545 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5546 msm_routing_put_audio_mixer),
5547 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5548 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5549 msm_routing_put_audio_mixer),
5550 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5551 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5552 msm_routing_put_audio_mixer),
5553 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5554 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5555 msm_routing_put_audio_mixer),
5556 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5557 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5558 msm_routing_put_audio_mixer),
5559 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5560 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5561 msm_routing_put_audio_mixer),
5562 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5563 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5564 msm_routing_put_audio_mixer),
5565 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5566 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5567 msm_routing_put_audio_mixer),
5568 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5569 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5570 msm_routing_put_audio_mixer),
5571 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5572 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5573 msm_routing_put_audio_mixer),
5574 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5575 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5576 msm_routing_put_audio_mixer),
5577 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5578 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5579 msm_routing_put_audio_mixer),
5580 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5581 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5582 msm_routing_put_audio_mixer),
5583};
5584
5585static const struct snd_kcontrol_new sec_tdm_rx_0_mixer_controls[] = {
5586 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5587 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5588 msm_routing_put_audio_mixer),
5589 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5590 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5591 msm_routing_put_audio_mixer),
5592 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5593 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5594 msm_routing_put_audio_mixer),
5595 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5596 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5597 msm_routing_put_audio_mixer),
5598 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5599 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5600 msm_routing_put_audio_mixer),
5601 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5602 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5603 msm_routing_put_audio_mixer),
5604 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5605 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5606 msm_routing_put_audio_mixer),
5607 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5608 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5609 msm_routing_put_audio_mixer),
5610 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5611 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5612 msm_routing_put_audio_mixer),
5613 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5614 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5615 msm_routing_put_audio_mixer),
5616 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5617 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5618 msm_routing_put_audio_mixer),
5619 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5620 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5621 msm_routing_put_audio_mixer),
5622 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5623 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5624 msm_routing_put_audio_mixer),
5625 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5626 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5627 msm_routing_put_audio_mixer),
5628 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5629 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5630 msm_routing_put_audio_mixer),
5631 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5632 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5633 msm_routing_put_audio_mixer),
5634};
5635
5636static const struct snd_kcontrol_new sec_tdm_rx_1_mixer_controls[] = {
5637 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5638 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5639 msm_routing_put_audio_mixer),
5640 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5641 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5642 msm_routing_put_audio_mixer),
5643 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5644 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5645 msm_routing_put_audio_mixer),
5646 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5647 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5648 msm_routing_put_audio_mixer),
5649 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5650 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5651 msm_routing_put_audio_mixer),
5652 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5653 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5654 msm_routing_put_audio_mixer),
5655 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5656 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5657 msm_routing_put_audio_mixer),
5658 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5659 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5660 msm_routing_put_audio_mixer),
5661 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5662 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5663 msm_routing_put_audio_mixer),
5664 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5665 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5666 msm_routing_put_audio_mixer),
5667 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5668 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5669 msm_routing_put_audio_mixer),
5670 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5671 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5672 msm_routing_put_audio_mixer),
5673 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5674 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5675 msm_routing_put_audio_mixer),
5676 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5677 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5678 msm_routing_put_audio_mixer),
5679 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5680 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5681 msm_routing_put_audio_mixer),
5682 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5683 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5684 msm_routing_put_audio_mixer),
5685};
5686
5687static const struct snd_kcontrol_new sec_tdm_rx_2_mixer_controls[] = {
5688 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5689 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5690 msm_routing_put_audio_mixer),
5691 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5692 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5693 msm_routing_put_audio_mixer),
5694 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5695 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5696 msm_routing_put_audio_mixer),
5697 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5698 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5699 msm_routing_put_audio_mixer),
5700 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5701 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5702 msm_routing_put_audio_mixer),
5703 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5704 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5705 msm_routing_put_audio_mixer),
5706 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5707 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5708 msm_routing_put_audio_mixer),
5709 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5710 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5711 msm_routing_put_audio_mixer),
5712 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5713 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5714 msm_routing_put_audio_mixer),
5715 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5716 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5717 msm_routing_put_audio_mixer),
5718 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5719 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5720 msm_routing_put_audio_mixer),
5721 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5722 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5723 msm_routing_put_audio_mixer),
5724 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5725 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5726 msm_routing_put_audio_mixer),
5727 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5728 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5729 msm_routing_put_audio_mixer),
5730 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5731 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5732 msm_routing_put_audio_mixer),
5733 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5734 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5735 msm_routing_put_audio_mixer),
5736};
5737
5738static const struct snd_kcontrol_new sec_tdm_rx_3_mixer_controls[] = {
5739 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5740 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5741 msm_routing_put_audio_mixer),
5742 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5743 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5744 msm_routing_put_audio_mixer),
5745 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5746 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5747 msm_routing_put_audio_mixer),
5748 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5749 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5750 msm_routing_put_audio_mixer),
5751 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5752 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5753 msm_routing_put_audio_mixer),
5754 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5755 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5756 msm_routing_put_audio_mixer),
5757 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5758 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5759 msm_routing_put_audio_mixer),
5760 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5761 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5762 msm_routing_put_audio_mixer),
5763 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5764 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5765 msm_routing_put_audio_mixer),
5766 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5767 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5768 msm_routing_put_audio_mixer),
5769 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5770 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5771 msm_routing_put_audio_mixer),
5772 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5773 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5774 msm_routing_put_audio_mixer),
5775 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5776 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5777 msm_routing_put_audio_mixer),
5778 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5779 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5780 msm_routing_put_audio_mixer),
5781 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5782 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5783 msm_routing_put_audio_mixer),
5784 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5785 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5786 msm_routing_put_audio_mixer),
5787};
5788
5789static const struct snd_kcontrol_new sec_tdm_tx_0_mixer_controls[] = {
5790 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5791 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5792 msm_routing_put_audio_mixer),
5793 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5794 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5795 msm_routing_put_audio_mixer),
5796 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5797 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5798 msm_routing_put_audio_mixer),
5799 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5800 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5801 msm_routing_put_audio_mixer),
5802 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5803 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5804 msm_routing_put_audio_mixer),
5805 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5806 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5807 msm_routing_put_audio_mixer),
5808 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5809 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5810 msm_routing_put_audio_mixer),
5811 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5812 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5813 msm_routing_put_audio_mixer),
5814 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5815 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5816 msm_routing_put_audio_mixer),
5817 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5818 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5819 msm_routing_put_audio_mixer),
5820 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5821 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5822 msm_routing_put_audio_mixer),
5823 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5824 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5825 msm_routing_put_audio_mixer),
5826 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5827 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5828 msm_routing_put_audio_mixer),
5829 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5830 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5831 msm_routing_put_audio_mixer),
5832 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5833 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5834 msm_routing_put_audio_mixer),
5835 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5836 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5837 msm_routing_put_audio_mixer),
5838};
5839
5840static const struct snd_kcontrol_new tert_tdm_rx_0_mixer_controls[] = {
5841 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5842 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5843 msm_routing_put_audio_mixer),
5844 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5845 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5846 msm_routing_put_audio_mixer),
5847 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5848 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5849 msm_routing_put_audio_mixer),
5850 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5851 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5852 msm_routing_put_audio_mixer),
5853 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5854 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5855 msm_routing_put_audio_mixer),
5856 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5857 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5858 msm_routing_put_audio_mixer),
5859 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5860 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5861 msm_routing_put_audio_mixer),
5862 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5863 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5864 msm_routing_put_audio_mixer),
5865 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5866 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5867 msm_routing_put_audio_mixer),
5868 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5869 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5870 msm_routing_put_audio_mixer),
5871 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5872 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5873 msm_routing_put_audio_mixer),
5874 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5875 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5876 msm_routing_put_audio_mixer),
5877 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5878 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5879 msm_routing_put_audio_mixer),
5880 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5881 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5882 msm_routing_put_audio_mixer),
5883 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5884 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5885 msm_routing_put_audio_mixer),
5886 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5887 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5888 msm_routing_put_audio_mixer),
5889};
5890
5891static const struct snd_kcontrol_new tert_tdm_tx_0_mixer_controls[] = {
5892 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_TX_0,
5893 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5894 msm_routing_put_audio_mixer),
5895 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_TX_0,
5896 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5897 msm_routing_put_audio_mixer),
5898 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_TX_0,
5899 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5900 msm_routing_put_audio_mixer),
5901 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_TX_0,
5902 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5903 msm_routing_put_audio_mixer),
5904 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_TX_0,
5905 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5906 msm_routing_put_audio_mixer),
5907 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_TX_0,
5908 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5909 msm_routing_put_audio_mixer),
5910 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_TX_0,
5911 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5912 msm_routing_put_audio_mixer),
5913 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_TX_0,
5914 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5915 msm_routing_put_audio_mixer),
5916 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_TX_0,
5917 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5918 msm_routing_put_audio_mixer),
5919 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_TX_0,
5920 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5921 msm_routing_put_audio_mixer),
5922 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_TX_0,
5923 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5924 msm_routing_put_audio_mixer),
5925 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_TX_0,
5926 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5927 msm_routing_put_audio_mixer),
5928 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_TX_0,
5929 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5930 msm_routing_put_audio_mixer),
5931 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_TX_0,
5932 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5933 msm_routing_put_audio_mixer),
5934 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_TX_0,
5935 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5936 msm_routing_put_audio_mixer),
5937 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_TX_0,
5938 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5939 msm_routing_put_audio_mixer),
5940};
5941
5942static const struct snd_kcontrol_new tert_tdm_rx_1_mixer_controls[] = {
5943 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_RX_1,
5944 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5945 msm_routing_put_audio_mixer),
5946 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_RX_1,
5947 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5948 msm_routing_put_audio_mixer),
5949 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_RX_1,
5950 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5951 msm_routing_put_audio_mixer),
5952 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_RX_1,
5953 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5954 msm_routing_put_audio_mixer),
5955 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_RX_1,
5956 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5957 msm_routing_put_audio_mixer),
5958 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_RX_1,
5959 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5960 msm_routing_put_audio_mixer),
5961 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_RX_1,
5962 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5963 msm_routing_put_audio_mixer),
5964 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_RX_1,
5965 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5966 msm_routing_put_audio_mixer),
5967 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_RX_1,
5968 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5969 msm_routing_put_audio_mixer),
5970 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_RX_1,
5971 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5972 msm_routing_put_audio_mixer),
5973 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_RX_1,
5974 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5975 msm_routing_put_audio_mixer),
5976 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_RX_1,
5977 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5978 msm_routing_put_audio_mixer),
5979 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_RX_1,
5980 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5981 msm_routing_put_audio_mixer),
5982 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_RX_1,
5983 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5984 msm_routing_put_audio_mixer),
5985 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_RX_1,
5986 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5987 msm_routing_put_audio_mixer),
5988 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_RX_1,
5989 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5990 msm_routing_put_audio_mixer),
5991};
5992
5993static const struct snd_kcontrol_new tert_tdm_rx_2_mixer_controls[] = {
5994 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_RX_2,
5995 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5996 msm_routing_put_audio_mixer),
5997 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_RX_2,
5998 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5999 msm_routing_put_audio_mixer),
6000 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6001 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6002 msm_routing_put_audio_mixer),
6003 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6004 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6005 msm_routing_put_audio_mixer),
6006 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6007 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6008 msm_routing_put_audio_mixer),
6009 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6010 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6011 msm_routing_put_audio_mixer),
6012 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6013 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6014 msm_routing_put_audio_mixer),
6015 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6016 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6017 msm_routing_put_audio_mixer),
6018 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6019 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6020 msm_routing_put_audio_mixer),
6021 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6022 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6023 msm_routing_put_audio_mixer),
6024 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6025 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6026 msm_routing_put_audio_mixer),
6027 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6028 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6029 msm_routing_put_audio_mixer),
6030 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6031 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6032 msm_routing_put_audio_mixer),
6033 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6034 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6035 msm_routing_put_audio_mixer),
6036 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6037 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6038 msm_routing_put_audio_mixer),
6039 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6040 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6041 msm_routing_put_audio_mixer),
6042};
6043
6044static const struct snd_kcontrol_new tert_tdm_rx_3_mixer_controls[] = {
6045 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6046 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6047 msm_routing_put_audio_mixer),
6048 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6049 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6050 msm_routing_put_audio_mixer),
6051 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6052 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6053 msm_routing_put_audio_mixer),
6054 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6055 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6056 msm_routing_put_audio_mixer),
6057 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6058 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6059 msm_routing_put_audio_mixer),
6060 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6061 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6062 msm_routing_put_audio_mixer),
6063 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6064 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6065 msm_routing_put_audio_mixer),
6066 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6067 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6068 msm_routing_put_audio_mixer),
6069 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6070 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6071 msm_routing_put_audio_mixer),
6072 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6073 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6074 msm_routing_put_audio_mixer),
6075 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6076 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6077 msm_routing_put_audio_mixer),
6078 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6079 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6080 msm_routing_put_audio_mixer),
6081 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6082 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6083 msm_routing_put_audio_mixer),
6084 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6085 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6086 msm_routing_put_audio_mixer),
6087 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6088 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6089 msm_routing_put_audio_mixer),
6090 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6091 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6092 msm_routing_put_audio_mixer),
6093};
6094
6095static const struct snd_kcontrol_new tert_tdm_rx_4_mixer_controls[] = {
6096 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6097 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6098 msm_routing_put_audio_mixer),
6099 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6100 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6101 msm_routing_put_audio_mixer),
6102 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6103 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6104 msm_routing_put_audio_mixer),
6105 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6106 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6107 msm_routing_put_audio_mixer),
6108 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6109 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6110 msm_routing_put_audio_mixer),
6111 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6112 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6113 msm_routing_put_audio_mixer),
6114 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6115 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6116 msm_routing_put_audio_mixer),
6117 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6118 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6119 msm_routing_put_audio_mixer),
6120 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6121 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6122 msm_routing_put_audio_mixer),
6123 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6124 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6125 msm_routing_put_audio_mixer),
6126 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6127 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6128 msm_routing_put_audio_mixer),
6129 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6130 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6131 msm_routing_put_audio_mixer),
6132 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6133 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6134 msm_routing_put_audio_mixer),
6135 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6136 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6137 msm_routing_put_audio_mixer),
6138 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6139 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6140 msm_routing_put_audio_mixer),
6141 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6142 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6143 msm_routing_put_audio_mixer),
6144};
6145
6146static const struct snd_kcontrol_new quat_tdm_rx_0_mixer_controls[] = {
6147 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6148 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6149 msm_routing_put_audio_mixer),
6150 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6151 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6152 msm_routing_put_audio_mixer),
6153 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6154 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6155 msm_routing_put_audio_mixer),
6156 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6157 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6158 msm_routing_put_audio_mixer),
6159 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6160 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6161 msm_routing_put_audio_mixer),
6162 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6163 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6164 msm_routing_put_audio_mixer),
6165 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6166 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6167 msm_routing_put_audio_mixer),
6168 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6169 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6170 msm_routing_put_audio_mixer),
6171 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6172 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6173 msm_routing_put_audio_mixer),
6174 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6175 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6176 msm_routing_put_audio_mixer),
6177 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6178 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6179 msm_routing_put_audio_mixer),
6180 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6181 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6182 msm_routing_put_audio_mixer),
6183 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6184 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6185 msm_routing_put_audio_mixer),
6186 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6187 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6188 msm_routing_put_audio_mixer),
6189 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6190 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6191 msm_routing_put_audio_mixer),
6192 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6193 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6194 msm_routing_put_audio_mixer),
6195 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6196 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6197 msm_routing_put_audio_mixer),
6198};
6199
6200static const struct snd_kcontrol_new quat_tdm_tx_0_mixer_controls[] = {
6201 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6202 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6203 msm_routing_put_audio_mixer),
6204 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6205 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6206 msm_routing_put_audio_mixer),
6207 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6208 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6209 msm_routing_put_audio_mixer),
6210 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6211 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6212 msm_routing_put_audio_mixer),
6213 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6214 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6215 msm_routing_put_audio_mixer),
6216 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6217 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6218 msm_routing_put_audio_mixer),
6219 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6220 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6221 msm_routing_put_audio_mixer),
6222 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6223 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6224 msm_routing_put_audio_mixer),
6225 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6226 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6227 msm_routing_put_audio_mixer),
6228 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6229 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6230 msm_routing_put_audio_mixer),
6231 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6232 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6233 msm_routing_put_audio_mixer),
6234 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6235 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6236 msm_routing_put_audio_mixer),
6237 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6238 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6239 msm_routing_put_audio_mixer),
6240 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6241 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6242 msm_routing_put_audio_mixer),
6243 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6244 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6245 msm_routing_put_audio_mixer),
6246 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6247 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6248 msm_routing_put_audio_mixer),
6249};
6250
6251static const struct snd_kcontrol_new quat_tdm_rx_1_mixer_controls[] = {
6252 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6253 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6254 msm_routing_put_audio_mixer),
6255 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6256 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6257 msm_routing_put_audio_mixer),
6258 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6259 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6260 msm_routing_put_audio_mixer),
6261 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6262 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6263 msm_routing_put_audio_mixer),
6264 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6265 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6266 msm_routing_put_audio_mixer),
6267 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6268 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6269 msm_routing_put_audio_mixer),
6270 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6271 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6272 msm_routing_put_audio_mixer),
6273 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6274 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6275 msm_routing_put_audio_mixer),
6276 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6277 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6278 msm_routing_put_audio_mixer),
6279 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6280 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6281 msm_routing_put_audio_mixer),
6282 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6283 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6284 msm_routing_put_audio_mixer),
6285 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6286 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6287 msm_routing_put_audio_mixer),
6288 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6289 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6290 msm_routing_put_audio_mixer),
6291 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6292 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6293 msm_routing_put_audio_mixer),
6294 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6295 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6296 msm_routing_put_audio_mixer),
6297 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6298 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6299 msm_routing_put_audio_mixer),
6300 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6301 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6302 msm_routing_put_audio_mixer),
6303};
6304
6305static const struct snd_kcontrol_new quat_tdm_rx_2_mixer_controls[] = {
6306 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6307 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6308 msm_routing_put_audio_mixer),
6309 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6310 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6311 msm_routing_put_audio_mixer),
6312 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6313 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6314 msm_routing_put_audio_mixer),
6315 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6316 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6317 msm_routing_put_audio_mixer),
6318 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6319 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6320 msm_routing_put_audio_mixer),
6321 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6322 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6323 msm_routing_put_audio_mixer),
6324 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6325 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6326 msm_routing_put_audio_mixer),
6327 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6328 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6329 msm_routing_put_audio_mixer),
6330 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6331 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6332 msm_routing_put_audio_mixer),
6333 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6334 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6335 msm_routing_put_audio_mixer),
6336 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6337 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6338 msm_routing_put_audio_mixer),
6339 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6340 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6341 msm_routing_put_audio_mixer),
6342 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6343 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6344 msm_routing_put_audio_mixer),
6345 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6346 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6347 msm_routing_put_audio_mixer),
6348 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6349 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6350 msm_routing_put_audio_mixer),
6351 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6352 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6353 msm_routing_put_audio_mixer),
6354 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6355 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6356 msm_routing_put_audio_mixer),
6357};
6358
6359static const struct snd_kcontrol_new quat_tdm_rx_3_mixer_controls[] = {
6360 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6361 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6362 msm_routing_put_audio_mixer),
6363 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6364 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6365 msm_routing_put_audio_mixer),
6366 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6367 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6368 msm_routing_put_audio_mixer),
6369 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6370 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6371 msm_routing_put_audio_mixer),
6372 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6373 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6374 msm_routing_put_audio_mixer),
6375 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6376 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6377 msm_routing_put_audio_mixer),
6378 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6379 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6380 msm_routing_put_audio_mixer),
6381 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6382 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6383 msm_routing_put_audio_mixer),
6384 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6385 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6386 msm_routing_put_audio_mixer),
6387 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6388 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6389 msm_routing_put_audio_mixer),
6390 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6391 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6392 msm_routing_put_audio_mixer),
6393 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6394 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6395 msm_routing_put_audio_mixer),
6396 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6397 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6398 msm_routing_put_audio_mixer),
6399 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6400 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6401 msm_routing_put_audio_mixer),
6402 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6403 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6404 msm_routing_put_audio_mixer),
6405 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6406 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6407 msm_routing_put_audio_mixer),
6408 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6409 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6410 msm_routing_put_audio_mixer),
6411};
6412
6413static const struct snd_kcontrol_new mmul1_mixer_controls[] = {
6414 SOC_SINGLE_EXT("PRI_TX", MSM_BACKEND_DAI_PRI_I2S_TX,
6415 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6416 msm_routing_put_audio_mixer),
6417 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
6418 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6419 msm_routing_put_audio_mixer),
6420 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
6421 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6422 msm_routing_put_audio_mixer),
6423 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
6424 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6425 msm_routing_put_audio_mixer),
6426 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
6427 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6428 msm_routing_put_audio_mixer),
6429 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
6430 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6431 msm_routing_put_audio_mixer),
6432 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
6433 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6434 msm_routing_put_audio_mixer),
6435 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
6436 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6437 msm_routing_put_audio_mixer),
6438 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
6439 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6440 msm_routing_put_audio_mixer),
6441 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
6442 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6443 msm_routing_put_audio_mixer),
6444 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
6445 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6446 msm_routing_put_audio_mixer),
6447 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
6448 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6449 msm_routing_put_audio_mixer),
6450 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
6451 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6452 msm_routing_put_audio_mixer),
6453 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
6454 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6455 msm_routing_put_audio_mixer),
6456 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
6457 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6458 msm_routing_put_audio_mixer),
6459 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
6460 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6461 msm_routing_put_audio_mixer),
6462 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
6463 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6464 msm_routing_put_audio_mixer),
6465 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
6466 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6467 msm_routing_put_audio_mixer),
6468 SOC_SINGLE_EXT("SLIM_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
6469 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6470 msm_routing_put_audio_mixer),
6471 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
6472 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6473 msm_routing_put_audio_mixer),
6474 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_TX,
6475 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6476 msm_routing_put_audio_mixer),
6477 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
6478 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6479 msm_routing_put_audio_mixer),
6480 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
6481 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6482 msm_routing_put_audio_mixer),
6483 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
6484 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6485 msm_routing_put_audio_mixer),
6486 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
6487 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6488 msm_routing_put_audio_mixer),
6489 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6490 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6491 msm_routing_put_audio_mixer),
6492 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
6493 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6494 msm_routing_put_audio_mixer),
6495 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
6496 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6497 msm_routing_put_audio_mixer),
6498 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
6499 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6500 msm_routing_put_audio_mixer),
6501 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6502 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6503 msm_routing_put_audio_mixer),
6504 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
6505 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6506 msm_routing_put_audio_mixer),
6507 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
6508 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6509 msm_routing_put_audio_mixer),
6510 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
6511 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6512 msm_routing_put_audio_mixer),
6513 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6514 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6515 msm_routing_put_audio_mixer),
6516 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
6517 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6518 msm_routing_put_audio_mixer),
6519 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
6520 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6521 msm_routing_put_audio_mixer),
6522 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
6523 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6524 msm_routing_put_audio_mixer),
6525 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
6526 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6527 msm_routing_put_audio_mixer),
6528 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
6529 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6530 msm_routing_put_audio_mixer),
6531 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
6532 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6533 msm_routing_put_audio_mixer),
6534};
6535
6536static const struct snd_kcontrol_new mmul2_mixer_controls[] = {
6537 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
6538 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6539 msm_routing_put_audio_mixer),
6540 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
6541 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6542 msm_routing_put_audio_mixer),
6543 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
6544 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6545 msm_routing_put_audio_mixer),
6546 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
6547 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6548 msm_routing_put_audio_mixer),
6549 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
6550 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6551 msm_routing_put_audio_mixer),
6552 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
6553 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6554 msm_routing_put_audio_mixer),
6555 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
6556 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6557 msm_routing_put_audio_mixer),
6558 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
6559 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6560 msm_routing_put_audio_mixer),
6561 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
6562 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6563 msm_routing_put_audio_mixer),
6564 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
6565 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6566 msm_routing_put_audio_mixer),
6567 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
6568 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6569 msm_routing_put_audio_mixer),
6570 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_TX,
6571 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6572 msm_routing_put_audio_mixer),
6573 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
6574 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6575 msm_routing_put_audio_mixer),
6576 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
6577 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6578 msm_routing_put_audio_mixer),
6579 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
6580 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6581 msm_routing_put_audio_mixer),
6582 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
6583 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6584 msm_routing_put_audio_mixer),
6585 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6586 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6587 msm_routing_put_audio_mixer),
6588 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
6589 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6590 msm_routing_put_audio_mixer),
6591 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
6592 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6593 msm_routing_put_audio_mixer),
6594 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
6595 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6596 msm_routing_put_audio_mixer),
6597 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6598 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6599 msm_routing_put_audio_mixer),
6600 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
6601 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6602 msm_routing_put_audio_mixer),
6603 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
6604 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6605 msm_routing_put_audio_mixer),
6606 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
6607 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6608 msm_routing_put_audio_mixer),
6609 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6610 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6611 msm_routing_put_audio_mixer),
6612 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
6613 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6614 msm_routing_put_audio_mixer),
6615 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
6616 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6617 msm_routing_put_audio_mixer),
6618 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
6619 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6620 msm_routing_put_audio_mixer),
6621 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
6622 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6623 msm_routing_put_audio_mixer),
6624 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
6625 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6626 msm_routing_put_audio_mixer),
6627};
6628
6629static const struct snd_kcontrol_new mmul3_mixer_controls[] = {
6630 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
6631 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6632 msm_routing_put_audio_mixer),
6633 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
6634 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6635 msm_routing_put_audio_mixer),
6636 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
6637 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6638 msm_routing_put_audio_mixer),
6639 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
6640 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6641 msm_routing_put_audio_mixer),
6642 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
6643 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6644 msm_routing_put_audio_mixer),
6645 SOC_SINGLE_EXT("AUX_PCM_TX", MSM_BACKEND_DAI_AUXPCM_TX,
6646 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6647 msm_routing_put_audio_mixer),
6648 SOC_SINGLE_EXT("SEC_AUX_PCM_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
6649 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6650 msm_routing_put_audio_mixer),
6651 SOC_SINGLE_EXT("TERT_AUX_PCM_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
6652 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6653 msm_routing_put_audio_mixer),
6654 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
6655 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6656 msm_routing_put_audio_mixer),
6657 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
6658 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6659 msm_routing_put_audio_mixer),
6660 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
6661 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6662 msm_routing_put_audio_mixer),
6663 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
6664 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6665 msm_routing_put_audio_mixer),
6666 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
6667 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6668 msm_routing_put_audio_mixer),
6669 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
6670 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6671 msm_routing_put_audio_mixer),
6672 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
6673 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6674 msm_routing_put_audio_mixer),
6675 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
6676 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6677 msm_routing_put_audio_mixer),
6678 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
6679 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6680 msm_routing_put_audio_mixer),
6681 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6682 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6683 msm_routing_put_audio_mixer),
6684 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
6685 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6686 msm_routing_put_audio_mixer),
6687 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
6688 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6689 msm_routing_put_audio_mixer),
6690 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
6691 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6692 msm_routing_put_audio_mixer),
6693 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6694 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6695 msm_routing_put_audio_mixer),
6696 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
6697 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6698 msm_routing_put_audio_mixer),
6699 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
6700 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6701 msm_routing_put_audio_mixer),
6702 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
6703 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6704 msm_routing_put_audio_mixer),
6705 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6706 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6707 msm_routing_put_audio_mixer),
6708 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
6709 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6710 msm_routing_put_audio_mixer),
6711 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
6712 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6713 msm_routing_put_audio_mixer),
6714 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
6715 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6716 msm_routing_put_audio_mixer),
6717};
6718
6719static const struct snd_kcontrol_new mmul4_mixer_controls[] = {
6720 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
6721 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6722 msm_routing_put_audio_mixer),
6723 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
6724 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6725 msm_routing_put_audio_mixer),
6726 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
6727 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6728 msm_routing_put_audio_mixer),
6729 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
6730 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6731 msm_routing_put_audio_mixer),
6732 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
6733 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6734 msm_routing_put_audio_mixer),
6735 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
6736 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6737 msm_routing_put_audio_mixer),
6738 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
6739 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6740 msm_routing_put_audio_mixer),
6741 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6742 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6743 msm_routing_put_audio_mixer),
6744 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
6745 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6746 msm_routing_put_audio_mixer),
6747 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
6748 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6749 msm_routing_put_audio_mixer),
6750 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
6751 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6752 msm_routing_put_audio_mixer),
6753 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
6754 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6755 msm_routing_put_audio_mixer),
6756 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6757 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6758 msm_routing_put_audio_mixer),
6759 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
6760 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6761 msm_routing_put_audio_mixer),
6762 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
6763 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6764 msm_routing_put_audio_mixer),
6765 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
6766 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6767 msm_routing_put_audio_mixer),
6768 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
6769 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6770 msm_routing_put_audio_mixer),
6771 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
6772 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6773 msm_routing_put_audio_mixer),
6774 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
6775 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6776 msm_routing_put_audio_mixer),
6777 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6778 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6779 msm_routing_put_audio_mixer),
6780 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
6781 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6782 msm_routing_put_audio_mixer),
6783 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
6784 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6785 msm_routing_put_audio_mixer),
6786 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
6787 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6788 msm_routing_put_audio_mixer),
6789 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
6790 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6791 msm_routing_put_audio_mixer),
6792 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
6793 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6794 msm_routing_put_audio_mixer),
6795 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
6796 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6797 msm_routing_put_audio_mixer),
6798 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
6799 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6800 msm_routing_put_audio_mixer),
6801 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
6802 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6803 msm_routing_put_audio_mixer),
6804 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
6805 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6806 msm_routing_put_audio_mixer),
6807};
6808
6809static const struct snd_kcontrol_new mmul5_mixer_controls[] = {
6810 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
6811 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6812 msm_routing_put_audio_mixer),
6813 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
6814 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6815 msm_routing_put_audio_mixer),
6816 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
6817 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6818 msm_routing_put_audio_mixer),
6819 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
6820 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6821 msm_routing_put_audio_mixer),
6822 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
6823 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6824 msm_routing_put_audio_mixer),
6825 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
6826 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6827 msm_routing_put_audio_mixer),
6828 SOC_SINGLE_EXT("SEC_AUX_PCM_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
6829 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6830 msm_routing_put_audio_mixer),
6831 SOC_SINGLE_EXT("TERT_AUX_PCM_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
6832 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6833 msm_routing_put_audio_mixer),
6834 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
6835 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6836 msm_routing_put_audio_mixer),
6837 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
6838 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6839 msm_routing_put_audio_mixer),
6840 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
6841 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6842 msm_routing_put_audio_mixer),
6843 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
6844 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6845 msm_routing_put_audio_mixer),
6846 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
6847 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6848 msm_routing_put_audio_mixer),
6849 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
6850 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6851 msm_routing_put_audio_mixer),
6852 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
6853 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6854 msm_routing_put_audio_mixer),
6855 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
6856 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6857 msm_routing_put_audio_mixer),
6858 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
6859 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6860 msm_routing_put_audio_mixer),
6861 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6862 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6863 msm_routing_put_audio_mixer),
6864 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
6865 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6866 msm_routing_put_audio_mixer),
6867 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
6868 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6869 msm_routing_put_audio_mixer),
6870 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
6871 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6872 msm_routing_put_audio_mixer),
6873 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6874 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6875 msm_routing_put_audio_mixer),
6876 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
6877 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6878 msm_routing_put_audio_mixer),
6879 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
6880 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6881 msm_routing_put_audio_mixer),
6882 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
6883 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6884 msm_routing_put_audio_mixer),
6885 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6886 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6887 msm_routing_put_audio_mixer),
6888 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
6889 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6890 msm_routing_put_audio_mixer),
6891 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
6892 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6893 msm_routing_put_audio_mixer),
6894 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
6895 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6896 msm_routing_put_audio_mixer),
6897 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
6898 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6899 msm_routing_put_audio_mixer),
6900 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
6901 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6902 msm_routing_put_audio_mixer),
6903 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
6904 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6905 msm_routing_put_audio_mixer),
6906 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
6907 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6908 msm_routing_put_audio_mixer),
6909 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
6910 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6911 msm_routing_put_audio_mixer),
6912};
6913
6914static const struct snd_kcontrol_new mmul6_mixer_controls[] = {
6915 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
6916 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6917 msm_routing_put_audio_mixer),
6918 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
6919 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6920 msm_routing_put_audio_mixer),
6921 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
6922 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6923 msm_routing_put_audio_mixer),
6924 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
6925 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6926 msm_routing_put_audio_mixer),
6927 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
6928 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6929 msm_routing_put_audio_mixer),
6930 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
6931 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6932 msm_routing_put_audio_mixer),
6933 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
6934 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6935 msm_routing_put_audio_mixer),
6936 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
6937 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6938 msm_routing_put_audio_mixer),
6939 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
6940 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6941 msm_routing_put_audio_mixer),
6942 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
6943 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6944 msm_routing_put_audio_mixer),
6945 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
6946 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6947 msm_routing_put_audio_mixer),
6948 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
6949 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6950 msm_routing_put_audio_mixer),
6951 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
6952 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6953 msm_routing_put_audio_mixer),
6954 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
6955 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6956 msm_routing_put_audio_mixer),
6957 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
6958 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6959 msm_routing_put_audio_mixer),
6960 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
6961 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6962 msm_routing_put_audio_mixer),
6963 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6964 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6965 msm_routing_put_audio_mixer),
6966 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
6967 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6968 msm_routing_put_audio_mixer),
6969 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
6970 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6971 msm_routing_put_audio_mixer),
6972 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
6973 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6974 msm_routing_put_audio_mixer),
6975 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6976 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6977 msm_routing_put_audio_mixer),
6978 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
6979 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6980 msm_routing_put_audio_mixer),
6981 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
6982 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6983 msm_routing_put_audio_mixer),
6984 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
6985 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6986 msm_routing_put_audio_mixer),
6987 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6988 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6989 msm_routing_put_audio_mixer),
6990 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
6991 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6992 msm_routing_put_audio_mixer),
6993 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
6994 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6995 msm_routing_put_audio_mixer),
6996 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
6997 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6998 msm_routing_put_audio_mixer),
6999 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7000 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7001 msm_routing_put_audio_mixer),
7002};
7003
7004static const struct snd_kcontrol_new mmul8_mixer_controls[] = {
7005 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7006 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7007 msm_routing_put_audio_mixer),
7008 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7009 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7010 msm_routing_put_audio_mixer),
7011 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7012 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7013 msm_routing_put_audio_mixer),
7014 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7015 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7016 msm_routing_put_audio_mixer),
7017 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7018 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7019 msm_routing_put_audio_mixer),
7020 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7021 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7022 msm_routing_put_audio_mixer),
7023 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7024 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7025 msm_routing_put_audio_mixer),
7026 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7027 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7028 msm_routing_put_audio_mixer),
7029 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7030 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7031 msm_routing_put_audio_mixer),
7032 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7033 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7034 msm_routing_put_audio_mixer),
7035 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7036 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7037 msm_routing_put_audio_mixer),
7038 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7039 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7040 msm_routing_put_audio_mixer),
7041 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
7042 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7043 msm_routing_put_audio_mixer),
7044 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7045 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7046 msm_routing_put_audio_mixer),
7047 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7048 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7049 msm_routing_put_audio_mixer),
7050 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7051 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7052 msm_routing_put_audio_mixer),
7053 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7054 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7055 msm_routing_put_audio_mixer),
7056 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7057 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7058 msm_routing_put_audio_mixer),
7059 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7060 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7061 msm_routing_put_audio_mixer),
7062 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7063 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7064 msm_routing_put_audio_mixer),
7065 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7066 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7067 msm_routing_put_audio_mixer),
7068 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7069 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7070 msm_routing_put_audio_mixer),
7071 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7072 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7073 msm_routing_put_audio_mixer),
7074 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7075 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7076 msm_routing_put_audio_mixer),
7077 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7078 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7079 msm_routing_put_audio_mixer),
7080 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7081 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7082 msm_routing_put_audio_mixer),
7083 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7084 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7085 msm_routing_put_audio_mixer),
7086 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7087 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7088 msm_routing_put_audio_mixer),
7089 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7090 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7091 msm_routing_put_audio_mixer),
7092 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
7093 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7094 msm_routing_put_audio_mixer),
7095 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7096 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7097 msm_routing_put_audio_mixer),
7098};
7099
Asish Bhattacharya34504582017-08-08 12:55:01 +05307100static const struct snd_kcontrol_new mmul16_mixer_controls[] = {
7101 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7102 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7103 msm_routing_put_audio_mixer),
7104 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7105 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7106 msm_routing_put_audio_mixer),
7107 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7108 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7109 msm_routing_put_audio_mixer),
7110 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7111 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7112 msm_routing_put_audio_mixer),
7113 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7114 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7115 msm_routing_put_audio_mixer),
7116 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7117 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7118 msm_routing_put_audio_mixer),
7119 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7120 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7121 msm_routing_put_audio_mixer),
7122 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7123 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7124 msm_routing_put_audio_mixer),
7125 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7126 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7127 msm_routing_put_audio_mixer),
7128 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7129 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7130 msm_routing_put_audio_mixer),
7131 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7132 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7133 msm_routing_put_audio_mixer),
7134 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7135 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7136 msm_routing_put_audio_mixer),
7137 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
7138 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7139 msm_routing_put_audio_mixer),
7140 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7141 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7142 msm_routing_put_audio_mixer),
7143 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7144 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7145 msm_routing_put_audio_mixer),
7146 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7147 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7148 msm_routing_put_audio_mixer),
7149 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7150 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7151 msm_routing_put_audio_mixer),
7152 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7153 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7154 msm_routing_put_audio_mixer),
7155 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7156 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7157 msm_routing_put_audio_mixer),
7158 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7159 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7160 msm_routing_put_audio_mixer),
7161 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7162 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7163 msm_routing_put_audio_mixer),
7164 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7165 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7166 msm_routing_put_audio_mixer),
7167 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7168 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7169 msm_routing_put_audio_mixer),
7170 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7171 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7172 msm_routing_put_audio_mixer),
7173 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7174 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7175 msm_routing_put_audio_mixer),
7176 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7177 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7178 msm_routing_put_audio_mixer),
7179 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7180 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7181 msm_routing_put_audio_mixer),
7182 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7183 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7184 msm_routing_put_audio_mixer),
7185 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7186 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7187 msm_routing_put_audio_mixer),
7188 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
7189 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7190 msm_routing_put_audio_mixer),
7191 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7192 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7193 msm_routing_put_audio_mixer),
7194 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
7195 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7196 msm_routing_put_audio_mixer),
7197 SOC_SINGLE_EXT("AUX_PCM_TX", MSM_BACKEND_DAI_AUXPCM_TX,
7198 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7199 msm_routing_put_audio_mixer),
7200 SOC_SINGLE_EXT("SEC_AUX_PCM_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
7201 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7202 msm_routing_put_audio_mixer),
7203 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
7204 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7205 msm_routing_put_audio_mixer),
7206};
7207
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307208static const struct snd_kcontrol_new mmul9_mixer_controls[] = {
7209 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7210 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7211 msm_routing_put_audio_mixer),
7212 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7213 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7214 msm_routing_put_audio_mixer),
7215 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7216 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7217 msm_routing_put_audio_mixer),
7218 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7219 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7220 msm_routing_put_audio_mixer),
7221 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7222 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7223 msm_routing_put_audio_mixer),
7224 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7225 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7226 msm_routing_put_audio_mixer),
7227 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7228 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7229 msm_routing_put_audio_mixer),
7230 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
7231 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7232 msm_routing_put_audio_mixer),
7233 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7234 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7235 msm_routing_put_audio_mixer),
7236 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7237 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7238 msm_routing_put_audio_mixer),
7239 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7240 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7241 msm_routing_put_audio_mixer),
7242 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7243 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7244 msm_routing_put_audio_mixer),
7245 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7246 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7247 msm_routing_put_audio_mixer),
7248 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7249 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7250 msm_routing_put_audio_mixer),
7251 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7252 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7253 msm_routing_put_audio_mixer),
7254 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7255 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7256 msm_routing_put_audio_mixer),
7257};
7258
Laxminath Kasam38070be2017-08-17 18:21:59 +05307259static const struct snd_kcontrol_new mmul10_mixer_controls[] = {
7260 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7261 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7262 msm_routing_put_audio_mixer),
7263 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7264 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7265 msm_routing_put_audio_mixer),
7266 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7267 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7268 msm_routing_put_audio_mixer),
7269 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7270 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7271 msm_routing_put_audio_mixer),
7272 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7273 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7274 msm_routing_put_audio_mixer),
7275 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7276 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7277 msm_routing_put_audio_mixer),
7278 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7279 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7280 msm_routing_put_audio_mixer),
7281 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
7282 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7283 msm_routing_put_audio_mixer),
Vikram Panduranga72863152017-09-06 15:47:35 -07007284 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
7285 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7286 msm_routing_put_audio_mixer),
Laxminath Kasam38070be2017-08-17 18:21:59 +05307287 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7288 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7289 msm_routing_put_audio_mixer),
7290 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7291 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7292 msm_routing_put_audio_mixer),
7293 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7294 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7295 msm_routing_put_audio_mixer),
7296 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7297 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7298 msm_routing_put_audio_mixer),
7299 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7300 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7301 msm_routing_put_audio_mixer),
7302 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7303 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7304 msm_routing_put_audio_mixer),
7305 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7306 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7307 msm_routing_put_audio_mixer),
7308 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7309 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7310 msm_routing_put_audio_mixer),
7311 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7312 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7313 msm_routing_put_audio_mixer),
7314};
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307315static const struct snd_kcontrol_new mmul17_mixer_controls[] = {
7316 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7317 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7318 msm_routing_put_audio_mixer),
7319 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7320 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7321 msm_routing_put_audio_mixer),
7322 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7323 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7324 msm_routing_put_audio_mixer),
7325 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7326 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7327 msm_routing_put_audio_mixer),
7328 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7329 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7330 msm_routing_put_audio_mixer),
7331 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7332 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7333 msm_routing_put_audio_mixer),
7334 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7335 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7336 msm_routing_put_audio_mixer),
7337};
7338
7339static const struct snd_kcontrol_new mmul18_mixer_controls[] = {
7340 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7341 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
7342 msm_routing_put_audio_mixer),
7343 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7344 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
7345 msm_routing_put_audio_mixer),
7346 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7347 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
7348 msm_routing_put_audio_mixer),
7349 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7350 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
7351 msm_routing_put_audio_mixer),
7352 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7353 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
7354 msm_routing_put_audio_mixer),
7355 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7356 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
7357 msm_routing_put_audio_mixer),
7358 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7359 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
7360 msm_routing_put_audio_mixer),
7361 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7362 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
7363 msm_routing_put_audio_mixer),
7364};
7365
7366static const struct snd_kcontrol_new mmul19_mixer_controls[] = {
7367 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7368 MSM_FRONTEND_DAI_MULTIMEDIA19, 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_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
7372 msm_routing_put_audio_mixer),
7373 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7374 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
7375 msm_routing_put_audio_mixer),
7376 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7377 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
7378 msm_routing_put_audio_mixer),
7379 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7380 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
7381 msm_routing_put_audio_mixer),
7382 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7383 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
7384 msm_routing_put_audio_mixer),
7385 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7386 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
7387 msm_routing_put_audio_mixer),
7388};
7389
7390static const struct snd_kcontrol_new mmul20_mixer_controls[] = {
7391 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7392 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7393 msm_routing_put_audio_mixer),
7394 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7395 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7396 msm_routing_put_audio_mixer),
7397 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7398 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7399 msm_routing_put_audio_mixer),
7400 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7401 MSM_FRONTEND_DAI_MULTIMEDIA20, 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_MULTIMEDIA20, 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_MULTIMEDIA20, 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_MULTIMEDIA20, 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_MULTIMEDIA20, 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_MULTIMEDIA20, 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_MULTIMEDIA20, 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_MULTIMEDIA20, 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_MULTIMEDIA20, 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_MULTIMEDIA20, 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_MULTIMEDIA20, 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_MULTIMEDIA20, 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_MULTIMEDIA20, 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_MULTIMEDIA20, 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_MULTIMEDIA20, 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_MULTIMEDIA20, 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_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7450 msm_routing_put_audio_mixer),
7451};
7452
7453static const struct snd_kcontrol_new pri_rx_voice_mixer_controls[] = {
7454 SOC_SINGLE_EXT("CSVoice", MSM_BACKEND_DAI_PRI_I2S_RX,
7455 MSM_FRONTEND_DAI_CS_VOICE, 1, 0, msm_routing_get_voice_mixer,
7456 msm_routing_put_voice_mixer),
7457 SOC_SINGLE_EXT("Voice2", MSM_BACKEND_DAI_PRI_I2S_RX,
7458 MSM_FRONTEND_DAI_VOICE2, 1, 0, msm_routing_get_voice_mixer,
7459 msm_routing_put_voice_mixer),
7460 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_PRI_I2S_RX,
7461 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
7462 msm_routing_put_voice_mixer),
7463 SOC_SINGLE_EXT("VoLTE", MSM_BACKEND_DAI_PRI_I2S_RX,
7464 MSM_FRONTEND_DAI_VOLTE, 1, 0, msm_routing_get_voice_mixer,
7465 msm_routing_put_voice_mixer),
7466 SOC_SINGLE_EXT("VoWLAN", MSM_BACKEND_DAI_PRI_I2S_RX,
7467 MSM_FRONTEND_DAI_VOWLAN, 1, 0, msm_routing_get_voice_mixer,
7468 msm_routing_put_voice_mixer),
7469 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_PRI_I2S_RX,
7470 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
7471 msm_routing_put_voice_mixer),
7472 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_PRI_I2S_RX,
7473 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
7474 msm_routing_put_voice_mixer),
7475 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_PRI_I2S_RX,
7476 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
7477 msm_routing_put_voice_mixer),
7478 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_PRI_I2S_RX,
7479 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
7480 msm_routing_put_voice_mixer),
7481};
7482
7483static const struct snd_kcontrol_new sec_i2s_rx_voice_mixer_controls[] = {
7484 SOC_SINGLE_EXT("CSVoice", MSM_BACKEND_DAI_SEC_I2S_RX,
7485 MSM_FRONTEND_DAI_CS_VOICE, 1, 0, msm_routing_get_voice_mixer,
7486 msm_routing_put_voice_mixer),
7487 SOC_SINGLE_EXT("Voice2", MSM_BACKEND_DAI_SEC_I2S_RX,
7488 MSM_FRONTEND_DAI_VOICE2, 1, 0, msm_routing_get_voice_mixer,
7489 msm_routing_put_voice_mixer),
7490 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SEC_I2S_RX,
7491 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
7492 msm_routing_put_voice_mixer),
7493 SOC_SINGLE_EXT("VoLTE", MSM_BACKEND_DAI_SEC_I2S_RX,
7494 MSM_FRONTEND_DAI_VOLTE, 1, 0, msm_routing_get_voice_mixer,
7495 msm_routing_put_voice_mixer),
7496 SOC_SINGLE_EXT("VoWLAN", MSM_BACKEND_DAI_SEC_I2S_RX,
7497 MSM_FRONTEND_DAI_VOWLAN, 1, 0, msm_routing_get_voice_mixer,
7498 msm_routing_put_voice_mixer),
7499 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SEC_I2S_RX,
7500 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
7501 msm_routing_put_voice_mixer),
7502 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SEC_I2S_RX,
7503 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
7504 msm_routing_put_voice_mixer),
7505};
7506
7507static const struct snd_kcontrol_new sec_mi2s_rx_voice_mixer_controls[] = {
7508 SOC_SINGLE_EXT("CSVoice", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
7509 MSM_FRONTEND_DAI_CS_VOICE, 1, 0, msm_routing_get_voice_mixer,
7510 msm_routing_put_voice_mixer),
7511 SOC_SINGLE_EXT("Voice2", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
7512 MSM_FRONTEND_DAI_VOICE2, 1, 0, msm_routing_get_voice_mixer,
7513 msm_routing_put_voice_mixer),
7514 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
7515 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
7516 msm_routing_put_voice_mixer),
7517 SOC_SINGLE_EXT("VoLTE", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
7518 MSM_FRONTEND_DAI_VOLTE, 1, 0, msm_routing_get_voice_mixer,
7519 msm_routing_put_voice_mixer),
7520 SOC_SINGLE_EXT("VoWLAN", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
7521 MSM_FRONTEND_DAI_VOWLAN, 1, 0, msm_routing_get_voice_mixer,
7522 msm_routing_put_voice_mixer),
7523 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
7524 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
7525 msm_routing_put_voice_mixer),
7526 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
7527 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
7528 msm_routing_put_voice_mixer),
7529 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
7530 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
7531 msm_routing_put_voice_mixer),
7532 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
7533 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
7534 msm_routing_put_voice_mixer),
7535};
7536
7537static const struct snd_kcontrol_new slimbus_rx_voice_mixer_controls[] = {
7538 SOC_SINGLE_EXT("CSVoice", MSM_BACKEND_DAI_SLIMBUS_0_RX,
7539 MSM_FRONTEND_DAI_CS_VOICE, 1, 0, msm_routing_get_voice_mixer,
7540 msm_routing_put_voice_mixer),
7541 SOC_SINGLE_EXT("Voice2", MSM_BACKEND_DAI_SLIMBUS_0_RX,
7542 MSM_FRONTEND_DAI_VOICE2, 1, 0, msm_routing_get_voice_mixer,
7543 msm_routing_put_voice_mixer),
7544 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SLIMBUS_0_RX,
7545 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
7546 msm_routing_put_voice_mixer),
7547 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_SLIMBUS_0_RX,
7548 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
7549 msm_routing_put_voice_stub_mixer),
7550 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_SLIMBUS_0_RX,
7551 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
7552 msm_routing_put_voice_stub_mixer),
7553 SOC_SINGLE_EXT("VoLTE", MSM_BACKEND_DAI_SLIMBUS_0_RX,
7554 MSM_FRONTEND_DAI_VOLTE, 1, 0, msm_routing_get_voice_mixer,
7555 msm_routing_put_voice_mixer),
7556 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_SLIMBUS_0_RX,
7557 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
7558 msm_routing_put_voice_stub_mixer),
7559 SOC_SINGLE_EXT("VoWLAN", MSM_BACKEND_DAI_SLIMBUS_0_RX,
7560 MSM_FRONTEND_DAI_VOWLAN, 1, 0, msm_routing_get_voice_mixer,
7561 msm_routing_put_voice_mixer),
7562 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SLIMBUS_0_RX,
7563 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
7564 msm_routing_put_voice_mixer),
7565 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SLIMBUS_0_RX,
7566 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
7567 msm_routing_put_voice_mixer),
7568 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_0_RX,
7569 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
7570 msm_routing_put_voice_mixer),
7571 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_0_RX,
7572 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
7573 msm_routing_put_voice_mixer),
7574};
7575
7576static const struct snd_kcontrol_new slimbus_6_rx_voice_mixer_controls[] = {
7577 SOC_SINGLE_EXT("CSVoice", MSM_BACKEND_DAI_SLIMBUS_6_RX,
7578 MSM_FRONTEND_DAI_CS_VOICE, 1, 0, msm_routing_get_voice_mixer,
7579 msm_routing_put_voice_mixer),
7580 SOC_SINGLE_EXT("Voice2", MSM_BACKEND_DAI_SLIMBUS_6_RX,
7581 MSM_FRONTEND_DAI_VOICE2, 1, 0, msm_routing_get_voice_mixer,
7582 msm_routing_put_voice_mixer),
7583 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SLIMBUS_6_RX,
7584 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
7585 msm_routing_put_voice_mixer),
7586 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_SLIMBUS_6_RX,
7587 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
7588 msm_routing_put_voice_stub_mixer),
7589 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_SLIMBUS_6_RX,
7590 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
7591 msm_routing_put_voice_stub_mixer),
7592 SOC_SINGLE_EXT("VoLTE", MSM_BACKEND_DAI_SLIMBUS_6_RX,
7593 MSM_FRONTEND_DAI_VOLTE, 1, 0, msm_routing_get_voice_mixer,
7594 msm_routing_put_voice_mixer),
7595 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_SLIMBUS_6_RX,
7596 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
7597 msm_routing_put_voice_stub_mixer),
7598 SOC_SINGLE_EXT("VoWLAN", MSM_BACKEND_DAI_SLIMBUS_6_RX,
7599 MSM_FRONTEND_DAI_VOWLAN, 1, 0, msm_routing_get_voice_mixer,
7600 msm_routing_put_voice_mixer),
7601 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SLIMBUS_6_RX,
7602 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
7603 msm_routing_put_voice_mixer),
7604 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SLIMBUS_6_RX,
7605 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
7606 msm_routing_put_voice_mixer),
7607 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_6_RX,
7608 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
7609 msm_routing_put_voice_mixer),
7610 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_6_RX,
7611 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
7612 msm_routing_put_voice_mixer),
7613};
7614
7615static const struct snd_kcontrol_new usb_audio_rx_voice_mixer_controls[] = {
7616 SOC_SINGLE_EXT("CSVoice", MSM_BACKEND_DAI_USB_RX,
7617 MSM_FRONTEND_DAI_CS_VOICE, 1, 0, msm_routing_get_voice_mixer,
7618 msm_routing_put_voice_mixer),
7619 SOC_SINGLE_EXT("Voice2", MSM_BACKEND_DAI_USB_RX,
7620 MSM_FRONTEND_DAI_VOICE2, 1, 0, msm_routing_get_voice_mixer,
7621 msm_routing_put_voice_mixer),
7622 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_USB_RX,
7623 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
7624 msm_routing_put_voice_mixer),
7625 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_USB_RX,
7626 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
7627 msm_routing_put_voice_stub_mixer),
7628 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_USB_RX,
7629 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
7630 msm_routing_put_voice_stub_mixer),
7631 SOC_SINGLE_EXT("VoLTE", MSM_BACKEND_DAI_USB_RX,
7632 MSM_FRONTEND_DAI_VOLTE, 1, 0, msm_routing_get_voice_mixer,
7633 msm_routing_put_voice_mixer),
7634 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_USB_RX,
7635 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
7636 msm_routing_put_voice_stub_mixer),
7637 SOC_SINGLE_EXT("VoWLAN", MSM_BACKEND_DAI_USB_RX,
7638 MSM_FRONTEND_DAI_VOWLAN, 1, 0, msm_routing_get_voice_mixer,
7639 msm_routing_put_voice_mixer),
7640 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_USB_RX,
7641 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
7642 msm_routing_put_voice_mixer),
7643 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_USB_RX,
7644 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
7645 msm_routing_put_voice_mixer),
7646 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_USB_RX,
7647 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
7648 msm_routing_put_voice_mixer),
7649 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_USB_RX,
7650 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
7651 msm_routing_put_voice_mixer),
7652};
7653
7654static const struct snd_kcontrol_new bt_sco_rx_voice_mixer_controls[] = {
7655 SOC_SINGLE_EXT("CSVoice", MSM_BACKEND_DAI_INT_BT_SCO_RX,
7656 MSM_FRONTEND_DAI_CS_VOICE, 1, 0, msm_routing_get_voice_mixer,
7657 msm_routing_put_voice_mixer),
7658 SOC_SINGLE_EXT("Voice2", MSM_BACKEND_DAI_INT_BT_SCO_RX,
7659 MSM_FRONTEND_DAI_VOICE2, 1, 0, msm_routing_get_voice_mixer,
7660 msm_routing_put_voice_mixer),
7661 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_INT_BT_SCO_RX,
7662 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
7663 msm_routing_put_voice_mixer),
7664 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_INT_BT_SCO_RX,
7665 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
7666 msm_routing_put_voice_stub_mixer),
7667 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_INT_BT_SCO_RX,
7668 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
7669 msm_routing_put_voice_stub_mixer),
7670 SOC_SINGLE_EXT("VoLTE", MSM_BACKEND_DAI_INT_BT_SCO_RX,
7671 MSM_FRONTEND_DAI_VOLTE, 1, 0, msm_routing_get_voice_mixer,
7672 msm_routing_put_voice_mixer),
7673 SOC_SINGLE_EXT("VoWLAN", MSM_BACKEND_DAI_INT_BT_SCO_RX,
7674 MSM_FRONTEND_DAI_VOWLAN, 1, 0, msm_routing_get_voice_mixer,
7675 msm_routing_put_voice_mixer),
7676 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_INT_BT_SCO_RX,
7677 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
7678 msm_routing_put_voice_mixer),
7679 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_INT_BT_SCO_RX,
7680 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
7681 msm_routing_put_voice_mixer),
7682 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_INT_BT_SCO_RX,
7683 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
7684 msm_routing_put_voice_mixer),
7685 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_INT_BT_SCO_RX,
7686 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
7687 msm_routing_put_voice_mixer),
7688};
7689
7690static const struct snd_kcontrol_new mi2s_rx_voice_mixer_controls[] = {
7691 SOC_SINGLE_EXT("CSVoice", MSM_BACKEND_DAI_MI2S_RX,
7692 MSM_FRONTEND_DAI_CS_VOICE, 1, 0, msm_routing_get_voice_mixer,
7693 msm_routing_put_voice_mixer),
7694 SOC_SINGLE_EXT("Voice2", MSM_BACKEND_DAI_MI2S_RX,
7695 MSM_FRONTEND_DAI_VOICE2, 1, 0, msm_routing_get_voice_mixer,
7696 msm_routing_put_voice_mixer),
7697 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_MI2S_RX,
7698 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
7699 msm_routing_put_voice_mixer),
7700 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_MI2S_RX,
7701 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
7702 msm_routing_put_voice_stub_mixer),
7703 SOC_SINGLE_EXT("VoLTE", MSM_BACKEND_DAI_MI2S_RX,
7704 MSM_FRONTEND_DAI_VOLTE, 1, 0, msm_routing_get_voice_mixer,
7705 msm_routing_put_voice_mixer),
7706 SOC_SINGLE_EXT("VoWLAN", MSM_BACKEND_DAI_MI2S_RX,
7707 MSM_FRONTEND_DAI_VOWLAN, 1, 0, msm_routing_get_voice_mixer,
7708 msm_routing_put_voice_mixer),
7709 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_MI2S_RX,
7710 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
7711 msm_routing_put_voice_mixer),
7712 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_MI2S_RX,
7713 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
7714 msm_routing_put_voice_mixer),
7715 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_MI2S_RX,
7716 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
7717 msm_routing_put_voice_mixer),
7718 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_MI2S_RX,
7719 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
7720 msm_routing_put_voice_mixer),
7721};
7722
7723static const struct snd_kcontrol_new pri_mi2s_rx_voice_mixer_controls[] = {
7724 SOC_SINGLE_EXT("CSVoice", MSM_BACKEND_DAI_PRI_MI2S_RX,
7725 MSM_FRONTEND_DAI_CS_VOICE, 1, 0, msm_routing_get_voice_mixer,
7726 msm_routing_put_voice_mixer),
7727 SOC_SINGLE_EXT("Voice2", MSM_BACKEND_DAI_PRI_MI2S_RX,
7728 MSM_FRONTEND_DAI_VOICE2, 1, 0, msm_routing_get_voice_mixer,
7729 msm_routing_put_voice_mixer),
7730 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_PRI_MI2S_RX,
7731 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
7732 msm_routing_put_voice_mixer),
7733 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_PRI_MI2S_RX,
7734 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
7735 msm_routing_put_voice_stub_mixer),
7736 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_PRI_MI2S_RX,
7737 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
7738 msm_routing_put_voice_stub_mixer),
7739 SOC_SINGLE_EXT("VoLTE", MSM_BACKEND_DAI_PRI_MI2S_RX,
7740 MSM_FRONTEND_DAI_VOLTE, 1, 0, msm_routing_get_voice_mixer,
7741 msm_routing_put_voice_mixer),
7742 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_PRI_MI2S_RX,
7743 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_mixer,
7744 msm_routing_put_voice_mixer),
7745 SOC_SINGLE_EXT("VoWLAN", MSM_BACKEND_DAI_PRI_MI2S_RX,
7746 MSM_FRONTEND_DAI_VOWLAN, 1, 0, msm_routing_get_voice_mixer,
7747 msm_routing_put_voice_mixer),
7748 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_PRI_MI2S_RX,
7749 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
7750 msm_routing_put_voice_mixer),
7751 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_PRI_MI2S_RX,
7752 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
7753 msm_routing_put_voice_mixer),
7754 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_PRI_MI2S_RX,
7755 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
7756 msm_routing_put_voice_mixer),
7757 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_PRI_MI2S_RX,
7758 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
7759 msm_routing_put_voice_mixer),
7760};
7761
7762static const struct snd_kcontrol_new int0_mi2s_rx_voice_mixer_controls[] = {
7763 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_INT0_MI2S_RX,
7764 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
7765 msm_routing_put_voice_mixer),
7766 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_INT0_MI2S_RX,
7767 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
7768 msm_routing_put_voice_mixer),
7769 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_INT0_MI2S_RX,
7770 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
7771 msm_routing_put_voice_mixer),
7772 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_INT0_MI2S_RX,
7773 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
7774 msm_routing_put_voice_mixer),
7775 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_INT0_MI2S_RX,
7776 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
7777 msm_routing_put_voice_mixer),
7778};
7779
7780static const struct snd_kcontrol_new int4_mi2s_rx_voice_mixer_controls[] = {
7781 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_INT4_MI2S_RX,
7782 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
7783 msm_routing_put_voice_mixer),
7784 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_INT4_MI2S_RX,
7785 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
7786 msm_routing_put_voice_mixer),
7787 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_INT4_MI2S_RX,
7788 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
7789 msm_routing_put_voice_mixer),
7790 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_INT4_MI2S_RX,
7791 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
7792 msm_routing_put_voice_mixer),
7793 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_INT4_MI2S_RX,
7794 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
7795 msm_routing_put_voice_mixer),
7796};
7797
7798static const struct snd_kcontrol_new tert_mi2s_rx_voice_mixer_controls[] = {
7799 SOC_SINGLE_EXT("CSVoice", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
7800 MSM_FRONTEND_DAI_CS_VOICE, 1, 0, msm_routing_get_voice_mixer,
7801 msm_routing_put_voice_mixer),
7802 SOC_SINGLE_EXT("Voice2", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
7803 MSM_FRONTEND_DAI_VOICE2, 1, 0, msm_routing_get_voice_mixer,
7804 msm_routing_put_voice_mixer),
7805 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
7806 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
7807 msm_routing_put_voice_mixer),
7808 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
7809 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
7810 msm_routing_put_voice_stub_mixer),
7811 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
7812 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
7813 msm_routing_put_voice_stub_mixer),
7814 SOC_SINGLE_EXT("VoLTE", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
7815 MSM_FRONTEND_DAI_VOLTE, 1, 0, msm_routing_get_voice_mixer,
7816 msm_routing_put_voice_mixer),
7817 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
7818 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_mixer,
7819 msm_routing_put_voice_mixer),
7820 SOC_SINGLE_EXT("VoWLAN", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
7821 MSM_FRONTEND_DAI_VOWLAN, 1, 0, msm_routing_get_voice_mixer,
7822 msm_routing_put_voice_mixer),
7823 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
7824 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
7825 msm_routing_put_voice_mixer),
7826 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
7827 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
7828 msm_routing_put_voice_mixer),
7829 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
7830 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
7831 msm_routing_put_voice_mixer),
7832 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
7833 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
7834 msm_routing_put_voice_mixer),
7835};
7836
7837static const struct snd_kcontrol_new quat_mi2s_rx_voice_mixer_controls[] = {
7838 SOC_SINGLE_EXT("CSVoice", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
7839 MSM_FRONTEND_DAI_CS_VOICE, 1, 0, msm_routing_get_voice_mixer,
7840 msm_routing_put_voice_mixer),
7841 SOC_SINGLE_EXT("Voice2", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
7842 MSM_FRONTEND_DAI_VOICE2, 1, 0, msm_routing_get_voice_mixer,
7843 msm_routing_put_voice_mixer),
7844 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
7845 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
7846 msm_routing_put_voice_mixer),
7847 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
7848 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
7849 msm_routing_put_voice_stub_mixer),
7850 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
7851 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
7852 msm_routing_put_voice_stub_mixer),
7853 SOC_SINGLE_EXT("VoLTE", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
7854 MSM_FRONTEND_DAI_VOLTE, 1, 0, msm_routing_get_voice_mixer,
7855 msm_routing_put_voice_mixer),
7856 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
7857 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_mixer,
7858 msm_routing_put_voice_mixer),
7859 SOC_SINGLE_EXT("VoWLAN", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
7860 MSM_FRONTEND_DAI_VOWLAN, 1, 0, msm_routing_get_voice_mixer,
7861 msm_routing_put_voice_mixer),
7862 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
7863 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
7864 msm_routing_put_voice_mixer),
7865 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
7866 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
7867 msm_routing_put_voice_mixer),
7868 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
7869 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
7870 msm_routing_put_voice_mixer),
7871 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
7872 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
7873 msm_routing_put_voice_mixer),
7874};
7875
7876static const struct snd_kcontrol_new quin_mi2s_rx_voice_mixer_controls[] = {
7877 SOC_SINGLE_EXT("CSVoice", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
7878 MSM_FRONTEND_DAI_CS_VOICE, 1, 0, msm_routing_get_voice_mixer,
7879 msm_routing_put_voice_mixer),
7880 SOC_SINGLE_EXT("Voice2", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
7881 MSM_FRONTEND_DAI_VOICE2, 1, 0, msm_routing_get_voice_mixer,
7882 msm_routing_put_voice_mixer),
7883 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
7884 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
7885 msm_routing_put_voice_mixer),
7886 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
7887 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
7888 msm_routing_put_voice_stub_mixer),
7889 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
7890 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
7891 msm_routing_put_voice_stub_mixer),
7892 SOC_SINGLE_EXT("VoLTE", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
7893 MSM_FRONTEND_DAI_VOLTE, 1, 0, msm_routing_get_voice_mixer,
7894 msm_routing_put_voice_mixer),
7895 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
7896 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_mixer,
7897 msm_routing_put_voice_mixer),
7898 SOC_SINGLE_EXT("VoWLAN", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
7899 MSM_FRONTEND_DAI_VOWLAN, 1, 0, msm_routing_get_voice_mixer,
7900 msm_routing_put_voice_mixer),
7901 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
7902 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
7903 msm_routing_put_voice_mixer),
7904 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
7905 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
7906 msm_routing_put_voice_mixer),
7907 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
7908 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
7909 msm_routing_put_voice_mixer),
7910 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
7911 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
7912 msm_routing_put_voice_mixer),
7913};
7914
7915static const struct snd_kcontrol_new afe_pcm_rx_voice_mixer_controls[] = {
7916 SOC_SINGLE_EXT("CSVoice", MSM_BACKEND_DAI_AFE_PCM_RX,
7917 MSM_FRONTEND_DAI_CS_VOICE, 1, 0, msm_routing_get_voice_mixer,
7918 msm_routing_put_voice_mixer),
7919 SOC_SINGLE_EXT("Voice2", MSM_BACKEND_DAI_AFE_PCM_RX,
7920 MSM_FRONTEND_DAI_VOICE2, 1, 0, msm_routing_get_voice_mixer,
7921 msm_routing_put_voice_mixer),
7922 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_AFE_PCM_RX,
7923 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
7924 msm_routing_put_voice_mixer),
7925 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_AFE_PCM_RX,
7926 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
7927 msm_routing_put_voice_stub_mixer),
7928 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_AFE_PCM_RX,
7929 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
7930 msm_routing_put_voice_stub_mixer),
7931 SOC_SINGLE_EXT("VoLTE", MSM_BACKEND_DAI_AFE_PCM_RX,
7932 MSM_FRONTEND_DAI_VOLTE, 1, 0, msm_routing_get_voice_mixer,
7933 msm_routing_put_voice_mixer),
7934 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_AFE_PCM_RX,
7935 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
7936 msm_routing_put_voice_stub_mixer),
7937 SOC_SINGLE_EXT("VoWLAN", MSM_BACKEND_DAI_AFE_PCM_RX,
7938 MSM_FRONTEND_DAI_VOWLAN, 1, 0, msm_routing_get_voice_mixer,
7939 msm_routing_put_voice_mixer),
7940 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_AFE_PCM_RX,
7941 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
7942 msm_routing_put_voice_mixer),
7943 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_AFE_PCM_RX,
7944 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
7945 msm_routing_put_voice_mixer),
7946 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_AFE_PCM_RX,
7947 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
7948 msm_routing_put_voice_mixer),
7949 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_AFE_PCM_RX,
7950 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
7951 msm_routing_put_voice_mixer),
7952};
7953
7954static const struct snd_kcontrol_new aux_pcm_rx_voice_mixer_controls[] = {
7955 SOC_SINGLE_EXT("CSVoice", MSM_BACKEND_DAI_AUXPCM_RX,
7956 MSM_FRONTEND_DAI_CS_VOICE, 1, 0, msm_routing_get_voice_mixer,
7957 msm_routing_put_voice_mixer),
7958 SOC_SINGLE_EXT("Voice2", MSM_BACKEND_DAI_AUXPCM_RX,
7959 MSM_FRONTEND_DAI_VOICE2, 1, 0, msm_routing_get_voice_mixer,
7960 msm_routing_put_voice_mixer),
7961 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_AUXPCM_RX,
7962 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
7963 msm_routing_put_voice_mixer),
7964 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_AUXPCM_RX,
7965 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
7966 msm_routing_put_voice_stub_mixer),
7967 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_AUXPCM_RX,
7968 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
7969 msm_routing_put_voice_stub_mixer),
7970 SOC_SINGLE_EXT("VoLTE", MSM_BACKEND_DAI_AUXPCM_RX,
7971 MSM_FRONTEND_DAI_VOLTE, 1, 0, msm_routing_get_voice_mixer,
7972 msm_routing_put_voice_mixer),
7973 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_AUXPCM_RX,
7974 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
7975 msm_routing_put_voice_stub_mixer),
7976 SOC_SINGLE_EXT("VoWLAN", MSM_BACKEND_DAI_AUXPCM_RX,
7977 MSM_FRONTEND_DAI_VOWLAN, 1, 0, msm_routing_get_voice_mixer,
7978 msm_routing_put_voice_mixer),
7979 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_AUXPCM_RX,
7980 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
7981 msm_routing_put_voice_mixer),
7982 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_AUXPCM_RX,
7983 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
7984 msm_routing_put_voice_mixer),
7985 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_AUXPCM_RX,
7986 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
7987 msm_routing_put_voice_mixer),
7988 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_AUXPCM_RX,
7989 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
7990 msm_routing_put_voice_mixer),
7991};
7992
7993static const struct snd_kcontrol_new sec_aux_pcm_rx_voice_mixer_controls[] = {
7994 SOC_SINGLE_EXT("CSVoice", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
7995 MSM_FRONTEND_DAI_CS_VOICE, 1, 0, msm_routing_get_voice_mixer,
7996 msm_routing_put_voice_mixer),
7997 SOC_SINGLE_EXT("Voice2", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
7998 MSM_FRONTEND_DAI_VOICE2, 1, 0, msm_routing_get_voice_mixer,
7999 msm_routing_put_voice_mixer),
8000 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8001 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8002 msm_routing_put_voice_mixer),
8003 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8004 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8005 msm_routing_put_voice_stub_mixer),
8006 SOC_SINGLE_EXT("VoLTE", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8007 MSM_FRONTEND_DAI_VOLTE, 1, 0, msm_routing_get_voice_mixer,
8008 msm_routing_put_voice_mixer),
8009 SOC_SINGLE_EXT("VoWLAN", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8010 MSM_FRONTEND_DAI_VOWLAN, 1, 0, msm_routing_get_voice_mixer,
8011 msm_routing_put_voice_mixer),
8012 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8013 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8014 msm_routing_put_voice_mixer),
8015 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8016 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8017 msm_routing_put_voice_mixer),
8018 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8019 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8020 msm_routing_put_voice_mixer),
8021 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8022 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8023 msm_routing_put_voice_mixer),
8024};
8025
8026static const struct snd_kcontrol_new tert_aux_pcm_rx_voice_mixer_controls[] = {
8027 SOC_SINGLE_EXT("CSVoice", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8028 MSM_FRONTEND_DAI_CS_VOICE, 1, 0, msm_routing_get_voice_mixer,
8029 msm_routing_put_voice_mixer),
8030 SOC_SINGLE_EXT("Voice2", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8031 MSM_FRONTEND_DAI_VOICE2, 1, 0, msm_routing_get_voice_mixer,
8032 msm_routing_put_voice_mixer),
8033 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8034 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8035 msm_routing_put_voice_mixer),
8036 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8037 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8038 msm_routing_put_voice_stub_mixer),
8039 SOC_SINGLE_EXT("VoLTE", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8040 MSM_FRONTEND_DAI_VOLTE, 1, 0, msm_routing_get_voice_mixer,
8041 msm_routing_put_voice_mixer),
8042 SOC_SINGLE_EXT("VoWLAN", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8043 MSM_FRONTEND_DAI_VOWLAN, 1, 0, msm_routing_get_voice_mixer,
8044 msm_routing_put_voice_mixer),
8045 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8046 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8047 msm_routing_put_voice_mixer),
8048 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8049 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8050 msm_routing_put_voice_mixer),
8051 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8052 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8053 msm_routing_put_voice_mixer),
8054 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8055 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8056 msm_routing_put_voice_mixer),
8057};
8058
8059static const struct snd_kcontrol_new quat_aux_pcm_rx_voice_mixer_controls[] = {
8060 SOC_SINGLE_EXT("CSVoice", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8061 MSM_FRONTEND_DAI_CS_VOICE, 1, 0, msm_routing_get_voice_mixer,
8062 msm_routing_put_voice_mixer),
8063 SOC_SINGLE_EXT("Voice2", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8064 MSM_FRONTEND_DAI_VOICE2, 1, 0, msm_routing_get_voice_mixer,
8065 msm_routing_put_voice_mixer),
8066 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8067 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8068 msm_routing_put_voice_mixer),
8069 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8070 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8071 msm_routing_put_voice_stub_mixer),
8072 SOC_SINGLE_EXT("VoLTE", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8073 MSM_FRONTEND_DAI_VOLTE, 1, 0, msm_routing_get_voice_mixer,
8074 msm_routing_put_voice_mixer),
8075 SOC_SINGLE_EXT("VoWLAN", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8076 MSM_FRONTEND_DAI_VOWLAN, 1, 0, msm_routing_get_voice_mixer,
8077 msm_routing_put_voice_mixer),
8078 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8079 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8080 msm_routing_put_voice_mixer),
8081 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8082 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8083 msm_routing_put_voice_mixer),
8084 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8085 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8086 msm_routing_put_voice_mixer),
8087 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8088 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8089 msm_routing_put_voice_mixer),
8090};
8091
8092static const struct snd_kcontrol_new hdmi_rx_voice_mixer_controls[] = {
8093 SOC_SINGLE_EXT("CSVoice", MSM_BACKEND_DAI_HDMI_RX,
8094 MSM_FRONTEND_DAI_CS_VOICE, 1, 0, msm_routing_get_voice_mixer,
8095 msm_routing_put_voice_mixer),
8096 SOC_SINGLE_EXT("Voice2", MSM_BACKEND_DAI_HDMI_RX,
8097 MSM_FRONTEND_DAI_VOICE2, 1, 0, msm_routing_get_voice_mixer,
8098 msm_routing_put_voice_mixer),
8099 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_HDMI_RX,
8100 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8101 msm_routing_put_voice_mixer),
8102 SOC_SINGLE_EXT("VoLTE", MSM_BACKEND_DAI_HDMI_RX,
8103 MSM_FRONTEND_DAI_VOLTE, 1, 0, msm_routing_get_voice_mixer,
8104 msm_routing_put_voice_mixer),
8105 SOC_SINGLE_EXT("VoWLAN", MSM_BACKEND_DAI_HDMI_RX,
8106 MSM_FRONTEND_DAI_VOWLAN, 1, 0, msm_routing_get_voice_mixer,
8107 msm_routing_put_voice_mixer),
8108 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_HDMI_RX,
8109 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8110 msm_routing_put_voice_stub_mixer),
8111 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_HDMI_RX,
8112 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8113 msm_routing_put_voice_stub_mixer),
8114 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_HDMI_RX,
8115 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8116 msm_routing_put_voice_stub_mixer),
8117 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_HDMI_RX,
8118 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8119 msm_routing_put_voice_mixer),
8120 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_HDMI_RX,
8121 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8122 msm_routing_put_voice_mixer),
8123 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_HDMI_RX,
8124 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8125 msm_routing_put_voice_mixer),
8126 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_HDMI_RX,
8127 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8128 msm_routing_put_voice_mixer),
8129};
8130
8131static const struct snd_kcontrol_new slimbus_7_rx_voice_mixer_controls[] = {
8132 SOC_SINGLE_EXT("CSVoice", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8133 MSM_FRONTEND_DAI_CS_VOICE, 1, 0, msm_routing_get_voice_mixer,
8134 msm_routing_put_voice_mixer),
8135 SOC_SINGLE_EXT("Voice2", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8136 MSM_FRONTEND_DAI_VOICE2, 1, 0, msm_routing_get_voice_mixer,
8137 msm_routing_put_voice_mixer),
8138 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8139 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8140 msm_routing_put_voice_mixer),
8141 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8142 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8143 msm_routing_put_voice_stub_mixer),
8144 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8145 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8146 msm_routing_put_voice_stub_mixer),
8147 SOC_SINGLE_EXT("VoLTE", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8148 MSM_FRONTEND_DAI_VOLTE, 1, 0, msm_routing_get_voice_mixer,
8149 msm_routing_put_voice_mixer),
8150 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8151 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8152 msm_routing_put_voice_stub_mixer),
8153 SOC_SINGLE_EXT("VoWLAN", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8154 MSM_FRONTEND_DAI_VOWLAN, 1, 0, msm_routing_get_voice_mixer,
8155 msm_routing_put_voice_mixer),
8156 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8157 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8158 msm_routing_put_voice_mixer),
8159 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8160 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8161 msm_routing_put_voice_mixer),
8162 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8163 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8164 msm_routing_put_voice_mixer),
8165 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8166 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8167 msm_routing_put_voice_mixer),
8168};
8169
8170static const struct snd_kcontrol_new slimbus_8_rx_voice_mixer_controls[] = {
8171 SOC_SINGLE_EXT("CSVoice", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8172 MSM_FRONTEND_DAI_CS_VOICE, 1, 0, msm_routing_get_voice_mixer,
8173 msm_routing_put_voice_mixer),
8174 SOC_SINGLE_EXT("Voice2", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8175 MSM_FRONTEND_DAI_VOICE2, 1, 0, msm_routing_get_voice_mixer,
8176 msm_routing_put_voice_mixer),
8177 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8178 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8179 msm_routing_put_voice_mixer),
8180 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8181 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8182 msm_routing_put_voice_stub_mixer),
8183 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8184 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8185 msm_routing_put_voice_stub_mixer),
8186 SOC_SINGLE_EXT("VoLTE", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8187 MSM_FRONTEND_DAI_VOLTE, 1, 0, msm_routing_get_voice_mixer,
8188 msm_routing_put_voice_mixer),
8189 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8190 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8191 msm_routing_put_voice_stub_mixer),
8192 SOC_SINGLE_EXT("VoWLAN", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8193 MSM_FRONTEND_DAI_VOWLAN, 1, 0, msm_routing_get_voice_mixer,
8194 msm_routing_put_voice_mixer),
8195 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8196 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8197 msm_routing_put_voice_mixer),
8198 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8199 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8200 msm_routing_put_voice_mixer),
8201 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8202 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8203 msm_routing_put_voice_mixer),
8204 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8205 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8206 msm_routing_put_voice_mixer),
8207};
8208
8209static const struct snd_kcontrol_new quat_tdm_rx_2_voice_mixer_controls[] = {
8210 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
8211 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8212 msm_routing_put_voice_mixer),
8213};
8214
8215static const struct snd_kcontrol_new stub_rx_mixer_controls[] = {
8216 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_EXTPROC_RX,
8217 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8218 msm_routing_put_voice_stub_mixer),
8219 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_EXTPROC_RX,
8220 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8221 msm_routing_put_voice_stub_mixer),
8222 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_EXTPROC_RX,
8223 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8224 msm_routing_put_voice_stub_mixer),
8225};
8226
8227static const struct snd_kcontrol_new slimbus_1_rx_mixer_controls[] = {
8228 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_SLIMBUS_1_RX,
8229 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8230 msm_routing_put_voice_stub_mixer),
8231 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_SLIMBUS_1_RX,
8232 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8233 msm_routing_put_voice_stub_mixer),
8234 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_SLIMBUS_1_RX,
8235 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8236 msm_routing_put_voice_stub_mixer),
8237};
8238
8239static const struct snd_kcontrol_new slimbus_3_rx_mixer_controls[] = {
8240 SOC_SINGLE_EXT("Voice Stub", MSM_BACKEND_DAI_SLIMBUS_3_RX,
8241 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8242 msm_routing_put_voice_stub_mixer),
8243 SOC_SINGLE_EXT("Voice2 Stub", MSM_BACKEND_DAI_SLIMBUS_3_RX,
8244 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8245 msm_routing_put_voice_stub_mixer),
8246 SOC_SINGLE_EXT("VoLTE Stub", MSM_BACKEND_DAI_SLIMBUS_3_RX,
8247 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8248 msm_routing_put_voice_stub_mixer),
8249};
8250
8251static const struct snd_kcontrol_new tx_voice_mixer_controls[] = {
8252 SOC_SINGLE_EXT("PRI_TX_Voice", MSM_BACKEND_DAI_PRI_I2S_TX,
8253 MSM_FRONTEND_DAI_CS_VOICE, 1, 0, msm_routing_get_voice_mixer,
8254 msm_routing_put_voice_mixer),
8255 SOC_SINGLE_EXT("MI2S_TX_Voice", MSM_BACKEND_DAI_MI2S_TX,
8256 MSM_FRONTEND_DAI_CS_VOICE, 1, 0, msm_routing_get_voice_mixer,
8257 msm_routing_put_voice_mixer),
8258 SOC_SINGLE_EXT("SLIM_0_TX_Voice", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8259 MSM_FRONTEND_DAI_CS_VOICE, 1, 0, msm_routing_get_voice_mixer,
8260 msm_routing_put_voice_mixer),
8261 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX_Voice",
8262 MSM_BACKEND_DAI_INT_BT_SCO_TX, MSM_FRONTEND_DAI_CS_VOICE, 1, 0,
8263 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8264 SOC_SINGLE_EXT("AFE_PCM_TX_Voice", MSM_BACKEND_DAI_AFE_PCM_TX,
8265 MSM_FRONTEND_DAI_CS_VOICE, 1, 0, msm_routing_get_voice_mixer,
8266 msm_routing_put_voice_mixer),
8267 SOC_SINGLE_EXT("AUX_PCM_TX_Voice", MSM_BACKEND_DAI_AUXPCM_TX,
8268 MSM_FRONTEND_DAI_CS_VOICE, 1, 0, msm_routing_get_voice_mixer,
8269 msm_routing_put_voice_mixer),
8270 SOC_SINGLE_EXT("SEC_AUX_PCM_TX_Voice", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
8271 MSM_FRONTEND_DAI_CS_VOICE, 1, 0, msm_routing_get_voice_mixer,
8272 msm_routing_put_voice_mixer),
8273 SOC_SINGLE_EXT("TERT_AUX_PCM_TX_Voice", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
8274 MSM_FRONTEND_DAI_CS_VOICE, 1, 0, msm_routing_get_voice_mixer,
8275 msm_routing_put_voice_mixer),
8276 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX_Voice", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
8277 MSM_FRONTEND_DAI_CS_VOICE, 1, 0, msm_routing_get_voice_mixer,
8278 msm_routing_put_voice_mixer),
8279 SOC_SINGLE_EXT("PRI_MI2S_TX_Voice", MSM_BACKEND_DAI_PRI_MI2S_TX,
8280 MSM_FRONTEND_DAI_CS_VOICE, 1, 0, msm_routing_get_voice_mixer,
8281 msm_routing_put_voice_mixer),
8282 SOC_SINGLE_EXT("SEC_MI2S_TX_Voice", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
8283 MSM_FRONTEND_DAI_CS_VOICE, 1, 0, msm_routing_get_voice_mixer,
8284 msm_routing_put_voice_mixer),
8285 SOC_SINGLE_EXT("TERT_MI2S_TX_Voice", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
8286 MSM_FRONTEND_DAI_CS_VOICE, 1, 0, msm_routing_get_voice_mixer,
8287 msm_routing_put_voice_mixer),
8288 SOC_SINGLE_EXT("SLIM_7_TX_Voice", MSM_BACKEND_DAI_SLIMBUS_7_TX,
8289 MSM_FRONTEND_DAI_CS_VOICE, 1, 0, msm_routing_get_voice_mixer,
8290 msm_routing_put_voice_mixer),
8291 SOC_SINGLE_EXT("SLIM_8_TX_Voice", MSM_BACKEND_DAI_SLIMBUS_8_TX,
8292 MSM_FRONTEND_DAI_CS_VOICE, 1, 0, msm_routing_get_voice_mixer,
8293 msm_routing_put_voice_mixer),
8294 SOC_SINGLE_EXT("USB_AUDIO_TX_Voice", MSM_BACKEND_DAI_USB_TX,
8295 MSM_FRONTEND_DAI_CS_VOICE, 1, 0, msm_routing_get_voice_mixer,
8296 msm_routing_put_voice_mixer),
8297};
8298
8299static const struct snd_kcontrol_new tx_voice2_mixer_controls[] = {
8300 SOC_SINGLE_EXT("PRI_TX_Voice2", MSM_BACKEND_DAI_PRI_I2S_TX,
8301 MSM_FRONTEND_DAI_VOICE2, 1, 0, msm_routing_get_voice_mixer,
8302 msm_routing_put_voice_mixer),
8303 SOC_SINGLE_EXT("MI2S_TX_Voice2", MSM_BACKEND_DAI_MI2S_TX,
8304 MSM_FRONTEND_DAI_VOICE2, 1, 0, msm_routing_get_voice_mixer,
8305 msm_routing_put_voice_mixer),
8306 SOC_SINGLE_EXT("SLIM_0_TX_Voice2", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8307 MSM_FRONTEND_DAI_VOICE2, 1, 0, msm_routing_get_voice_mixer,
8308 msm_routing_put_voice_mixer),
8309 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX_Voice2",
8310 MSM_BACKEND_DAI_INT_BT_SCO_TX, MSM_FRONTEND_DAI_VOICE2, 1, 0,
8311 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8312 SOC_SINGLE_EXT("AFE_PCM_TX_Voice2", MSM_BACKEND_DAI_AFE_PCM_TX,
8313 MSM_FRONTEND_DAI_VOICE2, 1, 0, msm_routing_get_voice_mixer,
8314 msm_routing_put_voice_mixer),
8315 SOC_SINGLE_EXT("AUX_PCM_TX_Voice2", MSM_BACKEND_DAI_AUXPCM_TX,
8316 MSM_FRONTEND_DAI_VOICE2, 1, 0, msm_routing_get_voice_mixer,
8317 msm_routing_put_voice_mixer),
8318 SOC_SINGLE_EXT("SEC_AUX_PCM_TX_Voice2", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
8319 MSM_FRONTEND_DAI_VOICE2, 1, 0, msm_routing_get_voice_mixer,
8320 msm_routing_put_voice_mixer),
8321 SOC_SINGLE_EXT("TERT_AUX_PCM_TX_Voice2", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
8322 MSM_FRONTEND_DAI_VOICE2, 1, 0, msm_routing_get_voice_mixer,
8323 msm_routing_put_voice_mixer),
8324 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX_Voice2", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
8325 MSM_FRONTEND_DAI_VOICE2, 1, 0, msm_routing_get_voice_mixer,
8326 msm_routing_put_voice_mixer),
8327 SOC_SINGLE_EXT("PRI_MI2S_TX_Voice2", MSM_BACKEND_DAI_PRI_MI2S_TX,
8328 MSM_FRONTEND_DAI_VOICE2, 1, 0, msm_routing_get_voice_mixer,
8329 msm_routing_put_voice_mixer),
8330 SOC_SINGLE_EXT("TERT_MI2S_TX_Voice2", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
8331 MSM_FRONTEND_DAI_VOICE2, 1, 0, msm_routing_get_voice_mixer,
8332 msm_routing_put_voice_mixer),
8333 SOC_SINGLE_EXT("SLIM_7_TX_Voice2", MSM_BACKEND_DAI_SLIMBUS_7_TX,
8334 MSM_FRONTEND_DAI_VOICE2, 1, 0, msm_routing_get_voice_mixer,
8335 msm_routing_put_voice_mixer),
8336 SOC_SINGLE_EXT("SLIM_8_TX_Voice2", MSM_BACKEND_DAI_SLIMBUS_8_TX,
8337 MSM_FRONTEND_DAI_VOICE2, 1, 0, msm_routing_get_voice_mixer,
8338 msm_routing_put_voice_mixer),
8339 SOC_SINGLE_EXT("USB_AUDIO_TX_Voice2", MSM_BACKEND_DAI_USB_TX,
8340 MSM_FRONTEND_DAI_VOICE2, 1, 0, msm_routing_get_voice_mixer,
8341 msm_routing_put_voice_mixer),
8342};
8343
8344static const struct snd_kcontrol_new tx_volte_mixer_controls[] = {
8345 SOC_SINGLE_EXT("PRI_TX_VoLTE", MSM_BACKEND_DAI_PRI_I2S_TX,
8346 MSM_FRONTEND_DAI_VOLTE, 1, 0, msm_routing_get_voice_mixer,
8347 msm_routing_put_voice_mixer),
8348 SOC_SINGLE_EXT("SLIM_0_TX_VoLTE", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8349 MSM_FRONTEND_DAI_VOLTE, 1, 0, msm_routing_get_voice_mixer,
8350 msm_routing_put_voice_mixer),
8351 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX_VoLTE",
8352 MSM_BACKEND_DAI_INT_BT_SCO_TX, MSM_FRONTEND_DAI_VOLTE, 1, 0,
8353 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8354 SOC_SINGLE_EXT("AFE_PCM_TX_VoLTE", MSM_BACKEND_DAI_AFE_PCM_TX,
8355 MSM_FRONTEND_DAI_VOLTE, 1, 0, msm_routing_get_voice_mixer,
8356 msm_routing_put_voice_mixer),
8357 SOC_SINGLE_EXT("AUX_PCM_TX_VoLTE", MSM_BACKEND_DAI_AUXPCM_TX,
8358 MSM_FRONTEND_DAI_VOLTE, 1, 0, msm_routing_get_voice_mixer,
8359 msm_routing_put_voice_mixer),
8360 SOC_SINGLE_EXT("SEC_AUX_PCM_TX_VoLTE", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
8361 MSM_FRONTEND_DAI_VOLTE, 1, 0, msm_routing_get_voice_mixer,
8362 msm_routing_put_voice_mixer),
8363 SOC_SINGLE_EXT("TERT_AUX_PCM_TX_VoLTE", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
8364 MSM_FRONTEND_DAI_VOLTE, 1, 0, msm_routing_get_voice_mixer,
8365 msm_routing_put_voice_mixer),
8366 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX_VoLTE", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
8367 MSM_FRONTEND_DAI_VOLTE, 1, 0, msm_routing_get_voice_mixer,
8368 msm_routing_put_voice_mixer),
8369 SOC_SINGLE_EXT("MI2S_TX_VoLTE", MSM_BACKEND_DAI_MI2S_TX,
8370 MSM_FRONTEND_DAI_VOLTE, 1, 0, msm_routing_get_voice_mixer,
8371 msm_routing_put_voice_mixer),
8372 SOC_SINGLE_EXT("PRI_MI2S_TX_VoLTE", MSM_BACKEND_DAI_PRI_MI2S_TX,
8373 MSM_FRONTEND_DAI_VOLTE, 1, 0, msm_routing_get_voice_mixer,
8374 msm_routing_put_voice_mixer),
8375 SOC_SINGLE_EXT("TERT_MI2S_TX_VoLTE", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
8376 MSM_FRONTEND_DAI_VOLTE, 1, 0, msm_routing_get_voice_mixer,
8377 msm_routing_put_voice_mixer),
8378 SOC_SINGLE_EXT("SLIM_7_TX_VoLTE", MSM_BACKEND_DAI_SLIMBUS_7_TX,
8379 MSM_FRONTEND_DAI_VOLTE, 1, 0, msm_routing_get_voice_mixer,
8380 msm_routing_put_voice_mixer),
8381 SOC_SINGLE_EXT("SLIM_8_TX_VoLTE", MSM_BACKEND_DAI_SLIMBUS_8_TX,
8382 MSM_FRONTEND_DAI_VOLTE, 1, 0, msm_routing_get_voice_mixer,
8383 msm_routing_put_voice_mixer),
8384 SOC_SINGLE_EXT("USB_AUDIO_TX_VoLTE", MSM_BACKEND_DAI_USB_TX,
8385 MSM_FRONTEND_DAI_VOLTE, 1, 0, msm_routing_get_voice_mixer,
8386 msm_routing_put_voice_mixer),
8387};
8388
8389static const struct snd_kcontrol_new tx_vowlan_mixer_controls[] = {
8390 SOC_SINGLE_EXT("PRI_TX_VoWLAN", MSM_BACKEND_DAI_PRI_I2S_TX,
8391 MSM_FRONTEND_DAI_VOWLAN, 1, 0, msm_routing_get_voice_mixer,
8392 msm_routing_put_voice_mixer),
8393 SOC_SINGLE_EXT("SLIM_0_TX_VoWLAN", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8394 MSM_FRONTEND_DAI_VOWLAN, 1, 0, msm_routing_get_voice_mixer,
8395 msm_routing_put_voice_mixer),
8396 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX_VoWLAN",
8397 MSM_BACKEND_DAI_INT_BT_SCO_TX, MSM_FRONTEND_DAI_VOWLAN, 1, 0,
8398 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8399 SOC_SINGLE_EXT("AFE_PCM_TX_VoWLAN", MSM_BACKEND_DAI_AFE_PCM_TX,
8400 MSM_FRONTEND_DAI_VOWLAN, 1, 0, msm_routing_get_voice_mixer,
8401 msm_routing_put_voice_mixer),
8402 SOC_SINGLE_EXT("AUX_PCM_TX_VoWLAN", MSM_BACKEND_DAI_AUXPCM_TX,
8403 MSM_FRONTEND_DAI_VOWLAN, 1, 0, msm_routing_get_voice_mixer,
8404 msm_routing_put_voice_mixer),
8405 SOC_SINGLE_EXT("SEC_AUX_PCM_TX_VoWLAN", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
8406 MSM_FRONTEND_DAI_VOWLAN, 1, 0, msm_routing_get_voice_mixer,
8407 msm_routing_put_voice_mixer),
8408 SOC_SINGLE_EXT("TERT_AUX_PCM_TX_VoWLAN", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
8409 MSM_FRONTEND_DAI_VOWLAN, 1, 0, msm_routing_get_voice_mixer,
8410 msm_routing_put_voice_mixer),
8411 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX_VoWLAN", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
8412 MSM_FRONTEND_DAI_VOWLAN, 1, 0, msm_routing_get_voice_mixer,
8413 msm_routing_put_voice_mixer),
8414 SOC_SINGLE_EXT("MI2S_TX_VoWLAN", MSM_BACKEND_DAI_MI2S_TX,
8415 MSM_FRONTEND_DAI_VOWLAN, 1, 0, msm_routing_get_voice_mixer,
8416 msm_routing_put_voice_mixer),
8417 SOC_SINGLE_EXT("PRI_MI2S_TX_VoWLAN", MSM_BACKEND_DAI_PRI_MI2S_TX,
8418 MSM_FRONTEND_DAI_VOWLAN, 1, 0, msm_routing_get_voice_mixer,
8419 msm_routing_put_voice_mixer),
8420 SOC_SINGLE_EXT("TERT_MI2S_TX_VoWLAN", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
8421 MSM_FRONTEND_DAI_VOWLAN, 1, 0, msm_routing_get_voice_mixer,
8422 msm_routing_put_voice_mixer),
8423 SOC_SINGLE_EXT("SLIM_7_TX_VoWLAN", MSM_BACKEND_DAI_SLIMBUS_7_TX,
8424 MSM_FRONTEND_DAI_VOWLAN, 1, 0, msm_routing_get_voice_mixer,
8425 msm_routing_put_voice_mixer),
8426 SOC_SINGLE_EXT("SLIM_8_TX_VoWLAN", MSM_BACKEND_DAI_SLIMBUS_8_TX,
8427 MSM_FRONTEND_DAI_VOWLAN, 1, 0, msm_routing_get_voice_mixer,
8428 msm_routing_put_voice_mixer),
8429 SOC_SINGLE_EXT("USB_AUDIO_TX_VoWLAN", MSM_BACKEND_DAI_USB_TX,
8430 MSM_FRONTEND_DAI_VOWLAN, 1, 0, msm_routing_get_voice_mixer,
8431 msm_routing_put_voice_mixer),
8432};
8433
8434static const struct snd_kcontrol_new tx_voicemmode1_mixer_controls[] = {
8435 SOC_SINGLE_EXT("PRI_TX_MMode1", MSM_BACKEND_DAI_PRI_I2S_TX,
8436 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8437 msm_routing_put_voice_mixer),
8438 SOC_SINGLE_EXT("MI2S_TX_MMode1", MSM_BACKEND_DAI_MI2S_TX,
8439 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8440 msm_routing_put_voice_mixer),
8441 SOC_SINGLE_EXT("SLIM_0_TX_MMode1",
8442 MSM_BACKEND_DAI_SLIMBUS_0_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8443 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8444 SOC_SINGLE_EXT("INT_BT_SCO_TX_MMode1",
8445 MSM_BACKEND_DAI_INT_BT_SCO_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8446 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8447 SOC_SINGLE_EXT("AFE_PCM_TX_MMode1",
8448 MSM_BACKEND_DAI_AFE_PCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0,
8449 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8450 SOC_SINGLE_EXT("AUX_PCM_TX_MMode1",
8451 MSM_BACKEND_DAI_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0,
8452 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8453 SOC_SINGLE_EXT("SEC_AUX_PCM_TX_MMode1",
8454 MSM_BACKEND_DAI_SEC_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8455 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8456 SOC_SINGLE_EXT("TERT_AUX_PCM_TX_MMode1",
8457 MSM_BACKEND_DAI_TERT_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8458 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8459 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX_MMode1",
8460 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8461 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8462 SOC_SINGLE_EXT("PRI_MI2S_TX_MMode1",
8463 MSM_BACKEND_DAI_PRI_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0,
8464 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8465 SOC_SINGLE_EXT("TERT_MI2S_TX_MMode1",
8466 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE1,
8467 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8468 SOC_SINGLE_EXT("INT3_MI2S_TX_MMode1",
8469 MSM_BACKEND_DAI_INT3_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE1,
8470 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8471 SOC_SINGLE_EXT("SLIM_7_TX_MMode1",
8472 MSM_BACKEND_DAI_SLIMBUS_7_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8473 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8474 SOC_SINGLE_EXT("SLIM_8_TX_MMode1",
8475 MSM_BACKEND_DAI_SLIMBUS_8_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8476 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8477 SOC_SINGLE_EXT("USB_AUDIO_TX_MMode1", MSM_BACKEND_DAI_USB_TX,
8478 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8479 msm_routing_put_voice_mixer),
8480 SOC_SINGLE_EXT("QUAT_TDM_TX_0_MMode1",
8481 MSM_BACKEND_DAI_QUAT_TDM_TX_0, MSM_FRONTEND_DAI_VOICEMMODE1,
8482 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8483};
8484
8485static const struct snd_kcontrol_new tx_voicemmode2_mixer_controls[] = {
8486 SOC_SINGLE_EXT("PRI_TX_MMode2", MSM_BACKEND_DAI_PRI_I2S_TX,
8487 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8488 msm_routing_put_voice_mixer),
8489 SOC_SINGLE_EXT("MI2S_TX_MMode2", MSM_BACKEND_DAI_MI2S_TX,
8490 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8491 msm_routing_put_voice_mixer),
8492 SOC_SINGLE_EXT("SLIM_0_TX_MMode2",
8493 MSM_BACKEND_DAI_SLIMBUS_0_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8494 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8495 SOC_SINGLE_EXT("INT_BT_SCO_TX_MMode2",
8496 MSM_BACKEND_DAI_INT_BT_SCO_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8497 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8498 SOC_SINGLE_EXT("AFE_PCM_TX_MMode2",
8499 MSM_BACKEND_DAI_AFE_PCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0,
8500 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8501 SOC_SINGLE_EXT("AUX_PCM_TX_MMode2",
8502 MSM_BACKEND_DAI_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0,
8503 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8504 SOC_SINGLE_EXT("SEC_AUX_PCM_TX_MMode2",
8505 MSM_BACKEND_DAI_SEC_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8506 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8507 SOC_SINGLE_EXT("TERT_AUX_PCM_TX_MMode2",
8508 MSM_BACKEND_DAI_TERT_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8509 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8510 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX_MMode2",
8511 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8512 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8513 SOC_SINGLE_EXT("PRI_MI2S_TX_MMode2",
8514 MSM_BACKEND_DAI_PRI_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0,
8515 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8516 SOC_SINGLE_EXT("TERT_MI2S_TX_MMode2",
8517 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE2,
8518 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8519 SOC_SINGLE_EXT("INT3_MI2S_TX_MMode2",
8520 MSM_BACKEND_DAI_INT3_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE2,
8521 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8522 SOC_SINGLE_EXT("SLIM_7_TX_MMode2",
8523 MSM_BACKEND_DAI_SLIMBUS_7_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8524 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8525 SOC_SINGLE_EXT("SLIM_8_TX_MMode2",
8526 MSM_BACKEND_DAI_SLIMBUS_8_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8527 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8528 SOC_SINGLE_EXT("USB_AUDIO_TX_MMode2",
8529 MSM_BACKEND_DAI_USB_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8530 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8531};
8532
8533static const struct snd_kcontrol_new tx_voip_mixer_controls[] = {
8534 SOC_SINGLE_EXT("PRI_TX_Voip", MSM_BACKEND_DAI_PRI_I2S_TX,
8535 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8536 msm_routing_put_voice_mixer),
8537 SOC_SINGLE_EXT("MI2S_TX_Voip", MSM_BACKEND_DAI_MI2S_TX,
8538 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8539 msm_routing_put_voice_mixer),
8540 SOC_SINGLE_EXT("SLIM_0_TX_Voip", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8541 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8542 msm_routing_put_voice_mixer),
8543 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX_Voip", MSM_BACKEND_DAI_INT_BT_SCO_TX,
8544 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8545 msm_routing_put_voice_mixer),
8546 SOC_SINGLE_EXT("AFE_PCM_TX_Voip", MSM_BACKEND_DAI_AFE_PCM_TX,
8547 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8548 msm_routing_put_voice_mixer),
8549 SOC_SINGLE_EXT("AUX_PCM_TX_Voip", MSM_BACKEND_DAI_AUXPCM_TX,
8550 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8551 msm_routing_put_voice_mixer),
8552 SOC_SINGLE_EXT("SEC_AUX_PCM_TX_Voip", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
8553 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8554 msm_routing_put_voice_mixer),
8555 SOC_SINGLE_EXT("TERT_AUX_PCM_TX_Voip", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
8556 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8557 msm_routing_put_voice_mixer),
8558 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX_Voip", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
8559 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8560 msm_routing_put_voice_mixer),
8561 SOC_SINGLE_EXT("PRI_MI2S_TX_Voip", MSM_BACKEND_DAI_PRI_MI2S_TX,
8562 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8563 msm_routing_put_voice_mixer),
8564 SOC_SINGLE_EXT("TERT_MI2S_TX_Voip", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
8565 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8566 msm_routing_put_voice_mixer),
8567 SOC_SINGLE_EXT("INT3_MI2S_TX_Voip", MSM_BACKEND_DAI_INT3_MI2S_TX,
8568 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8569 msm_routing_put_voice_mixer),
8570 SOC_SINGLE_EXT("SLIM_7_TX_Voip", MSM_BACKEND_DAI_SLIMBUS_7_TX,
8571 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8572 msm_routing_put_voice_mixer),
8573 SOC_SINGLE_EXT("SLIM_8_TX_Voip", MSM_BACKEND_DAI_SLIMBUS_8_TX,
8574 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8575 msm_routing_put_voice_mixer),
8576 SOC_SINGLE_EXT("USB_AUDIO_TX_Voip", MSM_BACKEND_DAI_USB_TX,
8577 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8578 msm_routing_put_voice_mixer),
8579};
8580
8581static const struct snd_kcontrol_new tx_voice_stub_mixer_controls[] = {
8582 SOC_SINGLE_EXT("STUB_TX_HL", MSM_BACKEND_DAI_EXTPROC_TX,
8583 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8584 msm_routing_put_voice_stub_mixer),
8585 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
8586 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8587 msm_routing_put_voice_stub_mixer),
8588 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
8589 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8590 msm_routing_put_voice_stub_mixer),
8591 SOC_SINGLE_EXT("STUB_1_TX_HL", MSM_BACKEND_DAI_EXTPROC_EC_TX,
8592 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8593 msm_routing_put_voice_stub_mixer),
8594 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
8595 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8596 msm_routing_put_voice_stub_mixer),
8597 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
8598 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8599 msm_routing_put_voice_stub_mixer),
8600 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
8601 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8602 msm_routing_put_voice_stub_mixer),
8603 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
8604 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8605 msm_routing_put_voice_stub_mixer),
8606 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
8607 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8608 msm_routing_put_voice_stub_mixer),
8609 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
8610 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8611 msm_routing_put_voice_stub_mixer),
8612 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
8613 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8614 msm_routing_put_voice_stub_mixer),
8615 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
8616 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8617 msm_routing_put_voice_stub_mixer),
8618 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
8619 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8620 msm_routing_put_voice_stub_mixer),
8621 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8622 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8623 msm_routing_put_voice_stub_mixer),
8624 SOC_SINGLE_EXT("SLIM_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
8625 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8626 msm_routing_put_voice_stub_mixer),
8627 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
8628 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8629 msm_routing_put_voice_stub_mixer),
8630 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
8631 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8632 msm_routing_put_voice_stub_mixer),
8633 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
8634 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8635 msm_routing_put_voice_stub_mixer),
8636};
8637
8638static const struct snd_kcontrol_new tx_voice2_stub_mixer_controls[] = {
8639 SOC_SINGLE_EXT("STUB_TX_HL", MSM_BACKEND_DAI_EXTPROC_TX,
8640 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8641 msm_routing_put_voice_stub_mixer),
8642 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
8643 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8644 msm_routing_put_voice_stub_mixer),
8645 SOC_SINGLE_EXT("STUB_1_TX_HL", MSM_BACKEND_DAI_EXTPROC_EC_TX,
8646 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8647 msm_routing_put_voice_stub_mixer),
8648 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
8649 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8650 msm_routing_put_voice_stub_mixer),
8651 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
8652 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8653 msm_routing_put_voice_stub_mixer),
8654 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
8655 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8656 msm_routing_put_voice_stub_mixer),
8657 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
8658 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8659 msm_routing_put_voice_stub_mixer),
8660 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8661 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8662 msm_routing_put_voice_stub_mixer),
8663 SOC_SINGLE_EXT("SLIM_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
8664 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8665 msm_routing_put_voice_stub_mixer),
8666 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
8667 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8668 msm_routing_put_voice_stub_mixer),
8669 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
8670 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8671 msm_routing_put_voice_stub_mixer),
8672 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
8673 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8674 msm_routing_put_voice_stub_mixer),
8675 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
8676 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8677 msm_routing_put_voice_stub_mixer),
8678 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
8679 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8680 msm_routing_put_voice_stub_mixer),
8681};
8682
8683static const struct snd_kcontrol_new tx_volte_stub_mixer_controls[] = {
8684 SOC_SINGLE_EXT("STUB_TX_HL", MSM_BACKEND_DAI_EXTPROC_TX,
8685 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8686 msm_routing_put_voice_stub_mixer),
8687 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
8688 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8689 msm_routing_put_voice_stub_mixer),
8690 SOC_SINGLE_EXT("STUB_1_TX_HL", MSM_BACKEND_DAI_EXTPROC_EC_TX,
8691 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8692 msm_routing_put_voice_stub_mixer),
8693 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
8694 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8695 msm_routing_put_voice_stub_mixer),
8696 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
8697 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8698 msm_routing_put_voice_stub_mixer),
8699 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
8700 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8701 msm_routing_put_voice_stub_mixer),
8702 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
8703 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8704 msm_routing_put_voice_stub_mixer),
8705 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8706 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8707 msm_routing_put_voice_stub_mixer),
8708 SOC_SINGLE_EXT("SLIM_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
8709 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8710 msm_routing_put_voice_stub_mixer),
8711 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
8712 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8713 msm_routing_put_voice_stub_mixer),
8714 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
8715 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8716 msm_routing_put_voice_stub_mixer),
8717 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
8718 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8719 msm_routing_put_voice_stub_mixer),
8720 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
8721 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8722 msm_routing_put_voice_stub_mixer),
8723 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
8724 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8725 msm_routing_put_voice_stub_mixer),
8726};
8727
8728static const struct snd_kcontrol_new tx_qchat_mixer_controls[] = {
8729 SOC_SINGLE_EXT("PRI_TX_QCHAT", MSM_BACKEND_DAI_PRI_I2S_TX,
8730 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8731 msm_routing_put_voice_mixer),
8732 SOC_SINGLE_EXT("SLIM_0_TX_QCHAT", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8733 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8734 msm_routing_put_voice_mixer),
8735 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX_QCHAT",
8736 MSM_BACKEND_DAI_INT_BT_SCO_TX, MSM_FRONTEND_DAI_QCHAT, 1, 0,
8737 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8738 SOC_SINGLE_EXT("AFE_PCM_TX_QCHAT", MSM_BACKEND_DAI_AFE_PCM_TX,
8739 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8740 msm_routing_put_voice_mixer),
8741 SOC_SINGLE_EXT("AUX_PCM_TX_QCHAT", MSM_BACKEND_DAI_AUXPCM_TX,
8742 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8743 msm_routing_put_voice_mixer),
8744 SOC_SINGLE_EXT("SEC_AUX_PCM_TX_QCHAT", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
8745 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8746 msm_routing_put_voice_mixer),
8747 SOC_SINGLE_EXT("TERT_AUX_PCM_TX_QCHAT", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
8748 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8749 msm_routing_put_voice_mixer),
8750 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX_QCHAT", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
8751 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8752 msm_routing_put_voice_mixer),
8753 SOC_SINGLE_EXT("MI2S_TX_QCHAT", MSM_BACKEND_DAI_MI2S_TX,
8754 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8755 msm_routing_put_voice_mixer),
8756 SOC_SINGLE_EXT("PRI_MI2S_TX_QCHAT", MSM_BACKEND_DAI_PRI_MI2S_TX,
8757 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8758 msm_routing_put_voice_mixer),
8759 SOC_SINGLE_EXT("TERT_MI2S_TX_QCHAT", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
8760 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8761 msm_routing_put_voice_mixer),
8762 SOC_SINGLE_EXT("INT3_MI2S_TX_QCHAT", MSM_BACKEND_DAI_INT3_MI2S_TX,
8763 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8764 msm_routing_put_voice_mixer),
8765 SOC_SINGLE_EXT("SLIM_7_TX_QCHAT", MSM_BACKEND_DAI_SLIMBUS_7_TX,
8766 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8767 msm_routing_put_voice_mixer),
8768 SOC_SINGLE_EXT("SLIM_8_TX_QCHAT", MSM_BACKEND_DAI_SLIMBUS_8_TX,
8769 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8770 msm_routing_put_voice_mixer),
8771 SOC_SINGLE_EXT("USB_AUDIO_TX_QCHAT", MSM_BACKEND_DAI_USB_TX,
8772 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8773 msm_routing_put_voice_mixer),
8774};
8775
8776static const struct snd_kcontrol_new int0_mi2s_rx_port_mixer_controls[] = {
8777 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
8778 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8779 msm_routing_put_port_mixer),
8780 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
8781 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8782 msm_routing_put_port_mixer),
8783 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
8784 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8785 msm_routing_put_port_mixer),
8786 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
8787 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8788 msm_routing_put_port_mixer),
8789 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
8790 MSM_BACKEND_DAI_INT3_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8791 msm_routing_put_port_mixer),
8792 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
8793 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
8794 msm_routing_put_port_mixer),
8795 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
8796 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
8797 msm_routing_put_port_mixer),
8798 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
8799 MSM_BACKEND_DAI_SLIMBUS_7_TX, 1, 0, msm_routing_get_port_mixer,
8800 msm_routing_put_port_mixer),
8801 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
8802 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
8803 msm_routing_put_port_mixer),
8804};
8805
8806static const struct snd_kcontrol_new int4_mi2s_rx_port_mixer_controls[] = {
8807 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
8808 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8809 msm_routing_put_port_mixer),
8810 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
8811 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8812 msm_routing_put_port_mixer),
8813 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
8814 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8815 msm_routing_put_port_mixer),
8816 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
8817 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8818 msm_routing_put_port_mixer),
8819 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
8820 MSM_BACKEND_DAI_INT3_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8821 msm_routing_put_port_mixer),
8822 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
8823 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
8824 msm_routing_put_port_mixer),
8825 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
8826 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
8827 msm_routing_put_port_mixer),
8828 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
8829 MSM_BACKEND_DAI_SLIMBUS_7_TX, 1, 0, msm_routing_get_port_mixer,
8830 msm_routing_put_port_mixer),
8831 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
8832 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
8833 msm_routing_put_port_mixer),
8834};
8835
8836static const struct snd_kcontrol_new sbus_0_rx_port_mixer_controls[] = {
8837 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8838 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
8839 msm_routing_put_port_mixer),
8840 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8841 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
8842 msm_routing_put_port_mixer),
8843 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8844 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
8845 msm_routing_put_port_mixer),
8846 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8847 MSM_BACKEND_DAI_SLIMBUS_7_TX, 1, 0, msm_routing_get_port_mixer,
8848 msm_routing_put_port_mixer),
8849 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8850 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
8851 msm_routing_put_port_mixer),
8852 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8853 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
8854 msm_routing_put_port_mixer),
8855 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8856 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
8857 msm_routing_put_port_mixer),
8858 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8859 MSM_BACKEND_DAI_TERT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
8860 msm_routing_put_port_mixer),
8861 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8862 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
8863 msm_routing_put_port_mixer),
8864 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8865 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8866 msm_routing_put_port_mixer),
8867 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8868 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8869 msm_routing_put_port_mixer),
8870 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8871 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8872 msm_routing_put_port_mixer),
8873 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8874 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8875 msm_routing_put_port_mixer),
8876 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8877 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8878 msm_routing_put_port_mixer),
8879 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8880 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
8881 msm_routing_put_port_mixer),
8882 SOC_SINGLE_EXT("PRI_MI2S_RX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8883 MSM_BACKEND_DAI_PRI_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
8884 msm_routing_put_port_mixer),
8885 SOC_SINGLE_EXT("SEC_MI2S_RX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8886 MSM_BACKEND_DAI_SECONDARY_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
8887 msm_routing_put_port_mixer),
8888 SOC_SINGLE_EXT("TERT_MI2S_RX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8889 MSM_BACKEND_DAI_TERTIARY_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
8890 msm_routing_put_port_mixer),
8891 SOC_SINGLE_EXT("QUAT_MI2S_RX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8892 MSM_BACKEND_DAI_QUATERNARY_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
8893 msm_routing_put_port_mixer),
8894};
8895
8896static const struct snd_kcontrol_new aux_pcm_rx_port_mixer_controls[] = {
8897 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_RX,
8898 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
8899 msm_routing_put_port_mixer),
8900 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_AUXPCM_RX,
8901 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
8902 msm_routing_put_port_mixer),
8903 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_AUXPCM_RX,
8904 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
8905 msm_routing_put_port_mixer),
8906 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_RX,
8907 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
8908 msm_routing_put_port_mixer),
8909 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_AUXPCM_RX,
8910 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0, msm_routing_get_port_mixer,
8911 msm_routing_put_port_mixer),
8912};
8913
8914static const struct snd_kcontrol_new sec_auxpcm_rx_port_mixer_controls[] = {
8915 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8916 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
8917 msm_routing_put_port_mixer),
8918 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8919 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
8920 msm_routing_put_port_mixer),
8921 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8922 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
8923 msm_routing_put_port_mixer),
8924};
8925
8926static const struct snd_kcontrol_new tert_auxpcm_rx_port_mixer_controls[] = {
8927 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8928 MSM_BACKEND_DAI_TERT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
8929 msm_routing_put_port_mixer),
8930 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8931 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
8932 msm_routing_put_port_mixer),
8933 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8934 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
8935 msm_routing_put_port_mixer),
8936};
8937
8938static const struct snd_kcontrol_new quat_auxpcm_rx_port_mixer_controls[] = {
8939 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8940 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
8941 msm_routing_put_port_mixer),
8942 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8943 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
8944 msm_routing_put_port_mixer),
8945 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8946 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
8947 msm_routing_put_port_mixer),
8948};
8949
8950static const struct snd_kcontrol_new sbus_1_rx_port_mixer_controls[] = {
8951 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
8952 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
8953 msm_routing_put_port_mixer),
8954 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
8955 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0, msm_routing_get_port_mixer,
8956 msm_routing_put_port_mixer),
8957 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
8958 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
8959 msm_routing_put_port_mixer),
8960 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
8961 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
8962 msm_routing_put_port_mixer),
8963 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
8964 MSM_BACKEND_DAI_TERT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
8965 msm_routing_put_port_mixer),
8966 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
8967 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
8968 msm_routing_put_port_mixer),
8969};
8970
8971static const struct snd_kcontrol_new sbus_3_rx_port_mixer_controls[] = {
8972 SOC_SINGLE_EXT("INTERNAL_BT_SCO_RX", MSM_BACKEND_DAI_SLIMBUS_3_RX,
8973 MSM_BACKEND_DAI_INT_BT_SCO_RX, 1, 0, msm_routing_get_port_mixer,
8974 msm_routing_put_port_mixer),
8975 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_3_RX,
8976 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8977 msm_routing_put_port_mixer),
8978 SOC_SINGLE_EXT("AFE_PCM_RX", MSM_BACKEND_DAI_SLIMBUS_3_RX,
8979 MSM_BACKEND_DAI_AFE_PCM_RX, 1, 0, msm_routing_get_port_mixer,
8980 msm_routing_put_port_mixer),
8981 SOC_SINGLE_EXT("AUX_PCM_RX", MSM_BACKEND_DAI_SLIMBUS_3_RX,
8982 MSM_BACKEND_DAI_AUXPCM_RX, 1, 0, msm_routing_get_port_mixer,
8983 msm_routing_put_port_mixer),
8984 SOC_SINGLE_EXT("SLIM_0_RX", MSM_BACKEND_DAI_SLIMBUS_3_RX,
8985 MSM_BACKEND_DAI_SLIMBUS_0_RX, 1, 0, msm_routing_get_port_mixer,
8986 msm_routing_put_port_mixer),
8987};
8988
8989static const struct snd_kcontrol_new sbus_6_rx_port_mixer_controls[] = {
8990 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8991 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
8992 msm_routing_put_port_mixer),
8993 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8994 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
8995 msm_routing_put_port_mixer),
8996 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8997 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
8998 msm_routing_put_port_mixer),
8999 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9000 MSM_BACKEND_DAI_SLIMBUS_7_TX, 1, 0, msm_routing_get_port_mixer,
9001 msm_routing_put_port_mixer),
9002 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9003 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9004 msm_routing_put_port_mixer),
9005 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9006 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9007 msm_routing_put_port_mixer),
9008 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9009 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9010 msm_routing_put_port_mixer),
9011 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9012 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9013 msm_routing_put_port_mixer),
9014 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9015 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9016 msm_routing_put_port_mixer),
9017 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9018 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9019 msm_routing_put_port_mixer),
9020 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9021 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9022 msm_routing_put_port_mixer),
9023 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9024 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
9025 msm_routing_put_port_mixer),
9026};
9027
9028static const struct snd_kcontrol_new bt_sco_rx_port_mixer_controls[] = {
9029 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_INT_BT_SCO_RX,
9030 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9031 msm_routing_put_port_mixer),
9032 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_INT_BT_SCO_RX,
9033 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9034 msm_routing_put_port_mixer),
9035};
9036
9037static const struct snd_kcontrol_new afe_pcm_rx_port_mixer_controls[] = {
9038 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_AFE_PCM_RX,
9039 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9040 msm_routing_put_port_mixer),
9041 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_AFE_PCM_RX,
9042 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9043 msm_routing_put_port_mixer),
9044};
9045
9046
9047static const struct snd_kcontrol_new hdmi_rx_port_mixer_controls[] = {
9048 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_HDMI_RX,
9049 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9050 msm_routing_put_port_mixer),
9051};
9052
9053static const struct snd_kcontrol_new display_port_rx_port_mixer_controls[] = {
9054 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
9055 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9056 msm_routing_put_port_mixer),
9057};
9058
9059static const struct snd_kcontrol_new sec_i2s_rx_port_mixer_controls[] = {
9060 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_SEC_I2S_RX,
9061 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9062 msm_routing_put_port_mixer),
9063};
9064
9065static const struct snd_kcontrol_new mi2s_rx_port_mixer_controls[] = {
9066 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_MI2S_RX,
9067 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9068 msm_routing_put_port_mixer),
9069 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_RX,
9070 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9071 msm_routing_put_port_mixer),
9072};
9073
9074static const struct snd_kcontrol_new primary_mi2s_rx_port_mixer_controls[] = {
9075 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9076 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9077 msm_routing_put_port_mixer),
9078 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9079 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9080 msm_routing_put_port_mixer),
9081 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9082 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9083 msm_routing_put_port_mixer),
9084 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9085 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9086 msm_routing_put_port_mixer),
9087 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9088 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
9089 msm_routing_put_port_mixer),
9090 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9091 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9092 msm_routing_put_port_mixer),
9093 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9094 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9095 msm_routing_put_port_mixer),
9096 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9097 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9098 msm_routing_put_port_mixer),
9099 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9100 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9101 msm_routing_put_port_mixer),
9102};
9103
9104static const struct snd_kcontrol_new usb_rx_port_mixer_controls[] = {
9105 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_RX,
9106 MSM_BACKEND_DAI_USB_TX, 1, 0, msm_routing_get_port_mixer,
9107 msm_routing_put_port_mixer),
9108};
9109
9110static const struct snd_kcontrol_new quat_mi2s_rx_port_mixer_controls[] = {
9111 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9112 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9113 msm_routing_put_port_mixer),
9114 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9115 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9116 msm_routing_put_port_mixer),
9117 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9118 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9119 msm_routing_put_port_mixer),
9120 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9121 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9122 msm_routing_put_port_mixer),
9123 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9124 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9125 msm_routing_put_port_mixer),
9126 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9127 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9128 msm_routing_put_port_mixer),
9129 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9130 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9131 msm_routing_put_port_mixer),
9132 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9133 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9134 msm_routing_put_port_mixer),
9135};
9136
9137static const struct snd_kcontrol_new pri_tdm_rx_0_port_mixer_controls[] = {
9138 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9139 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9140 msm_routing_get_port_mixer,
9141 msm_routing_put_port_mixer),
9142 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9143 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9144 msm_routing_get_port_mixer,
9145 msm_routing_put_port_mixer),
9146 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9147 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9148 msm_routing_get_port_mixer,
9149 msm_routing_put_port_mixer),
9150 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9151 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9152 msm_routing_get_port_mixer,
9153 msm_routing_put_port_mixer),
9154 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9155 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9156 msm_routing_get_port_mixer,
9157 msm_routing_put_port_mixer),
9158 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9159 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9160 msm_routing_get_port_mixer,
9161 msm_routing_put_port_mixer),
9162 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9163 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9164 msm_routing_get_port_mixer,
9165 msm_routing_put_port_mixer),
9166 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9167 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9168 msm_routing_get_port_mixer,
9169 msm_routing_put_port_mixer),
9170 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9171 MSM_BACKEND_DAI_PRI_TDM_TX_0, 1, 0,
9172 msm_routing_get_port_mixer,
9173 msm_routing_put_port_mixer),
9174 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9175 MSM_BACKEND_DAI_PRI_TDM_TX_1, 1, 0,
9176 msm_routing_get_port_mixer,
9177 msm_routing_put_port_mixer),
9178 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9179 MSM_BACKEND_DAI_PRI_TDM_TX_2, 1, 0,
9180 msm_routing_get_port_mixer,
9181 msm_routing_put_port_mixer),
9182 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9183 MSM_BACKEND_DAI_PRI_TDM_TX_3, 1, 0,
9184 msm_routing_get_port_mixer,
9185 msm_routing_put_port_mixer),
9186 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9187 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9188 msm_routing_get_port_mixer,
9189 msm_routing_put_port_mixer),
9190 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9191 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9192 msm_routing_get_port_mixer,
9193 msm_routing_put_port_mixer),
9194 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9195 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9196 msm_routing_get_port_mixer,
9197 msm_routing_put_port_mixer),
9198 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9199 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9200 msm_routing_get_port_mixer,
9201 msm_routing_put_port_mixer),
9202};
9203
9204static const struct snd_kcontrol_new pri_tdm_rx_1_port_mixer_controls[] = {
9205 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9206 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9207 msm_routing_get_port_mixer,
9208 msm_routing_put_port_mixer),
9209 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9210 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9211 msm_routing_get_port_mixer,
9212 msm_routing_put_port_mixer),
9213 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9214 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9215 msm_routing_get_port_mixer,
9216 msm_routing_put_port_mixer),
9217 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9218 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9219 msm_routing_get_port_mixer,
9220 msm_routing_put_port_mixer),
9221 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9222 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9223 msm_routing_get_port_mixer,
9224 msm_routing_put_port_mixer),
9225 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9226 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9227 msm_routing_get_port_mixer,
9228 msm_routing_put_port_mixer),
9229 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9230 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9231 msm_routing_get_port_mixer,
9232 msm_routing_put_port_mixer),
9233 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9234 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9235 msm_routing_get_port_mixer,
9236 msm_routing_put_port_mixer),
9237 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9238 MSM_BACKEND_DAI_PRI_TDM_TX_0, 1, 0,
9239 msm_routing_get_port_mixer,
9240 msm_routing_put_port_mixer),
9241 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9242 MSM_BACKEND_DAI_PRI_TDM_TX_1, 1, 0,
9243 msm_routing_get_port_mixer,
9244 msm_routing_put_port_mixer),
9245 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9246 MSM_BACKEND_DAI_PRI_TDM_TX_2, 1, 0,
9247 msm_routing_get_port_mixer,
9248 msm_routing_put_port_mixer),
9249 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9250 MSM_BACKEND_DAI_PRI_TDM_TX_3, 1, 0,
9251 msm_routing_get_port_mixer,
9252 msm_routing_put_port_mixer),
9253 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9254 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9255 msm_routing_get_port_mixer,
9256 msm_routing_put_port_mixer),
9257 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9258 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9259 msm_routing_get_port_mixer,
9260 msm_routing_put_port_mixer),
9261 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9262 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9263 msm_routing_get_port_mixer,
9264 msm_routing_put_port_mixer),
9265 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9266 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9267 msm_routing_get_port_mixer,
9268 msm_routing_put_port_mixer),
9269};
9270
9271static const struct snd_kcontrol_new pri_tdm_rx_2_port_mixer_controls[] = {
9272 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9273 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9274 msm_routing_get_port_mixer,
9275 msm_routing_put_port_mixer),
9276 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9277 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9278 msm_routing_get_port_mixer,
9279 msm_routing_put_port_mixer),
9280 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9281 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9282 msm_routing_get_port_mixer,
9283 msm_routing_put_port_mixer),
9284 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9285 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9286 msm_routing_get_port_mixer,
9287 msm_routing_put_port_mixer),
9288 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9289 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9290 msm_routing_get_port_mixer,
9291 msm_routing_put_port_mixer),
9292 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9293 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9294 msm_routing_get_port_mixer,
9295 msm_routing_put_port_mixer),
9296 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9297 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9298 msm_routing_get_port_mixer,
9299 msm_routing_put_port_mixer),
9300 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9301 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9302 msm_routing_get_port_mixer,
9303 msm_routing_put_port_mixer),
9304 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9305 MSM_BACKEND_DAI_PRI_TDM_TX_0, 1, 0,
9306 msm_routing_get_port_mixer,
9307 msm_routing_put_port_mixer),
9308 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9309 MSM_BACKEND_DAI_PRI_TDM_TX_1, 1, 0,
9310 msm_routing_get_port_mixer,
9311 msm_routing_put_port_mixer),
9312 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9313 MSM_BACKEND_DAI_PRI_TDM_TX_2, 1, 0,
9314 msm_routing_get_port_mixer,
9315 msm_routing_put_port_mixer),
9316 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9317 MSM_BACKEND_DAI_PRI_TDM_TX_3, 1, 0,
9318 msm_routing_get_port_mixer,
9319 msm_routing_put_port_mixer),
9320 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9321 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9322 msm_routing_get_port_mixer,
9323 msm_routing_put_port_mixer),
9324 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9325 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9326 msm_routing_get_port_mixer,
9327 msm_routing_put_port_mixer),
9328 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9329 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9330 msm_routing_get_port_mixer,
9331 msm_routing_put_port_mixer),
9332 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9333 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9334 msm_routing_get_port_mixer,
9335 msm_routing_put_port_mixer),
9336};
9337
9338static const struct snd_kcontrol_new pri_tdm_rx_3_port_mixer_controls[] = {
9339 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9340 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9341 msm_routing_get_port_mixer,
9342 msm_routing_put_port_mixer),
9343 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9344 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9345 msm_routing_get_port_mixer,
9346 msm_routing_put_port_mixer),
9347 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9348 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9349 msm_routing_get_port_mixer,
9350 msm_routing_put_port_mixer),
9351 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9352 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9353 msm_routing_get_port_mixer,
9354 msm_routing_put_port_mixer),
9355 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9356 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9357 msm_routing_get_port_mixer,
9358 msm_routing_put_port_mixer),
9359 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9360 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9361 msm_routing_get_port_mixer,
9362 msm_routing_put_port_mixer),
9363 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9364 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9365 msm_routing_get_port_mixer,
9366 msm_routing_put_port_mixer),
9367 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9368 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9369 msm_routing_get_port_mixer,
9370 msm_routing_put_port_mixer),
9371 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9372 MSM_BACKEND_DAI_PRI_TDM_TX_0, 1, 0,
9373 msm_routing_get_port_mixer,
9374 msm_routing_put_port_mixer),
9375 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9376 MSM_BACKEND_DAI_PRI_TDM_TX_1, 1, 0,
9377 msm_routing_get_port_mixer,
9378 msm_routing_put_port_mixer),
9379 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9380 MSM_BACKEND_DAI_PRI_TDM_TX_2, 1, 0,
9381 msm_routing_get_port_mixer,
9382 msm_routing_put_port_mixer),
9383 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9384 MSM_BACKEND_DAI_PRI_TDM_TX_3, 1, 0,
9385 msm_routing_get_port_mixer,
9386 msm_routing_put_port_mixer),
9387 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9388 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9389 msm_routing_get_port_mixer,
9390 msm_routing_put_port_mixer),
9391 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9392 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9393 msm_routing_get_port_mixer,
9394 msm_routing_put_port_mixer),
9395 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9396 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9397 msm_routing_get_port_mixer,
9398 msm_routing_put_port_mixer),
9399 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9400 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9401 msm_routing_get_port_mixer,
9402 msm_routing_put_port_mixer),
9403};
9404
9405static const struct snd_kcontrol_new sec_tdm_rx_0_port_mixer_controls[] = {
9406 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9407 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9408 msm_routing_get_port_mixer,
9409 msm_routing_put_port_mixer),
9410 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9411 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9412 msm_routing_get_port_mixer,
9413 msm_routing_put_port_mixer),
9414 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9415 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9416 msm_routing_get_port_mixer,
9417 msm_routing_put_port_mixer),
9418 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9419 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9420 msm_routing_get_port_mixer,
9421 msm_routing_put_port_mixer),
9422 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9423 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9424 msm_routing_get_port_mixer,
9425 msm_routing_put_port_mixer),
9426 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9427 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9428 msm_routing_get_port_mixer,
9429 msm_routing_put_port_mixer),
9430 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9431 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9432 msm_routing_get_port_mixer,
9433 msm_routing_put_port_mixer),
9434 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9435 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9436 msm_routing_get_port_mixer,
9437 msm_routing_put_port_mixer),
9438 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9439 MSM_BACKEND_DAI_SEC_TDM_TX_0, 1, 0,
9440 msm_routing_get_port_mixer,
9441 msm_routing_put_port_mixer),
9442 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9443 MSM_BACKEND_DAI_SEC_TDM_TX_1, 1, 0,
9444 msm_routing_get_port_mixer,
9445 msm_routing_put_port_mixer),
9446 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9447 MSM_BACKEND_DAI_SEC_TDM_TX_2, 1, 0,
9448 msm_routing_get_port_mixer,
9449 msm_routing_put_port_mixer),
9450 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9451 MSM_BACKEND_DAI_SEC_TDM_TX_3, 1, 0,
9452 msm_routing_get_port_mixer,
9453 msm_routing_put_port_mixer),
9454 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9455 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9456 msm_routing_get_port_mixer,
9457 msm_routing_put_port_mixer),
9458 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9459 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9460 msm_routing_get_port_mixer,
9461 msm_routing_put_port_mixer),
9462 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9463 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9464 msm_routing_get_port_mixer,
9465 msm_routing_put_port_mixer),
9466 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9467 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9468 msm_routing_get_port_mixer,
9469 msm_routing_put_port_mixer),
9470};
9471
9472static const struct snd_kcontrol_new sec_tdm_rx_1_port_mixer_controls[] = {
9473 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9474 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9475 msm_routing_get_port_mixer,
9476 msm_routing_put_port_mixer),
9477 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9478 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9479 msm_routing_get_port_mixer,
9480 msm_routing_put_port_mixer),
9481 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9482 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9483 msm_routing_get_port_mixer,
9484 msm_routing_put_port_mixer),
9485 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9486 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9487 msm_routing_get_port_mixer,
9488 msm_routing_put_port_mixer),
9489 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9490 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9491 msm_routing_get_port_mixer,
9492 msm_routing_put_port_mixer),
9493 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9494 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9495 msm_routing_get_port_mixer,
9496 msm_routing_put_port_mixer),
9497 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9498 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9499 msm_routing_get_port_mixer,
9500 msm_routing_put_port_mixer),
9501 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9502 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9503 msm_routing_get_port_mixer,
9504 msm_routing_put_port_mixer),
9505 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9506 MSM_BACKEND_DAI_SEC_TDM_TX_0, 1, 0,
9507 msm_routing_get_port_mixer,
9508 msm_routing_put_port_mixer),
9509 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9510 MSM_BACKEND_DAI_SEC_TDM_TX_1, 1, 0,
9511 msm_routing_get_port_mixer,
9512 msm_routing_put_port_mixer),
9513 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9514 MSM_BACKEND_DAI_SEC_TDM_TX_2, 1, 0,
9515 msm_routing_get_port_mixer,
9516 msm_routing_put_port_mixer),
9517 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9518 MSM_BACKEND_DAI_SEC_TDM_TX_3, 1, 0,
9519 msm_routing_get_port_mixer,
9520 msm_routing_put_port_mixer),
9521 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9522 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9523 msm_routing_get_port_mixer,
9524 msm_routing_put_port_mixer),
9525 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9526 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9527 msm_routing_get_port_mixer,
9528 msm_routing_put_port_mixer),
9529 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9530 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9531 msm_routing_get_port_mixer,
9532 msm_routing_put_port_mixer),
9533 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9534 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9535 msm_routing_get_port_mixer,
9536 msm_routing_put_port_mixer),
9537};
9538
9539static const struct snd_kcontrol_new sec_tdm_rx_2_port_mixer_controls[] = {
9540 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9541 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9542 msm_routing_get_port_mixer,
9543 msm_routing_put_port_mixer),
9544 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9545 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9546 msm_routing_get_port_mixer,
9547 msm_routing_put_port_mixer),
9548 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9549 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9550 msm_routing_get_port_mixer,
9551 msm_routing_put_port_mixer),
9552 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9553 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9554 msm_routing_get_port_mixer,
9555 msm_routing_put_port_mixer),
9556 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9557 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9558 msm_routing_get_port_mixer,
9559 msm_routing_put_port_mixer),
9560 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9561 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9562 msm_routing_get_port_mixer,
9563 msm_routing_put_port_mixer),
9564 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9565 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9566 msm_routing_get_port_mixer,
9567 msm_routing_put_port_mixer),
9568 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9569 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9570 msm_routing_get_port_mixer,
9571 msm_routing_put_port_mixer),
9572 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9573 MSM_BACKEND_DAI_SEC_TDM_TX_0, 1, 0,
9574 msm_routing_get_port_mixer,
9575 msm_routing_put_port_mixer),
9576 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9577 MSM_BACKEND_DAI_SEC_TDM_TX_1, 1, 0,
9578 msm_routing_get_port_mixer,
9579 msm_routing_put_port_mixer),
9580 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9581 MSM_BACKEND_DAI_SEC_TDM_TX_2, 1, 0,
9582 msm_routing_get_port_mixer,
9583 msm_routing_put_port_mixer),
9584 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9585 MSM_BACKEND_DAI_SEC_TDM_TX_3, 1, 0,
9586 msm_routing_get_port_mixer,
9587 msm_routing_put_port_mixer),
9588 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9589 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9590 msm_routing_get_port_mixer,
9591 msm_routing_put_port_mixer),
9592 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9593 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9594 msm_routing_get_port_mixer,
9595 msm_routing_put_port_mixer),
9596 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9597 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9598 msm_routing_get_port_mixer,
9599 msm_routing_put_port_mixer),
9600 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9601 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9602 msm_routing_get_port_mixer,
9603 msm_routing_put_port_mixer),
9604};
9605
9606static const struct snd_kcontrol_new sec_tdm_rx_3_port_mixer_controls[] = {
9607 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9608 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9609 msm_routing_get_port_mixer,
9610 msm_routing_put_port_mixer),
9611 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9612 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9613 msm_routing_get_port_mixer,
9614 msm_routing_put_port_mixer),
9615 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9616 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9617 msm_routing_get_port_mixer,
9618 msm_routing_put_port_mixer),
9619 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9620 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9621 msm_routing_get_port_mixer,
9622 msm_routing_put_port_mixer),
9623 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9624 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9625 msm_routing_get_port_mixer,
9626 msm_routing_put_port_mixer),
9627 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9628 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9629 msm_routing_get_port_mixer,
9630 msm_routing_put_port_mixer),
9631 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9632 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9633 msm_routing_get_port_mixer,
9634 msm_routing_put_port_mixer),
9635 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9636 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9637 msm_routing_get_port_mixer,
9638 msm_routing_put_port_mixer),
9639 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9640 MSM_BACKEND_DAI_SEC_TDM_TX_0, 1, 0,
9641 msm_routing_get_port_mixer,
9642 msm_routing_put_port_mixer),
9643 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9644 MSM_BACKEND_DAI_SEC_TDM_TX_1, 1, 0,
9645 msm_routing_get_port_mixer,
9646 msm_routing_put_port_mixer),
9647 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9648 MSM_BACKEND_DAI_SEC_TDM_TX_2, 1, 0,
9649 msm_routing_get_port_mixer,
9650 msm_routing_put_port_mixer),
9651 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9652 MSM_BACKEND_DAI_SEC_TDM_TX_3, 1, 0,
9653 msm_routing_get_port_mixer,
9654 msm_routing_put_port_mixer),
9655 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9656 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9657 msm_routing_get_port_mixer,
9658 msm_routing_put_port_mixer),
9659 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9660 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9661 msm_routing_get_port_mixer,
9662 msm_routing_put_port_mixer),
9663 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9664 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9665 msm_routing_get_port_mixer,
9666 msm_routing_put_port_mixer),
9667 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9668 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9669 msm_routing_get_port_mixer,
9670 msm_routing_put_port_mixer),
9671};
9672
9673static const struct snd_kcontrol_new tert_tdm_rx_0_port_mixer_controls[] = {
9674 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
9675 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9676 msm_routing_get_port_mixer,
9677 msm_routing_put_port_mixer),
9678 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
9679 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9680 msm_routing_get_port_mixer,
9681 msm_routing_put_port_mixer),
9682 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
9683 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9684 msm_routing_get_port_mixer,
9685 msm_routing_put_port_mixer),
9686 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
9687 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9688 msm_routing_get_port_mixer,
9689 msm_routing_put_port_mixer),
9690 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
9691 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9692 msm_routing_get_port_mixer,
9693 msm_routing_put_port_mixer),
9694 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
9695 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9696 msm_routing_get_port_mixer,
9697 msm_routing_put_port_mixer),
9698 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
9699 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9700 msm_routing_get_port_mixer,
9701 msm_routing_put_port_mixer),
9702 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
9703 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9704 msm_routing_get_port_mixer,
9705 msm_routing_put_port_mixer),
9706 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_0,
9707 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
9708 msm_routing_get_port_mixer,
9709 msm_routing_put_port_mixer),
9710 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_0,
9711 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
9712 msm_routing_get_port_mixer,
9713 msm_routing_put_port_mixer),
9714 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_0,
9715 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
9716 msm_routing_get_port_mixer,
9717 msm_routing_put_port_mixer),
9718 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_0,
9719 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
9720 msm_routing_get_port_mixer,
9721 msm_routing_put_port_mixer),
9722 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_0,
9723 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9724 msm_routing_get_port_mixer,
9725 msm_routing_put_port_mixer),
9726 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_0,
9727 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9728 msm_routing_get_port_mixer,
9729 msm_routing_put_port_mixer),
9730 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_0,
9731 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9732 msm_routing_get_port_mixer,
9733 msm_routing_put_port_mixer),
9734 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_0,
9735 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9736 msm_routing_get_port_mixer,
9737 msm_routing_put_port_mixer),
9738};
9739
9740static const struct snd_kcontrol_new tert_tdm_rx_1_port_mixer_controls[] = {
9741 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
9742 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9743 msm_routing_get_port_mixer,
9744 msm_routing_put_port_mixer),
9745 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
9746 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9747 msm_routing_get_port_mixer,
9748 msm_routing_put_port_mixer),
9749 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
9750 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9751 msm_routing_get_port_mixer,
9752 msm_routing_put_port_mixer),
9753 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
9754 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9755 msm_routing_get_port_mixer,
9756 msm_routing_put_port_mixer),
9757 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
9758 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9759 msm_routing_get_port_mixer,
9760 msm_routing_put_port_mixer),
9761 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
9762 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9763 msm_routing_get_port_mixer,
9764 msm_routing_put_port_mixer),
9765 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
9766 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9767 msm_routing_get_port_mixer,
9768 msm_routing_put_port_mixer),
9769 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
9770 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9771 msm_routing_get_port_mixer,
9772 msm_routing_put_port_mixer),
9773 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_1,
9774 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
9775 msm_routing_get_port_mixer,
9776 msm_routing_put_port_mixer),
9777 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_1,
9778 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
9779 msm_routing_get_port_mixer,
9780 msm_routing_put_port_mixer),
9781 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_1,
9782 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
9783 msm_routing_get_port_mixer,
9784 msm_routing_put_port_mixer),
9785 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_1,
9786 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
9787 msm_routing_get_port_mixer,
9788 msm_routing_put_port_mixer),
9789 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_1,
9790 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9791 msm_routing_get_port_mixer,
9792 msm_routing_put_port_mixer),
9793 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_1,
9794 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9795 msm_routing_get_port_mixer,
9796 msm_routing_put_port_mixer),
9797 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_1,
9798 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9799 msm_routing_get_port_mixer,
9800 msm_routing_put_port_mixer),
9801 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_1,
9802 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9803 msm_routing_get_port_mixer,
9804 msm_routing_put_port_mixer),
9805};
9806
9807static const struct snd_kcontrol_new tert_tdm_rx_2_port_mixer_controls[] = {
9808 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
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_TERT_TDM_RX_2,
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_TERT_TDM_RX_2,
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_TERT_TDM_RX_2,
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_TERT_TDM_RX_2,
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_TERT_TDM_RX_2,
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_TERT_TDM_RX_2,
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_TERT_TDM_RX_2,
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("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_2,
9841 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
9842 msm_routing_get_port_mixer,
9843 msm_routing_put_port_mixer),
9844 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_2,
9845 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
9846 msm_routing_get_port_mixer,
9847 msm_routing_put_port_mixer),
9848 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_2,
9849 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
9850 msm_routing_get_port_mixer,
9851 msm_routing_put_port_mixer),
9852 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_2,
9853 MSM_BACKEND_DAI_TERT_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_TERT_TDM_RX_2,
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_TERT_TDM_RX_2,
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_TERT_TDM_RX_2,
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_TERT_TDM_RX_2,
9869 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9870 msm_routing_get_port_mixer,
9871 msm_routing_put_port_mixer),
9872};
9873
9874static const struct snd_kcontrol_new tert_tdm_rx_3_port_mixer_controls[] = {
9875 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
9876 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9877 msm_routing_get_port_mixer,
9878 msm_routing_put_port_mixer),
9879 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
9880 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9881 msm_routing_get_port_mixer,
9882 msm_routing_put_port_mixer),
9883 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
9884 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9885 msm_routing_get_port_mixer,
9886 msm_routing_put_port_mixer),
9887 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
9888 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9889 msm_routing_get_port_mixer,
9890 msm_routing_put_port_mixer),
9891 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
9892 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9893 msm_routing_get_port_mixer,
9894 msm_routing_put_port_mixer),
9895 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
9896 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9897 msm_routing_get_port_mixer,
9898 msm_routing_put_port_mixer),
9899 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
9900 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9901 msm_routing_get_port_mixer,
9902 msm_routing_put_port_mixer),
9903 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
9904 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9905 msm_routing_get_port_mixer,
9906 msm_routing_put_port_mixer),
9907 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_3,
9908 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
9909 msm_routing_get_port_mixer,
9910 msm_routing_put_port_mixer),
9911 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_3,
9912 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
9913 msm_routing_get_port_mixer,
9914 msm_routing_put_port_mixer),
9915 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_3,
9916 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
9917 msm_routing_get_port_mixer,
9918 msm_routing_put_port_mixer),
9919 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_3,
9920 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
9921 msm_routing_get_port_mixer,
9922 msm_routing_put_port_mixer),
9923 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_3,
9924 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9925 msm_routing_get_port_mixer,
9926 msm_routing_put_port_mixer),
9927 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_3,
9928 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9929 msm_routing_get_port_mixer,
9930 msm_routing_put_port_mixer),
9931 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_3,
9932 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9933 msm_routing_get_port_mixer,
9934 msm_routing_put_port_mixer),
9935 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_3,
9936 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9937 msm_routing_get_port_mixer,
9938 msm_routing_put_port_mixer),
9939};
9940
9941static const struct snd_kcontrol_new quat_tdm_rx_0_port_mixer_controls[] = {
9942 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
9943 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9944 msm_routing_get_port_mixer,
9945 msm_routing_put_port_mixer),
9946 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
9947 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9948 msm_routing_get_port_mixer,
9949 msm_routing_put_port_mixer),
9950 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
9951 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
9952 msm_routing_get_port_mixer,
9953 msm_routing_put_port_mixer),
9954 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
9955 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9956 msm_routing_get_port_mixer,
9957 msm_routing_put_port_mixer),
9958 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
9959 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9960 msm_routing_get_port_mixer,
9961 msm_routing_put_port_mixer),
9962 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
9963 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9964 msm_routing_get_port_mixer,
9965 msm_routing_put_port_mixer),
9966 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
9967 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9968 msm_routing_get_port_mixer,
9969 msm_routing_put_port_mixer),
9970 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
9971 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9972 msm_routing_get_port_mixer,
9973 msm_routing_put_port_mixer),
9974 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
9975 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
9976 msm_routing_get_port_mixer,
9977 msm_routing_put_port_mixer),
9978 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
9979 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
9980 msm_routing_get_port_mixer,
9981 msm_routing_put_port_mixer),
9982 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
9983 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
9984 msm_routing_get_port_mixer,
9985 msm_routing_put_port_mixer),
9986 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
9987 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
9988 msm_routing_get_port_mixer,
9989 msm_routing_put_port_mixer),
9990 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
9991 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9992 msm_routing_get_port_mixer,
9993 msm_routing_put_port_mixer),
9994 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
9995 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9996 msm_routing_get_port_mixer,
9997 msm_routing_put_port_mixer),
9998 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
9999 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10000 msm_routing_get_port_mixer,
10001 msm_routing_put_port_mixer),
10002 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10003 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10004 msm_routing_get_port_mixer,
10005 msm_routing_put_port_mixer),
10006};
10007
10008static const struct snd_kcontrol_new quat_tdm_rx_1_port_mixer_controls[] = {
10009 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10010 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10011 msm_routing_get_port_mixer,
10012 msm_routing_put_port_mixer),
10013 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10014 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10015 msm_routing_get_port_mixer,
10016 msm_routing_put_port_mixer),
10017 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10018 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10019 msm_routing_get_port_mixer,
10020 msm_routing_put_port_mixer),
10021 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10022 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10023 msm_routing_get_port_mixer,
10024 msm_routing_put_port_mixer),
10025 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10026 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10027 msm_routing_get_port_mixer,
10028 msm_routing_put_port_mixer),
10029 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10030 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10031 msm_routing_get_port_mixer,
10032 msm_routing_put_port_mixer),
10033 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10034 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10035 msm_routing_get_port_mixer,
10036 msm_routing_put_port_mixer),
10037 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10038 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10039 msm_routing_get_port_mixer,
10040 msm_routing_put_port_mixer),
10041 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10042 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10043 msm_routing_get_port_mixer,
10044 msm_routing_put_port_mixer),
10045 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10046 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10047 msm_routing_get_port_mixer,
10048 msm_routing_put_port_mixer),
10049 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10050 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10051 msm_routing_get_port_mixer,
10052 msm_routing_put_port_mixer),
10053 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10054 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10055 msm_routing_get_port_mixer,
10056 msm_routing_put_port_mixer),
10057 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10058 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10059 msm_routing_get_port_mixer,
10060 msm_routing_put_port_mixer),
10061 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10062 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10063 msm_routing_get_port_mixer,
10064 msm_routing_put_port_mixer),
10065 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10066 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10067 msm_routing_get_port_mixer,
10068 msm_routing_put_port_mixer),
10069 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10070 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10071 msm_routing_get_port_mixer,
10072 msm_routing_put_port_mixer),
10073};
10074
10075static const struct snd_kcontrol_new quat_tdm_rx_2_port_mixer_controls[] = {
10076 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10077 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10078 msm_routing_get_port_mixer,
10079 msm_routing_put_port_mixer),
10080 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10081 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10082 msm_routing_get_port_mixer,
10083 msm_routing_put_port_mixer),
10084 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10085 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10086 msm_routing_get_port_mixer,
10087 msm_routing_put_port_mixer),
10088 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10089 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10090 msm_routing_get_port_mixer,
10091 msm_routing_put_port_mixer),
10092 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10093 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10094 msm_routing_get_port_mixer,
10095 msm_routing_put_port_mixer),
10096 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10097 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10098 msm_routing_get_port_mixer,
10099 msm_routing_put_port_mixer),
10100 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10101 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10102 msm_routing_get_port_mixer,
10103 msm_routing_put_port_mixer),
10104 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10105 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10106 msm_routing_get_port_mixer,
10107 msm_routing_put_port_mixer),
10108 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10109 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10110 msm_routing_get_port_mixer,
10111 msm_routing_put_port_mixer),
10112 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10113 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10114 msm_routing_get_port_mixer,
10115 msm_routing_put_port_mixer),
10116 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10117 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10118 msm_routing_get_port_mixer,
10119 msm_routing_put_port_mixer),
10120 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10121 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10122 msm_routing_get_port_mixer,
10123 msm_routing_put_port_mixer),
10124 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10125 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10126 msm_routing_get_port_mixer,
10127 msm_routing_put_port_mixer),
10128 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10129 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10130 msm_routing_get_port_mixer,
10131 msm_routing_put_port_mixer),
10132 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10133 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10134 msm_routing_get_port_mixer,
10135 msm_routing_put_port_mixer),
10136 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10137 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10138 msm_routing_get_port_mixer,
10139 msm_routing_put_port_mixer),
10140};
10141
10142static const struct snd_kcontrol_new quat_tdm_rx_3_port_mixer_controls[] = {
10143 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10144 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10145 msm_routing_get_port_mixer,
10146 msm_routing_put_port_mixer),
10147 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10148 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10149 msm_routing_get_port_mixer,
10150 msm_routing_put_port_mixer),
10151 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10152 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10153 msm_routing_get_port_mixer,
10154 msm_routing_put_port_mixer),
10155 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10156 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10157 msm_routing_get_port_mixer,
10158 msm_routing_put_port_mixer),
10159 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10160 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10161 msm_routing_get_port_mixer,
10162 msm_routing_put_port_mixer),
10163 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10164 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10165 msm_routing_get_port_mixer,
10166 msm_routing_put_port_mixer),
10167 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10168 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10169 msm_routing_get_port_mixer,
10170 msm_routing_put_port_mixer),
10171 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10172 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10173 msm_routing_get_port_mixer,
10174 msm_routing_put_port_mixer),
10175 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10176 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10177 msm_routing_get_port_mixer,
10178 msm_routing_put_port_mixer),
10179 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10180 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10181 msm_routing_get_port_mixer,
10182 msm_routing_put_port_mixer),
10183 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10184 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10185 msm_routing_get_port_mixer,
10186 msm_routing_put_port_mixer),
10187 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10188 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10189 msm_routing_get_port_mixer,
10190 msm_routing_put_port_mixer),
10191 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10192 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10193 msm_routing_get_port_mixer,
10194 msm_routing_put_port_mixer),
10195 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10196 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10197 msm_routing_get_port_mixer,
10198 msm_routing_put_port_mixer),
10199 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10200 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10201 msm_routing_get_port_mixer,
10202 msm_routing_put_port_mixer),
10203 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10204 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10205 msm_routing_get_port_mixer,
10206 msm_routing_put_port_mixer),
10207};
10208
10209static const struct snd_kcontrol_new tert_mi2s_rx_port_mixer_controls[] = {
10210 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
10211 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
10212 msm_routing_put_port_mixer),
10213 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
10214 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
10215 msm_routing_put_port_mixer),
10216 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
10217 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
10218 msm_routing_put_port_mixer),
10219 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
10220 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
10221 msm_routing_put_port_mixer),
10222 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
10223 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
10224 msm_routing_put_port_mixer),
10225 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
10226 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
10227 msm_routing_put_port_mixer),
10228};
10229
10230static const struct snd_kcontrol_new sec_mi2s_rx_port_mixer_controls[] = {
10231 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
10232 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
10233 msm_routing_put_port_mixer),
10234 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
10235 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
10236 msm_routing_put_port_mixer),
10237 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
10238 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
10239 msm_routing_put_port_mixer),
10240 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
10241 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
10242 msm_routing_put_port_mixer),
10243 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
10244 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
10245 msm_routing_put_port_mixer),
10246 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
10247 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
10248 msm_routing_put_port_mixer),
10249 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
10250 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
10251 msm_routing_put_port_mixer),
10252};
10253
10254static const struct snd_kcontrol_new lsm1_mixer_controls[] = {
10255 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
10256 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
10257 msm_routing_put_listen_mixer),
10258 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
10259 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
10260 msm_routing_put_listen_mixer),
10261 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
10262 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
10263 msm_routing_put_listen_mixer),
10264 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
10265 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
10266 msm_routing_put_listen_mixer),
10267 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
10268 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
10269 msm_routing_put_listen_mixer),
10270 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
10271 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
10272 msm_routing_put_listen_mixer),
10273 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
10274 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
10275 msm_routing_put_listen_mixer),
10276 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
10277 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
10278 msm_routing_put_listen_mixer),
10279};
10280
10281static const struct snd_kcontrol_new lsm2_mixer_controls[] = {
10282 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
10283 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
10284 msm_routing_put_listen_mixer),
10285 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
10286 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
10287 msm_routing_put_listen_mixer),
10288 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
10289 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
10290 msm_routing_put_listen_mixer),
10291 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
10292 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
10293 msm_routing_put_listen_mixer),
10294 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
10295 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
10296 msm_routing_put_listen_mixer),
10297 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
10298 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
10299 msm_routing_put_listen_mixer),
10300 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
10301 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
10302 msm_routing_put_listen_mixer),
10303 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
10304 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
10305 msm_routing_put_listen_mixer),
10306};
10307
10308static const struct snd_kcontrol_new lsm3_mixer_controls[] = {
10309 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
10310 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
10311 msm_routing_put_listen_mixer),
10312 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
10313 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
10314 msm_routing_put_listen_mixer),
10315 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
10316 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
10317 msm_routing_put_listen_mixer),
10318 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
10319 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
10320 msm_routing_put_listen_mixer),
10321 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
10322 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
10323 msm_routing_put_listen_mixer),
10324 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
10325 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
10326 msm_routing_put_listen_mixer),
10327 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
10328 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
10329 msm_routing_put_listen_mixer),
10330 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
10331 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
10332 msm_routing_put_listen_mixer),
10333};
10334
10335static const struct snd_kcontrol_new lsm4_mixer_controls[] = {
10336 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
10337 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
10338 msm_routing_put_listen_mixer),
10339 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
10340 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
10341 msm_routing_put_listen_mixer),
10342 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
10343 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
10344 msm_routing_put_listen_mixer),
10345 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
10346 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
10347 msm_routing_put_listen_mixer),
10348 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
10349 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
10350 msm_routing_put_listen_mixer),
10351 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
10352 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
10353 msm_routing_put_listen_mixer),
10354 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
10355 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
10356 msm_routing_put_listen_mixer),
10357 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
10358 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
10359 msm_routing_put_listen_mixer),
10360};
10361
10362static const struct snd_kcontrol_new lsm5_mixer_controls[] = {
10363 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
10364 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
10365 msm_routing_put_listen_mixer),
10366 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
10367 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
10368 msm_routing_put_listen_mixer),
10369 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
10370 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
10371 msm_routing_put_listen_mixer),
10372 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
10373 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
10374 msm_routing_put_listen_mixer),
10375 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
10376 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
10377 msm_routing_put_listen_mixer),
10378 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
10379 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
10380 msm_routing_put_listen_mixer),
10381 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
10382 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
10383 msm_routing_put_listen_mixer),
10384 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
10385 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
10386 msm_routing_put_listen_mixer),
10387};
10388
10389static const struct snd_kcontrol_new lsm6_mixer_controls[] = {
10390 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
10391 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
10392 msm_routing_put_listen_mixer),
10393 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
10394 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
10395 msm_routing_put_listen_mixer),
10396 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
10397 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
10398 msm_routing_put_listen_mixer),
10399 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
10400 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
10401 msm_routing_put_listen_mixer),
10402 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
10403 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
10404 msm_routing_put_listen_mixer),
10405 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
10406 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
10407 msm_routing_put_listen_mixer),
10408 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
10409 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
10410 msm_routing_put_listen_mixer),
10411 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
10412 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
10413 msm_routing_put_listen_mixer),
10414};
10415
10416static const struct snd_kcontrol_new lsm7_mixer_controls[] = {
10417 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
10418 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
10419 msm_routing_put_listen_mixer),
10420 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
10421 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
10422 msm_routing_put_listen_mixer),
10423 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
10424 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
10425 msm_routing_put_listen_mixer),
10426 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
10427 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
10428 msm_routing_put_listen_mixer),
10429 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
10430 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
10431 msm_routing_put_listen_mixer),
10432 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
10433 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
10434 msm_routing_put_listen_mixer),
10435 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
10436 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
10437 msm_routing_put_listen_mixer),
10438 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
10439 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
10440 msm_routing_put_listen_mixer),
10441};
10442
10443static const struct snd_kcontrol_new lsm8_mixer_controls[] = {
10444 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
10445 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
10446 msm_routing_put_listen_mixer),
10447 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
10448 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
10449 msm_routing_put_listen_mixer),
10450 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
10451 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
10452 msm_routing_put_listen_mixer),
10453 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
10454 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
10455 msm_routing_put_listen_mixer),
10456 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
10457 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
10458 msm_routing_put_listen_mixer),
10459 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
10460 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
10461 msm_routing_put_listen_mixer),
10462 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
10463 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
10464 msm_routing_put_listen_mixer),
10465 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
10466 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
10467 msm_routing_put_listen_mixer),
10468};
10469
10470static const struct snd_kcontrol_new slim_fm_switch_mixer_controls =
10471 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
10472 0, 1, 0, msm_routing_get_switch_mixer,
10473 msm_routing_put_switch_mixer);
10474
10475static const struct snd_kcontrol_new slim1_fm_switch_mixer_controls =
10476 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
10477 0, 1, 0, msm_routing_get_switch_mixer,
10478 msm_routing_put_switch_mixer);
10479
10480static const struct snd_kcontrol_new slim3_fm_switch_mixer_controls =
10481 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
10482 0, 1, 0, msm_routing_get_switch_mixer,
10483 msm_routing_put_switch_mixer);
10484
10485static const struct snd_kcontrol_new slim4_fm_switch_mixer_controls =
10486 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
10487 0, 1, 0, msm_routing_get_switch_mixer,
10488 msm_routing_put_switch_mixer);
10489
10490static const struct snd_kcontrol_new slim6_fm_switch_mixer_controls =
10491 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
10492 0, 1, 0, msm_routing_get_switch_mixer,
10493 msm_routing_put_switch_mixer);
10494
10495static const struct snd_kcontrol_new pcm_rx_switch_mixer_controls =
10496 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
10497 0, 1, 0, msm_routing_get_fm_pcmrx_switch_mixer,
10498 msm_routing_put_fm_pcmrx_switch_mixer);
10499
10500static const struct snd_kcontrol_new int0_mi2s_rx_switch_mixer_controls =
10501 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
10502 0, 1, 0, msm_routing_get_int0_mi2s_switch_mixer,
10503 msm_routing_put_int0_mi2s_switch_mixer);
10504
10505static const struct snd_kcontrol_new int4_mi2s_rx_switch_mixer_controls =
10506 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
10507 0, 1, 0, msm_routing_get_int4_mi2s_switch_mixer,
10508 msm_routing_put_int4_mi2s_switch_mixer);
10509
10510static const struct snd_kcontrol_new pri_mi2s_rx_switch_mixer_controls =
10511 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
10512 0, 1, 0, msm_routing_get_pri_mi2s_switch_mixer,
10513 msm_routing_put_pri_mi2s_switch_mixer);
10514
10515static const struct snd_kcontrol_new sec_mi2s_rx_switch_mixer_controls =
10516 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
10517 0, 1, 0, msm_routing_get_sec_mi2s_switch_mixer,
10518 msm_routing_put_sec_mi2s_switch_mixer);
10519
10520static const struct snd_kcontrol_new tert_mi2s_rx_switch_mixer_controls =
10521 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
10522 0, 1, 0, msm_routing_get_tert_mi2s_switch_mixer,
10523 msm_routing_put_tert_mi2s_switch_mixer);
10524
10525static const struct snd_kcontrol_new quat_mi2s_rx_switch_mixer_controls =
10526 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
10527 0, 1, 0, msm_routing_get_quat_mi2s_switch_mixer,
10528 msm_routing_put_quat_mi2s_switch_mixer);
10529
10530static const struct snd_kcontrol_new hfp_pri_aux_switch_mixer_controls =
10531 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
10532 0, 1, 0, msm_routing_get_hfp_switch_mixer,
10533 msm_routing_put_hfp_switch_mixer);
10534
10535static const struct snd_kcontrol_new hfp_aux_switch_mixer_controls =
10536 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
10537 0, 1, 0, msm_routing_get_hfp_switch_mixer,
10538 msm_routing_put_hfp_switch_mixer);
10539
10540static const struct snd_kcontrol_new hfp_int_switch_mixer_controls =
10541 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
10542 0, 1, 0, msm_routing_get_hfp_switch_mixer,
10543 msm_routing_put_hfp_switch_mixer);
10544
10545static const struct snd_kcontrol_new hfp_slim7_switch_mixer_controls =
10546 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
10547 0, 1, 0, msm_routing_get_hfp_switch_mixer,
10548 msm_routing_put_hfp_switch_mixer);
10549
10550static const struct snd_kcontrol_new usb_switch_mixer_controls =
10551 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
10552 0, 1, 0, msm_routing_get_usb_switch_mixer,
10553 msm_routing_put_usb_switch_mixer);
10554
10555static const struct soc_enum lsm_port_enum =
10556 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(lsm_port_text), lsm_port_text);
10557
10558static const char * const lsm_func_text[] = {
10559 "None", "AUDIO", "BEACON", "ULTRASOUND", "SWAUDIO",
10560};
10561static const struct soc_enum lsm_func_enum =
10562 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(lsm_func_text), lsm_func_text);
10563
10564static const struct snd_kcontrol_new lsm_controls[] = {
10565 /* kcontrol of lsm_function */
10566 SOC_ENUM_EXT(SLIMBUS_0_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
10567 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
10568 SOC_ENUM_EXT(SLIMBUS_1_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
10569 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
10570 SOC_ENUM_EXT(SLIMBUS_2_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
10571 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
10572 SOC_ENUM_EXT(SLIMBUS_3_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
10573 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
10574 SOC_ENUM_EXT(SLIMBUS_4_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
10575 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
10576 SOC_ENUM_EXT(SLIMBUS_5_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
10577 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
10578 SOC_ENUM_EXT(TERT_MI2S_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
10579 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
10580 SOC_ENUM_EXT(QUAT_MI2S_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
10581 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
10582 SOC_ENUM_EXT(INT3_MI2S_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
10583 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
10584 /* kcontrol of lsm_port */
10585 SOC_ENUM_EXT("LSM1 Port", lsm_port_enum,
10586 msm_routing_lsm_port_get,
10587 msm_routing_lsm_port_put),
10588 SOC_ENUM_EXT("LSM2 Port", lsm_port_enum,
10589 msm_routing_lsm_port_get,
10590 msm_routing_lsm_port_put),
10591 SOC_ENUM_EXT("LSM3 Port", lsm_port_enum,
10592 msm_routing_lsm_port_get,
10593 msm_routing_lsm_port_put),
10594 SOC_ENUM_EXT("LSM4 Port", lsm_port_enum,
10595 msm_routing_lsm_port_get,
10596 msm_routing_lsm_port_put),
10597 SOC_ENUM_EXT("LSM5 Port", lsm_port_enum,
10598 msm_routing_lsm_port_get,
10599 msm_routing_lsm_port_put),
10600 SOC_ENUM_EXT("LSM6 Port", lsm_port_enum,
10601 msm_routing_lsm_port_get,
10602 msm_routing_lsm_port_put),
10603 SOC_ENUM_EXT("LSM7 Port", lsm_port_enum,
10604 msm_routing_lsm_port_get,
10605 msm_routing_lsm_port_put),
10606 SOC_ENUM_EXT("LSM8 Port", lsm_port_enum,
10607 msm_routing_lsm_port_get,
10608 msm_routing_lsm_port_put),
10609};
10610
10611static const char * const aanc_slim_0_rx_text[] = {
10612 "ZERO", "SLIMBUS_0_TX", "SLIMBUS_1_TX", "SLIMBUS_2_TX", "SLIMBUS_3_TX",
10613 "SLIMBUS_4_TX", "SLIMBUS_5_TX", "SLIMBUS_6_TX"
10614};
10615
10616static const struct soc_enum aanc_slim_0_rx_enum =
10617 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(aanc_slim_0_rx_text),
10618 aanc_slim_0_rx_text);
10619
10620static const struct snd_kcontrol_new aanc_slim_0_rx_mux[] = {
10621 SOC_ENUM_EXT("AANC_SLIM_0_RX MUX", aanc_slim_0_rx_enum,
10622 msm_routing_slim_0_rx_aanc_mux_get,
10623 msm_routing_slim_0_rx_aanc_mux_put)
10624};
10625
10626static int msm_routing_get_stereo_to_custom_stereo_control(
10627 struct snd_kcontrol *kcontrol,
10628 struct snd_ctl_elem_value *ucontrol)
10629{
10630 ucontrol->value.integer.value[0] = is_custom_stereo_on;
10631 return 0;
10632}
10633
10634static int msm_routing_put_stereo_to_custom_stereo_control(
10635 struct snd_kcontrol *kcontrol,
10636 struct snd_ctl_elem_value *ucontrol)
10637{
10638 int flag = 0, i = 0, rc = 0, idx = 0;
10639 int be_index = 0, port_id, topo_id;
10640 unsigned int session_id = 0;
10641 uint16_t op_FL_ip_FL_weight = 0;
10642 uint16_t op_FL_ip_FR_weight = 0;
10643 uint16_t op_FR_ip_FL_weight = 0;
10644 uint16_t op_FR_ip_FR_weight = 0;
10645
10646 flag = ucontrol->value.integer.value[0];
10647 pr_debug("%s E flag %d\n", __func__, flag);
10648
10649 if ((is_custom_stereo_on && flag) || (!is_custom_stereo_on && !flag)) {
10650 pr_err("%s: is_custom_stereo_on %d, flag %d\n",
10651 __func__, is_custom_stereo_on, flag);
10652 return 0;
10653 }
10654 is_custom_stereo_on = flag ? true : false;
10655 pr_debug("%s:is_custom_stereo_on %d\n", __func__, is_custom_stereo_on);
10656 for (be_index = 0; be_index < MSM_BACKEND_DAI_MAX; be_index++) {
10657 port_id = msm_bedais[be_index].port_id;
10658 if (!msm_bedais[be_index].active)
10659 continue;
10660 if ((port_id != SLIMBUS_0_RX) &&
10661 (port_id != RT_PROXY_PORT_001_RX) &&
10662 (port_id != AFE_PORT_ID_PRIMARY_MI2S_RX) &&
10663 (port_id != AFE_PORT_ID_INT4_MI2S_RX))
10664 continue;
10665
10666 for_each_set_bit(i, &msm_bedais[be_index].fe_sessions[0],
10667 MSM_FRONTEND_DAI_MM_SIZE) {
10668 if (fe_dai_map[i][SESSION_TYPE_RX].perf_mode !=
10669 LEGACY_PCM_MODE)
10670 goto skip_send_custom_stereo;
10671 session_id =
10672 fe_dai_map[i][SESSION_TYPE_RX].strm_id;
10673 if (is_custom_stereo_on) {
10674 op_FL_ip_FL_weight =
10675 Q14_GAIN_ZERO_POINT_FIVE;
10676 op_FL_ip_FR_weight =
10677 Q14_GAIN_ZERO_POINT_FIVE;
10678 op_FR_ip_FL_weight =
10679 Q14_GAIN_ZERO_POINT_FIVE;
10680 op_FR_ip_FR_weight =
10681 Q14_GAIN_ZERO_POINT_FIVE;
10682 } else {
10683 op_FL_ip_FL_weight = Q14_GAIN_UNITY;
10684 op_FL_ip_FR_weight = 0;
10685 op_FR_ip_FL_weight = 0;
10686 op_FR_ip_FR_weight = Q14_GAIN_UNITY;
10687 }
10688 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++) {
10689 unsigned long copp =
10690 session_copp_map[i]
10691 [SESSION_TYPE_RX][be_index];
10692 if (!test_bit(idx, &copp))
10693 goto skip_send_custom_stereo;
10694 topo_id = adm_get_topology_for_port_copp_idx(
10695 msm_bedais[be_index].port_id, idx);
10696 if (topo_id < 0)
10697 pr_debug("%s:Err:custom stereo topo %d",
10698 __func__, topo_id);
10699 pr_debug("idx %d\n", idx);
10700 if (topo_id == DS2_ADM_COPP_TOPOLOGY_ID)
10701 rc = msm_ds2_dap_set_custom_stereo_onoff
10702 (msm_bedais[be_index].port_id,
10703 idx, is_custom_stereo_on);
10704 else if (topo_id == DOLBY_ADM_COPP_TOPOLOGY_ID)
10705 rc = dolby_dap_set_custom_stereo_onoff(
10706 msm_bedais[be_index].port_id,
10707 idx, is_custom_stereo_on);
10708 else
10709 rc = msm_qti_pp_send_stereo_to_custom_stereo_cmd
10710 (msm_bedais[be_index].port_id,
10711 idx, session_id,
10712 op_FL_ip_FL_weight,
10713 op_FL_ip_FR_weight,
10714 op_FR_ip_FL_weight,
10715 op_FR_ip_FR_weight);
10716 if (rc < 0)
10717skip_send_custom_stereo:
10718 pr_err("%s: err setting custom stereo\n",
10719 __func__);
10720 }
10721
10722 }
10723 }
10724 return 0;
10725}
10726
10727static const struct snd_kcontrol_new stereo_to_custom_stereo_controls[] = {
10728 SOC_SINGLE_EXT("Set Custom Stereo OnOff", SND_SOC_NOPM, 0,
10729 1, 0, msm_routing_get_stereo_to_custom_stereo_control,
10730 msm_routing_put_stereo_to_custom_stereo_control),
10731};
10732
10733static int msm_routing_get_app_type_cfg_control(struct snd_kcontrol *kcontrol,
10734 struct snd_ctl_elem_value *ucontrol)
10735{
10736 return 0;
10737}
10738
10739static int msm_routing_put_app_type_cfg_control(struct snd_kcontrol *kcontrol,
10740 struct snd_ctl_elem_value *ucontrol)
10741{
10742 int i = 0, j;
10743 int num_app_types = ucontrol->value.integer.value[i++];
10744
10745 pr_debug("%s\n", __func__);
10746
10747 memset(app_type_cfg, 0, MAX_APP_TYPES*
10748 sizeof(struct msm_pcm_routing_app_type_data));
10749 if (num_app_types > MAX_APP_TYPES) {
10750 pr_err("%s: number of app types exceed the max supported\n",
10751 __func__);
10752 return -EINVAL;
10753 }
10754 for (j = 0; j < num_app_types; j++) {
10755 app_type_cfg[j].app_type =
10756 ucontrol->value.integer.value[i++];
10757 app_type_cfg[j].sample_rate =
10758 ucontrol->value.integer.value[i++];
10759 app_type_cfg[j].bit_width =
10760 ucontrol->value.integer.value[i++];
10761 }
10762
10763 return 0;
10764}
10765
10766static int msm_routing_put_app_type_gain_control(struct snd_kcontrol *kcontrol,
10767 struct snd_ctl_elem_value *ucontrol)
10768{
10769 int j, fe_id, be_id, port_type;
10770 int ret = 0;
10771 unsigned long copp;
10772 struct msm_pcm_routing_bdai_data *bedai;
10773 int dir = ucontrol->value.integer.value[0] ? SESSION_TYPE_TX :
10774 SESSION_TYPE_RX;
10775 int app_type = ucontrol->value.integer.value[1];
10776 int gain = (ucontrol->value.integer.value[2] +
10777 ucontrol->value.integer.value[3])/2;
10778
10779 port_type = (dir == SESSION_TYPE_RX) ? MSM_AFE_PORT_TYPE_RX :
10780 MSM_AFE_PORT_TYPE_TX;
10781
10782 mutex_lock(&routing_lock);
10783 for (be_id = 0; be_id < MSM_BACKEND_DAI_MAX; be_id++) {
10784 if (is_be_dai_extproc(be_id))
10785 continue;
10786
10787 bedai = &msm_bedais[be_id];
10788 if (afe_get_port_type(bedai->port_id) != port_type)
10789 continue;
10790
10791 if (!bedai->active)
10792 continue;
10793
10794 for (fe_id = 0; fe_id < MSM_FRONTEND_DAI_MAX; fe_id++) {
10795 if (!test_bit(fe_id, &bedai->fe_sessions[0]))
10796 continue;
10797
10798 if (app_type !=
10799 fe_dai_app_type_cfg[fe_id][dir][be_id].app_type)
10800 continue;
10801
10802 copp = session_copp_map[fe_id][dir][be_id];
10803 for (j = 0; j < MAX_COPPS_PER_PORT; j++) {
10804 if (!test_bit(j, &copp))
10805 continue;
10806 ret |= adm_set_volume(bedai->port_id, j, gain);
10807 }
10808 }
10809 }
10810 mutex_unlock(&routing_lock);
10811 return ret ? -EINVAL : 0;
10812}
10813
10814static const struct snd_kcontrol_new app_type_cfg_controls[] = {
10815 SOC_SINGLE_MULTI_EXT("App Type Config", SND_SOC_NOPM, 0,
10816 0xFFFFFFFF, 0, 128, msm_routing_get_app_type_cfg_control,
10817 msm_routing_put_app_type_cfg_control),
10818 SOC_SINGLE_MULTI_EXT("App Type Gain", SND_SOC_NOPM, 0,
10819 0x2000, 0, 4, NULL, msm_routing_put_app_type_gain_control)
10820};
10821
10822static int msm_routing_get_lsm_app_type_cfg_control(
10823 struct snd_kcontrol *kcontrol,
10824 struct snd_ctl_elem_value *ucontrol)
10825{
10826 return 0;
10827}
10828
10829static int msm_routing_put_lsm_app_type_cfg_control(
10830 struct snd_kcontrol *kcontrol,
10831 struct snd_ctl_elem_value *ucontrol)
10832{
10833 int i = 0, j;
10834 int num_app_types = ucontrol->value.integer.value[i++];
10835
10836 memset(lsm_app_type_cfg, 0, MAX_APP_TYPES*
10837 sizeof(struct msm_pcm_routing_app_type_data));
10838 if (num_app_types > MAX_APP_TYPES) {
10839 pr_err("%s: number of app types exceed the max supported\n",
10840 __func__);
10841 return -EINVAL;
10842 }
10843 for (j = 0; j < num_app_types; j++) {
10844 lsm_app_type_cfg[j].app_type =
10845 ucontrol->value.integer.value[i++];
10846 lsm_app_type_cfg[j].sample_rate =
10847 ucontrol->value.integer.value[i++];
10848 lsm_app_type_cfg[j].bit_width =
10849 ucontrol->value.integer.value[i++];
10850 }
10851
10852 return 0;
10853}
10854
10855static const struct snd_kcontrol_new lsm_app_type_cfg_controls[] = {
10856 SOC_SINGLE_MULTI_EXT("Listen App Type Config", SND_SOC_NOPM, 0,
10857 0xFFFFFFFF, 0, 128, msm_routing_get_lsm_app_type_cfg_control,
10858 msm_routing_put_lsm_app_type_cfg_control),
10859};
10860
10861static int msm_routing_get_use_ds1_or_ds2_control(
10862 struct snd_kcontrol *kcontrol,
10863 struct snd_ctl_elem_value *ucontrol)
10864{
10865 ucontrol->value.integer.value[0] = is_ds2_on;
10866 return 0;
10867}
10868
10869static int msm_routing_put_use_ds1_or_ds2_control(
10870 struct snd_kcontrol *kcontrol,
10871 struct snd_ctl_elem_value *ucontrol)
10872{
10873 is_ds2_on = ucontrol->value.integer.value[0];
10874 return 0;
10875}
10876
10877static const struct snd_kcontrol_new use_ds1_or_ds2_controls[] = {
10878 SOC_SINGLE_EXT("DS2 OnOff", SND_SOC_NOPM, 0,
10879 1, 0, msm_routing_get_use_ds1_or_ds2_control,
10880 msm_routing_put_use_ds1_or_ds2_control),
10881};
10882
10883int msm_routing_get_rms_value_control(struct snd_kcontrol *kcontrol,
10884 struct snd_ctl_elem_value *ucontrol) {
10885 int rc = 0;
10886 int be_idx = 0;
10887 char *param_value;
10888 int *update_param_value;
10889 uint32_t param_length = sizeof(uint32_t);
10890 uint32_t param_payload_len = RMS_PAYLOAD_LEN * sizeof(uint32_t);
10891
10892 param_value = kzalloc(param_length + param_payload_len, GFP_KERNEL);
10893 if (!param_value)
10894 return -ENOMEM;
10895
10896 for (be_idx = 0; be_idx < MSM_BACKEND_DAI_MAX; be_idx++)
10897 if (msm_bedais[be_idx].port_id == SLIMBUS_0_TX)
10898 break;
10899 if ((be_idx < MSM_BACKEND_DAI_MAX) && msm_bedais[be_idx].active) {
10900 rc = adm_get_params(SLIMBUS_0_TX, 0,
10901 RMS_MODULEID_APPI_PASSTHRU,
10902 RMS_PARAM_FIRST_SAMPLE,
10903 param_length + param_payload_len,
10904 param_value);
10905 if (rc) {
10906 pr_err("%s: get parameters failed:%d\n", __func__, rc);
10907 kfree(param_value);
10908 return -EINVAL;
10909 }
10910 update_param_value = (int *)param_value;
10911 ucontrol->value.integer.value[0] = update_param_value[0];
10912
10913 pr_debug("%s: FROM DSP value[0] 0x%x\n",
10914 __func__, update_param_value[0]);
10915 }
10916 kfree(param_value);
10917 return 0;
10918}
10919
10920static int msm_voc_session_id_put(struct snd_kcontrol *kcontrol,
10921 struct snd_ctl_elem_value *ucontrol)
10922{
10923 voc_session_id = ucontrol->value.integer.value[0];
10924
10925 pr_debug("%s: voc_session_id=%u\n", __func__, voc_session_id);
10926
10927 return 0;
10928}
10929
10930static int msm_voc_session_id_get(struct snd_kcontrol *kcontrol,
10931 struct snd_ctl_elem_value *ucontrol)
10932{
10933 ucontrol->value.integer.value[0] = voc_session_id;
10934
10935 return 0;
10936}
10937
10938static struct snd_kcontrol_new msm_voc_session_controls[] = {
10939 SOC_SINGLE_MULTI_EXT("Voc VSID", SND_SOC_NOPM, 0,
10940 0xFFFFFFFF, 0, 1, msm_voc_session_id_get,
10941 msm_voc_session_id_put),
10942};
10943
10944static int msm_sound_focus_info(struct snd_kcontrol *kcontrol,
10945 struct snd_ctl_elem_info *uinfo)
10946{
10947 uinfo->type = SNDRV_CTL_ELEM_TYPE_BYTES;
10948 uinfo->count = sizeof(struct sound_focus_param);
10949
10950 return 0;
10951}
10952
10953static int msm_voice_sound_focus_put(struct snd_kcontrol *kcontrol,
10954 struct snd_ctl_elem_value *ucontrol)
10955{
10956 int ret = 0;
10957 struct sound_focus_param soundFocusData;
10958
10959 memcpy((void *)&soundFocusData, ucontrol->value.bytes.data,
10960 sizeof(struct sound_focus_param));
10961 ret = voc_set_sound_focus(soundFocusData);
10962 if (ret) {
10963 pr_err("%s: Error setting Sound Focus Params, err=%d\n",
10964 __func__, ret);
10965
10966 ret = -EINVAL;
10967 }
10968
10969 return ret;
10970}
10971
10972static int msm_voice_sound_focus_get(struct snd_kcontrol *kcontrol,
10973 struct snd_ctl_elem_value *ucontrol)
10974{
10975 int ret = 0;
10976 struct sound_focus_param soundFocusData;
10977
10978 memset(&soundFocusData, 0, sizeof(struct sound_focus_param));
10979
10980 ret = voc_get_sound_focus(&soundFocusData);
10981 if (ret) {
10982 pr_err("%s: Error getting Sound Focus Params, err=%d\n",
10983 __func__, ret);
10984
10985 ret = -EINVAL;
10986 goto done;
10987 }
10988 memcpy(ucontrol->value.bytes.data, (void *)&soundFocusData,
10989 sizeof(struct sound_focus_param));
10990
10991done:
10992 return ret;
10993}
10994
10995static int msm_source_tracking_info(struct snd_kcontrol *kcontrol,
10996 struct snd_ctl_elem_info *uinfo)
10997{
10998 uinfo->type = SNDRV_CTL_ELEM_TYPE_BYTES;
10999 uinfo->count = sizeof(struct source_tracking_param);
11000
11001 return 0;
11002}
11003
11004static int msm_voice_source_tracking_get(struct snd_kcontrol *kcontrol,
11005 struct snd_ctl_elem_value *ucontrol)
11006{
11007 int ret = 0;
11008 struct source_tracking_param sourceTrackingData;
11009
11010 memset(&sourceTrackingData, 0, sizeof(struct source_tracking_param));
11011
11012 ret = voc_get_source_tracking(&sourceTrackingData);
11013 if (ret) {
11014 pr_err("%s: Error getting Source Tracking Params, err=%d\n",
11015 __func__, ret);
11016
11017 ret = -EINVAL;
11018 goto done;
11019 }
11020 memcpy(ucontrol->value.bytes.data, (void *)&sourceTrackingData,
11021 sizeof(struct source_tracking_param));
11022
11023done:
11024 return ret;
11025}
11026
11027static int msm_audio_get_copp_idx_from_port_id(int port_id, int session_type,
11028 int *copp_idx)
11029{
11030 int i, idx, be_idx;
11031 int ret = 0;
11032 unsigned long copp;
11033
11034 pr_debug("%s: Enter, port_id=%d\n", __func__, port_id);
11035
11036 ret = q6audio_validate_port(port_id);
11037 if (ret < 0) {
11038 pr_err("%s: port validation failed id 0x%x ret %d\n",
11039 __func__, port_id, ret);
11040
11041 ret = -EINVAL;
11042 goto done;
11043 }
11044
11045 for (be_idx = 0; be_idx < MSM_BACKEND_DAI_MAX; be_idx++) {
11046 if (msm_bedais[be_idx].port_id == port_id)
11047 break;
11048 }
11049 if (be_idx >= MSM_BACKEND_DAI_MAX) {
11050 pr_err("%s: Invalid be id %d\n", __func__, be_idx);
11051
11052 ret = -EINVAL;
11053 goto done;
11054 }
11055
11056 for_each_set_bit(i, &msm_bedais[be_idx].fe_sessions[0],
11057 MSM_FRONTEND_DAI_MM_SIZE) {
11058 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++) {
11059 copp = session_copp_map[i]
11060 [session_type][be_idx];
11061 if (test_bit(idx, &copp))
11062 break;
11063 }
11064 if (idx >= MAX_COPPS_PER_PORT)
11065 continue;
11066 else
11067 break;
11068 }
11069 if (i >= MSM_FRONTEND_DAI_MM_SIZE) {
11070 pr_err("%s: Invalid FE, exiting\n", __func__);
11071
11072 ret = -EINVAL;
11073 goto done;
11074 }
11075 *copp_idx = idx;
11076 pr_debug("%s: copp_idx=%d\n", __func__, *copp_idx);
11077
11078done:
11079 return ret;
11080}
11081
11082static int msm_audio_sound_focus_derive_port_id(struct snd_kcontrol *kcontrol,
11083 const char *prefix, int *port_id)
11084{
11085 int ret = 0;
11086
11087 pr_debug("%s: Enter, prefix:%s\n", __func__, prefix);
11088
11089 /*
11090 * Mixer control name will be like "Sound Focus Audio Tx SLIMBUS_0"
11091 * where the prefix is "Sound Focus Audio Tx ". Skip the prefix
11092 * and compare the string with the backend name to derive the port id.
11093 */
11094 if (!strcmp(kcontrol->id.name + strlen(prefix),
11095 "SLIMBUS_0")) {
11096 *port_id = SLIMBUS_0_TX;
11097 } else if (!strcmp(kcontrol->id.name + strlen(prefix),
11098 "TERT_MI2S")) {
11099 *port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
11100 } else if (!strcmp(kcontrol->id.name + strlen(prefix),
11101 "INT3_MI2S")) {
11102 *port_id = AFE_PORT_ID_INT3_MI2S_TX;
11103 } else {
11104 pr_err("%s: mixer ctl name=%s, could not derive valid port id\n",
11105 __func__, kcontrol->id.name);
11106
11107 ret = -EINVAL;
11108 goto done;
11109 }
11110 pr_debug("%s: mixer ctl name=%s, derived port_id=%d\n",
11111 __func__, kcontrol->id.name, *port_id);
11112
11113done:
11114 return ret;
11115}
11116
11117static int msm_audio_sound_focus_put(struct snd_kcontrol *kcontrol,
11118 struct snd_ctl_elem_value *ucontrol)
11119{
11120 int ret = 0;
11121 struct sound_focus_param soundFocusData;
11122 int port_id, copp_idx;
11123
11124 ret = msm_audio_sound_focus_derive_port_id(kcontrol,
11125 "Sound Focus Audio Tx ", &port_id);
11126 if (ret != 0) {
11127 pr_err("%s: Error in deriving port id, err=%d\n",
11128 __func__, ret);
11129
11130 ret = -EINVAL;
11131 goto done;
11132 }
11133
11134 ret = msm_audio_get_copp_idx_from_port_id(port_id, SESSION_TYPE_TX,
11135 &copp_idx);
11136 if (ret) {
11137 pr_err("%s: Could not get copp idx for port_id=%d\n",
11138 __func__, port_id);
11139
11140 ret = -EINVAL;
11141 goto done;
11142 }
11143
11144 memcpy((void *)&soundFocusData, ucontrol->value.bytes.data,
11145 sizeof(struct sound_focus_param));
11146
11147 ret = adm_set_sound_focus(port_id, copp_idx, soundFocusData);
11148 if (ret) {
11149 pr_err("%s: Error setting Sound Focus Params, err=%d\n",
11150 __func__, ret);
11151
11152 ret = -EINVAL;
11153 goto done;
11154 }
11155
11156done:
11157 return ret;
11158}
11159
11160static int msm_audio_sound_focus_get(struct snd_kcontrol *kcontrol,
11161 struct snd_ctl_elem_value *ucontrol)
11162{
11163 int ret = 0;
11164 struct sound_focus_param soundFocusData;
11165 int port_id, copp_idx;
11166
11167 ret = msm_audio_sound_focus_derive_port_id(kcontrol,
11168 "Sound Focus Audio Tx ", &port_id);
11169 if (ret) {
11170 pr_err("%s: Error in deriving port id, err=%d\n",
11171 __func__, ret);
11172
11173 ret = -EINVAL;
11174 goto done;
11175 }
11176
11177 ret = msm_audio_get_copp_idx_from_port_id(port_id, SESSION_TYPE_TX,
11178 &copp_idx);
11179 if (ret) {
11180 pr_err("%s: Could not get copp idx for port_id=%d\n",
11181 __func__, port_id);
11182
11183 ret = -EINVAL;
11184 goto done;
11185 }
11186
11187 ret = adm_get_sound_focus(port_id, copp_idx, &soundFocusData);
11188 if (ret) {
11189 pr_err("%s: Error getting Sound Focus Params, err=%d\n",
11190 __func__, ret);
11191
11192 ret = -EINVAL;
11193 goto done;
11194 }
11195
11196 memcpy(ucontrol->value.bytes.data, (void *)&soundFocusData,
11197 sizeof(struct sound_focus_param));
11198
11199done:
11200 return ret;
11201}
11202
11203static int msm_audio_source_tracking_get(struct snd_kcontrol *kcontrol,
11204 struct snd_ctl_elem_value *ucontrol)
11205{
11206 int ret = 0;
11207 struct source_tracking_param sourceTrackingData;
11208 int port_id, copp_idx;
11209
11210 ret = msm_audio_sound_focus_derive_port_id(kcontrol,
11211 "Source Tracking Audio Tx ", &port_id);
11212 if (ret) {
11213 pr_err("%s: Error in deriving port id, err=%d\n",
11214 __func__, ret);
11215
11216 ret = -EINVAL;
11217 goto done;
11218 }
11219
11220 ret = msm_audio_get_copp_idx_from_port_id(port_id, SESSION_TYPE_TX,
11221 &copp_idx);
11222 if (ret) {
11223 pr_err("%s: Could not get copp idx for port_id=%d\n",
11224 __func__, port_id);
11225
11226 ret = -EINVAL;
11227 goto done;
11228 }
11229
11230 ret = adm_get_source_tracking(port_id, copp_idx, &sourceTrackingData);
11231 if (ret) {
11232 pr_err("%s: Error getting Source Tracking Params, err=%d\n",
11233 __func__, ret);
11234
11235 ret = -EINVAL;
11236 goto done;
11237 }
11238
11239 memcpy(ucontrol->value.bytes.data, (void *)&sourceTrackingData,
11240 sizeof(struct source_tracking_param));
11241
11242done:
11243 return ret;
11244}
11245
11246static const struct snd_kcontrol_new msm_source_tracking_controls[] = {
11247 {
11248 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
11249 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
11250 .name = "Sound Focus Voice Tx SLIMBUS_0",
11251 .info = msm_sound_focus_info,
11252 .get = msm_voice_sound_focus_get,
11253 .put = msm_voice_sound_focus_put,
11254 },
11255 {
11256 .access = SNDRV_CTL_ELEM_ACCESS_READ,
11257 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
11258 .name = "Source Tracking Voice Tx SLIMBUS_0",
11259 .info = msm_source_tracking_info,
11260 .get = msm_voice_source_tracking_get,
11261 },
11262 {
11263 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
11264 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
11265 .name = "Sound Focus Audio Tx SLIMBUS_0",
11266 .info = msm_sound_focus_info,
11267 .get = msm_audio_sound_focus_get,
11268 .put = msm_audio_sound_focus_put,
11269 },
11270 {
11271 .access = SNDRV_CTL_ELEM_ACCESS_READ,
11272 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
11273 .name = "Source Tracking Audio Tx SLIMBUS_0",
11274 .info = msm_source_tracking_info,
11275 .get = msm_audio_source_tracking_get,
11276 },
11277 {
11278 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
11279 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
11280 .name = "Sound Focus Voice Tx TERT_MI2S",
11281 .info = msm_sound_focus_info,
11282 .get = msm_voice_sound_focus_get,
11283 .put = msm_voice_sound_focus_put,
11284 },
11285 {
11286 .access = SNDRV_CTL_ELEM_ACCESS_READ,
11287 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
11288 .name = "Source Tracking Voice Tx TERT_MI2S",
11289 .info = msm_source_tracking_info,
11290 .get = msm_voice_source_tracking_get,
11291 },
11292 {
11293 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
11294 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
11295 .name = "Sound Focus Audio Tx TERT_MI2S",
11296 .info = msm_sound_focus_info,
11297 .get = msm_audio_sound_focus_get,
11298 .put = msm_audio_sound_focus_put,
11299 },
11300 {
11301 .access = SNDRV_CTL_ELEM_ACCESS_READ,
11302 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
11303 .name = "Source Tracking Audio Tx TERT_MI2S",
11304 .info = msm_source_tracking_info,
11305 .get = msm_audio_source_tracking_get,
11306 },
11307 {
11308 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
11309 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
11310 .name = "Sound Focus Voice Tx INT3_MI2S",
11311 .info = msm_sound_focus_info,
11312 .get = msm_voice_sound_focus_get,
11313 .put = msm_voice_sound_focus_put,
11314 },
11315 {
11316 .access = SNDRV_CTL_ELEM_ACCESS_READ,
11317 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
11318 .name = "Source Tracking Voice Tx INT3_MI2S",
11319 .info = msm_source_tracking_info,
11320 .get = msm_voice_source_tracking_get,
11321 },
11322 {
11323 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
11324 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
11325 .name = "Sound Focus Audio Tx INT3_MI2S",
11326 .info = msm_sound_focus_info,
11327 .get = msm_audio_sound_focus_get,
11328 .put = msm_audio_sound_focus_put,
11329 },
11330 {
11331 .access = SNDRV_CTL_ELEM_ACCESS_READ,
11332 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
11333 .name = "Source Tracking Audio Tx INT3_MI2S",
11334 .info = msm_source_tracking_info,
11335 .get = msm_audio_source_tracking_get,
11336 },
11337};
11338
11339static int spkr_prot_put_vi_lch_port(struct snd_kcontrol *kcontrol,
11340 struct snd_ctl_elem_value *ucontrol)
11341{
11342 int ret = 0;
11343 int item;
11344 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
11345
11346 pr_debug("%s item is %d\n", __func__,
11347 ucontrol->value.enumerated.item[0]);
11348 mutex_lock(&routing_lock);
11349 item = ucontrol->value.enumerated.item[0];
11350 if (item < e->items) {
11351 pr_debug("%s RX DAI ID %d TX DAI id %d\n",
11352 __func__, e->shift_l, e->values[item]);
11353 if (e->shift_l < MSM_BACKEND_DAI_MAX &&
11354 e->values[item] < MSM_BACKEND_DAI_MAX)
11355 /* Enable feedback TX path */
11356 ret = afe_spk_prot_feed_back_cfg(
11357 msm_bedais[e->values[item]].port_id,
11358 msm_bedais[e->shift_l].port_id, 1, 0, 1);
11359 else {
11360 pr_debug("%s values are out of range item %d\n",
11361 __func__, e->values[item]);
11362 /* Disable feedback TX path */
11363 if (e->values[item] == MSM_BACKEND_DAI_MAX)
11364 ret = afe_spk_prot_feed_back_cfg(0, 0, 0, 0, 0);
11365 else
11366 ret = -EINVAL;
11367 }
11368 } else {
11369 pr_err("%s item value is out of range item\n", __func__);
11370 ret = -EINVAL;
11371 }
11372 mutex_unlock(&routing_lock);
11373 return ret;
11374}
11375
11376static int spkr_prot_put_vi_rch_port(struct snd_kcontrol *kcontrol,
11377 struct snd_ctl_elem_value *ucontrol)
11378{
11379 int ret = 0;
11380 int item;
11381 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
11382
11383 pr_debug("%s item is %d\n", __func__,
11384 ucontrol->value.enumerated.item[0]);
11385 mutex_lock(&routing_lock);
11386 item = ucontrol->value.enumerated.item[0];
11387 if (item < e->items) {
11388 pr_debug("%s RX DAI ID %d TX DAI id %d\n",
11389 __func__, e->shift_l, e->values[item]);
11390 if (e->shift_l < MSM_BACKEND_DAI_MAX &&
11391 e->values[item] < MSM_BACKEND_DAI_MAX)
11392 /* Enable feedback TX path */
11393 ret = afe_spk_prot_feed_back_cfg(
11394 msm_bedais[e->values[item]].port_id,
11395 msm_bedais[e->shift_l].port_id,
11396 1, 1, 1);
11397 else {
11398 pr_debug("%s values are out of range item %d\n",
11399 __func__, e->values[item]);
11400 /* Disable feedback TX path */
11401 if (e->values[item] == MSM_BACKEND_DAI_MAX)
11402 ret = afe_spk_prot_feed_back_cfg(0,
11403 0, 0, 0, 0);
11404 else
11405 ret = -EINVAL;
11406 }
11407 } else {
11408 pr_err("%s item value is out of range item\n", __func__);
11409 ret = -EINVAL;
11410 }
11411 mutex_unlock(&routing_lock);
11412 return ret;
11413}
11414
11415static int spkr_prot_get_vi_lch_port(struct snd_kcontrol *kcontrol,
11416 struct snd_ctl_elem_value *ucontrol)
11417{
11418 pr_debug("%s\n", __func__);
11419 return 0;
11420}
11421
11422static int spkr_prot_get_vi_rch_port(struct snd_kcontrol *kcontrol,
11423 struct snd_ctl_elem_value *ucontrol)
11424{
11425 pr_debug("%s\n", __func__);
11426 ucontrol->value.enumerated.item[0] = 0;
11427 return 0;
11428}
11429
11430static const char * const slim0_rx_vi_fb_tx_lch_mux_text[] = {
11431 "ZERO", "SLIM4_TX"
11432};
11433
11434static const char * const slim0_rx_vi_fb_tx_rch_mux_text[] = {
11435 "ZERO", "SLIM4_TX"
11436};
11437
11438static const char * const mi2s_rx_vi_fb_tx_mux_text[] = {
11439 "ZERO", "SENARY_TX"
11440};
11441
11442static const char * const int4_mi2s_rx_vi_fb_tx_mono_mux_text[] = {
11443 "ZERO", "INT5_MI2S_TX"
11444};
11445
11446static const char * const int4_mi2s_rx_vi_fb_tx_stereo_mux_text[] = {
11447 "ZERO", "INT5_MI2S_TX"
11448};
11449
11450static const int const slim0_rx_vi_fb_tx_lch_value[] = {
11451 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_SLIMBUS_4_TX
11452};
11453
11454static const int const slim0_rx_vi_fb_tx_rch_value[] = {
11455 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_SLIMBUS_4_TX
11456};
11457
11458static const int const mi2s_rx_vi_fb_tx_value[] = {
11459 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_SENARY_MI2S_TX
11460};
11461
11462static const int const int4_mi2s_rx_vi_fb_tx_mono_ch_value[] = {
11463 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_INT5_MI2S_TX
11464};
11465
11466static const int const int4_mi2s_rx_vi_fb_tx_stereo_ch_value[] = {
11467 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_INT5_MI2S_TX
11468};
11469
11470static const struct soc_enum slim0_rx_vi_fb_lch_mux_enum =
11471 SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_SLIMBUS_0_RX, 0, 0,
11472 ARRAY_SIZE(slim0_rx_vi_fb_tx_lch_mux_text),
11473 slim0_rx_vi_fb_tx_lch_mux_text, slim0_rx_vi_fb_tx_lch_value);
11474
11475static const struct soc_enum slim0_rx_vi_fb_rch_mux_enum =
11476 SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_SLIMBUS_0_RX, 0, 0,
11477 ARRAY_SIZE(slim0_rx_vi_fb_tx_rch_mux_text),
11478 slim0_rx_vi_fb_tx_rch_mux_text, slim0_rx_vi_fb_tx_rch_value);
11479
11480static const struct soc_enum mi2s_rx_vi_fb_mux_enum =
11481 SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_PRI_MI2S_RX, 0, 0,
11482 ARRAY_SIZE(mi2s_rx_vi_fb_tx_mux_text),
11483 mi2s_rx_vi_fb_tx_mux_text, mi2s_rx_vi_fb_tx_value);
11484
11485static const struct soc_enum int4_mi2s_rx_vi_fb_mono_ch_mux_enum =
11486 SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_INT4_MI2S_RX, 0, 0,
11487 ARRAY_SIZE(int4_mi2s_rx_vi_fb_tx_mono_mux_text),
11488 int4_mi2s_rx_vi_fb_tx_mono_mux_text,
11489 int4_mi2s_rx_vi_fb_tx_mono_ch_value);
11490
11491static const struct soc_enum int4_mi2s_rx_vi_fb_stereo_ch_mux_enum =
11492 SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_INT4_MI2S_RX, 0, 0,
11493 ARRAY_SIZE(int4_mi2s_rx_vi_fb_tx_stereo_mux_text),
11494 int4_mi2s_rx_vi_fb_tx_stereo_mux_text,
11495 int4_mi2s_rx_vi_fb_tx_stereo_ch_value);
11496
11497static const struct snd_kcontrol_new slim0_rx_vi_fb_lch_mux =
11498 SOC_DAPM_ENUM_EXT("SLIM0_RX_VI_FB_LCH_MUX",
11499 slim0_rx_vi_fb_lch_mux_enum, spkr_prot_get_vi_lch_port,
11500 spkr_prot_put_vi_lch_port);
11501
11502static const struct snd_kcontrol_new slim0_rx_vi_fb_rch_mux =
11503 SOC_DAPM_ENUM_EXT("SLIM0_RX_VI_FB_RCH_MUX",
11504 slim0_rx_vi_fb_rch_mux_enum, spkr_prot_get_vi_rch_port,
11505 spkr_prot_put_vi_rch_port);
11506
11507static const struct snd_kcontrol_new mi2s_rx_vi_fb_mux =
11508 SOC_DAPM_ENUM_EXT("PRI_MI2S_RX_VI_FB_MUX",
11509 mi2s_rx_vi_fb_mux_enum, spkr_prot_get_vi_lch_port,
11510 spkr_prot_put_vi_lch_port);
11511
11512static const struct snd_kcontrol_new int4_mi2s_rx_vi_fb_mono_ch_mux =
11513 SOC_DAPM_ENUM_EXT("INT4_MI2S_RX_VI_FB_MONO_CH_MUX",
11514 int4_mi2s_rx_vi_fb_mono_ch_mux_enum, spkr_prot_get_vi_lch_port,
11515 spkr_prot_put_vi_lch_port);
11516
11517static const struct snd_kcontrol_new int4_mi2s_rx_vi_fb_stereo_ch_mux =
11518 SOC_DAPM_ENUM_EXT("INT4_MI2S_RX_VI_FB_STEREO_CH_MUX",
11519 int4_mi2s_rx_vi_fb_stereo_ch_mux_enum, spkr_prot_get_vi_rch_port,
11520 spkr_prot_put_vi_rch_port);
11521
11522static const struct snd_soc_dapm_widget msm_qdsp6_widgets[] = {
11523 /* Frontend AIF */
11524 /* Widget name equals to Front-End DAI name<Need confirmation>,
11525 * Stream name must contains substring of front-end dai name
11526 */
11527 SND_SOC_DAPM_AIF_IN("MM_DL1", "MultiMedia1 Playback", 0, 0, 0, 0),
11528 SND_SOC_DAPM_AIF_IN("MM_DL2", "MultiMedia2 Playback", 0, 0, 0, 0),
11529 SND_SOC_DAPM_AIF_IN("MM_DL3", "MultiMedia3 Playback", 0, 0, 0, 0),
11530 SND_SOC_DAPM_AIF_IN("MM_DL4", "MultiMedia4 Playback", 0, 0, 0, 0),
11531 SND_SOC_DAPM_AIF_IN("MM_DL5", "MultiMedia5 Playback", 0, 0, 0, 0),
11532 SND_SOC_DAPM_AIF_IN("MM_DL6", "MultiMedia6 Playback", 0, 0, 0, 0),
11533 SND_SOC_DAPM_AIF_IN("MM_DL7", "MultiMedia7 Playback", 0, 0, 0, 0),
11534 SND_SOC_DAPM_AIF_IN("MM_DL8", "MultiMedia8 Playback", 0, 0, 0, 0),
11535 SND_SOC_DAPM_AIF_IN("MM_DL9", "MultiMedia9 Playback", 0, 0, 0, 0),
11536 SND_SOC_DAPM_AIF_IN("MM_DL10", "MultiMedia10 Playback", 0, 0, 0, 0),
11537 SND_SOC_DAPM_AIF_IN("MM_DL11", "MultiMedia11 Playback", 0, 0, 0, 0),
11538 SND_SOC_DAPM_AIF_IN("MM_DL12", "MultiMedia12 Playback", 0, 0, 0, 0),
11539 SND_SOC_DAPM_AIF_IN("MM_DL13", "MultiMedia13 Playback", 0, 0, 0, 0),
11540 SND_SOC_DAPM_AIF_IN("MM_DL14", "MultiMedia14 Playback", 0, 0, 0, 0),
11541 SND_SOC_DAPM_AIF_IN("MM_DL15", "MultiMedia15 Playback", 0, 0, 0, 0),
11542 SND_SOC_DAPM_AIF_IN("MM_DL16", "MultiMedia16 Playback", 0, 0, 0, 0),
11543 SND_SOC_DAPM_AIF_IN("MM_DL20", "MultiMedia20 Playback", 0, 0, 0, 0),
11544 SND_SOC_DAPM_AIF_IN("VOIP_DL", "VoIP Playback", 0, 0, 0, 0),
11545 SND_SOC_DAPM_AIF_OUT("MM_UL1", "MultiMedia1 Capture", 0, 0, 0, 0),
11546 SND_SOC_DAPM_AIF_OUT("MM_UL2", "MultiMedia2 Capture", 0, 0, 0, 0),
11547 SND_SOC_DAPM_AIF_OUT("MM_UL3", "MultiMedia3 Capture", 0, 0, 0, 0),
11548 SND_SOC_DAPM_AIF_OUT("MM_UL4", "MultiMedia4 Capture", 0, 0, 0, 0),
11549 SND_SOC_DAPM_AIF_OUT("MM_UL5", "MultiMedia5 Capture", 0, 0, 0, 0),
11550 SND_SOC_DAPM_AIF_OUT("MM_UL6", "MultiMedia6 Capture", 0, 0, 0, 0),
11551 SND_SOC_DAPM_AIF_OUT("MM_UL8", "MultiMedia8 Capture", 0, 0, 0, 0),
11552 SND_SOC_DAPM_AIF_OUT("MM_UL9", "MultiMedia9 Capture", 0, 0, 0, 0),
Laxminath Kasam38070be2017-08-17 18:21:59 +053011553 SND_SOC_DAPM_AIF_OUT("MM_UL10", "MultiMedia10 Capture", 0, 0, 0, 0),
Asish Bhattacharya34504582017-08-08 12:55:01 +053011554 SND_SOC_DAPM_AIF_OUT("MM_UL16", "MultiMedia16 Capture", 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011555 SND_SOC_DAPM_AIF_OUT("MM_UL17", "MultiMedia17 Capture", 0, 0, 0, 0),
11556 SND_SOC_DAPM_AIF_OUT("MM_UL18", "MultiMedia18 Capture", 0, 0, 0, 0),
11557 SND_SOC_DAPM_AIF_OUT("MM_UL19", "MultiMedia19 Capture", 0, 0, 0, 0),
11558 SND_SOC_DAPM_AIF_OUT("MM_UL20", "MultiMedia20 Capture", 0, 0, 0, 0),
11559 SND_SOC_DAPM_AIF_IN("CS-VOICE_DL1", "CS-VOICE Playback", 0, 0, 0, 0),
11560 SND_SOC_DAPM_AIF_OUT("CS-VOICE_UL1", "CS-VOICE Capture", 0, 0, 0, 0),
11561 SND_SOC_DAPM_AIF_IN("VOICE2_DL", "Voice2 Playback", 0, 0, 0, 0),
11562 SND_SOC_DAPM_AIF_OUT("VOICE2_UL", "Voice2 Capture", 0, 0, 0, 0),
11563 SND_SOC_DAPM_AIF_IN("VoLTE_DL", "VoLTE Playback", 0, 0, 0, 0),
11564 SND_SOC_DAPM_AIF_OUT("VoLTE_UL", "VoLTE Capture", 0, 0, 0, 0),
11565 SND_SOC_DAPM_AIF_IN("VoWLAN_DL", "VoWLAN Playback", 0, 0, 0, 0),
11566 SND_SOC_DAPM_AIF_OUT("VoWLAN_UL", "VoWLAN Capture", 0, 0, 0, 0),
11567 SND_SOC_DAPM_AIF_OUT("VOIP_UL", "VoIP Capture", 0, 0, 0, 0),
11568 SND_SOC_DAPM_AIF_IN("VOICEMMODE1_DL",
11569 "VoiceMMode1 Playback", 0, 0, 0, 0),
11570 SND_SOC_DAPM_AIF_OUT("VOICEMMODE1_UL",
11571 "VoiceMMode1 Capture", 0, 0, 0, 0),
11572 SND_SOC_DAPM_AIF_IN("VOICEMMODE2_DL",
11573 "VoiceMMode2 Playback", 0, 0, 0, 0),
11574 SND_SOC_DAPM_AIF_OUT("VOICEMMODE2_UL",
11575 "VoiceMMode2 Capture", 0, 0, 0, 0),
11576 SND_SOC_DAPM_AIF_IN("SLIM0_DL_HL", "SLIMBUS0_HOSTLESS Playback",
11577 0, 0, 0, 0),
11578 SND_SOC_DAPM_AIF_OUT("SLIM0_UL_HL", "SLIMBUS0_HOSTLESS Capture",
11579 0, 0, 0, 0),
11580 SND_SOC_DAPM_AIF_OUT("CPE_LSM_UL_HL", "CPE LSM capture",
11581 0, 0, 0, 0),
11582 SND_SOC_DAPM_AIF_IN("SLIM1_DL_HL", "SLIMBUS1_HOSTLESS Playback",
11583 0, 0, 0, 0),
11584 SND_SOC_DAPM_AIF_OUT("SLIM1_UL_HL", "SLIMBUS1_HOSTLESS Capture",
11585 0, 0, 0, 0),
11586 SND_SOC_DAPM_AIF_IN("SLIM3_DL_HL", "SLIMBUS3_HOSTLESS Playback",
11587 0, 0, 0, 0),
11588 SND_SOC_DAPM_AIF_OUT("SLIM3_UL_HL", "SLIMBUS3_HOSTLESS Capture",
11589 0, 0, 0, 0),
11590 SND_SOC_DAPM_AIF_IN("SLIM4_DL_HL", "SLIMBUS4_HOSTLESS Playback",
11591 0, 0, 0, 0),
11592 SND_SOC_DAPM_AIF_OUT("SLIM4_UL_HL", "SLIMBUS4_HOSTLESS Capture",
11593 0, 0, 0, 0),
11594 SND_SOC_DAPM_AIF_IN("SLIM6_DL_HL", "SLIMBUS6_HOSTLESS Playback",
11595 0, 0, 0, 0),
11596 SND_SOC_DAPM_AIF_OUT("SLIM6_UL_HL", "SLIMBUS6_HOSTLESS Capture",
11597 0, 0, 0, 0),
11598 SND_SOC_DAPM_AIF_IN("SLIM7_DL_HL", "SLIMBUS7_HOSTLESS Playback",
11599 0, 0, 0, 0),
11600 SND_SOC_DAPM_AIF_OUT("SLIM7_UL_HL", "SLIMBUS7_HOSTLESS Capture",
11601 0, 0, 0, 0),
11602 SND_SOC_DAPM_AIF_IN("SLIM8_DL_HL", "SLIMBUS8_HOSTLESS Playback",
11603 0, 0, 0, 0),
11604 SND_SOC_DAPM_AIF_OUT("SLIM8_UL_HL", "SLIMBUS8_HOSTLESS Capture",
11605 0, 0, 0, 0),
11606 SND_SOC_DAPM_AIF_IN("INTFM_DL_HL", "INT_FM_HOSTLESS Playback",
11607 0, 0, 0, 0),
11608 SND_SOC_DAPM_AIF_OUT("INTFM_UL_HL", "INT_FM_HOSTLESS Capture",
11609 0, 0, 0, 0),
11610 SND_SOC_DAPM_AIF_IN("INTHFP_DL_HL", "INT_HFP_BT_HOSTLESS Playback",
11611 0, 0, 0, 0),
11612 SND_SOC_DAPM_AIF_OUT("INTHFP_UL_HL", "INT_HFP_BT_HOSTLESS Capture",
11613 0, 0, 0, 0),
11614 SND_SOC_DAPM_AIF_IN("USBAUDIO_DL_HL", "USBAUDIO_HOSTLESS Playback",
11615 0, 0, 0, 0),
11616 SND_SOC_DAPM_AIF_OUT("USBAUDIO_UL_HL", "USBAUDIO_HOSTLESS Capture",
11617 0, 0, 0, 0),
11618 SND_SOC_DAPM_AIF_IN("HDMI_DL_HL", "HDMI_HOSTLESS Playback", 0, 0, 0, 0),
11619 SND_SOC_DAPM_AIF_IN("SEC_I2S_DL_HL", "SEC_I2S_RX_HOSTLESS Playback",
11620 0, 0, 0, 0),
11621 SND_SOC_DAPM_AIF_IN("INT0_MI2S_DL_HL",
11622 "INT0 MI2S_RX Hostless Playback",
11623 0, 0, 0, 0),
11624 SND_SOC_DAPM_AIF_IN("INT4_MI2S_DL_HL",
11625 "INT4 MI2S_RX Hostless Playback",
11626 0, 0, 0, 0),
11627 SND_SOC_DAPM_AIF_IN("PRI_MI2S_DL_HL",
11628 "Primary MI2S_RX Hostless Playback",
11629 0, 0, 0, 0),
11630 SND_SOC_DAPM_AIF_IN("SEC_MI2S_DL_HL",
11631 "Secondary MI2S_RX Hostless Playback",
11632 0, 0, 0, 0),
11633 SND_SOC_DAPM_AIF_IN("TERT_MI2S_DL_HL",
11634 "Tertiary MI2S_RX Hostless Playback",
11635 0, 0, 0, 0),
11636 SND_SOC_DAPM_AIF_IN("QUAT_MI2S_DL_HL",
11637 "Quaternary MI2S_RX Hostless Playback",
11638 0, 0, 0, 0),
11639
11640 SND_SOC_DAPM_AIF_IN("AUXPCM_DL_HL", "AUXPCM_HOSTLESS Playback",
11641 0, 0, 0, 0),
11642 SND_SOC_DAPM_AIF_OUT("AUXPCM_UL_HL", "AUXPCM_HOSTLESS Capture",
11643 0, 0, 0, 0),
11644 SND_SOC_DAPM_AIF_OUT("MI2S_UL_HL", "MI2S_TX_HOSTLESS Capture",
11645 0, 0, 0, 0),
11646 SND_SOC_DAPM_AIF_OUT("INT3_MI2S_UL_HL",
11647 "INT3 MI2S_TX Hostless Capture",
11648 0, 0, 0, 0),
11649 SND_SOC_DAPM_AIF_OUT("TERT_MI2S_UL_HL",
11650 "Tertiary MI2S_TX Hostless Capture",
11651 0, 0, 0, 0),
11652 SND_SOC_DAPM_AIF_OUT("SEC_MI2S_UL_HL",
11653 "Secondary MI2S_TX Hostless Capture",
11654 0, 0, 0, 0),
11655 SND_SOC_DAPM_AIF_OUT("PRI_MI2S_UL_HL",
11656 "Primary MI2S_TX Hostless Capture",
11657 0, 0, 0, 0),
11658 SND_SOC_DAPM_AIF_OUT("MI2S_DL_HL", "MI2S_RX_HOSTLESS Playback",
11659 0, 0, 0, 0),
11660 SND_SOC_DAPM_AIF_IN("DTMF_DL_HL", "DTMF_RX_HOSTLESS Playback",
11661 0, 0, 0, 0),
11662 SND_SOC_DAPM_AIF_OUT("QUAT_MI2S_UL_HL",
11663 "Quaternary MI2S_TX Hostless Capture",
11664 0, 0, 0, 0),
11665
11666 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_0_DL_HL",
11667 "Primary TDM0 Hostless Playback",
11668 0, 0, 0, 0),
11669 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_0_UL_HL",
11670 "Primary TDM0 Hostless Capture",
11671 0, 0, 0, 0),
11672 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_1_DL_HL",
11673 "Primary TDM1 Hostless Playback",
11674 0, 0, 0, 0),
11675 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_1_UL_HL",
11676 "Primary TDM1 Hostless Capture",
11677 0, 0, 0, 0),
11678 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_2_DL_HL",
11679 "Primary TDM2 Hostless Playback",
11680 0, 0, 0, 0),
11681 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_2_UL_HL",
11682 "Primary TDM2 Hostless Capture",
11683 0, 0, 0, 0),
11684 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_3_DL_HL",
11685 "Primary TDM3 Hostless Playback",
11686 0, 0, 0, 0),
11687 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_3_UL_HL",
11688 "Primary TDM3 Hostless Capture",
11689 0, 0, 0, 0),
11690 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_4_DL_HL",
11691 "Primary TDM4 Hostless Playback",
11692 0, 0, 0, 0),
11693 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_4_UL_HL",
11694 "Primary TDM4 Hostless Capture",
11695 0, 0, 0, 0),
11696 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_5_DL_HL",
11697 "Primary TDM5 Hostless Playback",
11698 0, 0, 0, 0),
11699 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_5_UL_HL",
11700 "Primary TDM5 Hostless Capture",
11701 0, 0, 0, 0),
11702 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_6_DL_HL",
11703 "Primary TDM6 Hostless Playback",
11704 0, 0, 0, 0),
11705 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_6_UL_HL",
11706 "Primary TDM6 Hostless Capture",
11707 0, 0, 0, 0),
11708 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_7_DL_HL",
11709 "Primary TDM7 Hostless Playback",
11710 0, 0, 0, 0),
11711 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_7_UL_HL",
11712 "Primary TDM7 Hostless Capture",
11713 0, 0, 0, 0),
11714 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_0_DL_HL",
11715 "Secondary TDM0 Hostless Playback",
11716 0, 0, 0, 0),
11717 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_0_UL_HL",
11718 "Secondary TDM0 Hostless Capture",
11719 0, 0, 0, 0),
11720 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_1_DL_HL",
11721 "Secondary TDM1 Hostless Playback",
11722 0, 0, 0, 0),
11723 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_1_UL_HL",
11724 "Secondary TDM1 Hostless Capture",
11725 0, 0, 0, 0),
11726 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_2_DL_HL",
11727 "Secondary TDM2 Hostless Playback",
11728 0, 0, 0, 0),
11729 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_2_UL_HL",
11730 "Secondary TDM2 Hostless Capture",
11731 0, 0, 0, 0),
11732 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_3_DL_HL",
11733 "Secondary TDM3 Hostless Playback",
11734 0, 0, 0, 0),
11735 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_3_UL_HL",
11736 "Secondary TDM3 Hostless Capture",
11737 0, 0, 0, 0),
11738 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_4_DL_HL",
11739 "Secondary TDM4 Hostless Playback",
11740 0, 0, 0, 0),
11741 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_4_UL_HL",
11742 "Secondary TDM4 Hostless Capture",
11743 0, 0, 0, 0),
11744 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_5_DL_HL",
11745 "Secondary TDM5 Hostless Playback",
11746 0, 0, 0, 0),
11747 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_5_UL_HL",
11748 "Secondary TDM5 Hostless Capture",
11749 0, 0, 0, 0),
11750 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_6_DL_HL",
11751 "Secondary TDM6 Hostless Playback",
11752 0, 0, 0, 0),
11753 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_6_UL_HL",
11754 "Secondary TDM6 Hostless Capture",
11755 0, 0, 0, 0),
11756 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_7_DL_HL",
11757 "Secondary TDM7 Hostless Playback",
11758 0, 0, 0, 0),
11759 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_7_UL_HL",
11760 "Secondary TDM7 Hostless Capture",
11761 0, 0, 0, 0),
11762 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_0_DL_HL",
11763 "Tertiary TDM0 Hostless Playback",
11764 0, 0, 0, 0),
11765 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_0_UL_HL",
11766 "Tertiary TDM0 Hostless Capture",
11767 0, 0, 0, 0),
11768 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_1_DL_HL",
11769 "Tertiary TDM1 Hostless Playback",
11770 0, 0, 0, 0),
11771 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_1_UL_HL",
11772 "Tertiary TDM1 Hostless Capture",
11773 0, 0, 0, 0),
11774 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_2_DL_HL",
11775 "Tertiary TDM2 Hostless Playback",
11776 0, 0, 0, 0),
11777 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_2_UL_HL",
11778 "Tertiary TDM2 Hostless Capture",
11779 0, 0, 0, 0),
11780 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_3_DL_HL",
11781 "Tertiary TDM3 Hostless Playback",
11782 0, 0, 0, 0),
11783 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_3_UL_HL",
11784 "Tertiary TDM3 Hostless Capture",
11785 0, 0, 0, 0),
11786 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_4_DL_HL",
11787 "Tertiary TDM4 Hostless Playback",
11788 0, 0, 0, 0),
11789 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_4_UL_HL",
11790 "Tertiary TDM4 Hostless Capture",
11791 0, 0, 0, 0),
11792 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_5_DL_HL",
11793 "Tertiary TDM5 Hostless Playback",
11794 0, 0, 0, 0),
11795 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_5_UL_HL",
11796 "Tertiary TDM5 Hostless Capture",
11797 0, 0, 0, 0),
11798 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_6_DL_HL",
11799 "Tertiary TDM6 Hostless Playback",
11800 0, 0, 0, 0),
11801 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_6_UL_HL",
11802 "Tertiary TDM6 Hostless Capture",
11803 0, 0, 0, 0),
11804 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_7_DL_HL",
11805 "Tertiary TDM7 Hostless Playback",
11806 0, 0, 0, 0),
11807 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_7_UL_HL",
11808 "Tertiary TDM7 Hostless Capture",
11809 0, 0, 0, 0),
11810 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_0_DL_HL",
11811 "Quaternary TDM0 Hostless Playback",
11812 0, 0, 0, 0),
11813 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_0_UL_HL",
11814 "Quaternary TDM0 Hostless Capture",
11815 0, 0, 0, 0),
11816 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_1_DL_HL",
11817 "Quaternary TDM1 Hostless Playback",
11818 0, 0, 0, 0),
11819 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_1_UL_HL",
11820 "Quaternary TDM1 Hostless Capture",
11821 0, 0, 0, 0),
11822 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_2_DL_HL",
11823 "Quaternary TDM2 Hostless Playback",
11824 0, 0, 0, 0),
11825 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_2_UL_HL",
11826 "Quaternary TDM2 Hostless Capture",
11827 0, 0, 0, 0),
11828 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_3_DL_HL",
11829 "Quaternary TDM3 Hostless Playback",
11830 0, 0, 0, 0),
11831 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_3_UL_HL",
11832 "Quaternary TDM3 Hostless Capture",
11833 0, 0, 0, 0),
11834 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_4_DL_HL",
11835 "Quaternary TDM4 Hostless Playback",
11836 0, 0, 0, 0),
11837 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_4_UL_HL",
11838 "Quaternary TDM4 Hostless Capture",
11839 0, 0, 0, 0),
11840 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_5_DL_HL",
11841 "Quaternary TDM5 Hostless Playback",
11842 0, 0, 0, 0),
11843 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_5_UL_HL",
11844 "Quaternary TDM5 Hostless Capture",
11845 0, 0, 0, 0),
11846 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_6_DL_HL",
11847 "Quaternary TDM6 Hostless Playback",
11848 0, 0, 0, 0),
11849 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_6_UL_HL",
11850 "Quaternary TDM6 Hostless Capture",
11851 0, 0, 0, 0),
11852 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_7_DL_HL",
11853 "Quaternary TDM7 Hostless Playback",
11854 0, 0, 0, 0),
11855 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_7_UL_HL",
11856 "Quaternary TDM7 Hostless Capture",
11857 0, 0, 0, 0),
11858
11859 /* LSM */
11860 SND_SOC_DAPM_AIF_OUT("LSM1_UL_HL", "Listen 1 Audio Service Capture",
11861 0, 0, 0, 0),
11862 SND_SOC_DAPM_AIF_OUT("LSM2_UL_HL", "Listen 2 Audio Service Capture",
11863 0, 0, 0, 0),
11864 SND_SOC_DAPM_AIF_OUT("LSM3_UL_HL", "Listen 3 Audio Service Capture",
11865 0, 0, 0, 0),
11866 SND_SOC_DAPM_AIF_OUT("LSM4_UL_HL", "Listen 4 Audio Service Capture",
11867 0, 0, 0, 0),
11868 SND_SOC_DAPM_AIF_OUT("LSM5_UL_HL", "Listen 5 Audio Service Capture",
11869 0, 0, 0, 0),
11870 SND_SOC_DAPM_AIF_OUT("LSM6_UL_HL", "Listen 6 Audio Service Capture",
11871 0, 0, 0, 0),
11872 SND_SOC_DAPM_AIF_OUT("LSM7_UL_HL", "Listen 7 Audio Service Capture",
11873 0, 0, 0, 0),
11874 SND_SOC_DAPM_AIF_OUT("LSM8_UL_HL", "Listen 8 Audio Service Capture",
11875 0, 0, 0, 0),
11876 SND_SOC_DAPM_AIF_IN("QCHAT_DL", "QCHAT Playback", 0, 0, 0, 0),
11877 SND_SOC_DAPM_AIF_OUT("QCHAT_UL", "QCHAT Capture", 0, 0, 0, 0),
11878 /* Backend AIF */
11879 /* Stream name equals to backend dai link stream name */
11880 SND_SOC_DAPM_AIF_OUT("PRI_I2S_RX", "Primary I2S Playback", 0, 0, 0, 0),
11881 SND_SOC_DAPM_AIF_OUT("SEC_I2S_RX", "Secondary I2S Playback",
11882 0, 0, 0, 0),
11883 SND_SOC_DAPM_AIF_OUT("SPDIF_RX", "SPDIF Playback", 0, 0, 0, 0),
11884 SND_SOC_DAPM_AIF_OUT("SLIMBUS_0_RX", "Slimbus Playback", 0, 0, 0, 0),
11885 SND_SOC_DAPM_AIF_OUT("SLIMBUS_2_RX", "Slimbus2 Playback", 0, 0, 0, 0),
11886 SND_SOC_DAPM_AIF_OUT("SLIMBUS_5_RX", "Slimbus5 Playback", 0, 0, 0, 0),
11887 SND_SOC_DAPM_AIF_OUT("HDMI", "HDMI Playback", 0, 0, 0, 0),
11888 SND_SOC_DAPM_AIF_OUT("DISPLAY_PORT", "Display Port Playback",
11889 0, 0, 0, 0),
11890 SND_SOC_DAPM_AIF_OUT("MI2S_RX", "MI2S Playback", 0, 0, 0, 0),
11891 SND_SOC_DAPM_AIF_OUT("QUAT_MI2S_RX", "Quaternary MI2S Playback",
11892 0, 0, 0, 0),
11893 SND_SOC_DAPM_AIF_OUT("TERT_MI2S_RX", "Tertiary MI2S Playback",
11894 0, 0, 0, 0),
11895 SND_SOC_DAPM_AIF_OUT("SEC_MI2S_RX", "Secondary MI2S Playback",
11896 0, 0, 0, 0),
11897 SND_SOC_DAPM_AIF_OUT("SEC_MI2S_RX_SD1",
11898 "Secondary MI2S Playback SD1",
11899 0, 0, 0, 0),
11900 SND_SOC_DAPM_AIF_OUT("PRI_MI2S_RX", "Primary MI2S Playback",
11901 0, 0, 0, 0),
11902 SND_SOC_DAPM_AIF_OUT("INT0_MI2S_RX", "INT0 MI2S Playback",
11903 0, 0, 0, 0),
11904 SND_SOC_DAPM_AIF_OUT("INT4_MI2S_RX", "INT4 MI2S Playback",
11905 0, 0, 0, 0),
11906 SND_SOC_DAPM_AIF_OUT("QUIN_MI2S_RX", "Quinary MI2S Playback",
11907 0, 0, 0, 0),
11908 SND_SOC_DAPM_AIF_IN("PRI_I2S_TX", "Primary I2S Capture", 0, 0, 0, 0),
11909 SND_SOC_DAPM_AIF_IN("MI2S_TX", "MI2S Capture", 0, 0, 0, 0),
11910 SND_SOC_DAPM_AIF_IN("QUAT_MI2S_TX", "Quaternary MI2S Capture",
11911 0, 0, 0, 0),
11912 SND_SOC_DAPM_AIF_IN("PRI_MI2S_TX", "Primary MI2S Capture",
11913 0, 0, 0, 0),
11914 SND_SOC_DAPM_AIF_IN("TERT_MI2S_TX", "Tertiary MI2S Capture",
11915 0, 0, 0, 0),
11916 SND_SOC_DAPM_AIF_IN("INT2_MI2S_TX", "INT2 MI2S Capture",
11917 0, 0, 0, 0),
11918 SND_SOC_DAPM_AIF_IN("INT3_MI2S_TX", "INT3 MI2S Capture",
11919 0, 0, 0, 0),
11920 SND_SOC_DAPM_AIF_IN("SEC_MI2S_TX", "Secondary MI2S Capture",
11921 0, 0, 0, 0),
11922 SND_SOC_DAPM_AIF_IN("SLIMBUS_0_TX", "Slimbus Capture", 0, 0, 0, 0),
11923 SND_SOC_DAPM_AIF_IN("SLIMBUS_2_TX", "Slimbus2 Capture", 0, 0, 0, 0),
11924 SND_SOC_DAPM_AIF_IN("QUIN_MI2S_TX", "Quinary MI2S Capture",
11925 0, 0, 0, 0),
11926 SND_SOC_DAPM_AIF_IN("SENARY_MI2S_TX", "Senary MI2S Capture",
11927 0, 0, 0, 0),
11928 SND_SOC_DAPM_AIF_OUT("INT_BT_SCO_RX", "Internal BT-SCO Playback",
11929 0, 0, 0, 0),
11930 SND_SOC_DAPM_AIF_IN("INT_BT_SCO_TX", "Internal BT-SCO Capture",
11931 0, 0, 0, 0),
11932 SND_SOC_DAPM_AIF_OUT("INT_BT_A2DP_RX", "Internal BT-A2DP Playback",
11933 0, 0, 0, 0),
11934 SND_SOC_DAPM_AIF_OUT("INT_FM_RX", "Internal FM Playback",
11935 0, 0, 0, 0),
11936 SND_SOC_DAPM_AIF_IN("INT_FM_TX", "Internal FM Capture",
11937 0, 0, 0, 0),
11938 SND_SOC_DAPM_AIF_OUT("PCM_RX", "AFE Playback",
11939 0, 0, 0, 0),
11940 SND_SOC_DAPM_AIF_IN("PCM_TX", "AFE Capture",
11941 0, 0, 0, 0),
11942 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_0", "Primary TDM0 Playback",
11943 0, 0, 0, 0),
11944 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_0", "Primary TDM0 Capture",
11945 0, 0, 0, 0),
11946 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_1", "Primary TDM1 Playback",
11947 0, 0, 0, 0),
11948 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_1", "Primary TDM1 Capture",
11949 0, 0, 0, 0),
11950 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_2", "Primary TDM2 Playback",
11951 0, 0, 0, 0),
11952 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_2", "Primary TDM2 Capture",
11953 0, 0, 0, 0),
11954 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_3", "Primary TDM3 Playback",
11955 0, 0, 0, 0),
11956 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_3", "Primary TDM3 Capture",
11957 0, 0, 0, 0),
11958 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_4", "Primary TDM4 Playback",
11959 0, 0, 0, 0),
11960 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_4", "Primary TDM4 Capture",
11961 0, 0, 0, 0),
11962 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_5", "Primary TDM5 Playback",
11963 0, 0, 0, 0),
11964 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_5", "Primary TDM5 Capture",
11965 0, 0, 0, 0),
11966 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_6", "Primary TDM6 Playback",
11967 0, 0, 0, 0),
11968 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_6", "Primary TDM6 Capture",
11969 0, 0, 0, 0),
11970 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_7", "Primary TDM7 Playback",
11971 0, 0, 0, 0),
11972 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_7", "Primary TDM7 Capture",
11973 0, 0, 0, 0),
11974 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_0", "Secondary TDM0 Playback",
11975 0, 0, 0, 0),
11976 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_0", "Secondary TDM0 Capture",
11977 0, 0, 0, 0),
11978 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_1", "Secondary TDM1 Playback",
11979 0, 0, 0, 0),
11980 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_1", "Secondary TDM1 Capture",
11981 0, 0, 0, 0),
11982 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_2", "Secondary TDM2 Playback",
11983 0, 0, 0, 0),
11984 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_2", "Secondary TDM2 Capture",
11985 0, 0, 0, 0),
11986 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_3", "Secondary TDM3 Playback",
11987 0, 0, 0, 0),
11988 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_3", "Secondary TDM3 Capture",
11989 0, 0, 0, 0),
11990 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_4", "Secondary TDM4 Playback",
11991 0, 0, 0, 0),
11992 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_4", "Secondary TDM4 Capture",
11993 0, 0, 0, 0),
11994 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_5", "Secondary TDM5 Playback",
11995 0, 0, 0, 0),
11996 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_5", "Secondary TDM5 Capture",
11997 0, 0, 0, 0),
11998 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_6", "Secondary TDM6 Playback",
11999 0, 0, 0, 0),
12000 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_6", "Secondary TDM6 Capture",
12001 0, 0, 0, 0),
12002 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_7", "Secondary TDM7 Playback",
12003 0, 0, 0, 0),
12004 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_7", "Secondary TDM7 Capture",
12005 0, 0, 0, 0),
12006 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_0", "Tertiary TDM0 Playback",
12007 0, 0, 0, 0),
12008 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_0", "Tertiary TDM0 Capture",
12009 0, 0, 0, 0),
12010 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_1", "Tertiary TDM1 Playback",
12011 0, 0, 0, 0),
12012 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_1", "Tertiary TDM1 Capture",
12013 0, 0, 0, 0),
12014 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_2", "Tertiary TDM2 Playback",
12015 0, 0, 0, 0),
12016 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_2", "Tertiary TDM2 Capture",
12017 0, 0, 0, 0),
12018 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_3", "Tertiary TDM3 Playback",
12019 0, 0, 0, 0),
12020 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_3", "Tertiary TDM3 Capture",
12021 0, 0, 0, 0),
12022 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_4", "Tertiary TDM4 Playback",
12023 0, 0, 0, 0),
12024 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_4", "Tertiary TDM4 Capture",
12025 0, 0, 0, 0),
12026 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_5", "Tertiary TDM5 Playback",
12027 0, 0, 0, 0),
12028 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_5", "Tertiary TDM5 Capture",
12029 0, 0, 0, 0),
12030 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_6", "Tertiary TDM6 Playback",
12031 0, 0, 0, 0),
12032 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_6", "Tertiary TDM6 Capture",
12033 0, 0, 0, 0),
12034 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_7", "Tertiary TDM7 Playback",
12035 0, 0, 0, 0),
12036 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_7", "Tertiary TDM7 Capture",
12037 0, 0, 0, 0),
12038 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_0", "Quaternary TDM0 Playback",
12039 0, 0, 0, 0),
12040 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_0", "Quaternary TDM0 Capture",
12041 0, 0, 0, 0),
12042 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_1", "Quaternary TDM1 Playback",
12043 0, 0, 0, 0),
12044 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_1", "Quaternary TDM1 Capture",
12045 0, 0, 0, 0),
12046 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_2", "Quaternary TDM2 Playback",
12047 0, 0, 0, 0),
12048 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_2", "Quaternary TDM2 Capture",
12049 0, 0, 0, 0),
12050 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_3", "Quaternary TDM3 Playback",
12051 0, 0, 0, 0),
12052 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_3", "Quaternary TDM3 Capture",
12053 0, 0, 0, 0),
12054 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_4", "Quaternary TDM4 Playback",
12055 0, 0, 0, 0),
12056 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_4", "Quaternary TDM4 Capture",
12057 0, 0, 0, 0),
12058 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_5", "Quaternary TDM5 Playback",
12059 0, 0, 0, 0),
12060 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_5", "Quaternary TDM5 Capture",
12061 0, 0, 0, 0),
12062 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_6", "Quaternary TDM6 Playback",
12063 0, 0, 0, 0),
12064 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_6", "Quaternary TDM6 Capture",
12065 0, 0, 0, 0),
12066 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_7", "Quaternary TDM7 Playback",
12067 0, 0, 0, 0),
12068 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_7", "Quaternary TDM7 Capture",
12069 0, 0, 0, 0),
12070 /* incall */
12071 SND_SOC_DAPM_AIF_OUT("VOICE_PLAYBACK_TX", "Voice Farend Playback",
12072 0, 0, 0, 0),
12073 SND_SOC_DAPM_AIF_OUT("VOICE2_PLAYBACK_TX", "Voice2 Farend Playback",
12074 0, 0, 0, 0),
12075 SND_SOC_DAPM_AIF_OUT("SLIMBUS_4_RX", "Slimbus4 Playback",
12076 0, 0, 0, 0),
12077 SND_SOC_DAPM_AIF_IN("INCALL_RECORD_TX", "Voice Uplink Capture",
12078 0, 0, 0, 0),
12079 SND_SOC_DAPM_AIF_IN("INCALL_RECORD_RX", "Voice Downlink Capture",
12080 0, 0, 0, 0),
12081 SND_SOC_DAPM_AIF_IN("SLIMBUS_4_TX", "Slimbus4 Capture",
12082 0, 0, 0, 0),
12083 SND_SOC_DAPM_AIF_IN("SENARY_TX", "Senary_mi2s Capture",
12084 0, 0, 0, 0),
12085 SND_SOC_DAPM_AIF_IN("INT5_MI2S_TX", "INT5 MI2S Capture",
12086 0, 0, 0, 0),
12087 SND_SOC_DAPM_AIF_IN("SLIMBUS_5_TX", "Slimbus5 Capture", 0, 0, 0, 0),
12088
12089 SND_SOC_DAPM_AIF_OUT("AUX_PCM_RX", "AUX PCM Playback", 0, 0, 0, 0),
12090 SND_SOC_DAPM_AIF_IN("AUX_PCM_TX", "AUX PCM Capture", 0, 0, 0, 0),
12091 SND_SOC_DAPM_AIF_OUT("SEC_AUX_PCM_RX", "Sec AUX PCM Playback",
12092 0, 0, 0, 0),
12093 SND_SOC_DAPM_AIF_IN("SEC_AUX_PCM_TX", "Sec AUX PCM Capture",
12094 0, 0, 0, 0),
12095 SND_SOC_DAPM_AIF_OUT("TERT_AUX_PCM_RX", "Tert AUX PCM Playback",
12096 0, 0, 0, 0),
12097 SND_SOC_DAPM_AIF_IN("TERT_AUX_PCM_TX", "Tert AUX PCM Capture",
12098 0, 0, 0, 0),
12099 SND_SOC_DAPM_AIF_OUT("QUAT_AUX_PCM_RX", "Quat AUX PCM Playback",
12100 0, 0, 0, 0),
12101 SND_SOC_DAPM_AIF_IN("QUAT_AUX_PCM_TX", "Quat AUX PCM Capture",
12102 0, 0, 0, 0),
12103 SND_SOC_DAPM_AIF_IN("VOICE_STUB_DL", "VOICE_STUB Playback", 0, 0, 0, 0),
12104 SND_SOC_DAPM_AIF_OUT("VOICE_STUB_UL", "VOICE_STUB Capture", 0, 0, 0, 0),
12105 SND_SOC_DAPM_AIF_IN("VOICE2_STUB_DL", "VOICE2_STUB Playback",
12106 0, 0, 0, 0),
12107 SND_SOC_DAPM_AIF_OUT("VOICE2_STUB_UL", "VOICE2_STUB Capture",
12108 0, 0, 0, 0),
12109 SND_SOC_DAPM_AIF_IN("VOLTE_STUB_DL", "VOLTE_STUB Playback", 0, 0, 0, 0),
12110 SND_SOC_DAPM_AIF_OUT("VOLTE_STUB_UL", "VOLTE_STUB Capture", 0, 0, 0, 0),
12111 SND_SOC_DAPM_AIF_OUT("STUB_RX", "Stub Playback", 0, 0, 0, 0),
12112 SND_SOC_DAPM_AIF_IN("STUB_TX", "Stub Capture", 0, 0, 0, 0),
12113 SND_SOC_DAPM_AIF_OUT("SLIMBUS_1_RX", "Slimbus1 Playback", 0, 0, 0, 0),
12114 SND_SOC_DAPM_AIF_IN("SLIMBUS_1_TX", "Slimbus1 Capture", 0, 0, 0, 0),
12115 SND_SOC_DAPM_AIF_IN("STUB_1_TX", "Stub1 Capture", 0, 0, 0, 0),
12116 SND_SOC_DAPM_AIF_OUT("SLIMBUS_3_RX", "Slimbus3 Playback", 0, 0, 0, 0),
12117 SND_SOC_DAPM_AIF_IN("SLIMBUS_3_TX", "Slimbus3 Capture", 0, 0, 0, 0),
12118 /* In- call recording */
12119 SND_SOC_DAPM_AIF_OUT("SLIMBUS_6_RX", "Slimbus6 Playback", 0, 0, 0, 0),
12120 SND_SOC_DAPM_AIF_IN("SLIMBUS_6_TX", "Slimbus6 Capture", 0, 0, 0, 0),
12121
12122 SND_SOC_DAPM_AIF_OUT("SLIMBUS_7_RX", "Slimbus7 Playback", 0, 0, 0, 0),
12123 SND_SOC_DAPM_AIF_IN("SLIMBUS_7_TX", "Slimbus7 Capture", 0, 0, 0, 0),
12124
12125 SND_SOC_DAPM_AIF_OUT("SLIMBUS_8_RX", "Slimbus8 Playback", 0, 0, 0, 0),
12126 SND_SOC_DAPM_AIF_IN("SLIMBUS_8_TX", "Slimbus8 Capture", 0, 0, 0, 0),
12127 SND_SOC_DAPM_AIF_OUT("USB_AUDIO_RX", "USB Audio Playback", 0, 0, 0, 0),
12128 SND_SOC_DAPM_AIF_IN("USB_AUDIO_TX", "USB Audio Capture", 0, 0, 0, 0),
12129
12130 /* Switch Definitions */
12131 SND_SOC_DAPM_SWITCH("SLIMBUS_DL_HL", SND_SOC_NOPM, 0, 0,
12132 &slim_fm_switch_mixer_controls),
12133 SND_SOC_DAPM_SWITCH("SLIMBUS1_DL_HL", SND_SOC_NOPM, 0, 0,
12134 &slim1_fm_switch_mixer_controls),
12135 SND_SOC_DAPM_SWITCH("SLIMBUS3_DL_HL", SND_SOC_NOPM, 0, 0,
12136 &slim3_fm_switch_mixer_controls),
12137 SND_SOC_DAPM_SWITCH("SLIMBUS4_DL_HL", SND_SOC_NOPM, 0, 0,
12138 &slim4_fm_switch_mixer_controls),
12139 SND_SOC_DAPM_SWITCH("SLIMBUS6_DL_HL", SND_SOC_NOPM, 0, 0,
12140 &slim6_fm_switch_mixer_controls),
12141 SND_SOC_DAPM_SWITCH("PCM_RX_DL_HL", SND_SOC_NOPM, 0, 0,
12142 &pcm_rx_switch_mixer_controls),
12143 SND_SOC_DAPM_SWITCH("INT0_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
12144 &int0_mi2s_rx_switch_mixer_controls),
12145 SND_SOC_DAPM_SWITCH("INT4_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
12146 &int4_mi2s_rx_switch_mixer_controls),
12147 SND_SOC_DAPM_SWITCH("PRI_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
12148 &pri_mi2s_rx_switch_mixer_controls),
12149 SND_SOC_DAPM_SWITCH("SEC_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
12150 &sec_mi2s_rx_switch_mixer_controls),
12151 SND_SOC_DAPM_SWITCH("TERT_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
12152 &tert_mi2s_rx_switch_mixer_controls),
12153 SND_SOC_DAPM_SWITCH("QUAT_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
12154 &quat_mi2s_rx_switch_mixer_controls),
12155 SND_SOC_DAPM_SWITCH("HFP_PRI_AUX_UL_HL", SND_SOC_NOPM, 0, 0,
12156 &hfp_pri_aux_switch_mixer_controls),
12157 SND_SOC_DAPM_SWITCH("HFP_AUX_UL_HL", SND_SOC_NOPM, 0, 0,
12158 &hfp_aux_switch_mixer_controls),
12159 SND_SOC_DAPM_SWITCH("HFP_INT_UL_HL", SND_SOC_NOPM, 0, 0,
12160 &hfp_int_switch_mixer_controls),
12161 SND_SOC_DAPM_SWITCH("HFP_SLIM7_UL_HL", SND_SOC_NOPM, 0, 0,
12162 &hfp_slim7_switch_mixer_controls),
12163 SND_SOC_DAPM_SWITCH("USB_DL_HL", SND_SOC_NOPM, 0, 0,
12164 &usb_switch_mixer_controls),
12165
12166 /* Mixer definitions */
12167 SND_SOC_DAPM_MIXER("PRI_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
12168 pri_i2s_rx_mixer_controls, ARRAY_SIZE(pri_i2s_rx_mixer_controls)),
12169 SND_SOC_DAPM_MIXER("SEC_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
12170 sec_i2s_rx_mixer_controls, ARRAY_SIZE(sec_i2s_rx_mixer_controls)),
12171 SND_SOC_DAPM_MIXER("SLIMBUS_0_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
12172 slimbus_rx_mixer_controls, ARRAY_SIZE(slimbus_rx_mixer_controls)),
12173 SND_SOC_DAPM_MIXER("SLIMBUS_2_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
12174 slimbus_2_rx_mixer_controls, ARRAY_SIZE(slimbus_2_rx_mixer_controls)),
12175 SND_SOC_DAPM_MIXER("SLIMBUS_5_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
12176 slimbus_5_rx_mixer_controls, ARRAY_SIZE(slimbus_5_rx_mixer_controls)),
12177 SND_SOC_DAPM_MIXER("SLIMBUS_7_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
12178 slimbus_7_rx_mixer_controls, ARRAY_SIZE(slimbus_7_rx_mixer_controls)),
12179 SND_SOC_DAPM_MIXER("HDMI Mixer", SND_SOC_NOPM, 0, 0,
12180 hdmi_mixer_controls, ARRAY_SIZE(hdmi_mixer_controls)),
12181 SND_SOC_DAPM_MIXER("DISPLAY_PORT Mixer", SND_SOC_NOPM, 0, 0,
12182 display_port_mixer_controls, ARRAY_SIZE(display_port_mixer_controls)),
12183 SND_SOC_DAPM_MIXER("SPDIF_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
12184 spdif_rx_mixer_controls, ARRAY_SIZE(spdif_rx_mixer_controls)),
12185 SND_SOC_DAPM_MIXER("MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
12186 mi2s_rx_mixer_controls, ARRAY_SIZE(mi2s_rx_mixer_controls)),
12187 SND_SOC_DAPM_MIXER("QUAT_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
12188 quaternary_mi2s_rx_mixer_controls,
12189 ARRAY_SIZE(quaternary_mi2s_rx_mixer_controls)),
12190 SND_SOC_DAPM_MIXER("TERT_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
12191 tertiary_mi2s_rx_mixer_controls,
12192 ARRAY_SIZE(tertiary_mi2s_rx_mixer_controls)),
12193 SND_SOC_DAPM_MIXER("SEC_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
12194 secondary_mi2s_rx_mixer_controls,
12195 ARRAY_SIZE(secondary_mi2s_rx_mixer_controls)),
12196 SND_SOC_DAPM_MIXER("SEC_MI2S_RX_SD1 Audio Mixer", SND_SOC_NOPM, 0, 0,
12197 secondary_mi2s_rx2_mixer_controls,
12198 ARRAY_SIZE(secondary_mi2s_rx2_mixer_controls)),
12199 SND_SOC_DAPM_MIXER("PRI_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
12200 primary_mi2s_rx_mixer_controls,
12201 ARRAY_SIZE(primary_mi2s_rx_mixer_controls)),
12202 SND_SOC_DAPM_MIXER("INT0_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
12203 int0_mi2s_rx_mixer_controls,
12204 ARRAY_SIZE(int0_mi2s_rx_mixer_controls)),
12205 SND_SOC_DAPM_MIXER("INT4_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
12206 int4_mi2s_rx_mixer_controls,
12207 ARRAY_SIZE(int4_mi2s_rx_mixer_controls)),
12208 SND_SOC_DAPM_MIXER("QUIN_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
12209 quinary_mi2s_rx_mixer_controls,
12210 ARRAY_SIZE(quinary_mi2s_rx_mixer_controls)),
12211 SND_SOC_DAPM_MIXER("PRI_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
12212 pri_tdm_rx_0_mixer_controls,
12213 ARRAY_SIZE(pri_tdm_rx_0_mixer_controls)),
12214 SND_SOC_DAPM_MIXER("PRI_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
12215 pri_tdm_rx_1_mixer_controls,
12216 ARRAY_SIZE(pri_tdm_rx_1_mixer_controls)),
12217 SND_SOC_DAPM_MIXER("PRI_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
12218 pri_tdm_rx_2_mixer_controls,
12219 ARRAY_SIZE(pri_tdm_rx_2_mixer_controls)),
12220 SND_SOC_DAPM_MIXER("PRI_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
12221 pri_tdm_rx_3_mixer_controls,
12222 ARRAY_SIZE(pri_tdm_rx_3_mixer_controls)),
12223 SND_SOC_DAPM_MIXER("PRI_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
12224 pri_tdm_tx_0_mixer_controls,
12225 ARRAY_SIZE(pri_tdm_tx_0_mixer_controls)),
12226 SND_SOC_DAPM_MIXER("SEC_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
12227 sec_tdm_rx_0_mixer_controls,
12228 ARRAY_SIZE(sec_tdm_rx_0_mixer_controls)),
12229 SND_SOC_DAPM_MIXER("SEC_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
12230 sec_tdm_rx_1_mixer_controls,
12231 ARRAY_SIZE(sec_tdm_rx_1_mixer_controls)),
12232 SND_SOC_DAPM_MIXER("SEC_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
12233 sec_tdm_rx_2_mixer_controls,
12234 ARRAY_SIZE(sec_tdm_rx_2_mixer_controls)),
12235 SND_SOC_DAPM_MIXER("SEC_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
12236 sec_tdm_rx_3_mixer_controls,
12237 ARRAY_SIZE(sec_tdm_rx_3_mixer_controls)),
12238 SND_SOC_DAPM_MIXER("SEC_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
12239 sec_tdm_tx_0_mixer_controls,
12240 ARRAY_SIZE(sec_tdm_tx_0_mixer_controls)),
12241 SND_SOC_DAPM_MIXER("TERT_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
12242 tert_tdm_rx_0_mixer_controls,
12243 ARRAY_SIZE(tert_tdm_rx_0_mixer_controls)),
12244 SND_SOC_DAPM_MIXER("TERT_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
12245 tert_tdm_tx_0_mixer_controls,
12246 ARRAY_SIZE(tert_tdm_tx_0_mixer_controls)),
12247 SND_SOC_DAPM_MIXER("TERT_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
12248 tert_tdm_rx_1_mixer_controls,
12249 ARRAY_SIZE(tert_tdm_rx_1_mixer_controls)),
12250 SND_SOC_DAPM_MIXER("TERT_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
12251 tert_tdm_rx_2_mixer_controls,
12252 ARRAY_SIZE(tert_tdm_rx_2_mixer_controls)),
12253 SND_SOC_DAPM_MIXER("TERT_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
12254 tert_tdm_rx_3_mixer_controls,
12255 ARRAY_SIZE(tert_tdm_rx_3_mixer_controls)),
12256 SND_SOC_DAPM_MIXER("TERT_TDM_RX_4 Audio Mixer", SND_SOC_NOPM, 0, 0,
12257 tert_tdm_rx_4_mixer_controls,
12258 ARRAY_SIZE(tert_tdm_rx_4_mixer_controls)),
12259 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
12260 quat_tdm_rx_0_mixer_controls,
12261 ARRAY_SIZE(quat_tdm_rx_0_mixer_controls)),
12262 SND_SOC_DAPM_MIXER("QUAT_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
12263 quat_tdm_tx_0_mixer_controls,
12264 ARRAY_SIZE(quat_tdm_tx_0_mixer_controls)),
12265 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
12266 quat_tdm_rx_1_mixer_controls,
12267 ARRAY_SIZE(quat_tdm_rx_1_mixer_controls)),
12268 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
12269 quat_tdm_rx_2_mixer_controls,
12270 ARRAY_SIZE(quat_tdm_rx_2_mixer_controls)),
12271 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
12272 quat_tdm_rx_3_mixer_controls,
12273 ARRAY_SIZE(quat_tdm_rx_3_mixer_controls)),
12274 SND_SOC_DAPM_MIXER("MultiMedia1 Mixer", SND_SOC_NOPM, 0, 0,
12275 mmul1_mixer_controls, ARRAY_SIZE(mmul1_mixer_controls)),
12276 SND_SOC_DAPM_MIXER("MultiMedia2 Mixer", SND_SOC_NOPM, 0, 0,
12277 mmul2_mixer_controls, ARRAY_SIZE(mmul2_mixer_controls)),
12278 SND_SOC_DAPM_MIXER("MultiMedia3 Mixer", SND_SOC_NOPM, 0, 0,
12279 mmul3_mixer_controls, ARRAY_SIZE(mmul3_mixer_controls)),
12280 SND_SOC_DAPM_MIXER("MultiMedia4 Mixer", SND_SOC_NOPM, 0, 0,
12281 mmul4_mixer_controls, ARRAY_SIZE(mmul4_mixer_controls)),
12282 SND_SOC_DAPM_MIXER("MultiMedia5 Mixer", SND_SOC_NOPM, 0, 0,
12283 mmul5_mixer_controls, ARRAY_SIZE(mmul5_mixer_controls)),
12284 SND_SOC_DAPM_MIXER("MultiMedia6 Mixer", SND_SOC_NOPM, 0, 0,
12285 mmul6_mixer_controls, ARRAY_SIZE(mmul6_mixer_controls)),
12286 SND_SOC_DAPM_MIXER("MultiMedia8 Mixer", SND_SOC_NOPM, 0, 0,
12287 mmul8_mixer_controls, ARRAY_SIZE(mmul8_mixer_controls)),
12288 SND_SOC_DAPM_MIXER("MultiMedia9 Mixer", SND_SOC_NOPM, 0, 0,
12289 mmul9_mixer_controls, ARRAY_SIZE(mmul9_mixer_controls)),
Laxminath Kasam38070be2017-08-17 18:21:59 +053012290 SND_SOC_DAPM_MIXER("MultiMedia10 Mixer", SND_SOC_NOPM, 0, 0,
12291 mmul10_mixer_controls, ARRAY_SIZE(mmul10_mixer_controls)),
Asish Bhattacharya34504582017-08-08 12:55:01 +053012292 SND_SOC_DAPM_MIXER("MultiMedia16 Mixer", SND_SOC_NOPM, 0, 0,
12293 mmul16_mixer_controls, ARRAY_SIZE(mmul16_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012294 SND_SOC_DAPM_MIXER("MultiMedia17 Mixer", SND_SOC_NOPM, 0, 0,
12295 mmul17_mixer_controls, ARRAY_SIZE(mmul17_mixer_controls)),
12296 SND_SOC_DAPM_MIXER("MultiMedia18 Mixer", SND_SOC_NOPM, 0, 0,
12297 mmul18_mixer_controls, ARRAY_SIZE(mmul18_mixer_controls)),
12298 SND_SOC_DAPM_MIXER("MultiMedia19 Mixer", SND_SOC_NOPM, 0, 0,
12299 mmul19_mixer_controls, ARRAY_SIZE(mmul19_mixer_controls)),
12300 SND_SOC_DAPM_MIXER("MultiMedia20 Mixer", SND_SOC_NOPM, 0, 0,
12301 mmul20_mixer_controls, ARRAY_SIZE(mmul20_mixer_controls)),
12302 SND_SOC_DAPM_MIXER("AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
12303 auxpcm_rx_mixer_controls, ARRAY_SIZE(auxpcm_rx_mixer_controls)),
12304 SND_SOC_DAPM_MIXER("SEC_AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
12305 sec_auxpcm_rx_mixer_controls, ARRAY_SIZE(sec_auxpcm_rx_mixer_controls)),
12306 SND_SOC_DAPM_MIXER("TERT_AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
12307 tert_auxpcm_rx_mixer_controls,
12308 ARRAY_SIZE(tert_auxpcm_rx_mixer_controls)),
12309 SND_SOC_DAPM_MIXER("QUAT_AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
12310 quat_auxpcm_rx_mixer_controls,
12311 ARRAY_SIZE(quat_auxpcm_rx_mixer_controls)),
12312 /* incall */
12313 SND_SOC_DAPM_MIXER("Incall_Music Audio Mixer", SND_SOC_NOPM, 0, 0,
12314 incall_music_delivery_mixer_controls,
12315 ARRAY_SIZE(incall_music_delivery_mixer_controls)),
12316 SND_SOC_DAPM_MIXER("Incall_Music_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
12317 incall_music2_delivery_mixer_controls,
12318 ARRAY_SIZE(incall_music2_delivery_mixer_controls)),
12319 SND_SOC_DAPM_MIXER("SLIMBUS_4_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
12320 slimbus_4_rx_mixer_controls,
12321 ARRAY_SIZE(slimbus_4_rx_mixer_controls)),
12322 SND_SOC_DAPM_MIXER("SLIMBUS_6_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
12323 slimbus_6_rx_mixer_controls,
12324 ARRAY_SIZE(slimbus_6_rx_mixer_controls)),
12325 SND_SOC_DAPM_MIXER("USB_AUDIO_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
12326 usb_audio_rx_mixer_controls,
12327 ARRAY_SIZE(usb_audio_rx_mixer_controls)),
12328 /* Voice Mixer */
12329 SND_SOC_DAPM_MIXER("PRI_RX_Voice Mixer",
12330 SND_SOC_NOPM, 0, 0, pri_rx_voice_mixer_controls,
12331 ARRAY_SIZE(pri_rx_voice_mixer_controls)),
12332 SND_SOC_DAPM_MIXER("SEC_RX_Voice Mixer",
12333 SND_SOC_NOPM, 0, 0,
12334 sec_i2s_rx_voice_mixer_controls,
12335 ARRAY_SIZE(sec_i2s_rx_voice_mixer_controls)),
12336 SND_SOC_DAPM_MIXER("SEC_MI2S_RX_Voice Mixer",
12337 SND_SOC_NOPM, 0, 0,
12338 sec_mi2s_rx_voice_mixer_controls,
12339 ARRAY_SIZE(sec_mi2s_rx_voice_mixer_controls)),
12340 SND_SOC_DAPM_MIXER("SLIM_0_RX_Voice Mixer",
12341 SND_SOC_NOPM, 0, 0,
12342 slimbus_rx_voice_mixer_controls,
12343 ARRAY_SIZE(slimbus_rx_voice_mixer_controls)),
12344 SND_SOC_DAPM_MIXER("INTERNAL_BT_SCO_RX_Voice Mixer",
12345 SND_SOC_NOPM, 0, 0,
12346 bt_sco_rx_voice_mixer_controls,
12347 ARRAY_SIZE(bt_sco_rx_voice_mixer_controls)),
12348 SND_SOC_DAPM_MIXER("AFE_PCM_RX_Voice Mixer",
12349 SND_SOC_NOPM, 0, 0,
12350 afe_pcm_rx_voice_mixer_controls,
12351 ARRAY_SIZE(afe_pcm_rx_voice_mixer_controls)),
12352 SND_SOC_DAPM_MIXER("AUX_PCM_RX_Voice Mixer",
12353 SND_SOC_NOPM, 0, 0,
12354 aux_pcm_rx_voice_mixer_controls,
12355 ARRAY_SIZE(aux_pcm_rx_voice_mixer_controls)),
12356 SND_SOC_DAPM_MIXER("SEC_AUX_PCM_RX_Voice Mixer",
12357 SND_SOC_NOPM, 0, 0,
12358 sec_aux_pcm_rx_voice_mixer_controls,
12359 ARRAY_SIZE(sec_aux_pcm_rx_voice_mixer_controls)),
12360 SND_SOC_DAPM_MIXER("TERT_AUX_PCM_RX_Voice Mixer",
12361 SND_SOC_NOPM, 0, 0,
12362 tert_aux_pcm_rx_voice_mixer_controls,
12363 ARRAY_SIZE(tert_aux_pcm_rx_voice_mixer_controls)),
12364 SND_SOC_DAPM_MIXER("QUAT_AUX_PCM_RX_Voice Mixer",
12365 SND_SOC_NOPM, 0, 0,
12366 quat_aux_pcm_rx_voice_mixer_controls,
12367 ARRAY_SIZE(quat_aux_pcm_rx_voice_mixer_controls)),
12368 SND_SOC_DAPM_MIXER("HDMI_RX_Voice Mixer",
12369 SND_SOC_NOPM, 0, 0,
12370 hdmi_rx_voice_mixer_controls,
12371 ARRAY_SIZE(hdmi_rx_voice_mixer_controls)),
12372 SND_SOC_DAPM_MIXER("MI2S_RX_Voice Mixer",
12373 SND_SOC_NOPM, 0, 0,
12374 mi2s_rx_voice_mixer_controls,
12375 ARRAY_SIZE(mi2s_rx_voice_mixer_controls)),
12376 SND_SOC_DAPM_MIXER("PRI_MI2S_RX_Voice Mixer",
12377 SND_SOC_NOPM, 0, 0,
12378 pri_mi2s_rx_voice_mixer_controls,
12379 ARRAY_SIZE(pri_mi2s_rx_voice_mixer_controls)),
12380 SND_SOC_DAPM_MIXER("INT0_MI2S_RX_Voice Mixer",
12381 SND_SOC_NOPM, 0, 0,
12382 int0_mi2s_rx_voice_mixer_controls,
12383 ARRAY_SIZE(int0_mi2s_rx_voice_mixer_controls)),
12384 SND_SOC_DAPM_MIXER("INT4_MI2S_RX_Voice Mixer",
12385 SND_SOC_NOPM, 0, 0,
12386 int4_mi2s_rx_voice_mixer_controls,
12387 ARRAY_SIZE(int4_mi2s_rx_voice_mixer_controls)),
12388 SND_SOC_DAPM_MIXER("TERT_MI2S_RX_Voice Mixer",
12389 SND_SOC_NOPM, 0, 0,
12390 tert_mi2s_rx_voice_mixer_controls,
12391 ARRAY_SIZE(tert_mi2s_rx_voice_mixer_controls)),
12392 SND_SOC_DAPM_MIXER("QUAT_MI2S_RX_Voice Mixer",
12393 SND_SOC_NOPM, 0, 0,
12394 quat_mi2s_rx_voice_mixer_controls,
12395 ARRAY_SIZE(quat_mi2s_rx_voice_mixer_controls)),
12396 SND_SOC_DAPM_MIXER("QUIN_MI2S_RX_Voice Mixer",
12397 SND_SOC_NOPM, 0, 0,
12398 quin_mi2s_rx_voice_mixer_controls,
12399 ARRAY_SIZE(quin_mi2s_rx_voice_mixer_controls)),
12400 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_2_Voice Mixer",
12401 SND_SOC_NOPM, 0, 0,
12402 quat_tdm_rx_2_voice_mixer_controls,
12403 ARRAY_SIZE(quat_tdm_rx_2_voice_mixer_controls)),
12404 SND_SOC_DAPM_MIXER("Voice_Tx Mixer",
12405 SND_SOC_NOPM, 0, 0, tx_voice_mixer_controls,
12406 ARRAY_SIZE(tx_voice_mixer_controls)),
12407 SND_SOC_DAPM_MIXER("Voice2_Tx Mixer",
12408 SND_SOC_NOPM, 0, 0, tx_voice2_mixer_controls,
12409 ARRAY_SIZE(tx_voice2_mixer_controls)),
12410 SND_SOC_DAPM_MIXER("Voip_Tx Mixer",
12411 SND_SOC_NOPM, 0, 0, tx_voip_mixer_controls,
12412 ARRAY_SIZE(tx_voip_mixer_controls)),
12413 SND_SOC_DAPM_MIXER("VoLTE_Tx Mixer",
12414 SND_SOC_NOPM, 0, 0, tx_volte_mixer_controls,
12415 ARRAY_SIZE(tx_volte_mixer_controls)),
12416 SND_SOC_DAPM_MIXER("VoWLAN_Tx Mixer",
12417 SND_SOC_NOPM, 0, 0, tx_vowlan_mixer_controls,
12418 ARRAY_SIZE(tx_vowlan_mixer_controls)),
12419 SND_SOC_DAPM_MIXER("VoiceMMode1_Tx Mixer",
12420 SND_SOC_NOPM, 0, 0, tx_voicemmode1_mixer_controls,
12421 ARRAY_SIZE(tx_voicemmode1_mixer_controls)),
12422 SND_SOC_DAPM_MIXER("VoiceMMode2_Tx Mixer",
12423 SND_SOC_NOPM, 0, 0, tx_voicemmode2_mixer_controls,
12424 ARRAY_SIZE(tx_voicemmode2_mixer_controls)),
12425 SND_SOC_DAPM_MIXER("INTERNAL_BT_SCO_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
12426 int_bt_sco_rx_mixer_controls, ARRAY_SIZE(int_bt_sco_rx_mixer_controls)),
12427 SND_SOC_DAPM_MIXER("INTERNAL_A2DP_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
12428 int_bt_a2dp_rx_mixer_controls,
12429 ARRAY_SIZE(int_bt_a2dp_rx_mixer_controls)),
12430 SND_SOC_DAPM_MIXER("INTERNAL_FM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
12431 int_fm_rx_mixer_controls, ARRAY_SIZE(int_fm_rx_mixer_controls)),
12432 SND_SOC_DAPM_MIXER("AFE_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
12433 afe_pcm_rx_mixer_controls, ARRAY_SIZE(afe_pcm_rx_mixer_controls)),
12434 SND_SOC_DAPM_MIXER("Voice Stub Tx Mixer", SND_SOC_NOPM, 0, 0,
12435 tx_voice_stub_mixer_controls, ARRAY_SIZE(tx_voice_stub_mixer_controls)),
12436 SND_SOC_DAPM_MIXER("Voice2 Stub Tx Mixer", SND_SOC_NOPM, 0, 0,
12437 tx_voice2_stub_mixer_controls,
12438 ARRAY_SIZE(tx_voice2_stub_mixer_controls)),
12439 SND_SOC_DAPM_MIXER("VoLTE Stub Tx Mixer", SND_SOC_NOPM, 0, 0,
12440 tx_volte_stub_mixer_controls, ARRAY_SIZE(tx_volte_stub_mixer_controls)),
12441 SND_SOC_DAPM_MIXER("STUB_RX Mixer", SND_SOC_NOPM, 0, 0,
12442 stub_rx_mixer_controls, ARRAY_SIZE(stub_rx_mixer_controls)),
12443 SND_SOC_DAPM_MIXER("SLIMBUS_1_RX Mixer", SND_SOC_NOPM, 0, 0,
12444 slimbus_1_rx_mixer_controls, ARRAY_SIZE(slimbus_1_rx_mixer_controls)),
12445 SND_SOC_DAPM_MIXER("SLIMBUS_3_RX_Voice Mixer", SND_SOC_NOPM, 0, 0,
12446 slimbus_3_rx_mixer_controls, ARRAY_SIZE(slimbus_3_rx_mixer_controls)),
12447 SND_SOC_DAPM_MIXER("SLIM_6_RX_Voice Mixer",
12448 SND_SOC_NOPM, 0, 0,
12449 slimbus_6_rx_voice_mixer_controls,
12450 ARRAY_SIZE(slimbus_6_rx_voice_mixer_controls)),
12451 SND_SOC_DAPM_MIXER("SLIM_7_RX_Voice Mixer", SND_SOC_NOPM, 0, 0,
12452 slimbus_7_rx_voice_mixer_controls,
12453 ARRAY_SIZE(slimbus_7_rx_voice_mixer_controls)),
12454 SND_SOC_DAPM_MIXER("SLIM_8_RX_Voice Mixer", SND_SOC_NOPM, 0, 0,
12455 slimbus_8_rx_voice_mixer_controls,
12456 ARRAY_SIZE(slimbus_8_rx_voice_mixer_controls)),
12457 /* port mixer */
12458 SND_SOC_DAPM_MIXER("SLIMBUS_0_RX Port Mixer",
12459 SND_SOC_NOPM, 0, 0, sbus_0_rx_port_mixer_controls,
12460 ARRAY_SIZE(sbus_0_rx_port_mixer_controls)),
12461 SND_SOC_DAPM_MIXER("AUX_PCM_RX Port Mixer",
12462 SND_SOC_NOPM, 0, 0, aux_pcm_rx_port_mixer_controls,
12463 ARRAY_SIZE(aux_pcm_rx_port_mixer_controls)),
12464 SND_SOC_DAPM_MIXER("SEC_AUXPCM_RX Port Mixer",
12465 SND_SOC_NOPM, 0, 0, sec_auxpcm_rx_port_mixer_controls,
12466 ARRAY_SIZE(sec_auxpcm_rx_port_mixer_controls)),
12467 SND_SOC_DAPM_MIXER("TERT_AUXPCM_RX Port Mixer",
12468 SND_SOC_NOPM, 0, 0, tert_auxpcm_rx_port_mixer_controls,
12469 ARRAY_SIZE(tert_auxpcm_rx_port_mixer_controls)),
12470 SND_SOC_DAPM_MIXER("QUAT_AUXPCM_RX Port Mixer",
12471 SND_SOC_NOPM, 0, 0, quat_auxpcm_rx_port_mixer_controls,
12472 ARRAY_SIZE(quat_auxpcm_rx_port_mixer_controls)),
12473 SND_SOC_DAPM_MIXER("SLIMBUS_1_RX Port Mixer", SND_SOC_NOPM, 0, 0,
12474 sbus_1_rx_port_mixer_controls,
12475 ARRAY_SIZE(sbus_1_rx_port_mixer_controls)),
12476 SND_SOC_DAPM_MIXER("INTERNAL_BT_SCO_RX Port Mixer", SND_SOC_NOPM, 0, 0,
12477 bt_sco_rx_port_mixer_controls,
12478 ARRAY_SIZE(bt_sco_rx_port_mixer_controls)),
12479 SND_SOC_DAPM_MIXER("AFE_PCM_RX Port Mixer",
12480 SND_SOC_NOPM, 0, 0, afe_pcm_rx_port_mixer_controls,
12481 ARRAY_SIZE(afe_pcm_rx_port_mixer_controls)),
12482 SND_SOC_DAPM_MIXER("HDMI_RX Port Mixer",
12483 SND_SOC_NOPM, 0, 0, hdmi_rx_port_mixer_controls,
12484 ARRAY_SIZE(hdmi_rx_port_mixer_controls)),
12485 SND_SOC_DAPM_MIXER("DISPLAY_PORT_RX Port Mixer",
12486 SND_SOC_NOPM, 0, 0, display_port_rx_port_mixer_controls,
12487 ARRAY_SIZE(display_port_rx_port_mixer_controls)),
12488 SND_SOC_DAPM_MIXER("SEC_I2S_RX Port Mixer",
12489 SND_SOC_NOPM, 0, 0, sec_i2s_rx_port_mixer_controls,
12490 ARRAY_SIZE(sec_i2s_rx_port_mixer_controls)),
12491 SND_SOC_DAPM_MIXER("SLIMBUS_3_RX Port Mixer",
12492 SND_SOC_NOPM, 0, 0, sbus_3_rx_port_mixer_controls,
12493 ARRAY_SIZE(sbus_3_rx_port_mixer_controls)),
12494 SND_SOC_DAPM_MIXER("SLIMBUS_6_RX Port Mixer",
12495 SND_SOC_NOPM, 0, 0, sbus_6_rx_port_mixer_controls,
12496 ARRAY_SIZE(sbus_6_rx_port_mixer_controls)),
12497 SND_SOC_DAPM_MIXER("MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
12498 mi2s_rx_port_mixer_controls, ARRAY_SIZE(mi2s_rx_port_mixer_controls)),
12499 SND_SOC_DAPM_MIXER("PRI_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
12500 primary_mi2s_rx_port_mixer_controls,
12501 ARRAY_SIZE(primary_mi2s_rx_port_mixer_controls)),
12502 SND_SOC_DAPM_MIXER("SEC_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
12503 sec_mi2s_rx_port_mixer_controls,
12504 ARRAY_SIZE(sec_mi2s_rx_port_mixer_controls)),
12505 SND_SOC_DAPM_MIXER("TERT_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
12506 tert_mi2s_rx_port_mixer_controls,
12507 ARRAY_SIZE(tert_mi2s_rx_port_mixer_controls)),
12508 SND_SOC_DAPM_MIXER("QUAT_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
12509 quat_mi2s_rx_port_mixer_controls,
12510 ARRAY_SIZE(quat_mi2s_rx_port_mixer_controls)),
12511 SND_SOC_DAPM_MIXER("PRI_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
12512 pri_tdm_rx_0_port_mixer_controls,
12513 ARRAY_SIZE(pri_tdm_rx_0_port_mixer_controls)),
12514 SND_SOC_DAPM_MIXER("PRI_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
12515 pri_tdm_rx_1_port_mixer_controls,
12516 ARRAY_SIZE(pri_tdm_rx_1_port_mixer_controls)),
12517 SND_SOC_DAPM_MIXER("PRI_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
12518 pri_tdm_rx_2_port_mixer_controls,
12519 ARRAY_SIZE(pri_tdm_rx_2_port_mixer_controls)),
12520 SND_SOC_DAPM_MIXER("PRI_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
12521 pri_tdm_rx_3_port_mixer_controls,
12522 ARRAY_SIZE(pri_tdm_rx_3_port_mixer_controls)),
12523 SND_SOC_DAPM_MIXER("SEC_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
12524 sec_tdm_rx_0_port_mixer_controls,
12525 ARRAY_SIZE(sec_tdm_rx_0_port_mixer_controls)),
12526 SND_SOC_DAPM_MIXER("SEC_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
12527 sec_tdm_rx_1_port_mixer_controls,
12528 ARRAY_SIZE(sec_tdm_rx_1_port_mixer_controls)),
12529 SND_SOC_DAPM_MIXER("SEC_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
12530 sec_tdm_rx_2_port_mixer_controls,
12531 ARRAY_SIZE(sec_tdm_rx_2_port_mixer_controls)),
12532 SND_SOC_DAPM_MIXER("SEC_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
12533 sec_tdm_rx_3_port_mixer_controls,
12534 ARRAY_SIZE(sec_tdm_rx_3_port_mixer_controls)),
12535 SND_SOC_DAPM_MIXER("TERT_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
12536 tert_tdm_rx_0_port_mixer_controls,
12537 ARRAY_SIZE(tert_tdm_rx_0_port_mixer_controls)),
12538 SND_SOC_DAPM_MIXER("TERT_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
12539 tert_tdm_rx_1_port_mixer_controls,
12540 ARRAY_SIZE(tert_tdm_rx_1_port_mixer_controls)),
12541 SND_SOC_DAPM_MIXER("TERT_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
12542 tert_tdm_rx_2_port_mixer_controls,
12543 ARRAY_SIZE(tert_tdm_rx_2_port_mixer_controls)),
12544 SND_SOC_DAPM_MIXER("TERT_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
12545 tert_tdm_rx_3_port_mixer_controls,
12546 ARRAY_SIZE(tert_tdm_rx_3_port_mixer_controls)),
12547 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
12548 quat_tdm_rx_0_port_mixer_controls,
12549 ARRAY_SIZE(quat_tdm_rx_0_port_mixer_controls)),
12550 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
12551 quat_tdm_rx_1_port_mixer_controls,
12552 ARRAY_SIZE(quat_tdm_rx_1_port_mixer_controls)),
12553 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
12554 quat_tdm_rx_2_port_mixer_controls,
12555 ARRAY_SIZE(quat_tdm_rx_2_port_mixer_controls)),
12556 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
12557 quat_tdm_rx_3_port_mixer_controls,
12558 ARRAY_SIZE(quat_tdm_rx_3_port_mixer_controls)),
12559 SND_SOC_DAPM_MIXER("INT0_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
12560 int0_mi2s_rx_port_mixer_controls,
12561 ARRAY_SIZE(int0_mi2s_rx_port_mixer_controls)),
12562 SND_SOC_DAPM_MIXER("INT4_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
12563 int4_mi2s_rx_port_mixer_controls,
12564 ARRAY_SIZE(int4_mi2s_rx_port_mixer_controls)),
12565 SND_SOC_DAPM_MIXER("QCHAT_Tx Mixer",
12566 SND_SOC_NOPM, 0, 0, tx_qchat_mixer_controls,
12567 ARRAY_SIZE(tx_qchat_mixer_controls)),
12568 SND_SOC_DAPM_MIXER("USB_AUDIO_RX_Voice Mixer",
12569 SND_SOC_NOPM, 0, 0, usb_audio_rx_voice_mixer_controls,
12570 ARRAY_SIZE(usb_audio_rx_voice_mixer_controls)),
12571 SND_SOC_DAPM_MIXER("USB_AUDIO_RX Port Mixer",
12572 SND_SOC_NOPM, 0, 0, usb_rx_port_mixer_controls,
12573 ARRAY_SIZE(usb_rx_port_mixer_controls)),
12574 /* lsm mixer definitions */
12575 SND_SOC_DAPM_MIXER("LSM1 Mixer", SND_SOC_NOPM, 0, 0,
12576 lsm1_mixer_controls, ARRAY_SIZE(lsm1_mixer_controls)),
12577 SND_SOC_DAPM_MIXER("LSM2 Mixer", SND_SOC_NOPM, 0, 0,
12578 lsm2_mixer_controls, ARRAY_SIZE(lsm2_mixer_controls)),
12579 SND_SOC_DAPM_MIXER("LSM3 Mixer", SND_SOC_NOPM, 0, 0,
12580 lsm3_mixer_controls, ARRAY_SIZE(lsm3_mixer_controls)),
12581 SND_SOC_DAPM_MIXER("LSM4 Mixer", SND_SOC_NOPM, 0, 0,
12582 lsm4_mixer_controls, ARRAY_SIZE(lsm4_mixer_controls)),
12583 SND_SOC_DAPM_MIXER("LSM5 Mixer", SND_SOC_NOPM, 0, 0,
12584 lsm5_mixer_controls, ARRAY_SIZE(lsm5_mixer_controls)),
12585 SND_SOC_DAPM_MIXER("LSM6 Mixer", SND_SOC_NOPM, 0, 0,
12586 lsm6_mixer_controls, ARRAY_SIZE(lsm6_mixer_controls)),
12587 SND_SOC_DAPM_MIXER("LSM7 Mixer", SND_SOC_NOPM, 0, 0,
12588 lsm7_mixer_controls, ARRAY_SIZE(lsm7_mixer_controls)),
12589 SND_SOC_DAPM_MIXER("LSM8 Mixer", SND_SOC_NOPM, 0, 0,
12590 lsm8_mixer_controls, ARRAY_SIZE(lsm8_mixer_controls)),
12591 /* Virtual Pins to force backends ON atm */
12592 SND_SOC_DAPM_OUTPUT("BE_OUT"),
12593 SND_SOC_DAPM_INPUT("BE_IN"),
12594
12595 SND_SOC_DAPM_MUX("SLIM0_RX_VI_FB_LCH_MUX", SND_SOC_NOPM, 0, 0,
12596 &slim0_rx_vi_fb_lch_mux),
12597 SND_SOC_DAPM_MUX("SLIM0_RX_VI_FB_RCH_MUX", SND_SOC_NOPM, 0, 0,
12598 &slim0_rx_vi_fb_rch_mux),
12599 SND_SOC_DAPM_MUX("PRI_MI2S_RX_VI_FB_MUX", SND_SOC_NOPM, 0, 0,
12600 &mi2s_rx_vi_fb_mux),
12601 SND_SOC_DAPM_MUX("INT4_MI2S_RX_VI_FB_MONO_CH_MUX", SND_SOC_NOPM, 0, 0,
12602 &int4_mi2s_rx_vi_fb_mono_ch_mux),
12603 SND_SOC_DAPM_MUX("INT4_MI2S_RX_VI_FB_STEREO_CH_MUX", SND_SOC_NOPM, 0, 0,
12604 &int4_mi2s_rx_vi_fb_stereo_ch_mux),
12605
12606 SND_SOC_DAPM_MUX("VOC_EXT_EC MUX", SND_SOC_NOPM, 0, 0,
12607 &voc_ext_ec_mux),
12608 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL1 MUX", SND_SOC_NOPM, 0, 0,
12609 &ext_ec_ref_mux_ul1),
12610 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL2 MUX", SND_SOC_NOPM, 0, 0,
12611 &ext_ec_ref_mux_ul2),
12612 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL3 MUX", SND_SOC_NOPM, 0, 0,
12613 &ext_ec_ref_mux_ul3),
12614 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL4 MUX", SND_SOC_NOPM, 0, 0,
12615 &ext_ec_ref_mux_ul4),
12616 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL5 MUX", SND_SOC_NOPM, 0, 0,
12617 &ext_ec_ref_mux_ul5),
12618 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL6 MUX", SND_SOC_NOPM, 0, 0,
12619 &ext_ec_ref_mux_ul6),
12620 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL8 MUX", SND_SOC_NOPM, 0, 0,
12621 &ext_ec_ref_mux_ul8),
12622 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL9 MUX", SND_SOC_NOPM, 0, 0,
12623 &ext_ec_ref_mux_ul9),
Laxminath Kasam38070be2017-08-17 18:21:59 +053012624 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL10 MUX", SND_SOC_NOPM, 0, 0,
12625 &ext_ec_ref_mux_ul10),
Asish Bhattacharya34504582017-08-08 12:55:01 +053012626 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL16 MUX", SND_SOC_NOPM, 0, 0,
12627 &ext_ec_ref_mux_ul16),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012628 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL17 MUX", SND_SOC_NOPM, 0, 0,
12629 &ext_ec_ref_mux_ul17),
12630 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL18 MUX", SND_SOC_NOPM, 0, 0,
12631 &ext_ec_ref_mux_ul18),
12632 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL19 MUX", SND_SOC_NOPM, 0, 0,
12633 &ext_ec_ref_mux_ul19),
12634};
12635
12636static const struct snd_soc_dapm_route intercon[] = {
12637 {"PRI_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
12638 {"PRI_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
12639 {"PRI_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
12640 {"PRI_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
12641 {"PRI_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
12642 {"PRI_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
12643 {"PRI_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
12644 {"PRI_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
12645 {"PRI_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
12646 {"PRI_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
12647 {"PRI_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
12648 {"PRI_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
12649 {"PRI_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
12650 {"PRI_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
12651 {"PRI_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
12652 {"PRI_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
12653 {"PRI_I2S_RX", NULL, "PRI_RX Audio Mixer"},
12654
12655 {"SEC_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
12656 {"SEC_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
12657 {"SEC_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
12658 {"SEC_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
12659 {"SEC_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
12660 {"SEC_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
12661 {"SEC_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
12662 {"SEC_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
12663 {"SEC_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
12664 {"SEC_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
12665 {"SEC_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
12666 {"SEC_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
12667 {"SEC_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
12668 {"SEC_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
12669 {"SEC_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
12670 {"SEC_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
12671 {"SEC_I2S_RX", NULL, "SEC_RX Audio Mixer"},
12672
12673 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
12674 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
12675 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
12676 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
12677 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
12678 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
12679 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
12680 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
12681 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
12682 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
12683 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
12684 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
12685 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
12686 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
12687 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
12688 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
12689 {"SLIMBUS_0_RX", NULL, "SLIMBUS_0_RX Audio Mixer"},
12690
12691 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
12692 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
12693 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
12694 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
12695 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
12696 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
12697 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
12698 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
12699 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
12700 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
12701 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
12702 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
12703 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
12704 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
12705 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
12706 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
12707 {"SLIMBUS_2_RX", NULL, "SLIMBUS_2_RX Audio Mixer"},
12708
12709 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
12710 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
12711 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
12712 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
12713 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
12714 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
12715 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
12716 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
12717 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
12718 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
12719 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
12720 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
12721 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
12722 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
12723 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
12724 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
12725 {"SLIMBUS_5_RX", NULL, "SLIMBUS_5_RX Audio Mixer"},
12726
12727 {"HDMI Mixer", "MultiMedia1", "MM_DL1"},
12728 {"HDMI Mixer", "MultiMedia2", "MM_DL2"},
12729 {"HDMI Mixer", "MultiMedia3", "MM_DL3"},
12730 {"HDMI Mixer", "MultiMedia4", "MM_DL4"},
12731 {"HDMI Mixer", "MultiMedia5", "MM_DL5"},
12732 {"HDMI Mixer", "MultiMedia6", "MM_DL6"},
12733 {"HDMI Mixer", "MultiMedia7", "MM_DL7"},
12734 {"HDMI Mixer", "MultiMedia8", "MM_DL8"},
12735 {"HDMI Mixer", "MultiMedia9", "MM_DL9"},
12736 {"HDMI Mixer", "MultiMedia10", "MM_DL10"},
12737 {"HDMI Mixer", "MultiMedia11", "MM_DL11"},
12738 {"HDMI Mixer", "MultiMedia12", "MM_DL12"},
12739 {"HDMI Mixer", "MultiMedia13", "MM_DL13"},
12740 {"HDMI Mixer", "MultiMedia14", "MM_DL14"},
12741 {"HDMI Mixer", "MultiMedia15", "MM_DL15"},
12742 {"HDMI Mixer", "MultiMedia16", "MM_DL16"},
12743 {"HDMI", NULL, "HDMI Mixer"},
12744
12745 {"DISPLAY_PORT Mixer", "MultiMedia1", "MM_DL1"},
12746 {"DISPLAY_PORT Mixer", "MultiMedia2", "MM_DL2"},
12747 {"DISPLAY_PORT Mixer", "MultiMedia3", "MM_DL3"},
12748 {"DISPLAY_PORT Mixer", "MultiMedia4", "MM_DL4"},
12749 {"DISPLAY_PORT Mixer", "MultiMedia5", "MM_DL5"},
12750 {"DISPLAY_PORT Mixer", "MultiMedia6", "MM_DL6"},
12751 {"DISPLAY_PORT Mixer", "MultiMedia7", "MM_DL7"},
12752 {"DISPLAY_PORT Mixer", "MultiMedia8", "MM_DL8"},
12753 {"DISPLAY_PORT Mixer", "MultiMedia9", "MM_DL9"},
12754 {"DISPLAY_PORT Mixer", "MultiMedia10", "MM_DL10"},
12755 {"DISPLAY_PORT Mixer", "MultiMedia11", "MM_DL11"},
12756 {"DISPLAY_PORT Mixer", "MultiMedia12", "MM_DL12"},
12757 {"DISPLAY_PORT Mixer", "MultiMedia13", "MM_DL13"},
12758 {"DISPLAY_PORT Mixer", "MultiMedia14", "MM_DL14"},
12759 {"DISPLAY_PORT Mixer", "MultiMedia15", "MM_DL15"},
12760 {"DISPLAY_PORT Mixer", "MultiMedia16", "MM_DL16"},
12761 {"DISPLAY_PORT", NULL, "DISPLAY_PORT Mixer"},
12762
12763 {"SPDIF_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
12764 {"SPDIF_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
12765 {"SPDIF_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
12766 {"SPDIF_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
12767 {"SPDIF_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
12768 {"SPDIF_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
12769 {"SPDIF_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
12770 {"SPDIF_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
12771 {"SPDIF_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
12772 {"SPDIF_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
12773 {"SPDIF_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
12774 {"SPDIF_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
12775 {"SPDIF_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
12776 {"SPDIF_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
12777 {"SPDIF_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
12778 {"SPDIF_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
12779 {"SPDIF_RX", NULL, "SPDIF_RX Audio Mixer"},
12780
12781 /* incall */
12782 {"Incall_Music Audio Mixer", "MultiMedia1", "MM_DL1"},
12783 {"Incall_Music Audio Mixer", "MultiMedia2", "MM_DL2"},
12784 {"Incall_Music Audio Mixer", "MultiMedia5", "MM_DL5"},
12785 {"Incall_Music Audio Mixer", "MultiMedia9", "MM_DL9"},
12786 {"VOICE_PLAYBACK_TX", NULL, "Incall_Music Audio Mixer"},
12787 {"Incall_Music_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
12788 {"Incall_Music_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
12789 {"Incall_Music_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
12790 {"Incall_Music_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
12791 {"VOICE2_PLAYBACK_TX", NULL, "Incall_Music_2 Audio Mixer"},
12792 {"SLIMBUS_4_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
12793 {"SLIMBUS_4_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
12794 {"SLIMBUS_4_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
12795 {"SLIMBUS_4_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
12796 {"SLIMBUS_4_RX", NULL, "SLIMBUS_4_RX Audio Mixer"},
12797
12798 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
12799 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
12800 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
12801 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
12802 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
12803 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
12804 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
12805 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
12806 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
12807 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
12808 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
12809 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
12810 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
12811 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
12812 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
12813 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
12814 {"SLIMBUS_6_RX", NULL, "SLIMBUS_6_RX Audio Mixer"},
12815
12816 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
12817 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
12818 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
12819 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
12820 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
12821 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
12822 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
12823 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
12824 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
12825 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
12826 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
12827 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
12828 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
12829 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
12830 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
12831 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
12832 {"SLIMBUS_7_RX", NULL, "SLIMBUS_7_RX Audio Mixer"},
12833
12834 {"USB_AUDIO_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
12835 {"USB_AUDIO_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
12836 {"USB_AUDIO_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
12837 {"USB_AUDIO_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
12838 {"USB_AUDIO_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
12839 {"USB_AUDIO_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
12840 {"USB_AUDIO_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
12841 {"USB_AUDIO_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
12842 {"USB_AUDIO_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
12843 {"USB_AUDIO_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
12844 {"USB_AUDIO_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
12845 {"USB_AUDIO_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
12846 {"USB_AUDIO_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
12847 {"USB_AUDIO_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
12848 {"USB_AUDIO_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
12849 {"USB_AUDIO_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
12850 {"USB_AUDIO_RX", NULL, "USB_AUDIO_RX Audio Mixer"},
12851
12852 {"MultiMedia1 Mixer", "VOC_REC_UL", "INCALL_RECORD_TX"},
12853 {"MultiMedia4 Mixer", "VOC_REC_UL", "INCALL_RECORD_TX"},
12854 {"MultiMedia8 Mixer", "VOC_REC_UL", "INCALL_RECORD_TX"},
12855 {"MultiMedia1 Mixer", "VOC_REC_DL", "INCALL_RECORD_RX"},
12856 {"MultiMedia4 Mixer", "VOC_REC_DL", "INCALL_RECORD_RX"},
12857 {"MultiMedia8 Mixer", "VOC_REC_DL", "INCALL_RECORD_RX"},
12858 {"MultiMedia1 Mixer", "SLIM_4_TX", "SLIMBUS_4_TX"},
12859 {"MultiMedia1 Mixer", "SLIM_6_TX", "SLIMBUS_6_TX"},
12860 {"MultiMedia1 Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
12861 {"MultiMedia1 Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
12862 {"MultiMedia8 Mixer", "SLIM_6_TX", "SLIMBUS_6_TX"},
12863 {"MultiMedia8 Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
12864 {"MultiMedia4 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
12865 {"MultiMedia17 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
12866 {"MultiMedia18 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
12867 {"MultiMedia19 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
12868 {"MultiMedia8 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
12869 {"MultiMedia2 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
12870 {"MultiMedia4 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
12871 {"MultiMedia17 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
12872 {"MultiMedia18 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
12873 {"MultiMedia19 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
12874 {"MultiMedia8 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
12875 {"MultiMedia18 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
12876 {"MultiMedia8 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
12877 {"MultiMedia3 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
12878 {"MultiMedia5 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053012879 {"MultiMedia10 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053012880 {"MultiMedia16 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012881 {"MultiMedia5 Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
12882 {"MultiMedia5 Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053012883 {"MultiMedia10 Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012884 {"MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
12885 {"MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
12886 {"MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
12887 {"MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
12888 {"MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
12889 {"MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
12890 {"MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
12891 {"MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
12892 {"MI2S_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
12893 {"MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
12894 {"MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
12895 {"MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
12896 {"MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
12897 {"MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
12898 {"MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
12899 {"MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
12900 {"MI2S_RX", NULL, "MI2S_RX Audio Mixer"},
12901
12902 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
12903 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
12904 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
12905 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
12906 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
12907 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
12908 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
12909 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
12910 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
12911 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
12912 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
12913 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
12914 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
12915 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
12916 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
12917 {"QUAT_MI2S_RX", NULL, "QUAT_MI2S_RX Audio Mixer"},
12918
12919 {"TERT_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
12920 {"TERT_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
12921 {"TERT_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
12922 {"TERT_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
12923 {"TERT_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
12924 {"TERT_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
12925 {"TERT_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
12926 {"TERT_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
12927 {"TERT_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
12928 {"TERT_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
12929 {"TERT_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
12930 {"TERT_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
12931 {"TERT_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
12932 {"TERT_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
12933 {"TERT_MI2S_RX", NULL, "TERT_MI2S_RX Audio Mixer"},
12934
12935 {"SEC_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
12936 {"SEC_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
12937 {"SEC_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
12938 {"SEC_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
12939 {"SEC_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
12940 {"SEC_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
12941 {"SEC_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
12942 {"SEC_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
12943 {"SEC_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
12944 {"SEC_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
12945 {"SEC_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
12946 {"SEC_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
12947 {"SEC_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
12948 {"SEC_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
12949 {"SEC_MI2S_RX", NULL, "SEC_MI2S_RX Audio Mixer"},
12950
12951 {"SEC_MI2S_RX_SD1 Audio Mixer", "MultiMedia6", "MM_DL6"},
12952 {"SEC_MI2S_RX_SD1", NULL, "SEC_MI2S_RX_SD1 Audio Mixer"},
12953
12954 {"SEC_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
12955 {"SEC_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
12956
12957 {"PRI_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
12958 {"PRI_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
12959 {"PRI_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
12960 {"PRI_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
12961 {"PRI_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
12962 {"PRI_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
12963 {"PRI_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
12964 {"PRI_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
12965 {"PRI_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
12966 {"PRI_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
12967 {"PRI_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
12968 {"PRI_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
12969 {"PRI_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
12970 {"PRI_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
12971 {"PRI_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
12972 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX Audio Mixer"},
12973
12974 {"INT0_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
12975 {"INT0_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
12976 {"INT0_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
12977 {"INT0_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
12978 {"INT0_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
12979 {"INT0_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
12980 {"INT0_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
12981 {"INT0_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
12982 {"INT0_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
12983 {"INT0_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
12984 {"INT0_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
12985 {"INT0_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
12986 {"INT0_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
12987 {"INT0_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
12988 {"INT0_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
12989 {"INT0_MI2S_RX", NULL, "INT0_MI2S_RX Audio Mixer"},
12990
12991 {"INT4_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
12992 {"INT4_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
12993 {"INT4_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
12994 {"INT4_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
12995 {"INT4_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
12996 {"INT4_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
12997 {"INT4_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
12998 {"INT4_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
12999 {"INT4_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13000 {"INT4_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13001 {"INT4_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13002 {"INT4_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13003 {"INT4_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13004 {"INT4_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13005 {"INT4_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13006 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX Audio Mixer"},
13007
13008 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13009 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13010 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13011 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13012 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13013 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13014 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13015 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13016 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13017 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13018 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13019 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13020 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13021 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13022 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13023 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13024 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13025 {"QUIN_MI2S_RX", NULL, "QUIN_MI2S_RX Audio Mixer"},
13026
13027 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
13028 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
13029 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
13030 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
13031 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
13032 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
13033 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
13034 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
13035 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
13036 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
13037 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
13038 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
13039 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
13040 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
13041 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
13042 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
13043 {"PRI_TDM_RX_0", NULL, "PRI_TDM_RX_0 Audio Mixer"},
13044
13045 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
13046 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
13047 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
13048 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
13049 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
13050 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
13051 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
13052 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
13053 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
13054 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
13055 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
13056 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
13057 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
13058 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
13059 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
13060 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
13061 {"PRI_TDM_RX_1", NULL, "PRI_TDM_RX_1 Audio Mixer"},
13062
13063 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
13064 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
13065 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
13066 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
13067 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
13068 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
13069 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
13070 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
13071 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
13072 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
13073 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
13074 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
13075 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
13076 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
13077 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
13078 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
13079 {"PRI_TDM_RX_2", NULL, "PRI_TDM_RX_2 Audio Mixer"},
13080
13081 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
13082 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
13083 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
13084 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
13085 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
13086 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
13087 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
13088 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
13089 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
13090 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
13091 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
13092 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
13093 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
13094 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
13095 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
13096 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
13097 {"PRI_TDM_RX_3", NULL, "PRI_TDM_RX_3 Audio Mixer"},
13098
13099 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
13100 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
13101 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
13102 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
13103 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
13104 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
13105 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
13106 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
13107 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
13108 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
13109 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
13110 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
13111 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
13112 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
13113 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
13114 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
13115 {"PRI_TDM_TX_0", NULL, "PRI_TDM_TX_0 Audio Mixer"},
13116
13117 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
13118 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
13119 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
13120 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
13121 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
13122 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
13123 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
13124 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
13125 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
13126 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
13127 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
13128 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
13129 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
13130 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
13131 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
13132 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
13133 {"SEC_TDM_RX_0", NULL, "SEC_TDM_RX_0 Audio Mixer"},
13134
13135 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
13136 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
13137 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
13138 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
13139 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
13140 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
13141 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
13142 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
13143 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
13144 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
13145 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
13146 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
13147 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
13148 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
13149 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
13150 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
13151 {"SEC_TDM_RX_1", NULL, "SEC_TDM_RX_1 Audio Mixer"},
13152
13153 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
13154 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
13155 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
13156 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
13157 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
13158 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
13159 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
13160 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
13161 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
13162 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
13163 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
13164 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
13165 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
13166 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
13167 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
13168 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
13169 {"SEC_TDM_RX_2", NULL, "SEC_TDM_RX_2 Audio Mixer"},
13170
13171 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
13172 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
13173 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
13174 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
13175 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
13176 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
13177 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
13178 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
13179 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
13180 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
13181 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
13182 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
13183 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
13184 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
13185 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
13186 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
13187 {"SEC_TDM_RX_3", NULL, "SEC_TDM_RX_3 Audio Mixer"},
13188
13189 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
13190 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
13191 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
13192 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
13193 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
13194 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
13195 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
13196 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
13197 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
13198 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
13199 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
13200 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
13201 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
13202 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
13203 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
13204 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
13205 {"SEC_TDM_TX_0", NULL, "SEC_TDM_TX_0 Audio Mixer"},
13206
13207 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
13208 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
13209 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
13210 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
13211 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
13212 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
13213 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
13214 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
13215 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
13216 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
13217 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
13218 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
13219 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
13220 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
13221 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
13222 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
13223 {"TERT_TDM_RX_0", NULL, "TERT_TDM_RX_0 Audio Mixer"},
13224
13225 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
13226 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
13227 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
13228 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
13229 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
13230 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
13231 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
13232 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
13233 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
13234 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
13235 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
13236 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
13237 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
13238 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
13239 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
13240 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
13241 {"TERT_TDM_TX_0", NULL, "TERT_TDM_TX_0 Audio Mixer"},
13242
13243 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
13244 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
13245 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
13246 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
13247 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
13248 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
13249 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
13250 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
13251 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
13252 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
13253 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
13254 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
13255 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
13256 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
13257 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
13258 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
13259 {"TERT_TDM_RX_1", NULL, "TERT_TDM_RX_1 Audio Mixer"},
13260
13261 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
13262 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
13263 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
13264 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
13265 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
13266 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
13267 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
13268 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
13269 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
13270 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
13271 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
13272 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
13273 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
13274 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
13275 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
13276 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
13277 {"TERT_TDM_RX_2", NULL, "TERT_TDM_RX_2 Audio Mixer"},
13278
13279 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
13280 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
13281 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
13282 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
13283 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
13284 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
13285 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
13286 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
13287 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
13288 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
13289 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
13290 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
13291 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
13292 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
13293 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
13294 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
13295 {"TERT_TDM_RX_3", NULL, "TERT_TDM_RX_3 Audio Mixer"},
13296
13297 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia1", "MM_DL1"},
13298 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia2", "MM_DL2"},
13299 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia3", "MM_DL3"},
13300 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia4", "MM_DL4"},
13301 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia5", "MM_DL5"},
13302 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia6", "MM_DL6"},
13303 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia7", "MM_DL7"},
13304 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia8", "MM_DL8"},
13305 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia9", "MM_DL9"},
13306 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia10", "MM_DL10"},
13307 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia11", "MM_DL11"},
13308 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia12", "MM_DL12"},
13309 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia13", "MM_DL13"},
13310 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia14", "MM_DL14"},
13311 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia15", "MM_DL15"},
13312 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia16", "MM_DL16"},
13313 {"TERT_TDM_RX_4", NULL, "TERT_TDM_RX_4 Audio Mixer"},
13314
13315 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
13316 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
13317 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
13318 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
13319 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
13320 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
13321 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
13322 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
13323 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
13324 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
13325 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
13326 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
13327 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
13328 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
13329 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
13330 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
13331 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia20", "MM_DL20"},
13332 {"QUAT_TDM_RX_0", NULL, "QUAT_TDM_RX_0 Audio Mixer"},
13333
13334 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
13335 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
13336 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
13337 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
13338 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
13339 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
13340 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
13341 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
13342 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
13343 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
13344 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
13345 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
13346 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
13347 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
13348 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
13349 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
13350 {"PRI_TDM_RX_0", NULL, "PRI_TDM_RX_0 Audio Mixer"},
13351
13352 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
13353 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
13354 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
13355 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
13356 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
13357 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
13358 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
13359 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
13360 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
13361 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
13362 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
13363 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
13364 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
13365 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
13366 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
13367 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
13368 {"SEC_TDM_RX_0", NULL, "SEC_TDM_RX_0 Audio Mixer"},
13369
13370 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
13371 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
13372 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
13373 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
13374 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
13375 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
13376 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
13377 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
13378 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
13379 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
13380 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
13381 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
13382 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
13383 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
13384 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
13385 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
13386 {"QUAT_TDM_TX_0", NULL, "QUAT_TDM_TX_0 Audio Mixer"},
13387
13388 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
13389 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
13390 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
13391 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
13392 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
13393 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
13394 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
13395 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
13396 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
13397 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
13398 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
13399 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
13400 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
13401 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
13402 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
13403 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
13404 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia20", "MM_DL20"},
13405 {"QUAT_TDM_RX_1", NULL, "QUAT_TDM_RX_1 Audio Mixer"},
13406
13407 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
13408 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
13409 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
13410 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
13411 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
13412 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
13413 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
13414 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
13415 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
13416 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
13417 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
13418 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
13419 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
13420 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
13421 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
13422 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
13423 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia20", "MM_DL20"},
13424 {"QUAT_TDM_RX_2", NULL, "QUAT_TDM_RX_2 Audio Mixer"},
13425
13426 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
13427 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
13428 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
13429 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
13430 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
13431 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
13432 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
13433 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
13434 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
13435 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
13436 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
13437 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
13438 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
13439 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
13440 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
13441 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
13442 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia20", "MM_DL20"},
13443 {"QUAT_TDM_RX_3", NULL, "QUAT_TDM_RX_3 Audio Mixer"},
13444
13445 {"MultiMedia1 Mixer", "PRI_TX", "PRI_I2S_TX"},
13446 {"MultiMedia1 Mixer", "MI2S_TX", "MI2S_TX"},
13447 {"MultiMedia2 Mixer", "MI2S_TX", "MI2S_TX"},
13448 {"MultiMedia3 Mixer", "MI2S_TX", "MI2S_TX"},
13449 {"MultiMedia5 Mixer", "MI2S_TX", "MI2S_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053013450 {"MultiMedia10 Mixer", "MI2S_TX", "MI2S_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053013451 {"MultiMedia16 Mixer", "MI2S_TX", "MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013452 {"MultiMedia1 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
13453 {"MultiMedia2 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
13454 {"MultiMedia6 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
13455 {"MultiMedia1 Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
13456 {"MultiMedia2 Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
13457 {"MultiMedia1 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
13458 {"MultiMedia2 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
13459 {"MultiMedia1 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
13460 {"MultiMedia2 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
13461 {"MultiMedia1 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
13462 {"MultiMedia2 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
13463 {"MultiMedia1 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
13464 {"MultiMedia1 Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
13465 {"MultiMedia3 Mixer", "AUX_PCM_TX", "AUX_PCM_TX"},
13466 {"MultiMedia5 Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053013467 {"MultiMedia10 Mixer", "AUX_PCM_TX", "AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013468 {"MultiMedia1 Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
13469 {"MultiMedia3 Mixer", "SEC_AUX_PCM_TX", "SEC_AUX_PCM_TX"},
13470 {"MultiMedia5 Mixer", "SEC_AUX_PCM_TX", "SEC_AUX_PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053013471 {"MultiMedia10 Mixer", "SEC_AUX_PCM_TX", "SEC_AUX_PCM_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053013472 {"MultiMedia16 Mixer", "AUX_PCM_TX", "AUX_PCM_TX"},
13473 {"MultiMedia16 Mixer", "SEC_AUX_PCM_TX", "SEC_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013474 {"MultiMedia1 Mixer", "TERT_AUXPCM_UL_TX", "TERT_AUX_PCM_TX"},
13475 {"MultiMedia3 Mixer", "TERT_AUX_PCM_TX", "TERT_AUX_PCM_TX"},
13476 {"MultiMedia5 Mixer", "TERT_AUX_PCM_TX", "TERT_AUX_PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053013477 {"MultiMedia10 Mixer", "TERT_AUX_PCM_TX", "TERT_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013478 {"MultiMedia1 Mixer", "QUAT_AUXPCM_UL_TX", "QUAT_AUX_PCM_TX"},
13479 {"MultiMedia3 Mixer", "QUAT_AUX_PCM_TX", "QUAT_AUX_PCM_TX"},
13480 {"MultiMedia5 Mixer", "QUAT_AUX_PCM_TX", "QUAT_AUX_PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053013481 {"MultiMedia10 Mixer", "QUAT_AUX_PCM_TX", "QUAT_AUX_PCM_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053013482 {"MultiMedia16 Mixer", "QUAT_AUX_PCM_TX", "QUAT_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013483 {"MultiMedia2 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
13484 {"MultiMedia2 Mixer", "SLIM_6_TX", "SLIMBUS_6_TX"},
13485 {"MultiMedia2 Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
13486 {"MultiMedia2 Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
13487 {"MultiMedia1 Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
13488 {"MultiMedia1 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
13489 {"MultiMedia2 Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
13490 {"MultiMedia6 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
13491 {"MultiMedia6 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
13492 {"MultiMedia3 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
13493 {"MultiMedia5 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053013494 {"MultiMedia10 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013495 {"MultiMedia6 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
13496 {"MultiMedia3 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
13497 {"MultiMedia5 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053013498 {"MultiMedia10 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053013499 {"MultiMedia16 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013500 {"MultiMedia6 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
13501 {"MultiMedia3 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
13502 {"MultiMedia5 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053013503 {"MultiMedia10 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053013504 {"MultiMedia16 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013505 {"MultiMedia6 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
13506 {"MultiMedia6 Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
13507 {"MultiMedia6 Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
13508 {"MultiMedia6 Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
13509
13510 {"MultiMedia1 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
13511 {"MultiMedia1 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
13512 {"MultiMedia1 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
13513 {"MultiMedia1 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
13514 {"MultiMedia1 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
13515 {"MultiMedia1 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
13516 {"MultiMedia1 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
13517 {"MultiMedia1 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
13518 {"MultiMedia1 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
13519 {"MultiMedia1 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
13520 {"MultiMedia1 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
13521 {"MultiMedia1 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
13522 {"MultiMedia1 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
13523 {"MultiMedia1 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
13524 {"MultiMedia1 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
13525 {"MultiMedia1 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
13526
13527 {"MultiMedia2 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
13528 {"MultiMedia2 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
13529 {"MultiMedia2 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
13530 {"MultiMedia2 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
13531 {"MultiMedia2 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
13532 {"MultiMedia2 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
13533 {"MultiMedia2 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
13534 {"MultiMedia2 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
13535 {"MultiMedia2 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
13536 {"MultiMedia2 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
13537 {"MultiMedia2 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
13538 {"MultiMedia2 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
13539 {"MultiMedia2 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
13540 {"MultiMedia2 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
13541 {"MultiMedia2 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
13542 {"MultiMedia2 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
13543
13544 {"MultiMedia3 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
13545 {"MultiMedia3 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
13546 {"MultiMedia3 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
13547 {"MultiMedia3 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
13548 {"MultiMedia3 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
13549 {"MultiMedia3 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
13550 {"MultiMedia3 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
13551 {"MultiMedia3 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
13552 {"MultiMedia3 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
13553 {"MultiMedia3 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
13554 {"MultiMedia3 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
13555 {"MultiMedia3 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
13556 {"MultiMedia3 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
13557 {"MultiMedia3 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
13558 {"MultiMedia3 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
13559 {"MultiMedia3 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
13560
13561 {"MultiMedia4 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
13562 {"MultiMedia4 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
13563 {"MultiMedia4 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
13564 {"MultiMedia4 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
13565 {"MultiMedia4 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
13566 {"MultiMedia4 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
13567 {"MultiMedia4 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
13568 {"MultiMedia4 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
13569 {"MultiMedia4 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
13570 {"MultiMedia4 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
13571 {"MultiMedia4 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
13572 {"MultiMedia4 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
13573 {"MultiMedia4 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
13574 {"MultiMedia4 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
13575 {"MultiMedia4 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
13576 {"MultiMedia4 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
13577
13578 {"MultiMedia5 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
13579 {"MultiMedia5 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
13580 {"MultiMedia5 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
13581 {"MultiMedia5 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
13582 {"MultiMedia5 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
13583 {"MultiMedia5 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
13584 {"MultiMedia5 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
13585 {"MultiMedia5 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
13586 {"MultiMedia5 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
13587 {"MultiMedia5 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
13588 {"MultiMedia5 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
13589 {"MultiMedia5 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
13590 {"MultiMedia5 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
13591 {"MultiMedia5 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
13592 {"MultiMedia5 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
13593 {"MultiMedia5 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
13594
13595 {"MultiMedia6 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
13596 {"MultiMedia6 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
13597 {"MultiMedia6 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
13598 {"MultiMedia6 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
13599 {"MultiMedia6 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
13600 {"MultiMedia6 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
13601 {"MultiMedia6 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
13602 {"MultiMedia6 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
13603 {"MultiMedia6 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
13604 {"MultiMedia6 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
13605 {"MultiMedia6 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
13606 {"MultiMedia6 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
13607 {"MultiMedia6 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
13608 {"MultiMedia6 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
13609 {"MultiMedia6 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
13610 {"MultiMedia6 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
13611
13612 {"MultiMedia8 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
13613 {"MultiMedia8 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
13614 {"MultiMedia8 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
13615 {"MultiMedia8 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
13616 {"MultiMedia8 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
13617 {"MultiMedia8 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
13618 {"MultiMedia8 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
13619 {"MultiMedia8 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
13620 {"MultiMedia8 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
13621 {"MultiMedia8 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
13622 {"MultiMedia8 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
13623 {"MultiMedia8 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
13624 {"MultiMedia8 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
13625 {"MultiMedia8 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
13626 {"MultiMedia8 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
13627 {"MultiMedia8 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
13628
13629 {"MultiMedia9 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
13630 {"MultiMedia9 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
13631 {"MultiMedia9 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
13632 {"MultiMedia9 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
13633 {"MultiMedia9 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
13634 {"MultiMedia9 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
13635 {"MultiMedia9 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
13636 {"MultiMedia9 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
13637
Laxminath Kasam38070be2017-08-17 18:21:59 +053013638 {"MultiMedia10 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
13639 {"MultiMedia10 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
13640 {"MultiMedia10 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
13641 {"MultiMedia10 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
13642 {"MultiMedia10 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
13643 {"MultiMedia10 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
13644 {"MultiMedia10 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
13645 {"MultiMedia10 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013646 {"MultiMedia20 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
13647 {"MultiMedia20 Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
13648 {"MultiMedia20 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
13649 {"MultiMedia20 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
13650 {"MultiMedia20 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
13651 {"MultiMedia20 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
13652 {"MultiMedia20 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
13653 {"MultiMedia20 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
13654 {"MultiMedia20 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
13655 {"MultiMedia20 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
13656 {"MultiMedia20 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
13657 {"MultiMedia20 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
13658 {"MultiMedia20 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
13659 {"MultiMedia20 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
13660 {"MultiMedia20 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
13661 {"MultiMedia20 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
13662 {"MultiMedia20 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
13663 {"MultiMedia20 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
13664 {"MultiMedia20 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
13665 {"MultiMedia20 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
13666
13667 {"MultiMedia1 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
13668 {"MultiMedia2 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
13669 {"MultiMedia4 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
13670 {"MultiMedia5 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
13671 {"MultiMedia6 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
13672 {"MultiMedia8 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053013673 {"MultiMedia10 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013674
Asish Bhattacharya34504582017-08-08 12:55:01 +053013675 {"MultiMedia16 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
13676 {"MultiMedia16 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
13677 {"MultiMedia16 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
13678 {"MultiMedia16 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
13679 {"MultiMedia16 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
13680 {"MultiMedia16 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
13681 {"MultiMedia16 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
13682 {"MultiMedia16 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
13683 {"MultiMedia16 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
13684 {"MultiMedia16 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
13685 {"MultiMedia16 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
13686 {"MultiMedia16 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
13687 {"MultiMedia16 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
13688 {"MultiMedia16 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
13689 {"MultiMedia16 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
13690 {"MultiMedia16 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
13691 {"MultiMedia16 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
13692
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013693 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13694 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13695 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13696 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13697 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13698 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13699 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13700 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13701 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
13702 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13703 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13704 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13705 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13706 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13707 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13708 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13709 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia6", "MM_UL6"},
13710 {"INT_BT_SCO_RX", NULL, "INTERNAL_BT_SCO_RX Audio Mixer"},
13711
13712 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13713 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13714 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13715 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13716 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13717 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13718 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13719 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13720 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
13721 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13722 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13723 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13724 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13725 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13726 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13727 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13728 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia6", "MM_UL6"},
13729 {"INT_BT_A2DP_RX", NULL, "INTERNAL_A2DP_RX Audio Mixer"},
13730
13731 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13732 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13733 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13734 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13735 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13736 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13737 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13738 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13739 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
13740 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13741 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13742 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13743 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13744 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13745 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13746 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13747 {"INT_FM_RX", NULL, "INTERNAL_FM_RX Audio Mixer"},
13748
13749 {"AFE_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13750 {"AFE_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13751 {"AFE_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13752 {"AFE_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13753 {"AFE_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13754 {"AFE_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13755 {"AFE_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13756 {"AFE_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13757 {"AFE_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
13758 {"AFE_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13759 {"AFE_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13760 {"AFE_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13761 {"AFE_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13762 {"AFE_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13763 {"AFE_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13764 {"AFE_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13765 {"PCM_RX", NULL, "AFE_PCM_RX Audio Mixer"},
13766
13767 {"MultiMedia1 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
13768 {"MultiMedia3 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
13769 {"MultiMedia4 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053013770 {"MultiMedia10 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013771 {"MultiMedia17 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
13772 {"MultiMedia18 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
13773 {"MultiMedia19 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
13774 {"MultiMedia5 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
13775 {"MultiMedia8 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053013776 {"MultiMedia16 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013777 {"MultiMedia1 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
13778 {"MultiMedia4 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053013779 {"MultiMedia16 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013780 {"MultiMedia17 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
13781 {"MultiMedia18 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
13782 {"MultiMedia19 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
13783 {"MultiMedia5 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
13784 {"MultiMedia6 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
13785 {"MultiMedia8 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
13786
13787 {"MultiMedia1 Mixer", "AFE_PCM_TX", "PCM_TX"},
13788 {"MultiMedia3 Mixer", "AFE_PCM_TX", "PCM_TX"},
13789 {"MultiMedia4 Mixer", "AFE_PCM_TX", "PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053013790 {"MultiMedia10 Mixer", "AFE_PCM_TX", "PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013791 {"MultiMedia17 Mixer", "AFE_PCM_TX", "PCM_TX"},
13792 {"MultiMedia18 Mixer", "AFE_PCM_TX", "PCM_TX"},
13793 {"MultiMedia19 Mixer", "AFE_PCM_TX", "PCM_TX"},
13794 {"MultiMedia5 Mixer", "AFE_PCM_TX", "PCM_TX"},
13795 {"MultiMedia8 Mixer", "AFE_PCM_TX", "PCM_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053013796 {"MultiMedia16 Mixer", "AFE_PCM_TX", "PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013797 {"MM_UL1", NULL, "MultiMedia1 Mixer"},
13798 {"MultiMedia2 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
13799 {"MM_UL2", NULL, "MultiMedia2 Mixer"},
13800 {"MM_UL3", NULL, "MultiMedia3 Mixer"},
13801 {"MM_UL4", NULL, "MultiMedia4 Mixer"},
13802 {"MM_UL5", NULL, "MultiMedia5 Mixer"},
13803 {"MM_UL6", NULL, "MultiMedia6 Mixer"},
13804 {"MM_UL8", NULL, "MultiMedia8 Mixer"},
13805 {"MM_UL9", NULL, "MultiMedia9 Mixer"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053013806 {"MM_UL10", NULL, "MultiMedia10 Mixer"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053013807 {"MM_UL16", NULL, "MultiMedia16 Mixer"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013808 {"MM_UL17", NULL, "MultiMedia17 Mixer"},
13809 {"MM_UL18", NULL, "MultiMedia18 Mixer"},
13810 {"MM_UL19", NULL, "MultiMedia19 Mixer"},
13811 {"MM_UL20", NULL, "MultiMedia20 Mixer"},
13812
13813 {"AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13814 {"AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13815 {"AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13816 {"AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13817 {"AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13818 {"AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13819 {"AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13820 {"AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13821 {"AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
13822 {"AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13823 {"AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13824 {"AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13825 {"AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13826 {"AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13827 {"AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13828 {"AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13829 {"AUX_PCM_RX", NULL, "AUX_PCM_RX Audio Mixer"},
13830
13831 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13832 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13833 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13834 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13835 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13836 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13837 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13838 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13839 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
13840 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13841 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13842 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13843 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13844 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13845 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13846 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13847 {"SEC_AUX_PCM_RX", NULL, "SEC_AUX_PCM_RX Audio Mixer"},
13848
13849 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13850 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13851 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13852 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13853 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13854 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13855 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13856 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13857 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
13858 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13859 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13860 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13861 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13862 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13863 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13864 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13865 {"TERT_AUX_PCM_RX", NULL, "TERT_AUX_PCM_RX Audio Mixer"},
13866
13867 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13868 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13869 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13870 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13871 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13872 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13873 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13874 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13875 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
13876 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13877 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13878 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13879 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13880 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13881 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13882 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13883 {"QUAT_AUX_PCM_RX", NULL, "QUAT_AUX_PCM_RX Audio Mixer"},
13884
13885 {"MI2S_RX_Voice Mixer", "CSVoice", "CS-VOICE_DL1"},
13886 {"MI2S_RX_Voice Mixer", "Voice2", "VOICE2_DL"},
13887 {"MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
13888 {"MI2S_RX_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
13889 {"MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
13890 {"MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
13891 {"MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
13892 {"MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
13893 {"MI2S_RX", NULL, "MI2S_RX_Voice Mixer"},
13894
13895 {"PRI_RX_Voice Mixer", "CSVoice", "CS-VOICE_DL1"},
13896 {"PRI_RX_Voice Mixer", "Voice2", "VOICE2_DL"},
13897 {"PRI_RX_Voice Mixer", "VoLTE", "VoLTE_DL"},
13898 {"PRI_RX_Voice Mixer", "VoWLAN", "VoWLAN_DL"},
13899 {"PRI_RX_Voice Mixer", "Voip", "VOIP_DL"},
13900 {"PRI_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
13901 {"PRI_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
13902 {"PRI_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
13903 {"PRI_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
13904 {"PRI_I2S_RX", NULL, "PRI_RX_Voice Mixer"},
13905
13906 {"SEC_RX_Voice Mixer", "CSVoice", "CS-VOICE_DL1"},
13907 {"SEC_RX_Voice Mixer", "Voice2", "VOICE2_DL"},
13908 {"SEC_RX_Voice Mixer", "VoLTE", "VoLTE_DL"},
13909 {"SEC_RX_Voice Mixer", "VoWLAN", "VoWLAN_DL"},
13910 {"SEC_RX_Voice Mixer", "Voip", "VOIP_DL"},
13911 {"SEC_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
13912 {"SEC_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
13913 {"SEC_I2S_RX", NULL, "SEC_RX_Voice Mixer"},
13914
13915 {"SEC_MI2S_RX_Voice Mixer", "CSVoice", "CS-VOICE_DL1"},
13916 {"SEC_MI2S_RX_Voice Mixer", "Voice2", "VOICE2_DL"},
13917 {"SEC_MI2S_RX_Voice Mixer", "VoLTE", "VoLTE_DL"},
13918 {"SEC_MI2S_RX_Voice Mixer", "VoWLAN", "VoWLAN_DL"},
13919 {"SEC_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
13920 {"SEC_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
13921 {"SEC_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
13922 {"SEC_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
13923 {"SEC_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
13924 {"SEC_MI2S_RX", NULL, "SEC_MI2S_RX_Voice Mixer"},
13925
13926 {"SLIM_0_RX_Voice Mixer", "CSVoice", "CS-VOICE_DL1"},
13927 {"SLIM_0_RX_Voice Mixer", "Voice2", "VOICE2_DL"},
13928 {"SLIM_0_RX_Voice Mixer", "VoLTE", "VoLTE_DL"},
13929 {"SLIM_0_RX_Voice Mixer", "VoWLAN", "VoWLAN_DL"},
13930 {"SLIM_0_RX_Voice Mixer", "Voip", "VOIP_DL"},
13931 {"SLIM_0_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
13932 {"SLIM_0_RX_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
13933 {"SLIM_0_RX_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
13934 {"SLIM_0_RX_Voice Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
13935 {"SLIM_0_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
13936 {"SLIM_0_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
13937 {"SLIM_0_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
13938 {"SLIMBUS_0_RX", NULL, "SLIM_0_RX_Voice Mixer"},
13939
13940 {"SLIM_6_RX_Voice Mixer", "CSVoice", "CS-VOICE_DL1"},
13941 {"SLIM_6_RX_Voice Mixer", "Voice2", "VOICE2_DL"},
13942 {"SLIM_6_RX_Voice Mixer", "VoLTE", "VoLTE_DL"},
13943 {"SLIM_6_RX_Voice Mixer", "VoWLAN", "VoWLAN_DL"},
13944 {"SLIM_6_RX_Voice Mixer", "Voip", "VOIP_DL"},
13945 {"SLIM_6_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
13946 {"SLIM_6_RX_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
13947 {"SLIM_6_RX_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
13948 {"SLIM_6_RX_Voice Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
13949 {"SLIM_6_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
13950 {"SLIM_6_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
13951 {"SLIM_6_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
13952 {"SLIMBUS_6_RX", NULL, "SLIM_6_RX_Voice Mixer"},
13953
13954 {"USB_AUDIO_RX_Voice Mixer", "CSVoice", "CS-VOICE_DL1"},
13955 {"USB_AUDIO_RX_Voice Mixer", "Voice2", "VOICE2_DL"},
13956 {"USB_AUDIO_RX_Voice Mixer", "VoLTE", "VoLTE_DL"},
13957 {"USB_AUDIO_RX_Voice Mixer", "VoWLAN", "VoWLAN_DL"},
13958 {"USB_AUDIO_RX_Voice Mixer", "Voip", "VOIP_DL"},
13959 {"USB_AUDIO_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
13960 {"USB_AUDIO_RX_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
13961 {"USB_AUDIO_RX_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
13962 {"USB_AUDIO_RX_Voice Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
13963 {"USB_AUDIO_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
13964 {"USB_AUDIO_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
13965 {"USB_AUDIO_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
13966 {"USB_AUDIO_RX", NULL, "USB_AUDIO_RX_Voice Mixer"},
13967
13968 {"INTERNAL_BT_SCO_RX_Voice Mixer", "CSVoice", "CS-VOICE_DL1"},
13969 {"INTERNAL_BT_SCO_RX_Voice Mixer", "Voice2", "VOICE2_DL"},
13970 {"INTERNAL_BT_SCO_RX_Voice Mixer", "VoLTE", "VoLTE_DL"},
13971 {"INTERNAL_BT_SCO_RX_Voice Mixer", "VoWLAN", "VoWLAN_DL"},
13972 {"INTERNAL_BT_SCO_RX_Voice Mixer", "Voip", "VOIP_DL"},
13973 {"INTERNAL_BT_SCO_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
13974 {"INTERNAL_BT_SCO_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
13975 {"INTERNAL_BT_SCO_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
13976 {"INTERNAL_BT_SCO_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
13977 {"INTERNAL_BT_SCO_RX_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
13978 {"INTERNAL_BT_SCO_RX_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
13979 {"INT_BT_SCO_RX", NULL, "INTERNAL_BT_SCO_RX_Voice Mixer"},
13980
13981 {"AFE_PCM_RX_Voice Mixer", "CSVoice", "CS-VOICE_DL1"},
13982 {"AFE_PCM_RX_Voice Mixer", "Voice2", "VOICE2_DL"},
13983 {"AFE_PCM_RX_Voice Mixer", "VoLTE", "VoLTE_DL"},
13984 {"AFE_PCM_RX_Voice Mixer", "VoWLAN", "VoWLAN_DL"},
13985 {"AFE_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
13986 {"AFE_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
13987 {"AFE_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
13988 {"AFE_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
13989 {"AFE_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
13990 {"PCM_RX", NULL, "AFE_PCM_RX_Voice Mixer"},
13991
13992 {"AUX_PCM_RX_Voice Mixer", "CSVoice", "CS-VOICE_DL1"},
13993 {"AUX_PCM_RX_Voice Mixer", "Voice2", "VOICE2_DL"},
13994 {"AUX_PCM_RX_Voice Mixer", "VoLTE", "VoLTE_DL"},
13995 {"AUX_PCM_RX_Voice Mixer", "VoWLAN", "VoWLAN_DL"},
13996 {"AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
13997 {"AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
13998 {"AUX_PCM_RX_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
13999 {"AUX_PCM_RX_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
14000 {"AUX_PCM_RX_Voice Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
14001 {"AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
14002 {"AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
14003 {"AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
14004 {"AUX_PCM_RX", NULL, "AUX_PCM_RX_Voice Mixer"},
14005
14006 {"SEC_AUX_PCM_RX_Voice Mixer", "CSVoice", "CS-VOICE_DL1"},
14007 {"SEC_AUX_PCM_RX_Voice Mixer", "Voice2", "VOICE2_DL"},
14008 {"SEC_AUX_PCM_RX_Voice Mixer", "VoLTE", "VoLTE_DL"},
14009 {"SEC_AUX_PCM_RX_Voice Mixer", "VoWLAN", "VoWLAN_DL"},
14010 {"SEC_AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
14011 {"SEC_AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
14012 {"SEC_AUX_PCM_RX_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
14013 {"SEC_AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
14014 {"SEC_AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
14015 {"SEC_AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
14016 {"SEC_AUX_PCM_RX", NULL, "SEC_AUX_PCM_RX_Voice Mixer"},
14017
14018 {"TERT_AUX_PCM_RX_Voice Mixer", "CSVoice", "CS-VOICE_DL1"},
14019 {"TERT_AUX_PCM_RX_Voice Mixer", "Voice2", "VOICE2_DL"},
14020 {"TERT_AUX_PCM_RX_Voice Mixer", "VoLTE", "VoLTE_DL"},
14021 {"TERT_AUX_PCM_RX_Voice Mixer", "VoWLAN", "VoWLAN_DL"},
14022 {"TERT_AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
14023 {"TERT_AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
14024 {"TERT_AUX_PCM_RX_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
14025 {"TERT_AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
14026 {"TERT_AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
14027 {"TERT_AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
14028 {"TERT_AUX_PCM_RX", NULL, "TERT_AUX_PCM_RX_Voice Mixer"},
14029
14030 {"QUAT_AUX_PCM_RX_Voice Mixer", "CSVoice", "CS-VOICE_DL1"},
14031 {"QUAT_AUX_PCM_RX_Voice Mixer", "Voice2", "VOICE2_DL"},
14032 {"QUAT_AUX_PCM_RX_Voice Mixer", "VoLTE", "VoLTE_DL"},
14033 {"QUAT_AUX_PCM_RX_Voice Mixer", "VoWLAN", "VoWLAN_DL"},
14034 {"QUAT_AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
14035 {"QUAT_AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
14036 {"QUAT_AUX_PCM_RX_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
14037 {"QUAT_AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
14038 {"QUAT_AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
14039 {"QUAT_AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
14040 {"QUAT_AUX_PCM_RX", NULL, "QUAT_AUX_PCM_RX_Voice Mixer"},
14041
14042 {"HDMI_RX_Voice Mixer", "CSVoice", "CS-VOICE_DL1"},
14043 {"HDMI_RX_Voice Mixer", "Voice2", "VOICE2_DL"},
14044 {"HDMI_RX_Voice Mixer", "VoLTE", "VoLTE_DL"},
14045 {"HDMI_RX_Voice Mixer", "VoWLAN", "VoWLAN_DL"},
14046 {"HDMI_RX_Voice Mixer", "Voip", "VOIP_DL"},
14047 {"HDMI_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
14048 {"HDMI_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
14049 {"HDMI_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
14050 {"HDMI_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
14051 {"HDMI", NULL, "HDMI_RX_Voice Mixer"},
14052 {"HDMI", NULL, "HDMI_DL_HL"},
14053
14054 {"MI2S_RX_Voice Mixer", "CSVoice", "CS-VOICE_DL1"},
14055 {"MI2S_RX_Voice Mixer", "Voice2", "VOICE2_DL"},
14056 {"MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
14057 {"MI2S_RX_Voice Mixer", "VoLTE", "VoLTE_DL"},
14058 {"MI2S_RX_Voice Mixer", "VoWLAN", "VoWLAN_DL"},
14059 {"MI2S_RX_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
14060 {"MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
14061 {"MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
14062 {"MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
14063 {"MI2S_RX", NULL, "MI2S_RX_Voice Mixer"},
14064
14065 {"PRI_MI2S_RX_Voice Mixer", "CSVoice", "CS-VOICE_DL1"},
14066 {"PRI_MI2S_RX_Voice Mixer", "Voice2", "VOICE2_DL"},
14067 {"PRI_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
14068 {"PRI_MI2S_RX_Voice Mixer", "VoLTE", "VoLTE_DL"},
14069 {"PRI_MI2S_RX_Voice Mixer", "VoWLAN", "VoWLAN_DL"},
14070 {"PRI_MI2S_RX_Voice Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
14071 {"PRI_MI2S_RX_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
14072 {"PRI_MI2S_RX_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
14073 {"PRI_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
14074 {"PRI_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
14075 {"PRI_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
14076 {"PRI_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
14077 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX_Voice Mixer"},
14078
14079 {"INT0_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
14080 {"INT0_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
14081 {"INT0_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
14082 {"INT0_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
14083 {"INT0_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
14084 {"INT0_MI2S_RX", NULL, "INT0_MI2S_RX_Voice Mixer"},
14085
14086 {"INT4_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
14087 {"INT4_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
14088 {"INT4_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
14089 {"INT4_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
14090 {"INT4_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
14091 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX_Voice Mixer"},
14092
14093 {"TERT_MI2S_RX_Voice Mixer", "CSVoice", "CS-VOICE_DL1"},
14094 {"TERT_MI2S_RX_Voice Mixer", "Voice2", "VOICE2_DL"},
14095 {"TERT_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
14096 {"TERT_MI2S_RX_Voice Mixer", "VoLTE", "VoLTE_DL"},
14097 {"TERT_MI2S_RX_Voice Mixer", "VoWLAN", "VoWLAN_DL"},
14098 {"TERT_MI2S_RX_Voice Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
14099 {"TERT_MI2S_RX_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
14100 {"TERT_MI2S_RX_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
14101 {"TERT_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
14102 {"TERT_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
14103 {"TERT_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
14104 {"TERT_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
14105 {"TERT_MI2S_RX", NULL, "TERT_MI2S_RX_Voice Mixer"},
14106
14107 {"QUAT_MI2S_RX_Voice Mixer", "CSVoice", "CS-VOICE_DL1"},
14108 {"QUAT_MI2S_RX_Voice Mixer", "Voice2", "VOICE2_DL"},
14109 {"QUAT_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
14110 {"QUAT_MI2S_RX_Voice Mixer", "VoLTE", "VoLTE_DL"},
14111 {"QUAT_MI2S_RX_Voice Mixer", "VoWLAN", "VoWLAN_DL"},
14112 {"QUAT_MI2S_RX_Voice Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
14113 {"QUAT_MI2S_RX_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
14114 {"QUAT_MI2S_RX_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
14115 {"QUAT_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
14116 {"QUAT_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
14117 {"QUAT_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
14118 {"QUAT_MI2S_RX", NULL, "QUAT_MI2S_RX_Voice Mixer"},
14119
14120 {"QUIN_MI2S_RX_Voice Mixer", "CSVoice", "CS-VOICE_DL1"},
14121 {"QUIN_MI2S_RX_Voice Mixer", "Voice2", "VOICE2_DL"},
14122 {"QUIN_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
14123 {"QUIN_MI2S_RX_Voice Mixer", "VoLTE", "VoLTE_DL"},
14124 {"QUIN_MI2S_RX_Voice Mixer", "VoWLAN", "VoWLAN_DL"},
14125 {"QUIN_MI2S_RX_Voice Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
14126 {"QUIN_MI2S_RX_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
14127 {"QUIN_MI2S_RX_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
14128 {"QUIN_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
14129 {"QUIN_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
14130 {"QUIN_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
14131 {"QUIN_MI2S_RX", NULL, "QUIN_MI2S_RX_Voice Mixer"},
14132
14133 {"QUAT_TDM_RX_2_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
14134 {"QUAT_TDM_RX_2", NULL, "QUAT_TDM_RX_2_Voice Mixer"},
14135
14136 {"VOC_EXT_EC MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14137 {"VOC_EXT_EC MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
14138 {"VOC_EXT_EC MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14139 {"VOC_EXT_EC MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14140 {"VOC_EXT_EC MUX", "SLIM_1_TX", "SLIMBUS_1_TX"},
14141 {"CS-VOICE_UL1", NULL, "VOC_EXT_EC MUX"},
14142 {"VOIP_UL", NULL, "VOC_EXT_EC MUX"},
14143 {"VoLTE_UL", NULL, "VOC_EXT_EC MUX"},
14144 {"VOICE2_UL", NULL, "VOC_EXT_EC MUX"},
14145 {"VoWLAN_UL", NULL, "VOC_EXT_EC MUX"},
14146 {"VOICEMMODE1_UL", NULL, "VOC_EXT_EC MUX"},
14147 {"VOICEMMODE2_UL", NULL, "VOC_EXT_EC MUX"},
14148
14149 {"AUDIO_REF_EC_UL1 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14150 {"AUDIO_REF_EC_UL1 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
14151 {"AUDIO_REF_EC_UL1 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14152 {"AUDIO_REF_EC_UL1 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14153 {"AUDIO_REF_EC_UL1 MUX", "SLIM_1_TX", "SLIMBUS_1_TX"},
14154 {"AUDIO_REF_EC_UL1 MUX", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14155 {"AUDIO_REF_EC_UL1 MUX", "QUAT_TDM_RX_0", "QUAT_TDM_RX_0"},
14156 {"AUDIO_REF_EC_UL1 MUX", "QUAT_TDM_RX_1", "QUAT_TDM_RX_1"},
14157 {"AUDIO_REF_EC_UL1 MUX", "QUAT_TDM_RX_2", "QUAT_TDM_RX_2"},
14158 {"AUDIO_REF_EC_UL1 MUX", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14159
14160 {"AUDIO_REF_EC_UL2 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14161 {"AUDIO_REF_EC_UL2 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
14162 {"AUDIO_REF_EC_UL2 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14163 {"AUDIO_REF_EC_UL2 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14164
14165 {"AUDIO_REF_EC_UL3 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14166 {"AUDIO_REF_EC_UL3 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
14167 {"AUDIO_REF_EC_UL3 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14168 {"AUDIO_REF_EC_UL3 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14169
14170 {"AUDIO_REF_EC_UL4 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14171 {"AUDIO_REF_EC_UL4 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
14172 {"AUDIO_REF_EC_UL4 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14173 {"AUDIO_REF_EC_UL4 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14174
14175 {"AUDIO_REF_EC_UL5 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14176 {"AUDIO_REF_EC_UL5 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
14177 {"AUDIO_REF_EC_UL5 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14178 {"AUDIO_REF_EC_UL5 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14179
14180 {"AUDIO_REF_EC_UL6 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14181 {"AUDIO_REF_EC_UL6 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
14182 {"AUDIO_REF_EC_UL6 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14183 {"AUDIO_REF_EC_UL6 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14184
14185 {"AUDIO_REF_EC_UL8 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14186 {"AUDIO_REF_EC_UL8 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
14187 {"AUDIO_REF_EC_UL8 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14188 {"AUDIO_REF_EC_UL8 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14189
14190 {"AUDIO_REF_EC_UL9 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14191 {"AUDIO_REF_EC_UL9 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
14192 {"AUDIO_REF_EC_UL9 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14193 {"AUDIO_REF_EC_UL9 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14194
Laxminath Kasam38070be2017-08-17 18:21:59 +053014195 {"AUDIO_REF_EC_UL10 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14196 {"AUDIO_REF_EC_UL10 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
14197 {"AUDIO_REF_EC_UL10 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14198 {"AUDIO_REF_EC_UL10 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14199 {"AUDIO_REF_EC_UL10 MUX", "SLIM_1_TX", "SLIMBUS_1_TX"},
14200 {"AUDIO_REF_EC_UL10 MUX", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14201 {"AUDIO_REF_EC_UL10 MUX", "QUAT_TDM_RX_0", "QUAT_TDM_RX_0"},
14202 {"AUDIO_REF_EC_UL10 MUX", "QUAT_TDM_RX_1", "QUAT_TDM_RX_1"},
14203 {"AUDIO_REF_EC_UL10 MUX", "QUAT_TDM_RX_2", "QUAT_TDM_RX_2"},
14204 {"AUDIO_REF_EC_UL10 MUX", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014205 {"AUDIO_REF_EC_UL17 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14206 {"AUDIO_REF_EC_UL17 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
14207 {"AUDIO_REF_EC_UL17 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14208 {"AUDIO_REF_EC_UL17 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14209
14210 {"AUDIO_REF_EC_UL18 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14211 {"AUDIO_REF_EC_UL18 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
14212 {"AUDIO_REF_EC_UL18 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14213 {"AUDIO_REF_EC_UL18 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14214
14215 {"AUDIO_REF_EC_UL19 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14216 {"AUDIO_REF_EC_UL19 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
14217 {"AUDIO_REF_EC_UL19 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14218 {"AUDIO_REF_EC_UL19 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14219
14220 {"MM_UL1", NULL, "AUDIO_REF_EC_UL1 MUX"},
14221 {"MM_UL2", NULL, "AUDIO_REF_EC_UL2 MUX"},
14222 {"MM_UL3", NULL, "AUDIO_REF_EC_UL3 MUX"},
14223 {"MM_UL4", NULL, "AUDIO_REF_EC_UL4 MUX"},
14224 {"MM_UL5", NULL, "AUDIO_REF_EC_UL5 MUX"},
14225 {"MM_UL6", NULL, "AUDIO_REF_EC_UL6 MUX"},
14226 {"MM_UL8", NULL, "AUDIO_REF_EC_UL8 MUX"},
14227 {"MM_UL9", NULL, "AUDIO_REF_EC_UL9 MUX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014228 {"MM_UL10", NULL, "AUDIO_REF_EC_UL10 MUX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014229 {"MM_UL16", NULL, "AUDIO_REF_EC_UL16 MUX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014230 {"MM_UL17", NULL, "AUDIO_REF_EC_UL17 MUX"},
14231 {"MM_UL18", NULL, "AUDIO_REF_EC_UL18 MUX"},
14232 {"MM_UL19", NULL, "AUDIO_REF_EC_UL19 MUX"},
14233
14234 {"Voice_Tx Mixer", "PRI_TX_Voice", "PRI_I2S_TX"},
14235 {"Voice_Tx Mixer", "PRI_MI2S_TX_Voice", "PRI_MI2S_TX"},
14236 {"Voice_Tx Mixer", "MI2S_TX_Voice", "MI2S_TX"},
14237 {"Voice_Tx Mixer", "TERT_MI2S_TX_Voice", "TERT_MI2S_TX"},
14238 {"Voice_Tx Mixer", "SLIM_0_TX_Voice", "SLIMBUS_0_TX"},
14239 {"Voice_Tx Mixer", "SLIM_7_TX_Voice", "SLIMBUS_7_TX"},
14240 {"Voice_Tx Mixer", "SLIM_8_TX_Voice", "SLIMBUS_8_TX"},
14241 {"Voice_Tx Mixer", "USB_AUDIO_TX_Voice", "USB_AUDIO_TX"},
14242 {"Voice_Tx Mixer", "INTERNAL_BT_SCO_TX_Voice", "INT_BT_SCO_TX"},
14243 {"Voice_Tx Mixer", "AFE_PCM_TX_Voice", "PCM_TX"},
14244 {"Voice_Tx Mixer", "AUX_PCM_TX_Voice", "AUX_PCM_TX"},
14245 {"Voice_Tx Mixer", "SEC_AUX_PCM_TX_Voice", "SEC_AUX_PCM_TX"},
14246 {"Voice_Tx Mixer", "TERT_AUX_PCM_TX_Voice", "TERT_AUX_PCM_TX"},
14247 {"Voice_Tx Mixer", "QUAT_AUX_PCM_TX_Voice", "QUAT_AUX_PCM_TX"},
14248 {"Voice_Tx Mixer", "SEC_MI2S_TX_Voice", "SEC_MI2S_TX"},
14249 {"CS-VOICE_UL1", NULL, "Voice_Tx Mixer"},
14250
14251 {"Voice2_Tx Mixer", "PRI_TX_Voice2", "PRI_I2S_TX"},
14252 {"Voice2_Tx Mixer", "PRI_MI2S_TX_Voice2", "PRI_MI2S_TX"},
14253 {"Voice2_Tx Mixer", "MI2S_TX_Voice2", "MI2S_TX"},
14254 {"Voice2_Tx Mixer", "TERT_MI2S_TX_Voice2", "TERT_MI2S_TX"},
14255 {"Voice2_Tx Mixer", "SLIM_0_TX_Voice2", "SLIMBUS_0_TX"},
14256 {"Voice2_Tx Mixer", "SLIM_7_TX_Voice2", "SLIMBUS_7_TX"},
14257 {"Voice2_Tx Mixer", "SLIM_8_TX_Voice2", "SLIMBUS_8_TX"},
14258 {"Voice2_Tx Mixer", "USB_AUDIO_TX_Voice2", "USB_AUDIO_TX"},
14259 {"Voice2_Tx Mixer", "INTERNAL_BT_SCO_TX_Voice2", "INT_BT_SCO_TX"},
14260 {"Voice2_Tx Mixer", "AFE_PCM_TX_Voice2", "PCM_TX"},
14261 {"Voice2_Tx Mixer", "AUX_PCM_TX_Voice2", "AUX_PCM_TX"},
14262 {"Voice2_Tx Mixer", "SEC_AUX_PCM_TX_Voice2", "SEC_AUX_PCM_TX"},
14263 {"Voice2_Tx Mixer", "TERT_AUX_PCM_TX_Voice2", "TERT_AUX_PCM_TX"},
14264 {"Voice2_Tx Mixer", "QUAT_AUX_PCM_TX_Voice2", "QUAT_AUX_PCM_TX"},
14265 {"VOICE2_UL", NULL, "Voice2_Tx Mixer"},
14266
14267 {"VoLTE_Tx Mixer", "PRI_TX_VoLTE", "PRI_I2S_TX"},
14268 {"VoLTE_Tx Mixer", "SLIM_0_TX_VoLTE", "SLIMBUS_0_TX"},
14269 {"VoLTE_Tx Mixer", "SLIM_7_TX_VoLTE", "SLIMBUS_7_TX"},
14270 {"VoLTE_Tx Mixer", "SLIM_8_TX_VoLTE", "SLIMBUS_8_TX"},
14271 {"VoLTE_Tx Mixer", "USB_AUDIO_TX_VoLTE", "USB_AUDIO_TX"},
14272 {"VoLTE_Tx Mixer", "INTERNAL_BT_SCO_TX_VoLTE", "INT_BT_SCO_TX"},
14273 {"VoLTE_Tx Mixer", "AFE_PCM_TX_VoLTE", "PCM_TX"},
14274 {"VoLTE_Tx Mixer", "AUX_PCM_TX_VoLTE", "AUX_PCM_TX"},
14275 {"VoLTE_Tx Mixer", "SEC_AUX_PCM_TX_VoLTE", "SEC_AUX_PCM_TX"},
14276 {"VoLTE_Tx Mixer", "TERT_AUX_PCM_TX_VoLTE", "TERT_AUX_PCM_TX"},
14277 {"VoLTE_Tx Mixer", "QUAT_AUX_PCM_TX_VoLTE", "QUAT_AUX_PCM_TX"},
14278 {"VoLTE_Tx Mixer", "MI2S_TX_VoLTE", "MI2S_TX"},
14279 {"VoLTE_Tx Mixer", "PRI_MI2S_TX_VoLTE", "PRI_MI2S_TX"},
14280 {"VoLTE_Tx Mixer", "TERT_MI2S_TX_VoLTE", "TERT_MI2S_TX"},
14281 {"VoLTE_UL", NULL, "VoLTE_Tx Mixer"},
14282
14283 {"VoWLAN_Tx Mixer", "PRI_TX_VoWLAN", "PRI_I2S_TX"},
14284 {"VoWLAN_Tx Mixer", "SLIM_0_TX_VoWLAN", "SLIMBUS_0_TX"},
14285 {"VoWLAN_Tx Mixer", "SLIM_7_TX_VoWLAN", "SLIMBUS_7_TX"},
14286 {"VoWLAN_Tx Mixer", "SLIM_8_TX_VoWLAN", "SLIMBUS_8_TX"},
14287 {"VoWLAN_Tx Mixer", "USB_AUDIO_TX_VoWLAN", "USB_AUDIO_TX"},
14288 {"VoWLAN_Tx Mixer", "INTERNAL_BT_SCO_TX_VoWLAN", "INT_BT_SCO_TX"},
14289 {"VoWLAN_Tx Mixer", "AFE_PCM_TX_VoWLAN", "PCM_TX"},
14290 {"VoWLAN_Tx Mixer", "AUX_PCM_TX_VoWLAN", "AUX_PCM_TX"},
14291 {"VoWLAN_Tx Mixer", "SEC_AUX_PCM_TX_VoWLAN", "SEC_AUX_PCM_TX"},
14292 {"VoWLAN_Tx Mixer", "TERT_AUX_PCM_TX_VoWLAN", "TERT_AUX_PCM_TX"},
14293 {"VoWLAN_Tx Mixer", "QUAT_AUX_PCM_TX_VoWLAN", "QUAT_AUX_PCM_TX"},
14294 {"VoWLAN_Tx Mixer", "MI2S_TX_VoWLAN", "MI2S_TX"},
14295 {"VoWLAN_Tx Mixer", "PRI_MI2S_TX_VoWLAN", "PRI_MI2S_TX"},
14296 {"VoWLAN_Tx Mixer", "TERT_MI2S_TX_VoWLAN", "TERT_MI2S_TX"},
14297 {"VoWLAN_UL", NULL, "VoWLAN_Tx Mixer"},
14298
14299 {"VoiceMMode1_Tx Mixer", "PRI_TX_MMode1", "PRI_I2S_TX"},
14300 {"VoiceMMode1_Tx Mixer", "PRI_MI2S_TX_MMode1", "PRI_MI2S_TX"},
14301 {"VoiceMMode1_Tx Mixer", "MI2S_TX_MMode1", "MI2S_TX"},
14302 {"VoiceMMode1_Tx Mixer", "TERT_MI2S_TX_MMode1", "TERT_MI2S_TX"},
14303 {"VoiceMMode1_Tx Mixer", "INT3_MI2S_TX_MMode1", "INT3_MI2S_TX"},
14304 {"VoiceMMode1_Tx Mixer", "SLIM_0_TX_MMode1", "SLIMBUS_0_TX"},
14305 {"VoiceMMode1_Tx Mixer", "SLIM_7_TX_MMode1", "SLIMBUS_7_TX"},
14306 {"VoiceMMode1_Tx Mixer", "SLIM_8_TX_MMode1", "SLIMBUS_8_TX"},
14307 {"VoiceMMode1_Tx Mixer", "USB_AUDIO_TX_MMode1", "USB_AUDIO_TX"},
14308 {"VoiceMMode1_Tx Mixer", "INT_BT_SCO_TX_MMode1", "INT_BT_SCO_TX"},
14309 {"VoiceMMode1_Tx Mixer", "AFE_PCM_TX_MMode1", "PCM_TX"},
14310 {"VoiceMMode1_Tx Mixer", "AUX_PCM_TX_MMode1", "AUX_PCM_TX"},
14311 {"VoiceMMode1_Tx Mixer", "SEC_AUX_PCM_TX_MMode1", "SEC_AUX_PCM_TX"},
14312 {"VoiceMMode1_Tx Mixer", "TERT_AUX_PCM_TX_MMode1", "TERT_AUX_PCM_TX"},
14313 {"VoiceMMode1_Tx Mixer", "QUAT_AUX_PCM_TX_MMode1", "QUAT_AUX_PCM_TX"},
14314 {"VoiceMMode1_Tx Mixer", "QUAT_TDM_TX_0_MMode1", "QUAT_TDM_TX_0"},
14315 {"VOICEMMODE1_UL", NULL, "VoiceMMode1_Tx Mixer"},
14316
14317 {"VoiceMMode2_Tx Mixer", "PRI_TX_MMode2", "PRI_I2S_TX"},
14318 {"VoiceMMode2_Tx Mixer", "PRI_MI2S_TX_MMode2", "PRI_MI2S_TX"},
14319 {"VoiceMMode2_Tx Mixer", "MI2S_TX_MMode2", "MI2S_TX"},
14320 {"VoiceMMode2_Tx Mixer", "TERT_MI2S_TX_MMode2", "TERT_MI2S_TX"},
14321 {"VoiceMMode2_Tx Mixer", "INT3_MI2S_TX_MMode2", "INT3_MI2S_TX"},
14322 {"VoiceMMode2_Tx Mixer", "SLIM_0_TX_MMode2", "SLIMBUS_0_TX"},
14323 {"VoiceMMode2_Tx Mixer", "SLIM_7_TX_MMode2", "SLIMBUS_7_TX"},
14324 {"VoiceMMode2_Tx Mixer", "SLIM_8_TX_MMode2", "SLIMBUS_8_TX"},
14325 {"VoiceMMode2_Tx Mixer", "USB_AUDIO_TX_MMode2", "USB_AUDIO_TX"},
14326 {"VoiceMMode2_Tx Mixer", "INT_BT_SCO_TX_MMode2", "INT_BT_SCO_TX"},
14327 {"VoiceMMode2_Tx Mixer", "AFE_PCM_TX_MMode2", "PCM_TX"},
14328 {"VoiceMMode2_Tx Mixer", "AUX_PCM_TX_MMode2", "AUX_PCM_TX"},
14329 {"VoiceMMode2_Tx Mixer", "SEC_AUX_PCM_TX_MMode2", "SEC_AUX_PCM_TX"},
14330 {"VoiceMMode2_Tx Mixer", "TERT_AUX_PCM_TX_MMode2", "TERT_AUX_PCM_TX"},
14331 {"VoiceMMode2_Tx Mixer", "QUAT_AUX_PCM_TX_MMode2", "QUAT_AUX_PCM_TX"},
14332 {"VOICEMMODE2_UL", NULL, "VoiceMMode2_Tx Mixer"},
14333
14334 {"Voip_Tx Mixer", "PRI_TX_Voip", "PRI_I2S_TX"},
14335 {"Voip_Tx Mixer", "MI2S_TX_Voip", "MI2S_TX"},
14336 {"Voip_Tx Mixer", "TERT_MI2S_TX_Voip", "TERT_MI2S_TX"},
14337 {"Voip_Tx Mixer", "INT3_MI2S_TX_Voip", "INT3_MI2S_TX"},
14338 {"Voip_Tx Mixer", "SLIM_0_TX_Voip", "SLIMBUS_0_TX"},
14339 {"Voip_Tx Mixer", "SLIM_7_TX_Voip", "SLIMBUS_7_TX"},
14340 {"Voip_Tx Mixer", "SLIM_8_TX_Voip", "SLIMBUS_8_TX"},
14341 {"Voip_Tx Mixer", "USB_AUDIO_TX_Voip", "USB_AUDIO_TX"},
14342 {"Voip_Tx Mixer", "INTERNAL_BT_SCO_TX_Voip", "INT_BT_SCO_TX"},
14343 {"Voip_Tx Mixer", "AFE_PCM_TX_Voip", "PCM_TX"},
14344 {"Voip_Tx Mixer", "AUX_PCM_TX_Voip", "AUX_PCM_TX"},
14345 {"Voip_Tx Mixer", "SEC_AUX_PCM_TX_Voip", "SEC_AUX_PCM_TX"},
14346 {"Voip_Tx Mixer", "TERT_AUX_PCM_TX_Voip", "TERT_AUX_PCM_TX"},
14347 {"Voip_Tx Mixer", "QUAT_AUX_PCM_TX_Voip", "QUAT_AUX_PCM_TX"},
14348 {"Voip_Tx Mixer", "PRI_MI2S_TX_Voip", "PRI_MI2S_TX"},
14349 {"VOIP_UL", NULL, "Voip_Tx Mixer"},
14350
14351 {"SLIMBUS_DL_HL", "Switch", "SLIM0_DL_HL"},
14352 {"SLIMBUS_0_RX", NULL, "SLIMBUS_DL_HL"},
14353 {"SLIMBUS1_DL_HL", "Switch", "SLIM1_DL_HL"},
14354 {"SLIMBUS_1_RX", NULL, "SLIMBUS1_DL_HL"},
14355 {"SLIMBUS3_DL_HL", "Switch", "SLIM3_DL_HL"},
14356 {"SLIMBUS_3_RX", NULL, "SLIMBUS3_DL_HL"},
14357 {"SLIMBUS4_DL_HL", "Switch", "SLIM4_DL_HL"},
14358 {"SLIMBUS_4_RX", NULL, "SLIMBUS4_DL_HL"},
14359 {"SLIMBUS6_DL_HL", "Switch", "SLIM0_DL_HL"},
14360 {"SLIMBUS_6_RX", NULL, "SLIMBUS6_DL_HL"},
14361 {"SLIM0_UL_HL", NULL, "SLIMBUS_0_TX"},
14362 {"SLIM1_UL_HL", NULL, "SLIMBUS_1_TX"},
14363 {"SLIM3_UL_HL", NULL, "SLIMBUS_3_TX"},
14364 {"SLIM4_UL_HL", NULL, "SLIMBUS_4_TX"},
14365 {"SLIM8_UL_HL", NULL, "SLIMBUS_8_TX"},
14366
14367 {"LSM1 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
14368 {"LSM1 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
14369 {"LSM1 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
14370 {"LSM1 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
14371 {"LSM1 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
14372 {"LSM1 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14373 {"LSM1 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14374 {"LSM1 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14375 {"LSM1_UL_HL", NULL, "LSM1 Mixer"},
14376
14377 {"LSM2 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
14378 {"LSM2 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
14379 {"LSM2 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
14380 {"LSM2 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
14381 {"LSM2 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
14382 {"LSM2 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14383 {"LSM2 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14384 {"LSM2 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14385 {"LSM2_UL_HL", NULL, "LSM2 Mixer"},
14386
14387
14388 {"LSM3 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
14389 {"LSM3 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
14390 {"LSM3 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
14391 {"LSM3 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
14392 {"LSM3 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
14393 {"LSM3 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14394 {"LSM3 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14395 {"LSM3 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14396 {"LSM3_UL_HL", NULL, "LSM3 Mixer"},
14397
14398
14399 {"LSM4 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
14400 {"LSM4 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
14401 {"LSM4 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
14402 {"LSM4 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
14403 {"LSM4 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
14404 {"LSM4 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14405 {"LSM4 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14406 {"LSM4 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14407 {"LSM4_UL_HL", NULL, "LSM4 Mixer"},
14408
14409 {"LSM5 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
14410 {"LSM5 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
14411 {"LSM5 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
14412 {"LSM5 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
14413 {"LSM5 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
14414 {"LSM5 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14415 {"LSM5 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14416 {"LSM5 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14417 {"LSM5_UL_HL", NULL, "LSM5 Mixer"},
14418
14419 {"LSM6 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
14420 {"LSM6 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
14421 {"LSM6 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
14422 {"LSM6 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
14423 {"LSM6 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
14424 {"LSM6 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14425 {"LSM6_UL_HL", NULL, "LSM6 Mixer"},
14426
14427 {"LSM7 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
14428 {"LSM7 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
14429 {"LSM7 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
14430 {"LSM7 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
14431 {"LSM7 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
14432 {"LSM7 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14433 {"LSM7_UL_HL", NULL, "LSM7 Mixer"},
14434
14435 {"LSM8 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
14436 {"LSM8 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
14437 {"LSM8 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
14438 {"LSM8 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
14439 {"LSM8 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
14440 {"LSM8 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14441 {"LSM8_UL_HL", NULL, "LSM8 Mixer"},
14442
14443
14444 {"CPE_LSM_UL_HL", NULL, "BE_IN"},
14445 {"QCHAT_Tx Mixer", "PRI_TX_QCHAT", "PRI_I2S_TX"},
14446 {"QCHAT_Tx Mixer", "SLIM_0_TX_QCHAT", "SLIMBUS_0_TX"},
14447 {"QCHAT_Tx Mixer", "SLIM_7_TX_QCHAT", "SLIMBUS_7_TX"},
14448 {"QCHAT_Tx Mixer", "SLIM_8_TX_QCHAT", "SLIMBUS_8_TX"},
14449 {"QCHAT_Tx Mixer", "INTERNAL_BT_SCO_TX_QCHAT", "INT_BT_SCO_TX"},
14450 {"QCHAT_Tx Mixer", "AFE_PCM_TX_QCHAT", "PCM_TX"},
14451 {"QCHAT_Tx Mixer", "AUX_PCM_TX_QCHAT", "AUX_PCM_TX"},
14452 {"QCHAT_Tx Mixer", "SEC_AUX_PCM_TX_QCHAT", "SEC_AUX_PCM_TX"},
14453 {"QCHAT_Tx Mixer", "TERT_AUX_PCM_TX_QCHAT", "TERT_AUX_PCM_TX"},
14454 {"QCHAT_Tx Mixer", "QUAT_AUX_PCM_TX_QCHAT", "QUAT_AUX_PCM_TX"},
14455 {"QCHAT_Tx Mixer", "MI2S_TX_QCHAT", "MI2S_TX"},
14456 {"QCHAT_Tx Mixer", "PRI_MI2S_TX_QCHAT", "PRI_MI2S_TX"},
14457 {"QCHAT_Tx Mixer", "TERT_MI2S_TX_QCHAT", "TERT_MI2S_TX"},
14458 {"QCHAT_Tx Mixer", "INT3_MI2S_TX_QCHAT", "INT3_MI2S_TX"},
14459 {"QCHAT_Tx Mixer", "USB_AUDIO_TX_QCHAT", "USB_AUDIO_TX"},
14460 {"QCHAT_UL", NULL, "QCHAT_Tx Mixer"},
14461
14462 {"INT_FM_RX", NULL, "INTFM_DL_HL"},
14463 {"INTFM_UL_HL", NULL, "INT_FM_TX"},
14464 {"INTHFP_UL_HL", NULL, "HFP_PRI_AUX_UL_HL"},
14465 {"HFP_PRI_AUX_UL_HL", "Switch", "AUX_PCM_TX"},
14466 {"INTHFP_UL_HL", NULL, "HFP_AUX_UL_HL"},
14467 {"HFP_AUX_UL_HL", "Switch", "SEC_AUX_PCM_TX"},
14468 {"INTHFP_UL_HL", NULL, "HFP_INT_UL_HL"},
14469 {"HFP_INT_UL_HL", "Switch", "INT_BT_SCO_TX"},
14470 {"SLIM7_UL_HL", NULL, "HFP_SLIM7_UL_HL"},
14471 {"HFP_SLIM7_UL_HL", "Switch", "SLIMBUS_7_TX"},
14472 {"AUX_PCM_RX", NULL, "AUXPCM_DL_HL"},
14473 {"AUX_PCM_RX", NULL, "INTHFP_DL_HL"},
14474 {"AUXPCM_UL_HL", NULL, "AUX_PCM_TX"},
14475 {"MI2S_RX", NULL, "MI2S_DL_HL"},
14476 {"MI2S_UL_HL", NULL, "MI2S_TX"},
14477 {"PCM_RX_DL_HL", "Switch", "SLIM0_DL_HL"},
14478 {"PCM_RX", NULL, "PCM_RX_DL_HL"},
14479
14480 /* connect to INT4_MI2S_DL_HL since same pcm_id */
14481 {"INT0_MI2S_RX_DL_HL", "Switch", "INT4_MI2S_DL_HL"},
14482 {"INT0_MI2S_RX", NULL, "INT0_MI2S_RX_DL_HL"},
14483 {"INT4_MI2S_RX_DL_HL", "Switch", "INT4_MI2S_DL_HL"},
14484 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX_DL_HL"},
14485 {"PRI_MI2S_RX_DL_HL", "Switch", "PRI_MI2S_DL_HL"},
14486 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX_DL_HL"},
14487 {"SEC_MI2S_RX_DL_HL", "Switch", "SEC_MI2S_DL_HL"},
14488 {"SEC_MI2S_RX", NULL, "SEC_MI2S_RX_DL_HL"},
14489 {"TERT_MI2S_RX_DL_HL", "Switch", "TERT_MI2S_DL_HL"},
14490 {"TERT_MI2S_RX", NULL, "TERT_MI2S_RX_DL_HL"},
14491
14492 {"QUAT_MI2S_RX_DL_HL", "Switch", "QUAT_MI2S_DL_HL"},
14493 {"QUAT_MI2S_RX", NULL, "QUAT_MI2S_RX_DL_HL"},
14494 {"MI2S_UL_HL", NULL, "TERT_MI2S_TX"},
14495 {"INT3_MI2S_UL_HL", NULL, "INT3_MI2S_TX"},
14496 {"TERT_MI2S_UL_HL", NULL, "TERT_MI2S_TX"},
14497 {"SEC_I2S_RX", NULL, "SEC_I2S_DL_HL"},
14498 {"PRI_MI2S_UL_HL", NULL, "PRI_MI2S_TX"},
14499 {"SEC_MI2S_UL_HL", NULL, "SEC_MI2S_TX"},
14500 {"SEC_MI2S_RX", NULL, "SEC_MI2S_DL_HL"},
14501 {"PRI_MI2S_RX", NULL, "PRI_MI2S_DL_HL"},
14502 {"TERT_MI2S_RX", NULL, "TERT_MI2S_DL_HL"},
14503 {"QUAT_MI2S_UL_HL", NULL, "QUAT_MI2S_TX"},
14504
14505 {"PRI_TDM_TX_0_UL_HL", NULL, "PRI_TDM_TX_0"},
14506 {"PRI_TDM_TX_1_UL_HL", NULL, "PRI_TDM_TX_1"},
14507 {"PRI_TDM_TX_2_UL_HL", NULL, "PRI_TDM_TX_2"},
14508 {"PRI_TDM_TX_3_UL_HL", NULL, "PRI_TDM_TX_3"},
14509 {"PRI_TDM_RX_0", NULL, "PRI_TDM_RX_0_DL_HL"},
14510 {"PRI_TDM_RX_1", NULL, "PRI_TDM_RX_1_DL_HL"},
14511 {"PRI_TDM_RX_2", NULL, "PRI_TDM_RX_2_DL_HL"},
14512 {"PRI_TDM_RX_3", NULL, "PRI_TDM_RX_3_DL_HL"},
14513 {"SEC_TDM_TX_0_UL_HL", NULL, "SEC_TDM_TX_0"},
14514 {"SEC_TDM_TX_1_UL_HL", NULL, "SEC_TDM_TX_1"},
14515 {"SEC_TDM_TX_2_UL_HL", NULL, "SEC_TDM_TX_2"},
14516 {"SEC_TDM_TX_3_UL_HL", NULL, "SEC_TDM_TX_3"},
14517 {"SEC_TDM_RX_0", NULL, "SEC_TDM_RX_0_DL_HL"},
14518 {"SEC_TDM_RX_1", NULL, "SEC_TDM_RX_1_DL_HL"},
14519 {"SEC_TDM_RX_2", NULL, "SEC_TDM_RX_2_DL_HL"},
14520 {"SEC_TDM_RX_3", NULL, "SEC_TDM_RX_3_DL_HL"},
14521 {"TERT_TDM_TX_0_UL_HL", NULL, "TERT_TDM_TX_0"},
14522 {"TERT_TDM_TX_1_UL_HL", NULL, "TERT_TDM_TX_1"},
14523 {"TERT_TDM_TX_2_UL_HL", NULL, "TERT_TDM_TX_2"},
14524 {"TERT_TDM_TX_3_UL_HL", NULL, "TERT_TDM_TX_3"},
14525 {"TERT_TDM_RX_0", NULL, "TERT_TDM_RX_0_DL_HL"},
14526 {"TERT_TDM_RX_1", NULL, "TERT_TDM_RX_1_DL_HL"},
14527 {"TERT_TDM_RX_2", NULL, "TERT_TDM_RX_2_DL_HL"},
14528 {"TERT_TDM_RX_3", NULL, "TERT_TDM_RX_3_DL_HL"},
14529 {"QUAT_TDM_TX_0_UL_HL", NULL, "QUAT_TDM_TX_0"},
14530 {"QUAT_TDM_TX_1_UL_HL", NULL, "QUAT_TDM_TX_1"},
14531 {"QUAT_TDM_TX_2_UL_HL", NULL, "QUAT_TDM_TX_2"},
14532 {"QUAT_TDM_TX_3_UL_HL", NULL, "QUAT_TDM_TX_3"},
14533 {"QUAT_TDM_RX_0", NULL, "QUAT_TDM_RX_0_DL_HL"},
14534 {"QUAT_TDM_RX_1", NULL, "QUAT_TDM_RX_1_DL_HL"},
14535 {"QUAT_TDM_RX_2", NULL, "QUAT_TDM_RX_2_DL_HL"},
14536 {"QUAT_TDM_RX_3", NULL, "QUAT_TDM_RX_3_DL_HL"},
14537
14538 {"PRI_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14539 {"PRI_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
14540 {"PRI_TDM_RX_0 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14541 {"PRI_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
14542 {"PRI_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
14543 {"PRI_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
14544 {"PRI_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
14545 {"PRI_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
14546 {"PRI_TDM_RX_0 Port Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
14547 {"PRI_TDM_RX_0 Port Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
14548 {"PRI_TDM_RX_0 Port Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
14549 {"PRI_TDM_RX_0 Port Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
14550 {"PRI_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14551 {"PRI_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14552 {"PRI_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14553 {"PRI_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
14554 {"PRI_TDM_RX_0", NULL, "PRI_TDM_RX_0 Port Mixer"},
14555
14556 {"PRI_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14557 {"PRI_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
14558 {"PRI_TDM_RX_1 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14559 {"PRI_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
14560 {"PRI_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
14561 {"PRI_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
14562 {"PRI_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
14563 {"PRI_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
14564 {"PRI_TDM_RX_1 Port Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
14565 {"PRI_TDM_RX_1 Port Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
14566 {"PRI_TDM_RX_1 Port Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
14567 {"PRI_TDM_RX_1 Port Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
14568 {"PRI_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14569 {"PRI_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14570 {"PRI_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14571 {"PRI_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
14572 {"PRI_TDM_RX_1", NULL, "PRI_TDM_RX_1 Port Mixer"},
14573
14574 {"PRI_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14575 {"PRI_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
14576 {"PRI_TDM_RX_2 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14577 {"PRI_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
14578 {"PRI_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
14579 {"PRI_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
14580 {"PRI_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
14581 {"PRI_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
14582 {"PRI_TDM_RX_2 Port Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
14583 {"PRI_TDM_RX_2 Port Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
14584 {"PRI_TDM_RX_2 Port Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
14585 {"PRI_TDM_RX_2 Port Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
14586 {"PRI_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14587 {"PRI_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14588 {"PRI_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14589 {"PRI_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
14590 {"PRI_TDM_RX_2", NULL, "PRI_TDM_RX_2 Port Mixer"},
14591
14592 {"PRI_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14593 {"PRI_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
14594 {"PRI_TDM_RX_3 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14595 {"PRI_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
14596 {"PRI_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
14597 {"PRI_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
14598 {"PRI_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
14599 {"PRI_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
14600 {"PRI_TDM_RX_3 Port Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
14601 {"PRI_TDM_RX_3 Port Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
14602 {"PRI_TDM_RX_3 Port Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
14603 {"PRI_TDM_RX_3 Port Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
14604 {"PRI_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14605 {"PRI_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14606 {"PRI_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14607 {"PRI_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
14608 {"PRI_TDM_RX_3", NULL, "PRI_TDM_RX_3 Port Mixer"},
14609
14610 {"SEC_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14611 {"SEC_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
14612 {"SEC_TDM_RX_0 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14613 {"SEC_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
14614 {"SEC_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
14615 {"SEC_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
14616 {"SEC_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
14617 {"SEC_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
14618 {"SEC_TDM_RX_0 Port Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
14619 {"SEC_TDM_RX_0 Port Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
14620 {"SEC_TDM_RX_0 Port Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
14621 {"SEC_TDM_RX_0 Port Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
14622 {"SEC_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14623 {"SEC_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14624 {"SEC_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14625 {"SEC_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
14626 {"SEC_TDM_RX_0", NULL, "SEC_TDM_RX_0 Port Mixer"},
14627
14628 {"SEC_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14629 {"SEC_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
14630 {"SEC_TDM_RX_1 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14631 {"SEC_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
14632 {"SEC_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
14633 {"SEC_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
14634 {"SEC_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
14635 {"SEC_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
14636 {"SEC_TDM_RX_1 Port Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
14637 {"SEC_TDM_RX_1 Port Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
14638 {"SEC_TDM_RX_1 Port Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
14639 {"SEC_TDM_RX_1 Port Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
14640 {"SEC_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14641 {"SEC_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14642 {"SEC_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14643 {"SEC_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
14644 {"SEC_TDM_RX_1", NULL, "SEC_TDM_RX_1 Port Mixer"},
14645
14646 {"SEC_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14647 {"SEC_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
14648 {"SEC_TDM_RX_2 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14649 {"SEC_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
14650 {"SEC_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
14651 {"SEC_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
14652 {"SEC_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
14653 {"SEC_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
14654 {"SEC_TDM_RX_2 Port Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
14655 {"SEC_TDM_RX_2 Port Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
14656 {"SEC_TDM_RX_2 Port Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
14657 {"SEC_TDM_RX_2 Port Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
14658 {"SEC_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14659 {"SEC_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14660 {"SEC_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14661 {"SEC_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
14662 {"SEC_TDM_RX_2", NULL, "SEC_TDM_RX_2 Port Mixer"},
14663
14664 {"SEC_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14665 {"SEC_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
14666 {"SEC_TDM_RX_3 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14667 {"SEC_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
14668 {"SEC_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
14669 {"SEC_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
14670 {"SEC_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
14671 {"SEC_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
14672 {"SEC_TDM_RX_3 Port Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
14673 {"SEC_TDM_RX_3 Port Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
14674 {"SEC_TDM_RX_3 Port Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
14675 {"SEC_TDM_RX_3 Port Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
14676 {"SEC_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14677 {"SEC_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14678 {"SEC_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14679 {"SEC_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
14680 {"SEC_TDM_RX_3", NULL, "SEC_TDM_RX_3 Port Mixer"},
14681
14682 {"TERT_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14683 {"TERT_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
14684 {"TERT_TDM_RX_0 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14685 {"TERT_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
14686 {"TERT_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
14687 {"TERT_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
14688 {"TERT_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
14689 {"TERT_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
14690 {"TERT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14691 {"TERT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14692 {"TERT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14693 {"TERT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14694 {"TERT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14695 {"TERT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14696 {"TERT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14697 {"TERT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
14698 {"TERT_TDM_RX_0", NULL, "TERT_TDM_RX_0 Port Mixer"},
14699
14700 {"TERT_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14701 {"TERT_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
14702 {"TERT_TDM_RX_1 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14703 {"TERT_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
14704 {"TERT_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
14705 {"TERT_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
14706 {"TERT_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
14707 {"TERT_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
14708 {"TERT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14709 {"TERT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14710 {"TERT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14711 {"TERT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14712 {"TERT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14713 {"TERT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14714 {"TERT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14715 {"TERT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
14716 {"TERT_TDM_RX_1", NULL, "TERT_TDM_RX_1 Port Mixer"},
14717
14718 {"TERT_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14719 {"TERT_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
14720 {"TERT_TDM_RX_2 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14721 {"TERT_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
14722 {"TERT_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
14723 {"TERT_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
14724 {"TERT_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
14725 {"TERT_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
14726 {"TERT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14727 {"TERT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14728 {"TERT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14729 {"TERT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14730 {"TERT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14731 {"TERT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14732 {"TERT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14733 {"TERT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
14734 {"TERT_TDM_RX_2", NULL, "TERT_TDM_RX_2 Port Mixer"},
14735
14736 {"TERT_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14737 {"TERT_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
14738 {"TERT_TDM_RX_3 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14739 {"TERT_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
14740 {"TERT_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
14741 {"TERT_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
14742 {"TERT_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
14743 {"TERT_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
14744 {"TERT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14745 {"TERT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14746 {"TERT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14747 {"TERT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14748 {"TERT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14749 {"TERT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14750 {"TERT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14751 {"TERT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
14752 {"TERT_TDM_RX_3", NULL, "TERT_TDM_RX_3 Port Mixer"},
14753
14754 {"QUAT_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14755 {"QUAT_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
14756 {"QUAT_TDM_RX_0 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14757 {"QUAT_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
14758 {"QUAT_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
14759 {"QUAT_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
14760 {"QUAT_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
14761 {"QUAT_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
14762 {"QUAT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14763 {"QUAT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14764 {"QUAT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14765 {"QUAT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14766 {"QUAT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14767 {"QUAT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14768 {"QUAT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14769 {"QUAT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
14770 {"QUAT_TDM_RX_0", NULL, "QUAT_TDM_RX_0 Port Mixer"},
14771
14772 {"QUAT_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14773 {"QUAT_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
14774 {"QUAT_TDM_RX_1 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14775 {"QUAT_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
14776 {"QUAT_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
14777 {"QUAT_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
14778 {"QUAT_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
14779 {"QUAT_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
14780 {"QUAT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14781 {"QUAT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14782 {"QUAT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14783 {"QUAT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14784 {"QUAT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14785 {"QUAT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14786 {"QUAT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14787 {"QUAT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
14788 {"QUAT_TDM_RX_1", NULL, "QUAT_TDM_RX_1 Port Mixer"},
14789
14790 {"QUAT_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14791 {"QUAT_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
14792 {"QUAT_TDM_RX_2 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14793 {"QUAT_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
14794 {"QUAT_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
14795 {"QUAT_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
14796 {"QUAT_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
14797 {"QUAT_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
14798 {"QUAT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14799 {"QUAT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14800 {"QUAT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14801 {"QUAT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14802 {"QUAT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14803 {"QUAT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14804 {"QUAT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14805 {"QUAT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
14806 {"QUAT_TDM_RX_2", NULL, "QUAT_TDM_RX_2 Port Mixer"},
14807
14808 {"QUAT_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14809 {"QUAT_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
14810 {"QUAT_TDM_RX_3 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14811 {"QUAT_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
14812 {"QUAT_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
14813 {"QUAT_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
14814 {"QUAT_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
14815 {"QUAT_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
14816 {"QUAT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14817 {"QUAT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14818 {"QUAT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14819 {"QUAT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14820 {"QUAT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14821 {"QUAT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14822 {"QUAT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14823 {"QUAT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
14824 {"QUAT_TDM_RX_3", NULL, "QUAT_TDM_RX_3 Port Mixer"},
14825
14826 {"INT0_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14827 {"INT0_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
14828 {"INT0_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14829 {"INT0_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14830 {"INT0_MI2S_RX Port Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14831 {"INT0_MI2S_RX Port Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
14832 {"INT0_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
14833 {"INT0_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
14834 {"INT0_MI2S_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
14835 {"INT0_MI2S_RX", NULL, "INT0_MI2S_RX Port Mixer"},
14836
14837 {"INT4_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14838 {"INT4_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
14839 {"INT4_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14840 {"INT4_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14841 {"INT4_MI2S_RX Port Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14842 {"INT4_MI2S_RX Port Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
14843 {"INT4_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
14844 {"INT4_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
14845 {"INT4_MI2S_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
14846 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX Port Mixer"},
14847
14848 {"SLIMBUS_0_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
14849 {"SLIMBUS_0_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14850 {"SLIMBUS_0_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
14851 {"SLIMBUS_0_RX Port Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
14852 {"SLIMBUS_0_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
14853 {"SLIMBUS_0_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
14854 {"SLIMBUS_0_RX Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
14855 {"SLIMBUS_0_RX Port Mixer", "TERT_AUXPCM_UL_TX", "TERT_AUX_PCM_TX"},
14856 {"SLIMBUS_0_RX Port Mixer", "QUAT_AUXPCM_UL_TX", "QUAT_AUX_PCM_TX"},
14857 {"SLIMBUS_0_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
14858 {"SLIMBUS_0_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14859 {"SLIMBUS_0_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
14860 {"SLIMBUS_0_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14861 {"SLIMBUS_0_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14862 {"SLIMBUS_0_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
14863 {"SLIMBUS_0_RX", NULL, "SLIMBUS_0_RX Port Mixer"},
14864 {"AFE_PCM_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
14865 {"AFE_PCM_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
14866 {"PCM_RX", NULL, "AFE_PCM_RX Port Mixer"},
14867 {"USB_AUDIO_RX Port Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
14868 {"USB_AUDIO_RX", NULL, "USB_AUDIO_RX Port Mixer"},
14869 {"USB_DL_HL", "Switch", "USBAUDIO_DL_HL"},
14870 {"USB_AUDIO_RX", NULL, "USB_DL_HL"},
14871 {"USBAUDIO_UL_HL", NULL, "USB_AUDIO_TX"},
14872
14873
14874 {"AUX_PCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
14875 {"AUX_PCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14876 {"AUX_PCM_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
14877 {"AUX_PCM_RX Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
14878 {"AUX_PCM_RX Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14879 {"AUX_PCM_RX", NULL, "AUX_PCM_RX Port Mixer"},
14880
14881 {"SEC_AUXPCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
14882 {"SEC_AUXPCM_RX Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
14883 {"SEC_AUXPCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14884 {"SEC_AUX_PCM_RX", NULL, "SEC_AUXPCM_RX Port Mixer"},
14885
14886 {"TERT_AUXPCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
14887 {"TERT_AUXPCM_RX Port Mixer", "TERT_AUXPCM_UL_TX", "TERT_AUX_PCM_TX"},
14888 {"TERT_AUXPCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14889 {"TERT_AUX_PCM_RX", NULL, "TERT_AUXPCM_RX Port Mixer"},
14890
14891 {"QUAT_AUXPCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
14892 {"QUAT_AUXPCM_RX Port Mixer", "QUAT_AUXPCM_UL_TX", "QUAT_AUX_PCM_TX"},
14893 {"QUAT_AUXPCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14894 {"QUAT_AUX_PCM_RX", NULL, "QUAT_AUXPCM_RX Port Mixer"},
14895
14896 {"Voice Stub Tx Mixer", "STUB_TX_HL", "STUB_TX"},
14897 {"Voice Stub Tx Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
14898 {"Voice Stub Tx Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
14899 {"Voice Stub Tx Mixer", "STUB_1_TX_HL", "STUB_1_TX"},
14900 {"Voice Stub Tx Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
14901 {"Voice Stub Tx Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
14902 {"Voice Stub Tx Mixer", "TERT_AUXPCM_UL_TX", "TERT_AUX_PCM_TX"},
14903 {"Voice Stub Tx Mixer", "QUAT_AUXPCM_UL_TX", "QUAT_AUX_PCM_TX"},
14904 {"Voice Stub Tx Mixer", "MI2S_TX", "MI2S_TX"},
14905 {"Voice Stub Tx Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14906 {"Voice Stub Tx Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14907 {"Voice Stub Tx Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14908 {"Voice Stub Tx Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14909 {"Voice Stub Tx Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14910 {"Voice Stub Tx Mixer", "SLIM_3_TX", "SLIMBUS_3_TX"},
14911 {"Voice Stub Tx Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
14912 {"Voice Stub Tx Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
14913 {"Voice Stub Tx Mixer", "AFE_PCM_TX", "PCM_TX"},
14914 {"VOICE_STUB_UL", NULL, "Voice Stub Tx Mixer"},
14915
14916 {"VoLTE Stub Tx Mixer", "STUB_TX_HL", "STUB_TX"},
14917 {"VoLTE Stub Tx Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
14918 {"VoLTE Stub Tx Mixer", "STUB_1_TX_HL", "STUB_1_TX"},
14919 {"VoLTE Stub Tx Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
14920 {"VoLTE Stub Tx Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14921 {"VoLTE Stub Tx Mixer", "SLIM_3_TX", "SLIMBUS_3_TX"},
14922 {"VoLTE Stub Tx Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
14923 {"VoLTE Stub Tx Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
14924 {"VoLTE Stub Tx Mixer", "AFE_PCM_TX", "PCM_TX"},
14925 {"VoLTE Stub Tx Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14926 {"VoLTE Stub Tx Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14927 {"VOLTE_STUB_UL", NULL, "VoLTE Stub Tx Mixer"},
14928
14929 {"Voice2 Stub Tx Mixer", "STUB_TX_HL", "STUB_TX"},
14930 {"Voice2 Stub Tx Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
14931 {"Voice2 Stub Tx Mixer", "STUB_1_TX_HL", "STUB_1_TX"},
14932 {"Voice2 Stub Tx Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
14933 {"Voice2 Stub Tx Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14934 {"Voice2 Stub Tx Mixer", "SLIM_3_TX", "SLIMBUS_3_TX"},
14935 {"Voice2 Stub Tx Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
14936 {"Voice2 Stub Tx Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
14937 {"Voice2 Stub Tx Mixer", "AFE_PCM_TX", "PCM_TX"},
14938 {"Voice2 Stub Tx Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14939 {"Voice2 Stub Tx Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14940 {"VOICE2_STUB_UL", NULL, "Voice2 Stub Tx Mixer"},
14941
14942 {"STUB_RX Mixer", "Voice Stub", "VOICE_STUB_DL"},
14943 {"STUB_RX Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
14944 {"STUB_RX Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
14945 {"STUB_RX", NULL, "STUB_RX Mixer"},
14946 {"SLIMBUS_1_RX Mixer", "Voice Stub", "VOICE_STUB_DL"},
14947 {"SLIMBUS_1_RX Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
14948 {"SLIMBUS_1_RX Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
14949 {"SLIMBUS_1_RX", NULL, "SLIMBUS_1_RX Mixer"},
14950 {"AFE_PCM_RX_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
14951 {"AFE_PCM_RX_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
14952 {"AFE_PCM_RX_Voice Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
14953 {"SLIMBUS_3_RX_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
14954 {"SLIMBUS_3_RX_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
14955 {"SLIMBUS_3_RX_Voice Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
14956 {"SLIMBUS_3_RX", NULL, "SLIMBUS_3_RX_Voice Mixer"},
14957
14958 {"SLIM_7_RX_Voice Mixer", "CSVoice", "CS-VOICE_DL1"},
14959 {"SLIM_7_RX_Voice Mixer", "Voice2", "VOICE2_DL"},
14960 {"SLIM_7_RX_Voice Mixer", "VoLTE", "VoLTE_DL"},
14961 {"SLIM_7_RX_Voice Mixer", "VoWLAN", "VoWLAN_DL"},
14962 {"SLIM_7_RX_Voice Mixer", "Voip", "VOIP_DL"},
14963 {"SLIM_7_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
14964 {"SLIM_7_RX_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
14965 {"SLIM_7_RX_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
14966 {"SLIM_7_RX_Voice Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
14967 {"SLIM_7_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
14968 {"SLIM_7_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
14969 {"SLIM_7_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
14970 {"SLIMBUS_7_RX", NULL, "SLIM_7_RX_Voice Mixer"},
14971
14972 {"SLIM_8_RX_Voice Mixer", "CSVoice", "CS-VOICE_DL1"},
14973 {"SLIM_8_RX_Voice Mixer", "Voice2", "VOICE2_DL"},
14974 {"SLIM_8_RX_Voice Mixer", "VoLTE", "VoLTE_DL"},
14975 {"SLIM_8_RX_Voice Mixer", "VoWLAN", "VoWLAN_DL"},
14976 {"SLIM_8_RX_Voice Mixer", "Voip", "VOIP_DL"},
14977 {"SLIM_8_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
14978 {"SLIM_8_RX_Voice Mixer", "Voice Stub", "VOICE_STUB_DL"},
14979 {"SLIM_8_RX_Voice Mixer", "Voice2 Stub", "VOICE2_STUB_DL"},
14980 {"SLIM_8_RX_Voice Mixer", "VoLTE Stub", "VOLTE_STUB_DL"},
14981 {"SLIM_8_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
14982 {"SLIM_8_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
14983 {"SLIM_8_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
14984 {"SLIMBUS_8_RX", NULL, "SLIM_8_RX_Voice Mixer"},
14985
14986 {"SLIMBUS_1_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
14987 {"SLIMBUS_1_RX Port Mixer", "AFE_PCM_TX", "PCM_TX"},
14988 {"SLIMBUS_1_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
14989 {"SLIMBUS_1_RX", NULL, "SLIMBUS_1_RX Port Mixer"},
14990 {"INTERNAL_BT_SCO_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
14991 {"INTERNAL_BT_SCO_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14992 {"INT_BT_SCO_RX", NULL, "INTERNAL_BT_SCO_RX Port Mixer"},
14993 {"SLIMBUS_3_RX Port Mixer", "INTERNAL_BT_SCO_RX", "INT_BT_SCO_RX"},
14994 {"SLIMBUS_3_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
14995 {"SLIMBUS_3_RX Port Mixer", "AFE_PCM_RX", "PCM_RX"},
14996 {"SLIMBUS_3_RX Port Mixer", "AUX_PCM_RX", "AUX_PCM_RX"},
14997 {"SLIMBUS_3_RX Port Mixer", "SLIM_0_RX", "SLIMBUS_0_RX"},
14998 {"SLIMBUS_3_RX", NULL, "SLIMBUS_3_RX Port Mixer"},
14999
15000 {"SLIMBUS_6_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15001 {"SLIMBUS_6_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
15002 {"SLIMBUS_6_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
15003 {"SLIMBUS_6_RX Port Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
15004 {"SLIMBUS_6_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
15005 {"SLIMBUS_6_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15006 {"SLIMBUS_6_RX Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15007 {"SLIMBUS_6_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
15008 {"SLIMBUS_6_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15009 {"SLIMBUS_6_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15010 {"SLIMBUS_6_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15011 {"SLIMBUS_6_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15012 {"SLIMBUS_6_RX", NULL, "SLIMBUS_6_RX Port Mixer"},
15013
15014 {"HDMI_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
15015 {"HDMI", NULL, "HDMI_RX Port Mixer"},
15016
15017 {"DISPLAY_PORT_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
15018 {"DISPLAY_PORT", NULL, "DISPLAY_PORT_RX Port Mixer"},
15019
15020 {"SEC_I2S_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
15021 {"SEC_I2S_RX", NULL, "SEC_I2S_RX Port Mixer"},
15022
15023 {"MI2S_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
15024 {"MI2S_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
15025 {"MI2S_RX", NULL, "MI2S_RX Port Mixer"},
15026
15027 {"PRI_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15028 {"PRI_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15029 {"PRI_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15030 {"PRI_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15031 {"PRI_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
15032 {"PRI_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15033 {"PRI_MI2S_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15034 {"PRI_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
15035 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX Port Mixer"},
15036
15037 {"SEC_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15038 {"SEC_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15039 {"SEC_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15040 {"SEC_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15041 {"SEC_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
15042 {"SEC_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15043 {"SEC_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
15044 {"SEC_MI2S_RX", NULL, "SEC_MI2S_RX Port Mixer"},
15045
15046 {"TERT_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15047 {"TERT_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15048 {"TERT_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15049 {"TERT_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15050 {"TERT_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
15051 {"TERT_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
15052 {"TERT_MI2S_RX", NULL, "TERT_MI2S_RX Port Mixer"},
15053
15054 {"QUAT_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15055 {"QUAT_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15056 {"QUAT_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15057 {"QUAT_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15058 {"QUAT_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
15059 {"QUAT_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15060 {"QUAT_MI2S_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15061 {"QUAT_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
15062 {"QUAT_MI2S_RX", NULL, "QUAT_MI2S_RX Port Mixer"},
15063
15064 /* Backend Enablement */
15065
15066 {"BE_OUT", NULL, "PRI_I2S_RX"},
15067 {"BE_OUT", NULL, "SEC_I2S_RX"},
15068 {"BE_OUT", NULL, "SLIMBUS_0_RX"},
15069 {"BE_OUT", NULL, "SLIMBUS_1_RX"},
15070 {"BE_OUT", NULL, "SLIMBUS_2_RX"},
15071 {"BE_OUT", NULL, "SLIMBUS_3_RX"},
15072 {"BE_OUT", NULL, "SLIMBUS_4_RX"},
15073 {"BE_OUT", NULL, "SLIMBUS_5_RX"},
15074 {"BE_OUT", NULL, "SLIMBUS_6_RX"},
15075 {"BE_OUT", NULL, "SLIMBUS_7_RX"},
15076 {"BE_OUT", NULL, "SLIMBUS_8_RX"},
15077 {"BE_OUT", NULL, "USB_AUDIO_RX"},
15078 {"BE_OUT", NULL, "HDMI"},
15079 {"BE_OUT", NULL, "DISPLAY_PORT"},
15080 {"BE_OUT", NULL, "SPDIF_RX"},
15081 {"BE_OUT", NULL, "MI2S_RX"},
15082 {"BE_OUT", NULL, "QUAT_MI2S_RX"},
15083 {"BE_OUT", NULL, "QUIN_MI2S_RX"},
15084 {"BE_OUT", NULL, "TERT_MI2S_RX"},
15085 {"BE_OUT", NULL, "SEC_MI2S_RX"},
15086 {"BE_OUT", NULL, "SEC_MI2S_RX_SD1"},
15087 {"BE_OUT", NULL, "PRI_MI2S_RX"},
15088 {"BE_OUT", NULL, "INT0_MI2S_RX"},
15089 {"BE_OUT", NULL, "INT4_MI2S_RX"},
15090 {"BE_OUT", NULL, "INT_BT_SCO_RX"},
15091 {"BE_OUT", NULL, "INT_BT_A2DP_RX"},
15092 {"BE_OUT", NULL, "INT_FM_RX"},
15093 {"BE_OUT", NULL, "PCM_RX"},
15094 {"BE_OUT", NULL, "SLIMBUS_3_RX"},
15095 {"BE_OUT", NULL, "AUX_PCM_RX"},
15096 {"BE_OUT", NULL, "SEC_AUX_PCM_RX"},
15097 {"BE_OUT", NULL, "TERT_AUX_PCM_RX"},
15098 {"BE_OUT", NULL, "QUAT_AUX_PCM_RX"},
15099 {"BE_OUT", NULL, "INT_BT_SCO_RX"},
15100 {"BE_OUT", NULL, "INT_FM_RX"},
15101 {"BE_OUT", NULL, "PCM_RX"},
15102 {"BE_OUT", NULL, "SLIMBUS_3_RX"},
15103 {"BE_OUT", NULL, "VOICE_PLAYBACK_TX"},
15104 {"BE_OUT", NULL, "VOICE2_PLAYBACK_TX"},
15105 {"BE_OUT", NULL, "PRI_TDM_RX_0"},
15106 {"BE_OUT", NULL, "PRI_TDM_RX_1"},
15107 {"BE_OUT", NULL, "PRI_TDM_RX_2"},
15108 {"BE_OUT", NULL, "PRI_TDM_RX_3"},
15109 {"BE_OUT", NULL, "SEC_TDM_RX_0"},
15110 {"BE_OUT", NULL, "SEC_TDM_RX_1"},
15111 {"BE_OUT", NULL, "SEC_TDM_RX_2"},
15112 {"BE_OUT", NULL, "SEC_TDM_RX_3"},
15113 {"BE_OUT", NULL, "TERT_TDM_RX_0"},
15114 {"BE_OUT", NULL, "TERT_TDM_RX_1"},
15115 {"BE_OUT", NULL, "TERT_TDM_RX_2"},
15116 {"BE_OUT", NULL, "TERT_TDM_RX_3"},
15117 {"BE_OUT", NULL, "TERT_TDM_RX_4"},
15118 {"BE_OUT", NULL, "QUAT_TDM_RX_0"},
15119 {"BE_OUT", NULL, "QUAT_TDM_RX_1"},
15120 {"BE_OUT", NULL, "QUAT_TDM_RX_2"},
15121 {"BE_OUT", NULL, "QUAT_TDM_RX_3"},
15122
15123 {"PRI_I2S_TX", NULL, "BE_IN"},
15124 {"MI2S_TX", NULL, "BE_IN"},
15125 {"QUAT_MI2S_TX", NULL, "BE_IN"},
15126 {"QUIN_MI2S_TX", NULL, "BE_IN"},
15127 {"PRI_MI2S_TX", NULL, "BE_IN"},
15128 {"TERT_MI2S_TX", NULL, "BE_IN"},
15129 {"INT2_MI2S_TX", NULL, "BE_IN"},
15130 {"INT3_MI2S_TX", NULL, "BE_IN"},
15131 {"INT5_MI2S_TX", NULL, "BE_IN"},
15132 {"SEC_MI2S_TX", NULL, "BE_IN"},
15133 {"SENARY_MI2S_TX", NULL, "BE_IN" },
15134 {"SLIMBUS_0_TX", NULL, "BE_IN" },
15135 {"SLIMBUS_1_TX", NULL, "BE_IN" },
15136 {"SLIMBUS_3_TX", NULL, "BE_IN" },
15137 {"SLIMBUS_4_TX", NULL, "BE_IN" },
15138 {"SLIMBUS_5_TX", NULL, "BE_IN" },
15139 {"SLIMBUS_6_TX", NULL, "BE_IN" },
15140 {"SLIMBUS_7_TX", NULL, "BE_IN" },
15141 {"SLIMBUS_8_TX", NULL, "BE_IN" },
15142 {"USB_AUDIO_TX", NULL, "BE_IN" },
15143 {"INT_BT_SCO_TX", NULL, "BE_IN"},
15144 {"INT_FM_TX", NULL, "BE_IN"},
15145 {"PCM_TX", NULL, "BE_IN"},
15146 {"BE_OUT", NULL, "SLIMBUS_3_RX"},
15147 {"BE_OUT", NULL, "STUB_RX"},
15148 {"STUB_TX", NULL, "BE_IN"},
15149 {"STUB_1_TX", NULL, "BE_IN"},
15150 {"BE_OUT", NULL, "AUX_PCM_RX"},
15151 {"AUX_PCM_TX", NULL, "BE_IN"},
15152 {"SEC_AUX_PCM_TX", NULL, "BE_IN"},
15153 {"TERT_AUX_PCM_TX", NULL, "BE_IN"},
15154 {"QUAT_AUX_PCM_TX", NULL, "BE_IN"},
15155 {"INCALL_RECORD_TX", NULL, "BE_IN"},
15156 {"INCALL_RECORD_RX", NULL, "BE_IN"},
15157 {"SLIM0_RX_VI_FB_LCH_MUX", "SLIM4_TX", "SLIMBUS_4_TX"},
15158 {"SLIM0_RX_VI_FB_RCH_MUX", "SLIM4_TX", "SLIMBUS_4_TX"},
15159 {"PRI_MI2S_RX_VI_FB_MUX", "SENARY_TX", "SENARY_TX"},
15160 {"INT4_MI2S_RX_VI_FB_MONO_CH_MUX", "INT5_MI2S_TX", "INT5_MI2S_TX"},
15161 {"INT4_MI2S_RX_VI_FB_STEREO_CH_MUX", "INT5_MI2S_TX", "INT5_MI2S_TX"},
15162 {"SLIMBUS_0_RX", NULL, "SLIM0_RX_VI_FB_LCH_MUX"},
15163 {"SLIMBUS_0_RX", NULL, "SLIM0_RX_VI_FB_RCH_MUX"},
15164 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX_VI_FB_MUX"},
15165 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX_VI_FB_MONO_CH_MUX"},
15166 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX_VI_FB_STEREO_CH_MUX"},
15167 {"PRI_TDM_TX_0", NULL, "BE_IN"},
15168 {"PRI_TDM_TX_1", NULL, "BE_IN"},
15169 {"PRI_TDM_TX_2", NULL, "BE_IN"},
15170 {"PRI_TDM_TX_3", NULL, "BE_IN"},
15171 {"SEC_TDM_TX_0", NULL, "BE_IN"},
15172 {"SEC_TDM_TX_1", NULL, "BE_IN"},
15173 {"SEC_TDM_TX_2", NULL, "BE_IN"},
15174 {"SEC_TDM_TX_3", NULL, "BE_IN"},
15175 {"TERT_TDM_TX_0", NULL, "BE_IN"},
15176 {"TERT_TDM_TX_1", NULL, "BE_IN"},
15177 {"TERT_TDM_TX_2", NULL, "BE_IN"},
15178 {"TERT_TDM_TX_3", NULL, "BE_IN"},
15179 {"QUAT_TDM_TX_0", NULL, "BE_IN"},
15180 {"QUAT_TDM_TX_1", NULL, "BE_IN"},
15181 {"QUAT_TDM_TX_2", NULL, "BE_IN"},
15182 {"QUAT_TDM_TX_3", NULL, "BE_IN"},
15183};
15184
15185static int msm_pcm_routing_hw_params(struct snd_pcm_substream *substream,
15186 struct snd_pcm_hw_params *params)
15187{
15188 struct snd_soc_pcm_runtime *rtd = substream->private_data;
15189 unsigned int be_id = rtd->dai_link->id;
15190
15191 if (be_id >= MSM_BACKEND_DAI_MAX) {
15192 pr_err("%s: unexpected BE id %d\n", __func__, be_id);
15193 return -EINVAL;
15194 }
15195
15196 mutex_lock(&routing_lock);
15197 msm_bedais[be_id].sample_rate = params_rate(params);
15198 msm_bedais[be_id].channel = params_channels(params);
15199 msm_bedais[be_id].format = params_format(params);
15200 pr_debug("%s: BE Sample Rate (%d) format (%d) BE id %d\n",
15201 __func__, msm_bedais[be_id].sample_rate,
15202 msm_bedais[be_id].format, be_id);
15203 mutex_unlock(&routing_lock);
15204 return 0;
15205}
15206
15207static int msm_pcm_routing_close(struct snd_pcm_substream *substream)
15208{
15209 struct snd_soc_pcm_runtime *rtd = substream->private_data;
15210 unsigned int be_id = rtd->dai_link->id;
15211 int i, session_type, path_type, topology;
15212 struct msm_pcm_routing_bdai_data *bedai;
15213 struct msm_pcm_routing_fdai_data *fdai;
15214
15215 pr_debug("%s: substream->pcm->id:%s\n",
15216 __func__, substream->pcm->id);
15217
15218 if (be_id >= MSM_BACKEND_DAI_MAX) {
15219 pr_err("%s: unexpected BE id %d\n", __func__, be_id);
15220 return -EINVAL;
15221 }
15222
15223 bedai = &msm_bedais[be_id];
15224 session_type = (substream->stream == SNDRV_PCM_STREAM_PLAYBACK ?
15225 0 : 1);
15226 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
15227 path_type = ADM_PATH_PLAYBACK;
15228 else
15229 path_type = ADM_PATH_LIVE_REC;
15230
15231 mutex_lock(&routing_lock);
15232 for_each_set_bit(i, &bedai->fe_sessions[0], MSM_FRONTEND_DAI_MAX) {
15233 if (!is_mm_lsm_fe_id(i))
15234 continue;
15235 fdai = &fe_dai_map[i][session_type];
15236 if (fdai->strm_id != INVALID_SESSION) {
15237 int idx;
15238 int port_id;
15239 unsigned long copp =
15240 session_copp_map[i][session_type][be_id];
15241 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++)
15242 if (test_bit(idx, &copp))
15243 break;
15244 fdai->be_srate = bedai->sample_rate;
15245 port_id = bedai->port_id;
15246 topology = adm_get_topology_for_port_copp_idx(port_id,
15247 idx);
15248 adm_close(bedai->port_id, fdai->perf_mode, idx);
15249 pr_debug("%s: copp:%ld,idx bit fe:%d, type:%d,be:%d topology=0x%x\n",
15250 __func__, copp, i, session_type, be_id,
15251 topology);
15252 clear_bit(idx,
15253 &session_copp_map[i][session_type][be_id]);
15254 if ((fdai->perf_mode == LEGACY_PCM_MODE) &&
15255 (bedai->passthr_mode[i] == LEGACY_PCM))
15256 msm_pcm_routing_deinit_pp(bedai->port_id,
15257 topology);
15258 }
15259 }
15260
15261 bedai->active = 0;
15262 bedai->sample_rate = 0;
15263 bedai->channel = 0;
15264 for (i = 0; i < MSM_FRONTEND_DAI_MAX; i++) {
15265 if (bedai->passthr_mode[i] != LISTEN)
15266 bedai->passthr_mode[i] = LEGACY_PCM;
15267 }
15268 mutex_unlock(&routing_lock);
15269
15270 return 0;
15271}
15272
15273static int msm_pcm_routing_prepare(struct snd_pcm_substream *substream)
15274{
15275 struct snd_soc_pcm_runtime *rtd = substream->private_data;
15276 unsigned int be_id = rtd->dai_link->id;
15277 int i, path_type, topology;
15278 int session_type = INVALID_SESSION;
15279 struct msm_pcm_routing_bdai_data *bedai;
15280 u32 channels, sample_rate;
15281 uint16_t bits_per_sample = 16, voc_path_type;
15282 struct msm_pcm_routing_fdai_data *fdai;
15283 u32 session_id;
15284 struct media_format_info voc_be_media_format;
15285 bool is_lsm;
15286
15287 pr_debug("%s: substream->pcm->id:%s\n",
15288 __func__, substream->pcm->id);
15289
15290 if (be_id >= MSM_BACKEND_DAI_MAX) {
15291 pr_err("%s: unexpected BE id %d\n", __func__, be_id);
15292 return -EINVAL;
15293 }
15294
15295 bedai = &msm_bedais[be_id];
15296
15297 mutex_lock(&routing_lock);
15298 if (bedai->active == 1)
15299 goto done; /* Ignore prepare if back-end already active */
15300
15301 /* AFE port is not active at this point. However, still
15302 * go ahead setting active flag under the notion that
15303 * QDSP6 is able to handle ADM starting before AFE port
15304 * is started.
15305 */
15306 bedai->active = 1;
15307
15308 for_each_set_bit(i, &bedai->fe_sessions[0], MSM_FRONTEND_DAI_MAX) {
15309 if (!(is_mm_lsm_fe_id(i) &&
15310 route_check_fe_id_adm_support(i)))
15311 continue;
15312
15313 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
15314 if (bedai->passthr_mode[i] != LEGACY_PCM)
15315 path_type = ADM_PATH_COMPRESSED_RX;
15316 else
15317 path_type = ADM_PATH_PLAYBACK;
15318 session_type = SESSION_TYPE_RX;
15319 } else {
15320 path_type = ADM_PATH_LIVE_REC;
15321 session_type = SESSION_TYPE_TX;
15322 }
15323
15324 is_lsm = (i >= MSM_FRONTEND_DAI_LSM1) &&
15325 (i <= MSM_FRONTEND_DAI_LSM8);
15326 fdai = &fe_dai_map[i][session_type];
15327 if (fdai->strm_id != INVALID_SESSION) {
15328 int app_type, app_type_idx, copp_idx, acdb_dev_id;
15329
15330 if (session_type == SESSION_TYPE_TX &&
15331 fdai->be_srate &&
15332 (fdai->be_srate != bedai->sample_rate)) {
15333 pr_debug("%s: flush strm %d diff BE rates\n",
15334 __func__,
15335 fdai->strm_id);
15336
15337 if (fdai->event_info.event_func)
15338 fdai->event_info.event_func(
15339 MSM_PCM_RT_EVT_BUF_RECFG,
15340 fdai->event_info.priv_data);
15341 fdai->be_srate = 0; /* might not need it */
15342 }
15343 bits_per_sample = msm_routing_get_bit_width(
15344 bedai->format);
15345
15346 app_type =
15347 fe_dai_app_type_cfg[i][session_type][be_id].app_type;
15348 if (app_type && is_lsm) {
15349 app_type_idx =
15350 msm_pcm_routing_get_lsm_app_type_idx(app_type);
15351 sample_rate =
15352 fe_dai_app_type_cfg[i][session_type][be_id]
15353 .sample_rate;
15354 bits_per_sample =
15355 lsm_app_type_cfg[app_type_idx].bit_width;
15356 } else if (app_type) {
15357 app_type_idx =
15358 msm_pcm_routing_get_app_type_idx(app_type);
15359 sample_rate =
15360 fe_dai_app_type_cfg[i][session_type]
15361 [be_id].sample_rate;
15362 bits_per_sample =
15363 app_type_cfg[app_type_idx].bit_width;
15364 } else
15365 sample_rate = bedai->sample_rate;
15366 /*
15367 * check if ADM needs to be configured with different
15368 * channel mapping than backend
15369 */
15370 if (!bedai->adm_override_ch)
15371 channels = bedai->channel;
15372 else
15373 channels = bedai->adm_override_ch;
15374 acdb_dev_id =
15375 fe_dai_app_type_cfg[i][session_type][be_id].acdb_dev_id;
15376 topology = msm_routing_get_adm_topology(i, session_type,
15377 be_id);
15378 copp_idx = adm_open(bedai->port_id, path_type,
15379 sample_rate, channels, topology,
15380 fdai->perf_mode, bits_per_sample,
15381 app_type, acdb_dev_id);
15382 if ((copp_idx < 0) ||
15383 (copp_idx >= MAX_COPPS_PER_PORT)) {
15384 pr_err("%s: adm open failed\n", __func__);
15385 mutex_unlock(&routing_lock);
15386 return -EINVAL;
15387 }
15388 pr_debug("%s: setting idx bit of fe:%d, type: %d, be:%d\n",
15389 __func__, i, session_type, be_id);
15390 set_bit(copp_idx,
15391 &session_copp_map[i][session_type][be_id]);
15392
15393 if (msm_is_resample_needed(
15394 sample_rate,
15395 bedai->sample_rate))
15396 adm_copp_mfc_cfg(
15397 bedai->port_id, copp_idx,
15398 bedai->sample_rate);
15399
15400 msm_pcm_routing_build_matrix(i, session_type, path_type,
15401 fdai->perf_mode,
15402 bedai->passthr_mode[i]);
15403 if ((fdai->perf_mode == LEGACY_PCM_MODE) &&
15404 (bedai->passthr_mode[i] == LEGACY_PCM))
15405 msm_pcm_routing_cfg_pp(bedai->port_id, copp_idx,
15406 topology, channels);
15407 }
15408 }
15409
15410 for_each_set_bit(i, &bedai->fe_sessions[0], MSM_FRONTEND_DAI_MAX) {
15411 session_id = msm_pcm_routing_get_voc_sessionid(i);
15412 if (session_id) {
15413 pr_debug("%s voice session_id: 0x%x\n", __func__,
15414 session_id);
15415
15416 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
15417 voc_path_type = RX_PATH;
15418 else
15419 voc_path_type = TX_PATH;
15420
15421 voc_set_route_flag(session_id, voc_path_type, 1);
15422
15423 memset(&voc_be_media_format, 0,
15424 sizeof(struct media_format_info));
15425
15426 voc_be_media_format.port_id = bedai->port_id;
15427 voc_be_media_format.num_channels = bedai->channel;
15428 voc_be_media_format.sample_rate = bedai->sample_rate;
15429 voc_be_media_format.bits_per_sample = bedai->format;
15430 /* Defaulting this to 1 for voice call usecases */
15431 voc_be_media_format.channel_mapping[0] = 1;
15432
15433 voc_set_device_config(session_id, voc_path_type,
15434 &voc_be_media_format);
15435
15436 if (voc_get_route_flag(session_id, RX_PATH) &&
15437 voc_get_route_flag(session_id, TX_PATH))
15438 voc_enable_device(session_id);
15439 }
15440 }
15441
15442 /* Check if backend is an external ec ref port and set as needed */
15443 if (unlikely(bedai->port_id == voc_get_ext_ec_ref_port_id())) {
15444
15445 memset(&voc_be_media_format, 0,
15446 sizeof(struct media_format_info));
15447
15448 /* Get format info for ec ref port from msm_bedais[] */
15449 voc_be_media_format.port_id = bedai->port_id;
15450 voc_be_media_format.num_channels = bedai->channel;
15451 voc_be_media_format.bits_per_sample = bedai->format;
15452 voc_be_media_format.sample_rate = bedai->sample_rate;
15453 /* Defaulting this to 1 for voice call usecases */
15454 voc_be_media_format.channel_mapping[0] = 1;
15455 voc_set_ext_ec_ref_media_fmt_info(&voc_be_media_format);
15456 pr_debug("%s: EC Ref media format info set to port_id=%d, num_channels=%d, bits_per_sample=%d, sample_rate=%d\n",
15457 __func__, voc_be_media_format.port_id,
15458 voc_be_media_format.num_channels,
15459 voc_be_media_format.bits_per_sample,
15460 voc_be_media_format.sample_rate);
15461 }
15462
15463done:
15464 mutex_unlock(&routing_lock);
15465
15466 return 0;
15467}
15468
15469static int msm_routing_send_device_pp_params(int port_id, int copp_idx,
15470 int fe_id)
15471{
15472 int index, topo_id, be_idx;
15473 unsigned long pp_config = 0;
15474 bool mute_on;
15475 int latency;
15476 bool compr_passthr_mode = true;
15477
15478 pr_debug("%s: port_id %d, copp_idx %d\n", __func__, port_id, copp_idx);
15479
15480 if (port_id != HDMI_RX && port_id != DISPLAY_PORT_RX) {
15481 pr_err("%s: Device pp params on invalid port %d\n",
15482 __func__, port_id);
15483 return -EINVAL;
15484 }
15485
15486 for (be_idx = 0; be_idx < MSM_BACKEND_DAI_MAX; be_idx++) {
15487 if (port_id == msm_bedais[be_idx].port_id)
15488 break;
15489 }
15490
15491 if (be_idx >= MSM_BACKEND_DAI_MAX) {
15492 pr_debug("%s: Invalid be id %d\n", __func__, be_idx);
15493 return -EINVAL;
15494 }
15495
15496 for (index = 0; index < MSM_BACKEND_DAI_PP_PARAMS_REQ_MAX; index++) {
15497 if (msm_bedais_pp_params[index].port_id == port_id)
15498 break;
15499 }
15500 if (index >= MSM_BACKEND_DAI_PP_PARAMS_REQ_MAX) {
15501 pr_err("%s: Invalid backend pp params index %d\n",
15502 __func__, index);
15503 return -EINVAL;
15504 }
15505
15506 topo_id = adm_get_topology_for_port_copp_idx(port_id, copp_idx);
15507 if (topo_id != COMPRESSED_PASSTHROUGH_DEFAULT_TOPOLOGY) {
15508 pr_err("%s: Invalid passthrough topology 0x%x\n",
15509 __func__, topo_id);
15510 return -EINVAL;
15511 }
15512
15513 if ((msm_bedais[be_idx].passthr_mode[fe_id] == LEGACY_PCM) ||
15514 (msm_bedais[be_idx].passthr_mode[fe_id] == LISTEN))
15515 compr_passthr_mode = false;
15516
15517 pp_config = msm_bedais_pp_params[index].pp_params_config;
15518 if (test_bit(ADM_PP_PARAM_MUTE_BIT, &pp_config)) {
15519 pr_debug("%s: ADM_PP_PARAM_MUTE\n", __func__);
15520 clear_bit(ADM_PP_PARAM_MUTE_BIT, &pp_config);
15521 mute_on = msm_bedais_pp_params[index].mute_on;
15522 if ((msm_bedais[be_idx].active) && compr_passthr_mode)
15523 adm_send_compressed_device_mute(port_id,
15524 copp_idx,
15525 mute_on);
15526 }
15527 if (test_bit(ADM_PP_PARAM_LATENCY_BIT, &pp_config)) {
15528 pr_debug("%s: ADM_PP_PARAM_LATENCY\n", __func__);
15529 clear_bit(ADM_PP_PARAM_LATENCY_BIT,
15530 &pp_config);
15531 latency = msm_bedais_pp_params[index].latency;
15532 if ((msm_bedais[be_idx].active) && compr_passthr_mode)
15533 adm_send_compressed_device_latency(port_id,
15534 copp_idx,
15535 latency);
15536 }
15537 return 0;
15538}
15539
15540static int msm_routing_put_device_pp_params_mixer(struct snd_kcontrol *kcontrol,
15541 struct snd_ctl_elem_value *ucontrol)
15542{
15543 int pp_id = ucontrol->value.integer.value[0];
15544 int port_id = 0;
15545 int index, be_idx, i, topo_id, idx;
15546 bool mute;
15547 int latency;
15548 bool compr_passthr_mode = true;
15549
15550 pr_debug("%s: pp_id: 0x%x\n", __func__, pp_id);
15551
15552 for (be_idx = 0; be_idx < MSM_BACKEND_DAI_MAX; be_idx++) {
15553 port_id = msm_bedais[be_idx].port_id;
15554 if (port_id == HDMI_RX || port_id == DISPLAY_PORT_RX)
15555 break;
15556 }
15557
15558 if (be_idx >= MSM_BACKEND_DAI_MAX) {
15559 pr_debug("%s: Invalid be id %d\n", __func__, be_idx);
15560 return -EINVAL;
15561 }
15562
15563 for (index = 0; index < MSM_BACKEND_DAI_PP_PARAMS_REQ_MAX; index++) {
15564 if (msm_bedais_pp_params[index].port_id == port_id)
15565 break;
15566 }
15567 if (index >= MSM_BACKEND_DAI_PP_PARAMS_REQ_MAX) {
15568 pr_err("%s: Invalid pp params backend index %d\n",
15569 __func__, index);
15570 return -EINVAL;
15571 }
15572
15573 for_each_set_bit(i, &msm_bedais[be_idx].fe_sessions[0],
15574 MSM_FRONTEND_DAI_MM_SIZE) {
15575 if ((msm_bedais[be_idx].passthr_mode[i] == LEGACY_PCM) ||
15576 (msm_bedais[be_idx].passthr_mode[i] == LISTEN))
15577 compr_passthr_mode = false;
15578
15579 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++) {
15580 unsigned long copp =
15581 session_copp_map[i]
15582 [SESSION_TYPE_RX][be_idx];
15583 if (!test_bit(idx, &copp))
15584 continue;
15585 topo_id = adm_get_topology_for_port_copp_idx(port_id,
15586 idx);
15587 if (topo_id != COMPRESSED_PASSTHROUGH_DEFAULT_TOPOLOGY)
15588 continue;
15589 pr_debug("%s: port: 0x%x, copp %ld, be active: %d, passt: %d\n",
15590 __func__, port_id, copp, msm_bedais[be_idx].active,
15591 msm_bedais[be_idx].passthr_mode[i]);
15592 switch (pp_id) {
15593 case ADM_PP_PARAM_MUTE_ID:
15594 pr_debug("%s: ADM_PP_PARAM_MUTE\n", __func__);
15595 mute = ucontrol->value.integer.value[1] ? true : false;
15596 msm_bedais_pp_params[index].mute_on = mute;
15597 set_bit(ADM_PP_PARAM_MUTE_BIT,
15598 &msm_bedais_pp_params[index].pp_params_config);
15599 if ((msm_bedais[be_idx].active) && compr_passthr_mode)
15600 adm_send_compressed_device_mute(port_id,
15601 idx, mute);
15602 break;
15603 case ADM_PP_PARAM_LATENCY_ID:
15604 pr_debug("%s: ADM_PP_PARAM_LATENCY\n", __func__);
15605 msm_bedais_pp_params[index].latency =
15606 ucontrol->value.integer.value[1];
15607 set_bit(ADM_PP_PARAM_LATENCY_BIT,
15608 &msm_bedais_pp_params[index].pp_params_config);
15609 latency = msm_bedais_pp_params[index].latency =
15610 ucontrol->value.integer.value[1];
15611 if ((msm_bedais[be_idx].active) && compr_passthr_mode)
15612 adm_send_compressed_device_latency(port_id,
15613 idx, latency);
15614 break;
15615 default:
15616 pr_info("%s, device pp param %d not supported\n",
15617 __func__, pp_id);
15618 break;
15619 }
15620 }
15621 }
15622 return 0;
15623}
15624
15625static int msm_routing_get_device_pp_params_mixer(struct snd_kcontrol *kcontrol,
15626 struct snd_ctl_elem_value *ucontrol)
15627{
15628 pr_debug("%s:msm_routing_get_device_pp_params_mixer", __func__);
15629 return 0;
15630}
15631
15632static const struct snd_kcontrol_new device_pp_params_mixer_controls[] = {
15633 SOC_SINGLE_MULTI_EXT("Device PP Params", SND_SOC_NOPM, 0, 0xFFFFFFFF,
15634 0, 3, msm_routing_get_device_pp_params_mixer,
15635 msm_routing_put_device_pp_params_mixer),
15636};
15637
15638static int msm_aptx_dec_license_control_get(struct snd_kcontrol *kcontrol,
15639 struct snd_ctl_elem_value *ucontrol)
15640{
15641 ucontrol->value.integer.value[0] =
15642 core_get_license_status(ASM_MEDIA_FMT_APTX);
15643 pr_debug("%s: status %ld\n", __func__,
15644 ucontrol->value.integer.value[0]);
15645 return 0;
15646}
15647
15648static int msm_aptx_dec_license_control_put(struct snd_kcontrol *kcontrol,
15649 struct snd_ctl_elem_value *ucontrol)
15650{
15651 int32_t status = 0;
15652
15653 status = core_set_license(ucontrol->value.integer.value[0],
15654 APTX_CLASSIC_DEC_LICENSE_ID);
15655 pr_debug("%s: status %d\n", __func__, status);
15656 return status;
15657}
15658
15659static const struct snd_kcontrol_new aptx_dec_license_controls[] = {
15660 SOC_SINGLE_EXT("APTX Dec License", SND_SOC_NOPM, 0,
15661 0xFFFF, 0, msm_aptx_dec_license_control_get,
15662 msm_aptx_dec_license_control_put),
15663};
15664
15665static int msm_routing_be_dai_name_table_info(struct snd_kcontrol *kcontrol,
15666 struct snd_ctl_elem_info *uinfo)
15667{
15668 uinfo->type = SNDRV_CTL_ELEM_TYPE_BYTES;
15669 uinfo->count = sizeof(be_dai_name_table);
15670 return 0;
15671}
15672
15673static int msm_routing_be_dai_name_table_tlv_get(struct snd_kcontrol *kcontrol,
15674 unsigned int __user *bytes,
15675 unsigned int size)
15676{
15677 int i;
15678 int ret;
15679
15680 if (size < sizeof(be_dai_name_table)) {
15681 pr_err("%s: invalid size %d requested, returning\n",
15682 __func__, size);
15683 ret = -EINVAL;
15684 goto done;
15685 }
15686
15687 /*
15688 * Fill be_dai_name_table from msm_bedais table to reduce code changes
15689 * needed when adding new backends
15690 */
15691 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
15692 be_dai_name_table[i].be_id = i;
15693 strlcpy(be_dai_name_table[i].be_name,
15694 msm_bedais[i].name,
15695 LPASS_BE_NAME_MAX_LENGTH);
15696 }
15697
15698 ret = copy_to_user(bytes, &be_dai_name_table,
15699 sizeof(be_dai_name_table));
15700 if (ret) {
15701 pr_err("%s: failed to copy be_dai_name_table\n", __func__);
15702 ret = -EFAULT;
15703 }
15704
15705done:
15706 return ret;
15707}
15708
15709static const struct snd_kcontrol_new
15710 msm_routing_be_dai_name_table_mixer_controls[] = {
15711 {
15712 .access = SNDRV_CTL_ELEM_ACCESS_TLV_READ |
15713 SNDRV_CTL_ELEM_ACCESS_TLV_CALLBACK,
15714 .info = msm_routing_be_dai_name_table_info,
15715 .name = "Backend DAI Name Table",
15716 .tlv.c = snd_soc_bytes_tlv_callback,
15717 .private_value = (unsigned long) &(struct soc_bytes_ext) {
15718 .max = sizeof(be_dai_name_table),
15719 .get = msm_routing_be_dai_name_table_tlv_get,
15720 }
15721 },
15722};
15723
15724static int msm_routing_stereo_channel_reverse_control_get(
15725 struct snd_kcontrol *kcontrol,
15726 struct snd_ctl_elem_value *ucontrol)
15727{
15728 ucontrol->value.integer.value[0] = swap_ch;
15729 pr_debug("%s: Swap channel value: %ld\n", __func__,
15730 ucontrol->value.integer.value[0]);
15731 return 0;
15732}
15733
15734static int msm_routing_stereo_channel_reverse_control_put(
15735 struct snd_kcontrol *kcontrol,
15736 struct snd_ctl_elem_value *ucontrol)
15737{
15738 int i, idx, be_index, port_id;
15739 int ret = 0;
15740 unsigned long copp;
15741
15742 pr_debug("%s Swap channel value:%ld\n", __func__,
15743 ucontrol->value.integer.value[0]);
15744
15745 swap_ch = ucontrol->value.integer.value[0];
15746
15747 mutex_lock(&routing_lock);
15748 for (be_index = 0; be_index < MSM_BACKEND_DAI_MAX; be_index++) {
15749 port_id = msm_bedais[be_index].port_id;
15750 if (!msm_bedais[be_index].active)
15751 continue;
15752
15753 for_each_set_bit(i, &msm_bedais[be_index].fe_sessions[0],
15754 MSM_FRONTEND_DAI_MM_SIZE) {
15755 copp = session_copp_map[i][SESSION_TYPE_RX][be_index];
15756 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++) {
15757 if (!test_bit(idx, &copp))
15758 continue;
15759
15760 pr_debug("%s: swap channel control of portid:%d, coppid:%d\n",
15761 __func__, port_id, idx);
15762 ret = adm_swap_speaker_channels(
15763 port_id, idx,
15764 msm_bedais[be_index].sample_rate,
15765 swap_ch);
15766 if (ret) {
15767 pr_err("%s:Swap_channel failed, err=%d\n",
15768 __func__, ret);
15769 goto done;
15770 }
15771 }
15772 }
15773 }
15774done:
15775 mutex_unlock(&routing_lock);
15776 return ret;
15777}
15778
15779static const struct snd_kcontrol_new stereo_channel_reverse_control[] = {
15780 SOC_SINGLE_EXT("Swap channel", SND_SOC_NOPM, 0,
15781 1, 0, msm_routing_stereo_channel_reverse_control_get,
15782 msm_routing_stereo_channel_reverse_control_put),
15783};
15784
15785static const struct snd_pcm_ops msm_routing_pcm_ops = {
15786 .hw_params = msm_pcm_routing_hw_params,
15787 .close = msm_pcm_routing_close,
15788 .prepare = msm_pcm_routing_prepare,
15789};
15790
15791/* Not used but frame seems to require it */
15792static int msm_routing_probe(struct snd_soc_platform *platform)
15793{
15794 snd_soc_dapm_new_controls(&platform->component.dapm, msm_qdsp6_widgets,
15795 ARRAY_SIZE(msm_qdsp6_widgets));
15796 snd_soc_dapm_add_routes(&platform->component.dapm, intercon,
15797 ARRAY_SIZE(intercon));
15798
15799 snd_soc_dapm_new_widgets(platform->component.dapm.card);
15800
15801 snd_soc_add_platform_controls(platform, lsm_controls,
15802 ARRAY_SIZE(lsm_controls));
15803
15804 snd_soc_add_platform_controls(platform, aanc_slim_0_rx_mux,
15805 ARRAY_SIZE(aanc_slim_0_rx_mux));
15806
15807 snd_soc_add_platform_controls(platform, msm_voc_session_controls,
15808 ARRAY_SIZE(msm_voc_session_controls));
15809
15810 snd_soc_add_platform_controls(platform, app_type_cfg_controls,
15811 ARRAY_SIZE(app_type_cfg_controls));
15812
15813 snd_soc_add_platform_controls(platform, lsm_app_type_cfg_controls,
15814 ARRAY_SIZE(lsm_app_type_cfg_controls));
15815
15816 snd_soc_add_platform_controls(platform,
15817 stereo_to_custom_stereo_controls,
15818 ARRAY_SIZE(stereo_to_custom_stereo_controls));
15819
15820 snd_soc_add_platform_controls(platform, ec_ref_param_controls,
15821 ARRAY_SIZE(ec_ref_param_controls));
15822
15823 snd_soc_add_platform_controls(platform, channel_mixer_controls,
15824 ARRAY_SIZE(channel_mixer_controls));
15825
15826 msm_qti_pp_add_controls(platform);
15827
15828 msm_dts_srs_tm_add_controls(platform);
15829
15830 msm_dolby_dap_add_controls(platform);
15831
15832 snd_soc_add_platform_controls(platform,
15833 use_ds1_or_ds2_controls,
15834 ARRAY_SIZE(use_ds1_or_ds2_controls));
15835
15836 snd_soc_add_platform_controls(platform,
15837 device_pp_params_mixer_controls,
15838 ARRAY_SIZE(device_pp_params_mixer_controls));
15839
15840 snd_soc_add_platform_controls(platform,
15841 msm_routing_be_dai_name_table_mixer_controls,
15842 ARRAY_SIZE(msm_routing_be_dai_name_table_mixer_controls));
15843
15844 snd_soc_add_platform_controls(platform, msm_source_tracking_controls,
15845 ARRAY_SIZE(msm_source_tracking_controls));
15846 snd_soc_add_platform_controls(platform, adm_channel_config_controls,
15847 ARRAY_SIZE(adm_channel_config_controls));
15848
15849 snd_soc_add_platform_controls(platform, aptx_dec_license_controls,
15850 ARRAY_SIZE(aptx_dec_license_controls));
15851 snd_soc_add_platform_controls(platform, stereo_channel_reverse_control,
15852 ARRAY_SIZE(stereo_channel_reverse_control));
15853 return 0;
15854}
15855
15856int msm_routing_pcm_new(struct snd_soc_pcm_runtime *runtime)
15857{
15858 return msm_pcm_routing_hwdep_new(runtime, msm_bedais);
15859}
15860
15861void msm_routing_pcm_free(struct snd_pcm *pcm)
15862{
15863 msm_pcm_routing_hwdep_free(pcm);
15864}
15865
15866static struct snd_soc_platform_driver msm_soc_routing_platform = {
15867 .ops = &msm_routing_pcm_ops,
15868 .probe = msm_routing_probe,
15869 .pcm_new = msm_routing_pcm_new,
15870 .pcm_free = msm_routing_pcm_free,
15871};
15872
15873static int msm_routing_pcm_probe(struct platform_device *pdev)
15874{
15875
15876 dev_dbg(&pdev->dev, "dev name %s\n", dev_name(&pdev->dev));
15877 return snd_soc_register_platform(&pdev->dev,
15878 &msm_soc_routing_platform);
15879}
15880
15881static int msm_routing_pcm_remove(struct platform_device *pdev)
15882{
15883 snd_soc_unregister_platform(&pdev->dev);
15884 return 0;
15885}
15886
15887static const struct of_device_id msm_pcm_routing_dt_match[] = {
15888 {.compatible = "qcom,msm-pcm-routing"},
15889 {}
15890};
15891MODULE_DEVICE_TABLE(of, msm_pcm_routing_dt_match);
15892
15893static struct platform_driver msm_routing_pcm_driver = {
15894 .driver = {
15895 .name = "msm-pcm-routing",
15896 .owner = THIS_MODULE,
15897 .of_match_table = msm_pcm_routing_dt_match,
15898 },
15899 .probe = msm_routing_pcm_probe,
15900 .remove = msm_routing_pcm_remove,
15901};
15902
15903int msm_routing_check_backend_enabled(int fedai_id)
15904{
15905 int i;
15906
15907 if (fedai_id > MSM_FRONTEND_DAI_MM_MAX_ID) {
15908 /* bad ID assigned in machine driver */
15909 pr_err("%s: bad MM ID\n", __func__);
15910 return 0;
15911 }
15912 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
15913 if (test_bit(fedai_id, &msm_bedais[i].fe_sessions[0]))
15914 return msm_bedais[i].active;
15915 }
15916 return 0;
15917}
15918
15919static int msm_routing_set_cal(int32_t cal_type,
15920 size_t data_size, void *data)
15921{
15922 int ret = 0;
15923
15924 pr_debug("%s\n", __func__);
15925
15926 ret = cal_utils_set_cal(data_size, data, cal_data, 0, NULL);
15927 if (ret < 0) {
15928 pr_err("%s: cal_utils_set_cal failed, ret = %d, cal type = %d!\n",
15929 __func__, ret, cal_type);
15930 ret = -EINVAL;
15931 goto done;
15932 }
15933done:
15934 return ret;
15935}
15936
15937static void msm_routing_delete_cal_data(void)
15938{
15939 pr_debug("%s\n", __func__);
15940
15941 cal_utils_destroy_cal_types(1, &cal_data);
15942}
15943
15944static int msm_routing_init_cal_data(void)
15945{
15946 int ret = 0;
15947 struct cal_type_info cal_type_info = {
15948 {ADM_TOPOLOGY_CAL_TYPE,
15949 {NULL, NULL, NULL,
15950 msm_routing_set_cal, NULL, NULL} },
15951 {NULL, NULL, cal_utils_match_buf_num}
15952 };
15953 pr_debug("%s\n", __func__);
15954
15955 ret = cal_utils_create_cal_types(1, &cal_data,
15956 &cal_type_info);
15957 if (ret < 0) {
15958 pr_err("%s: could not create cal type!\n",
15959 __func__);
15960 ret = -EINVAL;
15961 goto err;
15962 }
15963
15964 return ret;
15965err:
15966 msm_routing_delete_cal_data();
15967 return ret;
15968}
15969
15970static int __init msm_soc_routing_platform_init(void)
15971{
15972 mutex_init(&routing_lock);
15973 if (msm_routing_init_cal_data())
15974 pr_err("%s: could not init cal data!\n", __func__);
15975
15976 afe_set_routing_callback(
15977 (routing_cb)msm_pcm_get_dev_acdb_id_by_port_id);
15978
15979 memset(&be_dai_name_table, 0, sizeof(be_dai_name_table));
15980 memset(&last_be_id_configured, 0, sizeof(last_be_id_configured));
15981
15982 return platform_driver_register(&msm_routing_pcm_driver);
15983}
15984module_init(msm_soc_routing_platform_init);
15985
15986static void __exit msm_soc_routing_platform_exit(void)
15987{
15988 msm_routing_delete_cal_data();
15989 memset(&be_dai_name_table, 0, sizeof(be_dai_name_table));
15990 mutex_destroy(&routing_lock);
15991 platform_driver_unregister(&msm_routing_pcm_driver);
15992}
15993module_exit(msm_soc_routing_platform_exit);
15994
15995MODULE_DESCRIPTION("MSM routing platform driver");
15996MODULE_LICENSE("GPL v2");