blob: 2b6a69f0bb29fbe173cbb40fa2aaea4f55fa25c0 [file] [log] [blame]
Vignesh Kulothungan5c109922018-01-24 17:36:18 -08001/* Copyright (c) 2012-2018, The Linux Foundation. All rights reserved.
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302 *
3 * This program is free software; you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License version 2 and
5 * only version 2 as published by the Free Software Foundation.
6 *
7 * This program is distributed in the hope that it will be useful,
8 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 * GNU General Public License for more details.
11 */
12
13#include <linux/init.h>
14#include <linux/err.h>
15#include <linux/module.h>
16#include <linux/moduleparam.h>
17#include <linux/platform_device.h>
18#include <linux/bitops.h>
19#include <linux/mutex.h>
20#include <linux/of_device.h>
21#include <linux/slab.h>
22#include <sound/core.h>
23#include <sound/soc.h>
24#include <sound/soc-dapm.h>
25#include <sound/pcm.h>
26#include <sound/initval.h>
27#include <sound/control.h>
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053028#include <sound/tlv.h>
29#include <sound/asound.h>
30#include <sound/pcm_params.h>
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053031#include <sound/hwdep.h>
Laxminath Kasam605b42f2017-08-01 22:02:15 +053032#include <sound/audio_effects.h>
Laxminath Kasam8b1366a2017-10-05 01:44:16 +053033#include <dsp/msm-dts-srs-tm-config.h>
Laxminath Kasam605b42f2017-08-01 22:02:15 +053034#include <dsp/q6voice.h>
35#include <dsp/q6adm-v2.h>
36#include <dsp/q6asm-v2.h>
37#include <dsp/q6afe-v2.h>
38#include <dsp/q6lsm.h>
39#include <dsp/q6core.h>
Vignesh Kulothungan5c109922018-01-24 17:36:18 -080040#include <dsp/q6common.h>
Laxminath Kasam605b42f2017-08-01 22:02:15 +053041#include <dsp/audio_cal_utils.h>
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053042
43#include "msm-pcm-routing-v2.h"
44#include "msm-pcm-routing-devdep.h"
45#include "msm-qti-pp-config.h"
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053046#include "msm-dolby-dap-config.h"
47#include "msm-ds2-dap-config.h"
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053048
49#ifndef CONFIG_DOLBY_DAP
50#undef DOLBY_ADM_COPP_TOPOLOGY_ID
51#define DOLBY_ADM_COPP_TOPOLOGY_ID 0xFFFFFFFE
52#endif
53
54#ifndef CONFIG_DOLBY_DS2
55#undef DS2_ADM_COPP_TOPOLOGY_ID
56#define DS2_ADM_COPP_TOPOLOGY_ID 0xFFFFFFFF
57#endif
58
59static struct mutex routing_lock;
60
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053061static struct cal_type_data *cal_data[MAX_ROUTING_CAL_TYPES];
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053062
63static int fm_switch_enable;
64static int hfp_switch_enable;
65static int int0_mi2s_switch_enable;
66static int int4_mi2s_switch_enable;
67static int pri_mi2s_switch_enable;
68static int sec_mi2s_switch_enable;
69static int tert_mi2s_switch_enable;
70static int quat_mi2s_switch_enable;
Rohit Kumara5077932017-09-10 22:05:05 +053071static int quin_mi2s_switch_enable;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053072static int fm_pcmrx_switch_enable;
73static int usb_switch_enable;
74static int lsm_port_index;
75static int slim0_rx_aanc_fb_port;
76static int msm_route_ec_ref_rx;
77static int msm_ec_ref_ch = 4;
78static int msm_ec_ref_bit_format = SNDRV_PCM_FORMAT_S16_LE;
79static int msm_ec_ref_sampling_rate = 48000;
80static uint32_t voc_session_id = ALL_SESSION_VSID;
81static int msm_route_ext_ec_ref;
82static bool is_custom_stereo_on;
83static bool is_ds2_on;
84static bool swap_ch;
85
86#define WEIGHT_0_DB 0x4000
87/* all the FEs which can support channel mixer */
88static struct msm_pcm_channel_mixer channel_mixer[MSM_FRONTEND_DAI_MM_SIZE];
89/* input BE for each FE */
90static int channel_input[MSM_FRONTEND_DAI_MM_SIZE][ADM_MAX_CHANNELS];
91
92enum {
93 MADNONE,
94 MADAUDIO,
95 MADBEACON,
96 MADULTRASOUND,
97 MADSWAUDIO,
98};
99
100#define ADM_LSM_PORT_INDEX 9
101
102#define SLIMBUS_0_TX_TEXT "SLIMBUS_0_TX"
103#define SLIMBUS_1_TX_TEXT "SLIMBUS_1_TX"
104#define SLIMBUS_2_TX_TEXT "SLIMBUS_2_TX"
105#define SLIMBUS_3_TX_TEXT "SLIMBUS_3_TX"
106#define SLIMBUS_4_TX_TEXT "SLIMBUS_4_TX"
107#define SLIMBUS_5_TX_TEXT "SLIMBUS_5_TX"
108#define TERT_MI2S_TX_TEXT "TERT_MI2S_TX"
109#define QUAT_MI2S_TX_TEXT "QUAT_MI2S_TX"
110#define ADM_LSM_TX_TEXT "ADM_LSM_TX"
111#define INT3_MI2S_TX_TEXT "INT3_MI2S_TX"
112
113#define LSM_FUNCTION_TEXT "LSM Function"
114static const char * const lsm_port_text[] = {
115 "None",
116 SLIMBUS_0_TX_TEXT, SLIMBUS_1_TX_TEXT, SLIMBUS_2_TX_TEXT,
117 SLIMBUS_3_TX_TEXT, SLIMBUS_4_TX_TEXT, SLIMBUS_5_TX_TEXT,
118 TERT_MI2S_TX_TEXT, QUAT_MI2S_TX_TEXT, ADM_LSM_TX_TEXT,
119 INT3_MI2S_TX_TEXT
120};
121
122struct msm_pcm_route_bdai_pp_params {
123 u16 port_id; /* AFE port ID */
124 unsigned long pp_params_config;
125 bool mute_on;
126 int latency;
127};
128
129static struct msm_pcm_route_bdai_pp_params
130 msm_bedais_pp_params[MSM_BACKEND_DAI_PP_PARAMS_REQ_MAX] = {
131 {HDMI_RX, 0, 0, 0},
132 {DISPLAY_PORT_RX, 0, 0, 0},
133};
134
135/*
136 * The be_dai_name_table is passed to HAL so that it can specify the
137 * BE ID for the BE it wants to enable based on the name. Thus there
138 * is a matching table and structure in HAL that need to be updated
139 * if any changes to these are made.
140 */
141struct msm_pcm_route_bdai_name {
142 unsigned int be_id;
143 char be_name[LPASS_BE_NAME_MAX_LENGTH];
144};
145static struct msm_pcm_route_bdai_name be_dai_name_table[MSM_BACKEND_DAI_MAX];
146
147static int msm_routing_send_device_pp_params(int port_id, int copp_idx,
148 int fe_id);
149
150static int msm_routing_get_bit_width(unsigned int format)
151{
152 int bit_width;
153
154 switch (format) {
155 case SNDRV_PCM_FORMAT_S32_LE:
156 bit_width = 32;
157 break;
158 case SNDRV_PCM_FORMAT_S24_LE:
159 case SNDRV_PCM_FORMAT_S24_3LE:
160 bit_width = 24;
161 break;
162 case SNDRV_PCM_FORMAT_S16_LE:
163 default:
164 bit_width = 16;
165 }
166 return bit_width;
167}
168
169static bool msm_is_resample_needed(int input_sr, int output_sr)
170{
171 bool rc = false;
172
173 if (input_sr != output_sr)
174 rc = true;
175
176 pr_debug("perform resampling (%s) for copp rate (%d)afe rate (%d)",
177 (rc ? "oh yes" : "not really"),
178 input_sr, output_sr);
179
180 return rc;
181}
182
183static void msm_pcm_routing_cfg_pp(int port_id, int copp_idx, int topology,
184 int channels)
185{
186 int rc = 0;
187
188 switch (topology) {
189 case SRS_TRUMEDIA_TOPOLOGY_ID:
190 pr_debug("%s: SRS_TRUMEDIA_TOPOLOGY_ID\n", __func__);
191 msm_dts_srs_tm_init(port_id, copp_idx);
192 break;
193 case DS2_ADM_COPP_TOPOLOGY_ID:
194 pr_debug("%s: DS2_ADM_COPP_TOPOLOGY %d\n",
195 __func__, DS2_ADM_COPP_TOPOLOGY_ID);
196 rc = msm_ds2_dap_init(port_id, copp_idx, channels,
197 is_custom_stereo_on);
198 if (rc < 0)
199 pr_err("%s: DS2 topo_id 0x%x, port %d, CS %d rc %d\n",
200 __func__, topology, port_id,
201 is_custom_stereo_on, rc);
202 break;
203 case DOLBY_ADM_COPP_TOPOLOGY_ID:
204 if (is_ds2_on) {
205 pr_debug("%s: DS2_ADM_COPP_TOPOLOGY\n", __func__);
206 rc = msm_ds2_dap_init(port_id, copp_idx, channels,
207 is_custom_stereo_on);
208 if (rc < 0)
209 pr_err("%s:DS2 topo_id 0x%x, port %d, rc %d\n",
210 __func__, topology, port_id, rc);
211 } else {
212 pr_debug("%s: DOLBY_ADM_COPP_TOPOLOGY_ID\n", __func__);
213 rc = msm_dolby_dap_init(port_id, copp_idx, channels,
214 is_custom_stereo_on);
215 if (rc < 0)
216 pr_err("%s: DS1 topo_id 0x%x, port %d, rc %d\n",
217 __func__, topology, port_id, rc);
218 }
219 break;
220 case ADM_CMD_COPP_OPEN_TOPOLOGY_ID_AUDIOSPHERE:
221 pr_debug("%s: TOPOLOGY_ID_AUDIOSPHERE\n", __func__);
222 rc = msm_qti_pp_asphere_init(port_id, copp_idx);
223 if (rc < 0)
224 pr_err("%s: topo_id 0x%x, port %d, copp %d, rc %d\n",
225 __func__, topology, port_id, copp_idx, rc);
226 break;
227 default:
228 /* custom topology specific feature param handlers */
229 break;
230 }
231}
232
233static void msm_pcm_routing_deinit_pp(int port_id, int topology)
234{
235 switch (topology) {
236 case SRS_TRUMEDIA_TOPOLOGY_ID:
237 pr_debug("%s: SRS_TRUMEDIA_TOPOLOGY_ID\n", __func__);
238 msm_dts_srs_tm_deinit(port_id);
239 break;
240 case DS2_ADM_COPP_TOPOLOGY_ID:
241 pr_debug("%s: DS2_ADM_COPP_TOPOLOGY_ID %d\n",
242 __func__, DS2_ADM_COPP_TOPOLOGY_ID);
243 msm_ds2_dap_deinit(port_id);
244 break;
245 case DOLBY_ADM_COPP_TOPOLOGY_ID:
246 if (is_ds2_on) {
247 pr_debug("%s: DS2_ADM_COPP_TOPOLOGY_ID\n", __func__);
248 msm_ds2_dap_deinit(port_id);
249 } else {
250 pr_debug("%s: DOLBY_ADM_COPP_TOPOLOGY_ID\n", __func__);
251 msm_dolby_dap_deinit(port_id);
252 }
253 break;
254 case ADM_CMD_COPP_OPEN_TOPOLOGY_ID_AUDIOSPHERE:
255 pr_debug("%s: TOPOLOGY_ID_AUDIOSPHERE\n", __func__);
256 msm_qti_pp_asphere_deinit(port_id);
257 break;
258 default:
259 /* custom topology specific feature deinit handlers */
260 break;
261 }
262}
263
264static void msm_pcm_routng_cfg_matrix_map_pp(struct route_payload payload,
265 int path_type, int perf_mode)
266{
267 int itr = 0, rc = 0;
268
269 if ((path_type == ADM_PATH_PLAYBACK) &&
270 (perf_mode == LEGACY_PCM_MODE) &&
271 is_custom_stereo_on) {
272 for (itr = 0; itr < payload.num_copps; itr++) {
273 if ((payload.port_id[itr] != SLIMBUS_0_RX) &&
274 (payload.port_id[itr] != RT_PROXY_PORT_001_RX)) {
275 continue;
276 }
277
278 rc = msm_qti_pp_send_stereo_to_custom_stereo_cmd(
279 payload.port_id[itr],
280 payload.copp_idx[itr],
281 payload.session_id,
282 Q14_GAIN_ZERO_POINT_FIVE,
283 Q14_GAIN_ZERO_POINT_FIVE,
284 Q14_GAIN_ZERO_POINT_FIVE,
285 Q14_GAIN_ZERO_POINT_FIVE);
286 if (rc < 0)
287 pr_err("%s: err setting custom stereo\n",
288 __func__);
289 }
290 }
291}
292
293#define SLIMBUS_EXTPROC_RX AFE_PORT_INVALID
294struct msm_pcm_routing_bdai_data msm_bedais[MSM_BACKEND_DAI_MAX] = {
295 { PRIMARY_I2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_PRI_I2S_RX},
296 { PRIMARY_I2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_PRI_I2S_TX},
297 { SLIMBUS_0_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_0_RX},
298 { SLIMBUS_0_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_0_TX},
299 { HDMI_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_HDMI},
300 { INT_BT_SCO_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_INT_BT_SCO_RX},
301 { INT_BT_SCO_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_INT_BT_SCO_TX},
302 { INT_FM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_INT_FM_RX},
303 { INT_FM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_INT_FM_TX},
304 { RT_PROXY_PORT_001_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
305 LPASS_BE_AFE_PCM_RX},
306 { RT_PROXY_PORT_001_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
307 LPASS_BE_AFE_PCM_TX},
308 { AFE_PORT_ID_PRIMARY_PCM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
309 LPASS_BE_AUXPCM_RX},
310 { AFE_PORT_ID_PRIMARY_PCM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
311 LPASS_BE_AUXPCM_TX},
312 { VOICE_PLAYBACK_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
313 LPASS_BE_VOICE_PLAYBACK_TX},
314 { VOICE2_PLAYBACK_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
315 LPASS_BE_VOICE2_PLAYBACK_TX},
316 { VOICE_RECORD_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
317 LPASS_BE_INCALL_RECORD_RX},
318 { VOICE_RECORD_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
319 LPASS_BE_INCALL_RECORD_TX},
320 { MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_MI2S_RX},
321 { MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_MI2S_TX},
322 { SECONDARY_I2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SEC_I2S_RX},
323 { SLIMBUS_1_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_1_RX},
324 { SLIMBUS_1_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_1_TX},
325 { SLIMBUS_2_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_2_RX},
326 { SLIMBUS_2_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_2_TX},
327 { SLIMBUS_3_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_3_RX},
328 { SLIMBUS_3_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_3_TX},
329 { SLIMBUS_4_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_4_RX},
330 { SLIMBUS_4_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_4_TX},
331 { SLIMBUS_5_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_5_RX},
332 { SLIMBUS_5_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_5_TX},
333 { SLIMBUS_6_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_6_RX},
334 { SLIMBUS_6_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_6_TX},
335 { SLIMBUS_7_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_7_RX},
336 { SLIMBUS_7_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_7_TX},
337 { SLIMBUS_8_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_8_RX},
338 { SLIMBUS_8_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_SLIMBUS_8_TX},
339 { SLIMBUS_EXTPROC_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_STUB_RX},
340 { SLIMBUS_EXTPROC_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_STUB_TX},
341 { SLIMBUS_EXTPROC_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_STUB_1_TX},
342 { AFE_PORT_ID_QUATERNARY_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
343 LPASS_BE_QUAT_MI2S_RX},
344 { AFE_PORT_ID_QUATERNARY_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
345 LPASS_BE_QUAT_MI2S_TX},
346 { AFE_PORT_ID_SECONDARY_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
347 LPASS_BE_SEC_MI2S_RX},
348 { AFE_PORT_ID_SECONDARY_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
349 LPASS_BE_SEC_MI2S_TX},
350 { AFE_PORT_ID_PRIMARY_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
351 LPASS_BE_PRI_MI2S_RX},
352 { AFE_PORT_ID_PRIMARY_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
353 LPASS_BE_PRI_MI2S_TX},
354 { AFE_PORT_ID_TERTIARY_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
355 LPASS_BE_TERT_MI2S_RX},
356 { AFE_PORT_ID_TERTIARY_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
357 LPASS_BE_TERT_MI2S_TX},
358 { AUDIO_PORT_ID_I2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
359 LPASS_BE_AUDIO_I2S_RX},
360 { AFE_PORT_ID_SECONDARY_PCM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
361 LPASS_BE_SEC_AUXPCM_RX},
362 { AFE_PORT_ID_SECONDARY_PCM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
363 LPASS_BE_SEC_AUXPCM_TX},
364 { AFE_PORT_ID_SPDIF_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
365 LPASS_BE_SPDIF_RX},
366 { AFE_PORT_ID_SECONDARY_MI2S_RX_SD1, 0, {0}, {0}, 0, 0, 0, 0, {0},
367 LPASS_BE_SEC_MI2S_RX_SD1},
368 { AFE_PORT_ID_QUINARY_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
369 LPASS_BE_QUIN_MI2S_RX},
370 { AFE_PORT_ID_QUINARY_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
371 LPASS_BE_QUIN_MI2S_TX},
372 { AFE_PORT_ID_SENARY_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
373 LPASS_BE_SENARY_MI2S_TX},
374 { AFE_PORT_ID_PRIMARY_TDM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
375 LPASS_BE_PRI_TDM_RX_0},
376 { AFE_PORT_ID_PRIMARY_TDM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
377 LPASS_BE_PRI_TDM_TX_0},
378 { AFE_PORT_ID_PRIMARY_TDM_RX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
379 LPASS_BE_PRI_TDM_RX_1},
380 { AFE_PORT_ID_PRIMARY_TDM_TX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
381 LPASS_BE_PRI_TDM_TX_1},
382 { AFE_PORT_ID_PRIMARY_TDM_RX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
383 LPASS_BE_PRI_TDM_RX_2},
384 { AFE_PORT_ID_PRIMARY_TDM_TX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
385 LPASS_BE_PRI_TDM_TX_2},
386 { AFE_PORT_ID_PRIMARY_TDM_RX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
387 LPASS_BE_PRI_TDM_RX_3},
388 { AFE_PORT_ID_PRIMARY_TDM_TX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
389 LPASS_BE_PRI_TDM_TX_3},
390 { AFE_PORT_ID_PRIMARY_TDM_RX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
391 LPASS_BE_PRI_TDM_RX_4},
392 { AFE_PORT_ID_PRIMARY_TDM_TX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
393 LPASS_BE_PRI_TDM_TX_4},
394 { AFE_PORT_ID_PRIMARY_TDM_RX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
395 LPASS_BE_PRI_TDM_RX_5},
396 { AFE_PORT_ID_PRIMARY_TDM_TX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
397 LPASS_BE_PRI_TDM_TX_5},
398 { AFE_PORT_ID_PRIMARY_TDM_RX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
399 LPASS_BE_PRI_TDM_RX_6},
400 { AFE_PORT_ID_PRIMARY_TDM_TX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
401 LPASS_BE_PRI_TDM_TX_6},
402 { AFE_PORT_ID_PRIMARY_TDM_RX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
403 LPASS_BE_PRI_TDM_RX_7},
404 { AFE_PORT_ID_PRIMARY_TDM_TX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
405 LPASS_BE_PRI_TDM_TX_7},
406 { AFE_PORT_ID_SECONDARY_TDM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
407 LPASS_BE_SEC_TDM_RX_0},
408 { AFE_PORT_ID_SECONDARY_TDM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
409 LPASS_BE_SEC_TDM_TX_0},
410 { AFE_PORT_ID_SECONDARY_TDM_RX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
411 LPASS_BE_SEC_TDM_RX_1},
412 { AFE_PORT_ID_SECONDARY_TDM_TX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
413 LPASS_BE_SEC_TDM_TX_1},
414 { AFE_PORT_ID_SECONDARY_TDM_RX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
415 LPASS_BE_SEC_TDM_RX_2},
416 { AFE_PORT_ID_SECONDARY_TDM_TX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
417 LPASS_BE_SEC_TDM_TX_2},
418 { AFE_PORT_ID_SECONDARY_TDM_RX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
419 LPASS_BE_SEC_TDM_RX_3},
420 { AFE_PORT_ID_SECONDARY_TDM_TX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
421 LPASS_BE_SEC_TDM_TX_3},
422 { AFE_PORT_ID_SECONDARY_TDM_RX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
423 LPASS_BE_SEC_TDM_RX_4},
424 { AFE_PORT_ID_SECONDARY_TDM_TX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
425 LPASS_BE_SEC_TDM_TX_4},
426 { AFE_PORT_ID_SECONDARY_TDM_RX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
427 LPASS_BE_SEC_TDM_RX_5},
428 { AFE_PORT_ID_SECONDARY_TDM_TX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
429 LPASS_BE_SEC_TDM_TX_5},
430 { AFE_PORT_ID_SECONDARY_TDM_RX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
431 LPASS_BE_SEC_TDM_RX_6},
432 { AFE_PORT_ID_SECONDARY_TDM_TX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
433 LPASS_BE_SEC_TDM_TX_6},
434 { AFE_PORT_ID_SECONDARY_TDM_RX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
435 LPASS_BE_SEC_TDM_RX_7},
436 { AFE_PORT_ID_SECONDARY_TDM_TX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
437 LPASS_BE_SEC_TDM_TX_7},
438 { AFE_PORT_ID_TERTIARY_TDM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
439 LPASS_BE_TERT_TDM_RX_0},
440 { AFE_PORT_ID_TERTIARY_TDM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
441 LPASS_BE_TERT_TDM_TX_0},
442 { AFE_PORT_ID_TERTIARY_TDM_RX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
443 LPASS_BE_TERT_TDM_RX_1},
444 { AFE_PORT_ID_TERTIARY_TDM_TX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
445 LPASS_BE_TERT_TDM_TX_1},
446 { AFE_PORT_ID_TERTIARY_TDM_RX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
447 LPASS_BE_TERT_TDM_RX_2},
448 { AFE_PORT_ID_TERTIARY_TDM_TX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
449 LPASS_BE_TERT_TDM_TX_2},
450 { AFE_PORT_ID_TERTIARY_TDM_RX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
451 LPASS_BE_TERT_TDM_RX_3},
452 { AFE_PORT_ID_TERTIARY_TDM_TX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
453 LPASS_BE_TERT_TDM_TX_3},
454 { AFE_PORT_ID_TERTIARY_TDM_RX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
455 LPASS_BE_TERT_TDM_RX_4},
456 { AFE_PORT_ID_TERTIARY_TDM_TX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
457 LPASS_BE_TERT_TDM_TX_4},
458 { AFE_PORT_ID_TERTIARY_TDM_RX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
459 LPASS_BE_TERT_TDM_RX_5},
460 { AFE_PORT_ID_TERTIARY_TDM_TX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
461 LPASS_BE_TERT_TDM_TX_5},
462 { AFE_PORT_ID_TERTIARY_TDM_RX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
463 LPASS_BE_TERT_TDM_RX_6},
464 { AFE_PORT_ID_TERTIARY_TDM_TX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
465 LPASS_BE_TERT_TDM_TX_6},
466 { AFE_PORT_ID_TERTIARY_TDM_RX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
467 LPASS_BE_TERT_TDM_RX_7},
468 { AFE_PORT_ID_TERTIARY_TDM_TX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
469 LPASS_BE_TERT_TDM_TX_7},
470 { AFE_PORT_ID_QUATERNARY_TDM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
471 LPASS_BE_QUAT_TDM_RX_0},
472 { AFE_PORT_ID_QUATERNARY_TDM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
473 LPASS_BE_QUAT_TDM_TX_0},
474 { AFE_PORT_ID_QUATERNARY_TDM_RX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
475 LPASS_BE_QUAT_TDM_RX_1},
476 { AFE_PORT_ID_QUATERNARY_TDM_TX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
477 LPASS_BE_QUAT_TDM_TX_1},
478 { AFE_PORT_ID_QUATERNARY_TDM_RX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
479 LPASS_BE_QUAT_TDM_RX_2},
480 { AFE_PORT_ID_QUATERNARY_TDM_TX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
481 LPASS_BE_QUAT_TDM_TX_2},
482 { AFE_PORT_ID_QUATERNARY_TDM_RX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
483 LPASS_BE_QUAT_TDM_RX_3},
484 { AFE_PORT_ID_QUATERNARY_TDM_TX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
485 LPASS_BE_QUAT_TDM_TX_3},
486 { AFE_PORT_ID_QUATERNARY_TDM_RX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
487 LPASS_BE_QUAT_TDM_RX_4},
488 { AFE_PORT_ID_QUATERNARY_TDM_TX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
489 LPASS_BE_QUAT_TDM_TX_4},
490 { AFE_PORT_ID_QUATERNARY_TDM_RX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
491 LPASS_BE_QUAT_TDM_RX_5},
492 { AFE_PORT_ID_QUATERNARY_TDM_TX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
493 LPASS_BE_QUAT_TDM_TX_5},
494 { AFE_PORT_ID_QUATERNARY_TDM_RX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
495 LPASS_BE_QUAT_TDM_RX_6},
496 { AFE_PORT_ID_QUATERNARY_TDM_TX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
497 LPASS_BE_QUAT_TDM_TX_6},
498 { AFE_PORT_ID_QUATERNARY_TDM_RX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
499 LPASS_BE_QUAT_TDM_RX_7},
500 { AFE_PORT_ID_QUATERNARY_TDM_TX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
501 LPASS_BE_QUAT_TDM_TX_7},
Rohit Kumara5077932017-09-10 22:05:05 +0530502 { AFE_PORT_ID_QUINARY_TDM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
503 LPASS_BE_QUIN_TDM_RX_0},
504 { AFE_PORT_ID_QUINARY_TDM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
505 LPASS_BE_QUIN_TDM_TX_0},
506 { AFE_PORT_ID_QUINARY_TDM_RX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
507 LPASS_BE_QUIN_TDM_RX_1},
508 { AFE_PORT_ID_QUINARY_TDM_TX_1, 0, {0}, {0}, 0, 0, 0, 0, {0},
509 LPASS_BE_QUIN_TDM_TX_1},
510 { AFE_PORT_ID_QUINARY_TDM_RX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
511 LPASS_BE_QUIN_TDM_RX_2},
512 { AFE_PORT_ID_QUINARY_TDM_TX_2, 0, {0}, {0}, 0, 0, 0, 0, {0},
513 LPASS_BE_QUIN_TDM_TX_2},
514 { AFE_PORT_ID_QUINARY_TDM_RX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
515 LPASS_BE_QUIN_TDM_RX_3},
516 { AFE_PORT_ID_QUINARY_TDM_TX_3, 0, {0}, {0}, 0, 0, 0, 0, {0},
517 LPASS_BE_QUIN_TDM_TX_3},
518 { AFE_PORT_ID_QUINARY_TDM_RX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
519 LPASS_BE_QUIN_TDM_RX_4},
520 { AFE_PORT_ID_QUINARY_TDM_TX_4, 0, {0}, {0}, 0, 0, 0, 0, {0},
521 LPASS_BE_QUIN_TDM_TX_4},
522 { AFE_PORT_ID_QUINARY_TDM_RX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
523 LPASS_BE_QUIN_TDM_RX_5},
524 { AFE_PORT_ID_QUINARY_TDM_TX_5, 0, {0}, {0}, 0, 0, 0, 0, {0},
525 LPASS_BE_QUIN_TDM_TX_5},
526 { AFE_PORT_ID_QUINARY_TDM_RX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
527 LPASS_BE_QUIN_TDM_RX_6},
528 { AFE_PORT_ID_QUINARY_TDM_TX_6, 0, {0}, {0}, 0, 0, 0, 0, {0},
529 LPASS_BE_QUIN_TDM_TX_6},
530 { AFE_PORT_ID_QUINARY_TDM_RX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
531 LPASS_BE_QUIN_TDM_RX_7},
532 { AFE_PORT_ID_QUINARY_TDM_TX_7, 0, {0}, {0}, 0, 0, 0, 0, {0},
533 LPASS_BE_QUIN_TDM_TX_7},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530534 { INT_BT_A2DP_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
535 LPASS_BE_INT_BT_A2DP_RX},
536 { AFE_PORT_ID_USB_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
537 LPASS_BE_USB_AUDIO_RX},
538 { AFE_PORT_ID_USB_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
539 LPASS_BE_USB_AUDIO_TX},
540 { DISPLAY_PORT_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
541 LPASS_BE_DISPLAY_PORT},
542 { AFE_PORT_ID_TERTIARY_PCM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
543 LPASS_BE_TERT_AUXPCM_RX},
544 { AFE_PORT_ID_TERTIARY_PCM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
545 LPASS_BE_TERT_AUXPCM_TX},
546 { AFE_PORT_ID_QUATERNARY_PCM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
547 LPASS_BE_QUAT_AUXPCM_RX},
548 { AFE_PORT_ID_QUATERNARY_PCM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
549 LPASS_BE_QUAT_AUXPCM_TX},
Rohit Kumara5077932017-09-10 22:05:05 +0530550 { AFE_PORT_ID_QUINARY_PCM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
551 LPASS_BE_QUIN_AUXPCM_RX},
552 { AFE_PORT_ID_QUINARY_PCM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
553 LPASS_BE_QUIN_AUXPCM_TX},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530554 { AFE_PORT_ID_INT0_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
555 LPASS_BE_INT0_MI2S_RX},
556 { AFE_PORT_ID_INT0_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
557 LPASS_BE_INT0_MI2S_TX},
558 { AFE_PORT_ID_INT1_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
559 LPASS_BE_INT1_MI2S_RX},
560 { AFE_PORT_ID_INT1_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
561 LPASS_BE_INT1_MI2S_TX},
562 { AFE_PORT_ID_INT2_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
563 LPASS_BE_INT2_MI2S_RX},
564 { AFE_PORT_ID_INT2_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
565 LPASS_BE_INT2_MI2S_TX},
566 { AFE_PORT_ID_INT3_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
567 LPASS_BE_INT3_MI2S_RX},
568 { AFE_PORT_ID_INT3_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
569 LPASS_BE_INT3_MI2S_TX},
570 { AFE_PORT_ID_INT4_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
571 LPASS_BE_INT4_MI2S_RX},
572 { AFE_PORT_ID_INT4_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
573 LPASS_BE_INT4_MI2S_TX},
574 { AFE_PORT_ID_INT5_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
575 LPASS_BE_INT5_MI2S_RX},
576 { AFE_PORT_ID_INT5_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
577 LPASS_BE_INT5_MI2S_TX},
578 { AFE_PORT_ID_INT6_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
579 LPASS_BE_INT6_MI2S_RX},
580 { AFE_PORT_ID_INT6_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
581 LPASS_BE_INT6_MI2S_TX},
582};
583
584/* Track ASM playback & capture sessions of DAI
585 * Track LSM listen sessions
586 */
587static struct msm_pcm_routing_fdai_data
588 fe_dai_map[MSM_FRONTEND_DAI_MAX][2] = {
589 /* MULTIMEDIA1 */
590 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
591 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
592 /* MULTIMEDIA2 */
593 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
594 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
595 /* MULTIMEDIA3 */
596 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
597 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
598 /* MULTIMEDIA4 */
599 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
600 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
601 /* MULTIMEDIA5 */
602 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
603 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
604 /* MULTIMEDIA6 */
605 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
606 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
607 /* MULTIMEDIA7*/
608 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
609 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
610 /* MULTIMEDIA8 */
611 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
612 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
613 /* MULTIMEDIA9 */
614 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
615 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
616 /* MULTIMEDIA10 */
617 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
618 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
619 /* MULTIMEDIA11 */
620 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
621 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
622 /* MULTIMEDIA12 */
623 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
624 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
625 /* MULTIMEDIA13 */
626 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
627 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
628 /* MULTIMEDIA14 */
629 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
630 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
631 /* MULTIMEDIA15 */
632 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
633 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
634 /* MULTIMEDIA16 */
635 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
636 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
637 /* MULTIMEDIA17 */
638 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
639 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
640 /* MULTIMEDIA18 */
641 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
642 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
643 /* MULTIMEDIA19 */
644 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
645 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
646 /* MULTIMEDIA20 */
647 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
648 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530649 /* VOIP */
650 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
651 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
652 /* AFE_RX */
653 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
654 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
655 /* AFE_TX */
656 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
657 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
658 /* VOICE_STUB */
659 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
660 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530661 /* DTMF_RX */
662 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
663 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530664 /* QCHAT */
665 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
666 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
667 /* VOLTE_STUB */
668 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
669 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
670 /* LSM1 */
671 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
672 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
673 /* LSM2 */
674 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
675 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
676 /* LSM3 */
677 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
678 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
679 /* LSM4 */
680 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
681 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
682 /* LSM5 */
683 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
684 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
685 /* LSM6 */
686 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
687 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
688 /* LSM7 */
689 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
690 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
691 /* LSM8 */
692 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
693 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
694 /* VOICE2_STUB */
695 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
696 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530697 /* VOICEMMODE1 */
698 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
699 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
700 /* VOICEMMODE2 */
701 {{0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} },
702 {0, INVALID_SESSION, LEGACY_PCM_MODE, {NULL, NULL} } },
703};
704
705static unsigned long session_copp_map[MSM_FRONTEND_DAI_MAX][2]
706 [MSM_BACKEND_DAI_MAX];
707static struct msm_pcm_routing_app_type_data app_type_cfg[MAX_APP_TYPES];
708static struct msm_pcm_routing_app_type_data lsm_app_type_cfg[MAX_APP_TYPES];
709static struct msm_pcm_stream_app_type_cfg
710 fe_dai_app_type_cfg[MSM_FRONTEND_DAI_MAX][2][MSM_BACKEND_DAI_MAX];
711
712static int last_be_id_configured[MSM_FRONTEND_DAI_MAX][MAX_SESSION_TYPES];
713
714/* The caller of this should aqcuire routing lock */
715void msm_pcm_routing_get_bedai_info(int be_idx,
716 struct msm_pcm_routing_bdai_data *be_dai)
717{
718 if (be_idx >= 0 && be_idx < MSM_BACKEND_DAI_MAX)
719 memcpy(be_dai, &msm_bedais[be_idx],
720 sizeof(struct msm_pcm_routing_bdai_data));
721}
722
723/* The caller of this should aqcuire routing lock */
724void msm_pcm_routing_get_fedai_info(int fe_idx, int sess_type,
725 struct msm_pcm_routing_fdai_data *fe_dai)
726{
727 if ((sess_type == SESSION_TYPE_TX) || (sess_type == SESSION_TYPE_RX))
728 memcpy(fe_dai, &fe_dai_map[fe_idx][sess_type],
729 sizeof(struct msm_pcm_routing_fdai_data));
730}
731
732void msm_pcm_routing_acquire_lock(void)
733{
734 mutex_lock(&routing_lock);
735}
736
737void msm_pcm_routing_release_lock(void)
738{
739 mutex_unlock(&routing_lock);
740}
741
742static int msm_pcm_routing_get_app_type_idx(int app_type)
743{
744 int idx;
745
746 pr_debug("%s: app_type: %d\n", __func__, app_type);
747 for (idx = 0; idx < MAX_APP_TYPES; idx++) {
748 if (app_type_cfg[idx].app_type == app_type)
749 return idx;
750 }
751 pr_info("%s: App type not available, fallback to default\n", __func__);
752 return 0;
753}
754
755static int msm_pcm_routing_get_lsm_app_type_idx(int app_type)
756{
757 int idx;
758
759 pr_debug("%s: app_type: %d\n", __func__, app_type);
760 for (idx = 0; idx < MAX_APP_TYPES; idx++) {
761 if (lsm_app_type_cfg[idx].app_type == app_type)
762 return idx;
763 }
764 pr_debug("%s: App type not available, fallback to default\n", __func__);
765 return 0;
766}
767
768static bool is_mm_lsm_fe_id(int fe_id)
769{
770 bool rc = true;
771
772 if (fe_id > MSM_FRONTEND_DAI_MM_MAX_ID &&
773 ((fe_id < MSM_FRONTEND_DAI_LSM1) ||
774 (fe_id > MSM_FRONTEND_DAI_LSM8))) {
775 rc = false;
776 }
777 return rc;
778}
779
780int msm_pcm_routing_reg_stream_app_type_cfg(
781 int fedai_id, int session_type, int be_id,
782 struct msm_pcm_stream_app_type_cfg *cfg_data)
783{
784 int ret = 0;
785
786 if (cfg_data == NULL) {
787 pr_err("%s: Received NULL pointer for cfg_data\n", __func__);
788 ret = -EINVAL;
789 goto done;
790 }
791
792 pr_debug("%s: fedai_id %d, session_type %d, be_id %d, app_type %d, acdb_dev_id %d, sample_rate %d\n",
793 __func__, fedai_id, session_type, be_id,
794 cfg_data->app_type, cfg_data->acdb_dev_id,
795 cfg_data->sample_rate);
796
797 if (!is_mm_lsm_fe_id(fedai_id)) {
798 pr_err("%s: Invalid machine driver ID %d\n",
799 __func__, fedai_id);
800 ret = -EINVAL;
801 goto done;
802 }
803 if (session_type != SESSION_TYPE_RX &&
804 session_type != SESSION_TYPE_TX) {
805 pr_err("%s: Invalid session type %d\n",
806 __func__, session_type);
807 ret = -EINVAL;
808 goto done;
809 }
810 if (be_id < 0 || be_id >= MSM_BACKEND_DAI_MAX) {
811 pr_err("%s: Received out of bounds be_id %d\n",
812 __func__, be_id);
813 ret = -EINVAL;
814 goto done;
815 }
816
817 fe_dai_app_type_cfg[fedai_id][session_type][be_id] = *cfg_data;
818
819 /*
820 * Store the BE ID of the configuration information set as the latest so
821 * the get mixer control knows what to return.
822 */
823 last_be_id_configured[fedai_id][session_type] = be_id;
824
825done:
826 return ret;
827}
828EXPORT_SYMBOL(msm_pcm_routing_reg_stream_app_type_cfg);
829
830/**
831 * msm_pcm_routing_get_stream_app_type_cfg
832 *
833 * Receives fedai_id, session_type, be_id, and populates app_type,
834 * acdb_dev_id, & sample rate. Returns 0 on success. On failure returns
835 * -EINVAL and does not alter passed values.
836 *
837 * fedai_id - Passed value, front end ID for which app type config is wanted
838 * session_type - Passed value, session type for which app type config
839 * is wanted
840 * be_id - Returned value, back end device id the app type config data is for
841 * cfg_data - Returned value, configuration data used by app type config
842 */
843int msm_pcm_routing_get_stream_app_type_cfg(
844 int fedai_id, int session_type, int *bedai_id,
845 struct msm_pcm_stream_app_type_cfg *cfg_data)
846{
847 int be_id;
848 int ret = 0;
849
850 if (bedai_id == NULL) {
851 pr_err("%s: Received NULL pointer for backend ID\n", __func__);
852 ret = -EINVAL;
853 goto done;
854 } else if (cfg_data == NULL) {
855 pr_err("%s: NULL pointer sent for cfg_data\n", __func__);
856 ret = -EINVAL;
857 goto done;
858 } else if (!is_mm_lsm_fe_id(fedai_id)) {
859 pr_err("%s: Invalid FE ID %d\n", __func__, fedai_id);
860 ret = -EINVAL;
861 goto done;
862 } else if (session_type != SESSION_TYPE_RX &&
863 session_type != SESSION_TYPE_TX) {
864 pr_err("%s: Invalid session type %d\n", __func__, session_type);
865 ret = -EINVAL;
866 goto done;
867 }
868
869 be_id = last_be_id_configured[fedai_id][session_type];
870 if (be_id < 0 || be_id >= MSM_BACKEND_DAI_MAX) {
871 pr_err("%s: Invalid BE ID %d\n", __func__, be_id);
872 ret = -EINVAL;
873 goto done;
874 }
875
876 *bedai_id = be_id;
877 *cfg_data = fe_dai_app_type_cfg[fedai_id][session_type][be_id];
878 pr_debug("%s: fedai_id %d, session_type %d, be_id %d, app_type %d, acdb_dev_id %d, sample_rate %d\n",
879 __func__, fedai_id, session_type, *bedai_id,
880 cfg_data->app_type, cfg_data->acdb_dev_id,
881 cfg_data->sample_rate);
882done:
883 return ret;
884}
885EXPORT_SYMBOL(msm_pcm_routing_get_stream_app_type_cfg);
886
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530887static struct cal_block_data *msm_routing_find_topology_by_path(int path,
888 int cal_index)
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530889{
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530890 struct list_head *ptr, *next;
891 struct cal_block_data *cal_block = NULL;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530892 pr_debug("%s\n", __func__);
893
894 list_for_each_safe(ptr, next,
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530895 &cal_data[cal_index]->cal_blocks) {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530896
897 cal_block = list_entry(ptr,
898 struct cal_block_data, list);
899
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530900 if (((struct audio_cal_info_adm_top *)cal_block
901 ->cal_info)->path == path) {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530902 return cal_block;
903 }
904 }
905 pr_debug("%s: Can't find topology for path %d\n", __func__, path);
906 return NULL;
907}
908
909static struct cal_block_data *msm_routing_find_topology(int path,
910 int app_type,
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530911 int acdb_id,
912 int cal_index)
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530913{
914 struct list_head *ptr, *next;
915 struct cal_block_data *cal_block = NULL;
916 struct audio_cal_info_adm_top *cal_info;
917
918 pr_debug("%s\n", __func__);
919
920 list_for_each_safe(ptr, next,
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530921 &cal_data[cal_index]->cal_blocks) {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530922
923 cal_block = list_entry(ptr,
924 struct cal_block_data, list);
925
926 cal_info = (struct audio_cal_info_adm_top *)
927 cal_block->cal_info;
928 if ((cal_info->path == path) &&
929 (cal_info->app_type == app_type) &&
930 (cal_info->acdb_id == acdb_id)) {
931 return cal_block;
932 }
933 }
934 pr_debug("%s: Can't find topology for path %d, app %d, acdb_id %d defaulting to search by path\n",
935 __func__, path, app_type, acdb_id);
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530936 return msm_routing_find_topology_by_path(cal_index, path);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530937}
938
939static int msm_routing_get_adm_topology(int fedai_id, int session_type,
940 int be_id)
941{
942 int topology = NULL_COPP_TOPOLOGY;
943 struct cal_block_data *cal_block = NULL;
944 int app_type = 0, acdb_dev_id = 0;
945
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530946 pr_debug("%s: fedai_id %d, session_type %d, be_id %d\n",
947 __func__, fedai_id, session_type, be_id);
948
949 if (cal_data == NULL)
950 goto done;
951
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530952 app_type = fe_dai_app_type_cfg[fedai_id][session_type][be_id].app_type;
953 acdb_dev_id =
954 fe_dai_app_type_cfg[fedai_id][session_type][be_id].acdb_dev_id;
955
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530956 mutex_lock(&cal_data[ADM_TOPOLOGY_CAL_TYPE_IDX]->lock);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530957 cal_block = msm_routing_find_topology(session_type, app_type,
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530958 acdb_dev_id,
959 ADM_TOPOLOGY_CAL_TYPE_IDX);
960 if (cal_block != NULL)
961 topology = ((struct audio_cal_info_adm_top *)
962 cal_block->cal_info)->topology;
963 mutex_unlock(&cal_data[ADM_TOPOLOGY_CAL_TYPE_IDX]->lock);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530964
Aditya Bavanari2a627ae2017-11-21 20:24:53 +0530965 if (cal_block == NULL) {
966 pr_debug("%s: Check for LSM topology\n", __func__);
967 mutex_lock(&cal_data[ADM_LSM_TOPOLOGY_CAL_TYPE_IDX]->lock);
968 cal_block = msm_routing_find_topology(session_type, app_type,
969 acdb_dev_id,
970 ADM_LSM_TOPOLOGY_CAL_TYPE_IDX);
971 if (cal_block != NULL)
972 topology = ((struct audio_cal_info_adm_top *)
973 cal_block->cal_info)->topology;
974 mutex_unlock(&cal_data[ADM_LSM_TOPOLOGY_CAL_TYPE_IDX]->lock);
975 }
976
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +0530977done:
978 pr_debug("%s: Using topology %d\n", __func__, topology);
979 return topology;
980}
981
982static uint8_t is_be_dai_extproc(int be_dai)
983{
984 if (be_dai == MSM_BACKEND_DAI_EXTPROC_RX ||
985 be_dai == MSM_BACKEND_DAI_EXTPROC_TX ||
986 be_dai == MSM_BACKEND_DAI_EXTPROC_EC_TX)
987 return 1;
988 else
989 return 0;
990}
991
992static void msm_pcm_routing_build_matrix(int fedai_id, int sess_type,
993 int path_type, int perf_mode,
994 uint32_t passthr_mode)
995{
996 int i, port_type, j, num_copps = 0;
997 struct route_payload payload;
998
999 port_type = ((path_type == ADM_PATH_PLAYBACK ||
1000 path_type == ADM_PATH_COMPRESSED_RX) ?
1001 MSM_AFE_PORT_TYPE_RX : MSM_AFE_PORT_TYPE_TX);
1002
1003 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
1004 if (!is_be_dai_extproc(i) &&
1005 (afe_get_port_type(msm_bedais[i].port_id) == port_type) &&
1006 (msm_bedais[i].active) &&
1007 (test_bit(fedai_id, &msm_bedais[i].fe_sessions[0]))) {
1008 for (j = 0; j < MAX_COPPS_PER_PORT; j++) {
1009 unsigned long copp =
1010 session_copp_map[fedai_id][sess_type][i];
1011 if (test_bit(j, &copp)) {
1012 payload.port_id[num_copps] =
1013 msm_bedais[i].port_id;
1014 payload.copp_idx[num_copps] = j;
1015 payload.app_type[num_copps] =
1016 fe_dai_app_type_cfg
1017 [fedai_id][sess_type][i]
1018 .app_type;
1019 payload.acdb_dev_id[num_copps] =
1020 fe_dai_app_type_cfg
1021 [fedai_id][sess_type][i]
1022 .acdb_dev_id;
1023 payload.sample_rate[num_copps] =
1024 fe_dai_app_type_cfg
1025 [fedai_id][sess_type][i]
1026 .sample_rate;
1027 num_copps++;
1028 }
1029 }
1030 }
1031 }
1032
1033 if (num_copps) {
1034 payload.num_copps = num_copps;
1035 payload.session_id = fe_dai_map[fedai_id][sess_type].strm_id;
1036 adm_matrix_map(path_type, payload, perf_mode, passthr_mode);
1037 msm_pcm_routng_cfg_matrix_map_pp(payload, path_type, perf_mode);
1038 }
1039}
1040
1041void msm_pcm_routing_reg_psthr_stream(int fedai_id, int dspst_id,
1042 int stream_type)
1043{
1044 int i, session_type, path_type, port_type;
1045 u32 mode = 0;
1046
1047 if (fedai_id > MSM_FRONTEND_DAI_MM_MAX_ID) {
1048 /* bad ID assigned in machine driver */
1049 pr_err("%s: bad MM ID\n", __func__);
1050 return;
1051 }
1052
1053 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK) {
1054 session_type = SESSION_TYPE_RX;
1055 path_type = ADM_PATH_PLAYBACK;
1056 port_type = MSM_AFE_PORT_TYPE_RX;
1057 } else {
1058 session_type = SESSION_TYPE_TX;
1059 path_type = ADM_PATH_LIVE_REC;
1060 port_type = MSM_AFE_PORT_TYPE_TX;
1061 }
1062
1063 mutex_lock(&routing_lock);
1064
1065 fe_dai_map[fedai_id][session_type].strm_id = dspst_id;
1066 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
1067 if (!is_be_dai_extproc(i) &&
1068 (afe_get_port_type(msm_bedais[i].port_id) == port_type) &&
1069 (msm_bedais[i].active) &&
1070 (test_bit(fedai_id, &msm_bedais[i].fe_sessions[0]))) {
1071 mode = afe_get_port_type(msm_bedais[i].port_id);
1072 adm_connect_afe_port(mode, dspst_id,
1073 msm_bedais[i].port_id);
1074 break;
1075 }
1076 }
1077 mutex_unlock(&routing_lock);
1078}
1079
1080static bool route_check_fe_id_adm_support(int fe_id)
1081{
1082 bool rc = true;
1083
1084 if ((fe_id >= MSM_FRONTEND_DAI_LSM1) &&
1085 (fe_id <= MSM_FRONTEND_DAI_LSM8)) {
1086 /* fe id is listen while port is set to afe */
1087 if (lsm_port_index != ADM_LSM_PORT_INDEX) {
1088 pr_debug("%s: fe_id %d, lsm mux slim port %d\n",
1089 __func__, fe_id, lsm_port_index);
1090 rc = false;
1091 }
1092 }
1093
1094 return rc;
1095}
1096
1097int msm_pcm_routing_reg_phy_compr_stream(int fe_id, int perf_mode,
1098 int dspst_id, int stream_type,
1099 uint32_t passthr_mode)
1100{
1101 int i, j, session_type, path_type, port_type, topology;
1102 int num_copps = 0;
1103 struct route_payload payload;
1104 u32 channels, sample_rate;
1105 u16 bit_width = 16;
1106 bool is_lsm;
1107
1108 pr_debug("%s:fe_id[%d] perf_mode[%d] id[%d] stream_type[%d] passt[%d]",
1109 __func__, fe_id, perf_mode, dspst_id,
1110 stream_type, passthr_mode);
1111 if (!is_mm_lsm_fe_id(fe_id)) {
1112 /* bad ID assigned in machine driver */
1113 pr_err("%s: bad MM ID %d\n", __func__, fe_id);
1114 return -EINVAL;
1115 }
1116
1117 if (!route_check_fe_id_adm_support(fe_id)) {
1118 /* ignore adm open if not supported for fe_id */
1119 pr_debug("%s: No ADM support for fe id %d\n", __func__, fe_id);
1120 return 0;
1121 }
1122
1123 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK) {
1124 session_type = SESSION_TYPE_RX;
1125 if (passthr_mode != LEGACY_PCM)
1126 path_type = ADM_PATH_COMPRESSED_RX;
1127 else
1128 path_type = ADM_PATH_PLAYBACK;
1129 port_type = MSM_AFE_PORT_TYPE_RX;
1130 } else if (stream_type == SNDRV_PCM_STREAM_CAPTURE) {
1131 session_type = SESSION_TYPE_TX;
Laxminath Kasam38070be2017-08-17 18:21:59 +05301132 if ((passthr_mode != LEGACY_PCM) && (passthr_mode != LISTEN))
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301133 path_type = ADM_PATH_COMPRESSED_TX;
1134 else
1135 path_type = ADM_PATH_LIVE_REC;
1136 port_type = MSM_AFE_PORT_TYPE_TX;
1137 } else {
1138 pr_err("%s: invalid stream type %d\n", __func__, stream_type);
1139 return -EINVAL;
1140 }
1141
1142 is_lsm = (fe_id >= MSM_FRONTEND_DAI_LSM1) &&
1143 (fe_id <= MSM_FRONTEND_DAI_LSM8);
1144 mutex_lock(&routing_lock);
1145
1146 payload.num_copps = 0; /* only RX needs to use payload */
1147 fe_dai_map[fe_id][session_type].strm_id = dspst_id;
1148 /* re-enable EQ if active */
1149 msm_qti_pp_send_eq_values(fe_id);
1150 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
1151 if (test_bit(fe_id, &msm_bedais[i].fe_sessions[0]))
1152 msm_bedais[i].passthr_mode[fe_id] = passthr_mode;
1153
1154 if (!is_be_dai_extproc(i) &&
1155 (afe_get_port_type(msm_bedais[i].port_id) ==
1156 port_type) &&
1157 (msm_bedais[i].active) &&
1158 (test_bit(fe_id, &msm_bedais[i].fe_sessions[0]))) {
1159 int app_type, app_type_idx, copp_idx, acdb_dev_id;
1160
1161 /*
1162 * check if ADM needs to be configured with different
1163 * channel mapping than backend
1164 */
1165 if (!msm_bedais[i].adm_override_ch)
1166 channels = msm_bedais[i].channel;
1167 else
1168 channels = msm_bedais[i].adm_override_ch;
1169
1170 bit_width = msm_routing_get_bit_width(
1171 msm_bedais[i].format);
1172 app_type =
1173 fe_dai_app_type_cfg[fe_id][session_type][i].app_type;
1174 if (app_type && is_lsm) {
1175 app_type_idx =
1176 msm_pcm_routing_get_lsm_app_type_idx(app_type);
1177 sample_rate =
1178 fe_dai_app_type_cfg[fe_id][session_type][i]
1179 .sample_rate;
1180 bit_width =
1181 lsm_app_type_cfg[app_type_idx].bit_width;
1182 } else if (app_type) {
1183 app_type_idx =
1184 msm_pcm_routing_get_app_type_idx(
1185 app_type);
1186 sample_rate =
1187 fe_dai_app_type_cfg[fe_id][session_type][i].sample_rate;
1188 bit_width =
1189 app_type_cfg[app_type_idx].bit_width;
1190 } else {
1191 sample_rate = msm_bedais[i].sample_rate;
1192 }
1193 acdb_dev_id =
1194 fe_dai_app_type_cfg[fe_id][session_type][i].acdb_dev_id;
1195 topology = msm_routing_get_adm_topology(fe_id,
1196 session_type,
1197 i);
1198 if ((passthr_mode == COMPRESSED_PASSTHROUGH_DSD)
1199 || (passthr_mode ==
1200 COMPRESSED_PASSTHROUGH_GEN))
1201 topology = COMPRESSED_PASSTHROUGH_NONE_TOPOLOGY;
1202 pr_debug("%s: Before adm open topology %d\n", __func__,
1203 topology);
1204
1205 copp_idx =
1206 adm_open(msm_bedais[i].port_id,
1207 path_type, sample_rate, channels,
1208 topology, perf_mode, bit_width,
1209 app_type, acdb_dev_id);
1210 if ((copp_idx < 0) ||
1211 (copp_idx >= MAX_COPPS_PER_PORT)) {
1212 pr_err("%s:adm open failed coppid:%d\n",
1213 __func__, copp_idx);
1214 mutex_unlock(&routing_lock);
1215 return -EINVAL;
1216 }
1217 pr_debug("%s: set idx bit of fe:%d, type: %d, be:%d\n",
1218 __func__, fe_id, session_type, i);
1219 set_bit(copp_idx,
1220 &session_copp_map[fe_id][session_type][i]);
1221
1222 if (msm_is_resample_needed(
1223 sample_rate,
1224 msm_bedais[i].sample_rate))
1225 adm_copp_mfc_cfg(
1226 msm_bedais[i].port_id, copp_idx,
1227 msm_bedais[i].sample_rate);
1228
1229 for (j = 0; j < MAX_COPPS_PER_PORT; j++) {
1230 unsigned long copp =
1231 session_copp_map[fe_id][session_type][i];
1232 if (test_bit(j, &copp)) {
1233 payload.port_id[num_copps] =
1234 msm_bedais[i].port_id;
1235 payload.copp_idx[num_copps] = j;
1236 payload.app_type[num_copps] =
1237 fe_dai_app_type_cfg
1238 [fe_id][session_type][i]
1239 .app_type;
1240 payload.acdb_dev_id[num_copps] =
1241 fe_dai_app_type_cfg
1242 [fe_id][session_type][i]
1243 .acdb_dev_id;
1244 payload.sample_rate[num_copps] =
1245 fe_dai_app_type_cfg
1246 [fe_id][session_type][i]
1247 .sample_rate;
1248 num_copps++;
1249 }
1250 }
1251 if (passthr_mode != COMPRESSED_PASSTHROUGH_DSD
1252 && passthr_mode !=
1253 COMPRESSED_PASSTHROUGH_GEN) {
1254 msm_routing_send_device_pp_params(
1255 msm_bedais[i].port_id,
1256 copp_idx, fe_id);
1257 }
1258 }
1259 }
1260 if (num_copps) {
1261 payload.num_copps = num_copps;
1262 payload.session_id = fe_dai_map[fe_id][session_type].strm_id;
1263 adm_matrix_map(path_type, payload, perf_mode, passthr_mode);
1264 msm_pcm_routng_cfg_matrix_map_pp(payload, path_type, perf_mode);
1265 }
1266 mutex_unlock(&routing_lock);
1267 return 0;
1268}
1269
1270static u32 msm_pcm_routing_get_voc_sessionid(u16 val)
1271{
1272 u32 session_id;
1273
1274 switch (val) {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301275 case MSM_FRONTEND_DAI_QCHAT:
1276 session_id = voc_get_session_id(QCHAT_SESSION_NAME);
1277 break;
1278 case MSM_FRONTEND_DAI_VOIP:
1279 session_id = voc_get_session_id(VOIP_SESSION_NAME);
1280 break;
1281 case MSM_FRONTEND_DAI_VOICEMMODE1:
1282 session_id = voc_get_session_id(VOICEMMODE1_NAME);
1283 break;
1284 case MSM_FRONTEND_DAI_VOICEMMODE2:
1285 session_id = voc_get_session_id(VOICEMMODE2_NAME);
1286 break;
1287 default:
1288 session_id = 0;
1289 }
1290
1291 pr_debug("%s session_id 0x%x", __func__, session_id);
1292 return session_id;
1293}
1294
1295static int msm_pcm_routing_channel_mixer(int fe_id, bool perf_mode,
1296 int dspst_id, int stream_type)
1297{
1298 int copp_idx = 0;
1299 int sess_type = 0;
1300 int i = 0, j = 0, be_id;
1301 int ret = 0;
1302
1303 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
1304 pr_err("%s: invalid FE %d\n", __func__, fe_id);
1305 return 0;
1306 }
1307
1308 if (!(channel_mixer[fe_id].enable)) {
1309 pr_debug("%s: channel mixer not enabled for FE %d\n",
1310 __func__, fe_id);
1311 return 0;
1312 }
1313
1314 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK)
1315 sess_type = SESSION_TYPE_RX;
1316 else
1317 sess_type = SESSION_TYPE_TX;
1318
1319 for (i = 0; i < ADM_MAX_CHANNELS && channel_input[fe_id][i] > 0;
1320 ++i) {
1321 be_id = channel_input[fe_id][i] - 1;
1322 channel_mixer[fe_id].input_channels[i] =
1323 msm_bedais[be_id].channel;
1324
1325 if ((msm_bedais[be_id].active) &&
1326 test_bit(fe_id,
1327 &msm_bedais[be_id].fe_sessions[0])) {
1328 unsigned long copp =
1329 session_copp_map[fe_id][sess_type][be_id];
1330 for (j = 0; j < MAX_COPPS_PER_PORT; j++) {
1331 if (test_bit(j, &copp)) {
1332 copp_idx = j;
1333 break;
1334 }
1335 }
1336
1337 pr_debug("%s: fe %d, be %d, channel %d, copp %d\n",
1338 __func__,
1339 fe_id, be_id, msm_bedais[be_id].channel,
1340 copp_idx);
1341 ret = adm_programable_channel_mixer(
1342 msm_bedais[be_id].port_id,
1343 copp_idx, dspst_id, sess_type,
1344 channel_mixer + fe_id, i);
1345 }
1346 }
1347
1348 return ret;
1349}
1350
1351int msm_pcm_routing_reg_phy_stream(int fedai_id, int perf_mode,
1352 int dspst_id, int stream_type)
1353{
1354 int i, j, session_type, path_type, port_type, topology, num_copps = 0;
1355 struct route_payload payload;
1356 u32 channels, sample_rate;
1357 uint16_t bits_per_sample = 16;
1358 uint32_t passthr_mode = LEGACY_PCM;
1359 int ret = 0;
1360
1361 if (fedai_id > MSM_FRONTEND_DAI_MM_MAX_ID) {
1362 /* bad ID assigned in machine driver */
1363 pr_err("%s: bad MM ID %d\n", __func__, fedai_id);
1364 return -EINVAL;
1365 }
1366
1367 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK) {
1368 session_type = SESSION_TYPE_RX;
1369 path_type = ADM_PATH_PLAYBACK;
1370 port_type = MSM_AFE_PORT_TYPE_RX;
1371 } else {
1372 session_type = SESSION_TYPE_TX;
1373 path_type = ADM_PATH_LIVE_REC;
1374 port_type = MSM_AFE_PORT_TYPE_TX;
1375 }
1376
1377 mutex_lock(&routing_lock);
1378
1379 payload.num_copps = 0; /* only RX needs to use payload */
1380 fe_dai_map[fedai_id][session_type].strm_id = dspst_id;
1381 fe_dai_map[fedai_id][session_type].perf_mode = perf_mode;
1382
1383 /* re-enable EQ if active */
1384 msm_qti_pp_send_eq_values(fedai_id);
1385 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
1386 if (!is_be_dai_extproc(i) &&
1387 (afe_get_port_type(msm_bedais[i].port_id) == port_type) &&
1388 (msm_bedais[i].active) &&
1389 (test_bit(fedai_id, &msm_bedais[i].fe_sessions[0]))) {
1390 int app_type, app_type_idx, copp_idx, acdb_dev_id;
1391 /*
1392 * check if ADM needs to be configured with different
1393 * channel mapping than backend
1394 */
1395 if (!msm_bedais[i].adm_override_ch)
1396 channels = msm_bedais[i].channel;
1397 else
1398 channels = msm_bedais[i].adm_override_ch;
1399 msm_bedais[i].passthr_mode[fedai_id] =
1400 LEGACY_PCM;
1401
1402 bits_per_sample = msm_routing_get_bit_width(
1403 msm_bedais[i].format);
1404
1405 app_type =
1406 fe_dai_app_type_cfg[fedai_id][session_type][i].app_type;
1407 if (app_type) {
1408 app_type_idx =
1409 msm_pcm_routing_get_app_type_idx(app_type);
1410 sample_rate =
1411 fe_dai_app_type_cfg[fedai_id][session_type][i]
1412 .sample_rate;
1413 bits_per_sample =
1414 app_type_cfg[app_type_idx].bit_width;
1415 } else
1416 sample_rate = msm_bedais[i].sample_rate;
1417
1418 acdb_dev_id =
1419 fe_dai_app_type_cfg[fedai_id][session_type][i]
1420 .acdb_dev_id;
1421 topology = msm_routing_get_adm_topology(fedai_id,
1422 session_type,
1423 i);
1424 copp_idx = adm_open(msm_bedais[i].port_id, path_type,
1425 sample_rate, channels, topology,
1426 perf_mode, bits_per_sample,
1427 app_type, acdb_dev_id);
1428 if ((copp_idx < 0) ||
1429 (copp_idx >= MAX_COPPS_PER_PORT)) {
1430 pr_err("%s: adm open failed copp_idx:%d\n",
1431 __func__, copp_idx);
1432 mutex_unlock(&routing_lock);
1433 return -EINVAL;
1434 }
1435 pr_debug("%s: setting idx bit of fe:%d, type: %d, be:%d\n",
1436 __func__, fedai_id, session_type, i);
1437 set_bit(copp_idx,
1438 &session_copp_map[fedai_id][session_type][i]);
1439
1440 if (msm_is_resample_needed(
1441 sample_rate,
1442 msm_bedais[i].sample_rate))
1443 adm_copp_mfc_cfg(
1444 msm_bedais[i].port_id, copp_idx,
1445 msm_bedais[i].sample_rate);
1446
1447 for (j = 0; j < MAX_COPPS_PER_PORT; j++) {
1448 unsigned long copp =
1449 session_copp_map[fedai_id][session_type][i];
1450 if (test_bit(j, &copp)) {
1451 payload.port_id[num_copps] =
1452 msm_bedais[i].port_id;
1453 payload.copp_idx[num_copps] = j;
1454 payload.app_type[num_copps] =
1455 fe_dai_app_type_cfg
1456 [fedai_id][session_type]
1457 [i].app_type;
1458 payload.acdb_dev_id[num_copps] =
1459 fe_dai_app_type_cfg
1460 [fedai_id][session_type]
1461 [i].acdb_dev_id;
1462 payload.sample_rate[num_copps] =
1463 fe_dai_app_type_cfg
1464 [fedai_id][session_type]
1465 [i].sample_rate;
1466 num_copps++;
1467 }
1468 }
1469 if ((perf_mode == LEGACY_PCM_MODE) &&
1470 (msm_bedais[i].passthr_mode[fedai_id] ==
1471 LEGACY_PCM))
1472 msm_pcm_routing_cfg_pp(msm_bedais[i].port_id,
1473 copp_idx, topology,
1474 channels);
1475 }
1476 }
1477 if (num_copps) {
1478 payload.num_copps = num_copps;
1479 payload.session_id = fe_dai_map[fedai_id][session_type].strm_id;
1480 adm_matrix_map(path_type, payload, perf_mode, passthr_mode);
1481 msm_pcm_routng_cfg_matrix_map_pp(payload, path_type, perf_mode);
1482 }
1483
1484 ret = msm_pcm_routing_channel_mixer(fedai_id, perf_mode,
1485 dspst_id, stream_type);
1486 mutex_unlock(&routing_lock);
1487 return ret;
1488}
1489
1490int msm_pcm_routing_reg_phy_stream_v2(int fedai_id, int perf_mode,
1491 int dspst_id, int stream_type,
1492 struct msm_pcm_routing_evt event_info)
1493{
1494 if (msm_pcm_routing_reg_phy_stream(fedai_id, perf_mode, dspst_id,
1495 stream_type)) {
1496 pr_err("%s: failed to reg phy stream\n", __func__);
1497 return -EINVAL;
1498 }
1499
1500 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK)
1501 fe_dai_map[fedai_id][SESSION_TYPE_RX].event_info = event_info;
1502 else
1503 fe_dai_map[fedai_id][SESSION_TYPE_TX].event_info = event_info;
1504 return 0;
1505}
1506
1507void msm_pcm_routing_dereg_phy_stream(int fedai_id, int stream_type)
1508{
1509 int i, port_type, session_type, path_type, topology;
1510 struct msm_pcm_routing_fdai_data *fdai;
1511
1512 if (!is_mm_lsm_fe_id(fedai_id)) {
1513 /* bad ID assigned in machine driver */
1514 pr_err("%s: bad MM ID\n", __func__);
1515 return;
1516 }
1517
1518 if (stream_type == SNDRV_PCM_STREAM_PLAYBACK) {
1519 port_type = MSM_AFE_PORT_TYPE_RX;
1520 session_type = SESSION_TYPE_RX;
1521 path_type = ADM_PATH_PLAYBACK;
1522 } else {
1523 port_type = MSM_AFE_PORT_TYPE_TX;
1524 session_type = SESSION_TYPE_TX;
1525 path_type = ADM_PATH_LIVE_REC;
1526 }
1527
1528 mutex_lock(&routing_lock);
1529 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
1530 if (!is_be_dai_extproc(i) &&
1531 (afe_get_port_type(msm_bedais[i].port_id) == port_type) &&
1532 (msm_bedais[i].active) &&
1533 (test_bit(fedai_id, &msm_bedais[i].fe_sessions[0]))) {
1534 int idx;
1535 unsigned long copp =
1536 session_copp_map[fedai_id][session_type][i];
1537 fdai = &fe_dai_map[fedai_id][session_type];
1538
1539 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++)
1540 if (test_bit(idx, &copp))
1541 break;
1542
1543 if (idx >= MAX_COPPS_PER_PORT || idx < 0) {
1544 pr_debug("%s: copp idx is invalid, exiting\n",
1545 __func__);
1546 continue;
1547 }
1548 topology = adm_get_topology_for_port_copp_idx(
1549 msm_bedais[i].port_id, idx);
1550 adm_close(msm_bedais[i].port_id, fdai->perf_mode, idx);
1551 pr_debug("%s:copp:%ld,idx bit fe:%d,type:%d,be:%d\n",
1552 __func__, copp, fedai_id, session_type, i);
1553 clear_bit(idx,
1554 &session_copp_map[fedai_id][session_type][i]);
1555 if ((topology == DOLBY_ADM_COPP_TOPOLOGY_ID ||
1556 topology == DS2_ADM_COPP_TOPOLOGY_ID) &&
1557 (fdai->perf_mode == LEGACY_PCM_MODE) &&
1558 (msm_bedais[i].passthr_mode[fedai_id] ==
1559 LEGACY_PCM))
1560 msm_pcm_routing_deinit_pp(msm_bedais[i].port_id,
1561 topology);
1562 }
1563 }
1564
1565 fe_dai_map[fedai_id][session_type].strm_id = INVALID_SESSION;
1566 fe_dai_map[fedai_id][session_type].be_srate = 0;
1567 mutex_unlock(&routing_lock);
1568}
1569
1570/* Check if FE/BE route is set */
1571static bool msm_pcm_routing_route_is_set(u16 be_id, u16 fe_id)
1572{
1573 bool rc = false;
1574
1575 if (!is_mm_lsm_fe_id(fe_id)) {
1576 /* recheck FE ID in the mixer control defined in this file */
1577 pr_err("%s: bad MM ID\n", __func__);
1578 return rc;
1579 }
1580
1581 if (test_bit(fe_id, &msm_bedais[be_id].fe_sessions[0]))
1582 rc = true;
1583
1584 return rc;
1585}
1586
1587static void msm_pcm_routing_process_audio(u16 reg, u16 val, int set)
1588{
1589 int session_type, path_type, topology;
1590 u32 channels, sample_rate;
1591 uint16_t bits_per_sample = 16;
1592 struct msm_pcm_routing_fdai_data *fdai;
1593 uint32_t passthr_mode;
1594 bool is_lsm;
1595
1596 pr_debug("%s: reg %x val %x set %x\n", __func__, reg, val, set);
1597
1598 if (!is_mm_lsm_fe_id(val)) {
1599 /* recheck FE ID in the mixer control defined in this file */
1600 pr_err("%s: bad MM ID\n", __func__);
1601 return;
1602 }
1603
1604 if (!route_check_fe_id_adm_support(val)) {
1605 /* ignore adm open if not supported for fe_id */
1606 pr_debug("%s: No ADM support for fe id %d\n", __func__, val);
1607 return;
1608 }
1609
1610 passthr_mode = msm_bedais[reg].passthr_mode[val];
1611 if (afe_get_port_type(msm_bedais[reg].port_id) ==
1612 MSM_AFE_PORT_TYPE_RX) {
1613 session_type = SESSION_TYPE_RX;
1614 if (passthr_mode != LEGACY_PCM)
1615 path_type = ADM_PATH_COMPRESSED_RX;
1616 else
1617 path_type = ADM_PATH_PLAYBACK;
1618 } else {
1619 session_type = SESSION_TYPE_TX;
1620 if (passthr_mode != LEGACY_PCM)
1621 path_type = ADM_PATH_COMPRESSED_TX;
1622 else
1623 path_type = ADM_PATH_LIVE_REC;
1624 }
1625 is_lsm = (val >= MSM_FRONTEND_DAI_LSM1) &&
1626 (val <= MSM_FRONTEND_DAI_LSM8);
1627
1628 mutex_lock(&routing_lock);
1629 if (set) {
1630 if (!test_bit(val, &msm_bedais[reg].fe_sessions[0]) &&
1631 ((msm_bedais[reg].port_id == VOICE_PLAYBACK_TX) ||
1632 (msm_bedais[reg].port_id == VOICE2_PLAYBACK_TX)))
1633 voc_start_playback(set, msm_bedais[reg].port_id);
1634
1635 set_bit(val, &msm_bedais[reg].fe_sessions[0]);
1636 fdai = &fe_dai_map[val][session_type];
1637 if (msm_bedais[reg].active && fdai->strm_id !=
1638 INVALID_SESSION) {
1639 int app_type, app_type_idx, copp_idx, acdb_dev_id;
1640 /*
1641 * check if ADM needs to be configured with different
1642 * channel mapping than backend
1643 */
1644 if (!msm_bedais[reg].adm_override_ch)
1645 channels = msm_bedais[reg].channel;
1646 else
1647 channels = msm_bedais[reg].adm_override_ch;
1648 if (session_type == SESSION_TYPE_TX &&
1649 fdai->be_srate &&
1650 (fdai->be_srate != msm_bedais[reg].sample_rate)) {
1651 pr_debug("%s: flush strm %d diff BE rates\n",
1652 __func__, fdai->strm_id);
1653
1654 if (fdai->event_info.event_func)
1655 fdai->event_info.event_func(
1656 MSM_PCM_RT_EVT_BUF_RECFG,
1657 fdai->event_info.priv_data);
1658 fdai->be_srate = 0; /* might not need it */
1659 }
1660
1661 bits_per_sample = msm_routing_get_bit_width(
1662 msm_bedais[reg].format);
1663
1664 app_type =
1665 fe_dai_app_type_cfg[val][session_type][reg].app_type;
1666 if (app_type && is_lsm) {
1667 app_type_idx =
1668 msm_pcm_routing_get_lsm_app_type_idx(app_type);
1669 sample_rate =
1670 fe_dai_app_type_cfg[val][session_type][reg]
1671 .sample_rate;
1672 bits_per_sample =
1673 lsm_app_type_cfg[app_type_idx].bit_width;
1674 } else if (app_type) {
1675 app_type_idx =
1676 msm_pcm_routing_get_app_type_idx(app_type);
1677 sample_rate =
1678 fe_dai_app_type_cfg[val][session_type][reg]
1679 .sample_rate;
1680 bits_per_sample =
1681 app_type_cfg[app_type_idx].bit_width;
1682 } else
1683 sample_rate = msm_bedais[reg].sample_rate;
1684
1685 topology = msm_routing_get_adm_topology(val,
1686 session_type,
1687 reg);
1688 acdb_dev_id =
1689 fe_dai_app_type_cfg[val][session_type][reg].acdb_dev_id;
1690 copp_idx = adm_open(msm_bedais[reg].port_id, path_type,
1691 sample_rate, channels, topology,
1692 fdai->perf_mode, bits_per_sample,
1693 app_type, acdb_dev_id);
1694 if ((copp_idx < 0) ||
1695 (copp_idx >= MAX_COPPS_PER_PORT)) {
1696 pr_err("%s: adm open failed\n", __func__);
1697 mutex_unlock(&routing_lock);
1698 return;
1699 }
1700 pr_debug("%s: setting idx bit of fe:%d, type: %d, be:%d\n",
1701 __func__, val, session_type, reg);
1702 set_bit(copp_idx,
1703 &session_copp_map[val][session_type][reg]);
1704
1705 if (msm_is_resample_needed(
1706 sample_rate,
1707 msm_bedais[reg].sample_rate))
1708 adm_copp_mfc_cfg(
1709 msm_bedais[reg].port_id, copp_idx,
1710 msm_bedais[reg].sample_rate);
1711
1712 if (session_type == SESSION_TYPE_RX &&
1713 fdai->event_info.event_func)
1714 fdai->event_info.event_func(
1715 MSM_PCM_RT_EVT_DEVSWITCH,
1716 fdai->event_info.priv_data);
1717
1718 msm_pcm_routing_build_matrix(val, session_type,
1719 path_type,
1720 fdai->perf_mode,
1721 passthr_mode);
1722 if ((fdai->perf_mode == LEGACY_PCM_MODE) &&
1723 (passthr_mode == LEGACY_PCM))
1724 msm_pcm_routing_cfg_pp(msm_bedais[reg].port_id,
1725 copp_idx, topology,
1726 channels);
1727 }
1728 } else {
1729 if (test_bit(val, &msm_bedais[reg].fe_sessions[0]) &&
1730 ((msm_bedais[reg].port_id == VOICE_PLAYBACK_TX) ||
1731 (msm_bedais[reg].port_id == VOICE2_PLAYBACK_TX)))
1732 voc_start_playback(set, msm_bedais[reg].port_id);
1733 clear_bit(val, &msm_bedais[reg].fe_sessions[0]);
1734 fdai = &fe_dai_map[val][session_type];
1735 if (msm_bedais[reg].active && fdai->strm_id !=
1736 INVALID_SESSION) {
1737 int idx;
1738 int port_id;
1739 unsigned long copp =
1740 session_copp_map[val][session_type][reg];
1741 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++)
1742 if (test_bit(idx, &copp))
1743 break;
1744
1745 port_id = msm_bedais[reg].port_id;
1746 topology = adm_get_topology_for_port_copp_idx(port_id,
1747 idx);
1748 adm_close(msm_bedais[reg].port_id, fdai->perf_mode,
1749 idx);
1750 pr_debug("%s: copp: %ld, reset idx bit fe:%d, type: %d, be:%d topology=0x%x\n",
1751 __func__, copp, val, session_type, reg,
1752 topology);
1753 clear_bit(idx,
1754 &session_copp_map[val][session_type][reg]);
1755 if ((topology == DOLBY_ADM_COPP_TOPOLOGY_ID ||
1756 topology == DS2_ADM_COPP_TOPOLOGY_ID) &&
1757 (fdai->perf_mode == LEGACY_PCM_MODE) &&
1758 (passthr_mode == LEGACY_PCM))
1759 msm_pcm_routing_deinit_pp(
1760 msm_bedais[reg].port_id,
1761 topology);
1762 msm_pcm_routing_build_matrix(val, session_type,
1763 path_type,
1764 fdai->perf_mode,
1765 passthr_mode);
1766 }
1767 }
1768 if ((msm_bedais[reg].port_id == VOICE_RECORD_RX)
1769 || (msm_bedais[reg].port_id == VOICE_RECORD_TX))
1770 voc_start_record(msm_bedais[reg].port_id, set, voc_session_id);
1771
1772 mutex_unlock(&routing_lock);
1773}
1774
1775static int msm_routing_get_audio_mixer(struct snd_kcontrol *kcontrol,
1776 struct snd_ctl_elem_value *ucontrol)
1777{
1778 struct soc_mixer_control *mc =
1779 (struct soc_mixer_control *)kcontrol->private_value;
1780
1781 if (test_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]))
1782 ucontrol->value.integer.value[0] = 1;
1783 else
1784 ucontrol->value.integer.value[0] = 0;
1785
1786 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
1787 ucontrol->value.integer.value[0]);
1788
1789 return 0;
1790}
1791
1792static int msm_routing_put_audio_mixer(struct snd_kcontrol *kcontrol,
1793 struct snd_ctl_elem_value *ucontrol)
1794{
Asish Bhattacharya34504582017-08-08 12:55:01 +05301795 struct snd_soc_dapm_widget *widget =
1796 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301797 struct soc_mixer_control *mc =
1798 (struct soc_mixer_control *)kcontrol->private_value;
1799 struct snd_soc_dapm_update *update = NULL;
1800
1801 if (ucontrol->value.integer.value[0] &&
1802 msm_pcm_routing_route_is_set(mc->reg, mc->shift) == false) {
1803 msm_pcm_routing_process_audio(mc->reg, mc->shift, 1);
1804 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
1805 update);
1806 } else if (!ucontrol->value.integer.value[0] &&
1807 msm_pcm_routing_route_is_set(mc->reg, mc->shift) == true) {
1808 msm_pcm_routing_process_audio(mc->reg, mc->shift, 0);
1809 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
1810 update);
1811 }
1812
1813 return 1;
1814}
1815
1816static int msm_routing_get_listen_mixer(struct snd_kcontrol *kcontrol,
1817 struct snd_ctl_elem_value *ucontrol)
1818{
1819 struct soc_mixer_control *mc =
1820 (struct soc_mixer_control *)kcontrol->private_value;
1821
1822 if (test_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]))
1823 ucontrol->value.integer.value[0] = 1;
1824 else
1825 ucontrol->value.integer.value[0] = 0;
1826
1827 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
1828 ucontrol->value.integer.value[0]);
1829
1830 return 0;
1831}
1832
1833static int msm_routing_put_listen_mixer(struct snd_kcontrol *kcontrol,
1834 struct snd_ctl_elem_value *ucontrol)
1835{
Asish Bhattacharya34504582017-08-08 12:55:01 +05301836 struct snd_soc_dapm_widget *widget =
1837 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301838 struct soc_mixer_control *mc =
1839 (struct soc_mixer_control *)kcontrol->private_value;
1840 struct snd_soc_dapm_update *update = NULL;
1841
1842 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
1843 ucontrol->value.integer.value[0]);
1844
1845 if (ucontrol->value.integer.value[0]) {
1846 if (msm_pcm_routing_route_is_set(mc->reg, mc->shift) == false)
1847 msm_pcm_routing_process_audio(mc->reg, mc->shift, 1);
1848 snd_soc_dapm_mixer_update_power(widget->dapm,
1849 kcontrol, 1, update);
1850 } else if (!ucontrol->value.integer.value[0]) {
1851 if (msm_pcm_routing_route_is_set(mc->reg, mc->shift) == true)
1852 msm_pcm_routing_process_audio(mc->reg, mc->shift, 0);
1853 snd_soc_dapm_mixer_update_power(widget->dapm,
1854 kcontrol, 0, update);
1855 }
1856
1857 return 1;
1858}
1859
1860static void msm_pcm_routing_process_voice(u16 reg, u16 val, int set)
1861{
1862 u32 session_id = 0;
1863 u16 path_type;
1864 struct media_format_info voc_be_media_format;
1865
1866 pr_debug("%s: reg %x val %x set %x\n", __func__, reg, val, set);
1867
1868 session_id = msm_pcm_routing_get_voc_sessionid(val);
1869
1870 pr_debug("%s: FE DAI 0x%x session_id 0x%x\n",
1871 __func__, val, session_id);
1872
1873 mutex_lock(&routing_lock);
1874
1875 if (set)
1876 set_bit(val, &msm_bedais[reg].fe_sessions[0]);
1877 else
1878 clear_bit(val, &msm_bedais[reg].fe_sessions[0]);
1879
1880 if (val == MSM_FRONTEND_DAI_DTMF_RX &&
1881 afe_get_port_type(msm_bedais[reg].port_id) ==
1882 MSM_AFE_PORT_TYPE_RX) {
1883 pr_debug("%s(): set=%d port id=0x%x for dtmf generation\n",
1884 __func__, set, msm_bedais[reg].port_id);
1885 afe_set_dtmf_gen_rx_portid(msm_bedais[reg].port_id, set);
1886 }
1887
1888 if (afe_get_port_type(msm_bedais[reg].port_id) ==
1889 MSM_AFE_PORT_TYPE_RX)
1890 path_type = RX_PATH;
1891 else
1892 path_type = TX_PATH;
1893
1894 if (set) {
1895 if (msm_bedais[reg].active) {
1896 voc_set_route_flag(session_id, path_type, 1);
1897
1898 memset(&voc_be_media_format, 0,
1899 sizeof(struct media_format_info));
1900
1901 voc_be_media_format.port_id = msm_bedais[reg].port_id;
1902 voc_be_media_format.num_channels =
1903 msm_bedais[reg].channel;
1904 voc_be_media_format.sample_rate =
1905 msm_bedais[reg].sample_rate;
1906 voc_be_media_format.bits_per_sample =
1907 msm_bedais[reg].format;
1908 /* Defaulting this to 1 for voice call usecases */
1909 voc_be_media_format.channel_mapping[0] = 1;
1910
1911 voc_set_device_config(session_id, path_type,
1912 &voc_be_media_format);
1913
1914 if (voc_get_route_flag(session_id, TX_PATH) &&
1915 voc_get_route_flag(session_id, RX_PATH))
1916 voc_enable_device(session_id);
1917 } else {
1918 pr_debug("%s BE is not active\n", __func__);
1919 }
1920 } else {
1921 voc_set_route_flag(session_id, path_type, 0);
1922 voc_disable_device(session_id);
1923 }
1924
1925 mutex_unlock(&routing_lock);
1926
1927}
1928
1929static int msm_routing_get_voice_mixer(struct snd_kcontrol *kcontrol,
1930 struct snd_ctl_elem_value *ucontrol)
1931{
1932 struct soc_mixer_control *mc =
1933 (struct soc_mixer_control *)kcontrol->private_value;
1934
1935 mutex_lock(&routing_lock);
1936
1937 if (test_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]))
1938 ucontrol->value.integer.value[0] = 1;
1939 else
1940 ucontrol->value.integer.value[0] = 0;
1941
1942 mutex_unlock(&routing_lock);
1943
1944 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
1945 ucontrol->value.integer.value[0]);
1946
1947 return 0;
1948}
1949
1950static int msm_routing_put_voice_mixer(struct snd_kcontrol *kcontrol,
1951 struct snd_ctl_elem_value *ucontrol)
1952{
Asish Bhattacharya34504582017-08-08 12:55:01 +05301953 struct snd_soc_dapm_widget *widget =
1954 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301955 struct soc_mixer_control *mc =
1956 (struct soc_mixer_control *)kcontrol->private_value;
1957 struct snd_soc_dapm_update *update = NULL;
1958
1959 if (ucontrol->value.integer.value[0]) {
1960 msm_pcm_routing_process_voice(mc->reg, mc->shift, 1);
1961 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
1962 update);
1963 } else {
1964 msm_pcm_routing_process_voice(mc->reg, mc->shift, 0);
1965 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
1966 update);
1967 }
1968
1969 return 1;
1970}
1971
1972static int msm_routing_get_voice_stub_mixer(struct snd_kcontrol *kcontrol,
1973 struct snd_ctl_elem_value *ucontrol)
1974{
1975 struct soc_mixer_control *mc =
1976 (struct soc_mixer_control *)kcontrol->private_value;
1977
1978 mutex_lock(&routing_lock);
1979
1980 if (test_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]))
1981 ucontrol->value.integer.value[0] = 1;
1982 else
1983 ucontrol->value.integer.value[0] = 0;
1984
1985 mutex_unlock(&routing_lock);
1986
1987 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
1988 ucontrol->value.integer.value[0]);
1989
1990 return 0;
1991}
1992
1993static int msm_routing_put_voice_stub_mixer(struct snd_kcontrol *kcontrol,
1994 struct snd_ctl_elem_value *ucontrol)
1995{
Asish Bhattacharya34504582017-08-08 12:55:01 +05301996 struct snd_soc_dapm_widget *widget =
1997 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05301998 struct soc_mixer_control *mc =
1999 (struct soc_mixer_control *)kcontrol->private_value;
2000 struct snd_soc_dapm_update *update = NULL;
2001
2002 if (ucontrol->value.integer.value[0]) {
2003 mutex_lock(&routing_lock);
2004 set_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]);
2005 mutex_unlock(&routing_lock);
2006
2007 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2008 update);
2009 } else {
2010 mutex_lock(&routing_lock);
2011 clear_bit(mc->shift, &msm_bedais[mc->reg].fe_sessions[0]);
2012 mutex_unlock(&routing_lock);
2013
2014 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2015 update);
2016 }
2017
2018 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
2019 ucontrol->value.integer.value[0]);
2020
2021 return 1;
2022}
2023
2024/*
2025 * Return the mapping between port ID and backend ID to enable the AFE callback
2026 * to determine the acdb_dev_id from the port id
2027 */
2028int msm_pcm_get_be_id_from_port_id(int port_id)
2029{
2030 int i;
2031 int be_id = -EINVAL;
2032
2033 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
2034 if (msm_bedais[i].port_id == port_id) {
2035 be_id = i;
2036 break;
2037 }
2038 }
2039
2040 return be_id;
2041}
2042
2043/*
2044 * Return the registered dev_acdb_id given a port ID to enable identifying the
2045 * correct AFE calibration information by comparing the header information.
2046 */
2047static int msm_pcm_get_dev_acdb_id_by_port_id(int port_id)
2048{
2049 int acdb_id = -EINVAL;
2050 int i = 0;
2051 int session;
2052 int port_type = afe_get_port_type(port_id);
2053 int be_id = msm_pcm_get_be_id_from_port_id(port_id);
2054
2055 pr_debug("%s:port_id %d be_id %d, port_type 0x%x\n",
2056 __func__, port_id, be_id, port_type);
2057
2058 if (port_type == MSM_AFE_PORT_TYPE_TX) {
2059 session = SESSION_TYPE_TX;
2060 } else if (port_type == MSM_AFE_PORT_TYPE_RX) {
2061 session = SESSION_TYPE_RX;
2062 } else {
2063 pr_err("%s: Invalid port type %d\n", __func__, port_type);
2064 acdb_id = -EINVAL;
2065 goto exit;
2066 }
2067
2068 if (be_id < 0) {
2069 pr_err("%s: Error getting backend id %d\n", __func__, be_id);
2070 goto exit;
2071 }
2072
2073 mutex_lock(&routing_lock);
2074 i = find_first_bit(&msm_bedais[be_id].fe_sessions[0],
2075 MSM_FRONTEND_DAI_MAX);
2076 if (i < MSM_FRONTEND_DAI_MAX)
2077 acdb_id = fe_dai_app_type_cfg[i][session][be_id].acdb_dev_id;
2078
2079 pr_debug("%s: FE[%d] session[%d] BE[%d] acdb_id(%d)\n",
2080 __func__, i, session, be_id, acdb_id);
2081 mutex_unlock(&routing_lock);
2082exit:
2083 return acdb_id;
2084}
2085
2086static int msm_routing_get_switch_mixer(struct snd_kcontrol *kcontrol,
2087 struct snd_ctl_elem_value *ucontrol)
2088{
2089 ucontrol->value.integer.value[0] = fm_switch_enable;
2090 pr_debug("%s: FM Switch enable %ld\n", __func__,
2091 ucontrol->value.integer.value[0]);
2092 return 0;
2093}
2094
2095static int msm_routing_put_switch_mixer(struct snd_kcontrol *kcontrol,
2096 struct snd_ctl_elem_value *ucontrol)
2097{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302098 struct snd_soc_dapm_widget *widget =
2099 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302100 struct snd_soc_dapm_update *update = NULL;
2101
2102 pr_debug("%s: FM Switch enable %ld\n", __func__,
2103 ucontrol->value.integer.value[0]);
2104 if (ucontrol->value.integer.value[0])
2105 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2106 update);
2107 else
2108 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2109 update);
2110 fm_switch_enable = ucontrol->value.integer.value[0];
2111 return 1;
2112}
2113
2114static int msm_routing_get_hfp_switch_mixer(struct snd_kcontrol *kcontrol,
2115 struct snd_ctl_elem_value *ucontrol)
2116{
2117 ucontrol->value.integer.value[0] = hfp_switch_enable;
2118 pr_debug("%s: HFP Switch enable %ld\n", __func__,
2119 ucontrol->value.integer.value[0]);
2120 return 0;
2121}
2122
2123static int msm_routing_put_hfp_switch_mixer(struct snd_kcontrol *kcontrol,
2124 struct snd_ctl_elem_value *ucontrol)
2125{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302126 struct snd_soc_dapm_widget *widget =
2127 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302128 struct snd_soc_dapm_update *update = NULL;
2129
2130 pr_debug("%s: HFP Switch enable %ld\n", __func__,
2131 ucontrol->value.integer.value[0]);
2132 if (ucontrol->value.integer.value[0])
2133 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol,
2134 1, update);
2135 else
2136 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol,
2137 0, update);
2138 hfp_switch_enable = ucontrol->value.integer.value[0];
2139 return 1;
2140}
2141
2142static int msm_routing_get_int0_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2143 struct snd_ctl_elem_value *ucontrol)
2144{
2145 ucontrol->value.integer.value[0] = int0_mi2s_switch_enable;
2146 pr_debug("%s: INT0 MI2S Switch enable %ld\n", __func__,
2147 ucontrol->value.integer.value[0]);
2148 return 0;
2149}
2150
2151static int msm_routing_put_int0_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2152 struct snd_ctl_elem_value *ucontrol)
2153{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302154 struct snd_soc_dapm_widget *widget =
2155 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302156 struct snd_soc_dapm_update *update = NULL;
2157
2158 pr_debug("%s: INT0 MI2S Switch enable %ld\n", __func__,
2159 ucontrol->value.integer.value[0]);
2160 if (ucontrol->value.integer.value[0])
2161 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2162 update);
2163 else
2164 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2165 update);
2166 int0_mi2s_switch_enable = ucontrol->value.integer.value[0];
2167 return 1;
2168}
2169
2170static int msm_routing_get_int4_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2171 struct snd_ctl_elem_value *ucontrol)
2172{
2173 ucontrol->value.integer.value[0] = int4_mi2s_switch_enable;
2174 pr_debug("%s: INT4 MI2S Switch enable %ld\n", __func__,
2175 ucontrol->value.integer.value[0]);
2176 return 0;
2177}
2178
2179static int msm_routing_put_int4_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2180 struct snd_ctl_elem_value *ucontrol)
2181{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302182 struct snd_soc_dapm_widget *widget =
2183 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302184 struct snd_soc_dapm_update *update = NULL;
2185
2186 pr_debug("%s: INT4 MI2S Switch enable %ld\n", __func__,
2187 ucontrol->value.integer.value[0]);
2188 if (ucontrol->value.integer.value[0])
2189 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2190 update);
2191 else
2192 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2193 update);
2194 int4_mi2s_switch_enable = ucontrol->value.integer.value[0];
2195 return 1;
2196}
2197
2198static int msm_routing_get_usb_switch_mixer(struct snd_kcontrol *kcontrol,
2199 struct snd_ctl_elem_value *ucontrol)
2200{
2201 ucontrol->value.integer.value[0] = usb_switch_enable;
2202 pr_debug("%s: HFP Switch enable %ld\n", __func__,
2203 ucontrol->value.integer.value[0]);
2204 return 0;
2205}
2206
2207static int msm_routing_put_usb_switch_mixer(struct snd_kcontrol *kcontrol,
2208 struct snd_ctl_elem_value *ucontrol)
2209{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302210 struct snd_soc_dapm_widget *widget =
2211 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302212 struct snd_soc_dapm_update *update = NULL;
2213
2214 pr_debug("%s: USB Switch enable %ld\n", __func__,
2215 ucontrol->value.integer.value[0]);
2216 if (ucontrol->value.integer.value[0])
2217 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol,
2218 1, update);
2219 else
2220 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol,
2221 0, update);
2222 usb_switch_enable = ucontrol->value.integer.value[0];
2223 return 1;
2224}
2225
2226static int msm_routing_get_pri_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2227 struct snd_ctl_elem_value *ucontrol)
2228{
2229 ucontrol->value.integer.value[0] = pri_mi2s_switch_enable;
2230 pr_debug("%s: PRI MI2S Switch enable %ld\n", __func__,
2231 ucontrol->value.integer.value[0]);
2232 return 0;
2233}
2234
2235static int msm_routing_put_pri_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2236 struct snd_ctl_elem_value *ucontrol)
2237{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302238 struct snd_soc_dapm_widget *widget =
2239 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302240 struct snd_soc_dapm_update *update = NULL;
2241
2242 pr_debug("%s: PRI MI2S Switch enable %ld\n", __func__,
2243 ucontrol->value.integer.value[0]);
2244 if (ucontrol->value.integer.value[0])
2245 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2246 update);
2247 else
2248 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2249 update);
2250 pri_mi2s_switch_enable = ucontrol->value.integer.value[0];
2251 return 1;
2252}
2253
2254static int msm_routing_get_sec_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2255 struct snd_ctl_elem_value *ucontrol)
2256{
2257 ucontrol->value.integer.value[0] = sec_mi2s_switch_enable;
2258 pr_debug("%s: SEC MI2S Switch enable %ld\n", __func__,
2259 ucontrol->value.integer.value[0]);
2260 return 0;
2261}
2262
2263static int msm_routing_put_sec_mi2s_switch_mixer(struct snd_kcontrol *kcontrol,
2264 struct snd_ctl_elem_value *ucontrol)
2265{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302266 struct snd_soc_dapm_widget *widget =
2267 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302268 struct snd_soc_dapm_update *update = NULL;
2269
2270 pr_debug("%s: SEC MI2S Switch enable %ld\n", __func__,
2271 ucontrol->value.integer.value[0]);
2272 if (ucontrol->value.integer.value[0])
2273 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2274 update);
2275 else
2276 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2277 update);
2278 sec_mi2s_switch_enable = ucontrol->value.integer.value[0];
2279 return 1;
2280}
2281
2282static int msm_routing_get_tert_mi2s_switch_mixer(
2283 struct snd_kcontrol *kcontrol,
2284 struct snd_ctl_elem_value *ucontrol)
2285{
2286 ucontrol->value.integer.value[0] = tert_mi2s_switch_enable;
2287 pr_debug("%s: TERT MI2S Switch enable %ld\n", __func__,
2288 ucontrol->value.integer.value[0]);
2289 return 0;
2290}
2291
2292static int msm_routing_put_tert_mi2s_switch_mixer(
2293 struct snd_kcontrol *kcontrol,
2294 struct snd_ctl_elem_value *ucontrol)
2295{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302296 struct snd_soc_dapm_widget *widget =
2297 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302298 struct snd_soc_dapm_update *update = NULL;
2299
2300 pr_debug("%s: TERT MI2S Switch enable %ld\n", __func__,
2301 ucontrol->value.integer.value[0]);
2302 if (ucontrol->value.integer.value[0])
2303 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2304 update);
2305 else
2306 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2307 update);
2308 tert_mi2s_switch_enable = ucontrol->value.integer.value[0];
2309 return 1;
2310}
2311
2312static int msm_routing_get_quat_mi2s_switch_mixer(
2313 struct snd_kcontrol *kcontrol,
2314 struct snd_ctl_elem_value *ucontrol)
2315{
2316 ucontrol->value.integer.value[0] = quat_mi2s_switch_enable;
2317 pr_debug("%s: QUAT MI2S Switch enable %ld\n", __func__,
2318 ucontrol->value.integer.value[0]);
2319 return 0;
2320}
2321
2322static int msm_routing_put_quat_mi2s_switch_mixer(
2323 struct snd_kcontrol *kcontrol,
2324 struct snd_ctl_elem_value *ucontrol)
2325{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302326 struct snd_soc_dapm_widget *widget =
2327 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302328 struct snd_soc_dapm_update *update = NULL;
2329
2330 pr_debug("%s: QUAT MI2S Switch enable %ld\n", __func__,
2331 ucontrol->value.integer.value[0]);
2332 if (ucontrol->value.integer.value[0])
2333 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2334 update);
2335 else
2336 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2337 update);
2338 quat_mi2s_switch_enable = ucontrol->value.integer.value[0];
2339 return 1;
2340}
2341
Rohit Kumara5077932017-09-10 22:05:05 +05302342static int msm_routing_get_quin_mi2s_switch_mixer(
2343 struct snd_kcontrol *kcontrol,
2344 struct snd_ctl_elem_value *ucontrol)
2345{
2346 ucontrol->value.integer.value[0] = quin_mi2s_switch_enable;
2347 pr_debug("%s: QUIN MI2S Switch enable %ld\n", __func__,
2348 ucontrol->value.integer.value[0]);
2349 return 0;
2350}
2351
2352static int msm_routing_put_quin_mi2s_switch_mixer(
2353 struct snd_kcontrol *kcontrol,
2354 struct snd_ctl_elem_value *ucontrol)
2355{
2356 struct snd_soc_dapm_widget *widget =
2357 snd_soc_dapm_kcontrol_widget(kcontrol);
2358 struct snd_soc_dapm_update *update = NULL;
2359
2360 pr_debug("%s: QUIN MI2S Switch enable %ld\n", __func__,
2361 ucontrol->value.integer.value[0]);
2362 if (ucontrol->value.integer.value[0])
2363 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2364 update);
2365 else
2366 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2367 update);
2368 quin_mi2s_switch_enable = ucontrol->value.integer.value[0];
2369 return 1;
2370}
2371
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302372static int msm_routing_get_fm_pcmrx_switch_mixer(struct snd_kcontrol *kcontrol,
2373 struct snd_ctl_elem_value *ucontrol)
2374{
2375 ucontrol->value.integer.value[0] = fm_pcmrx_switch_enable;
2376 pr_debug("%s: FM Switch enable %ld\n", __func__,
2377 ucontrol->value.integer.value[0]);
2378 return 0;
2379}
2380
2381static int msm_routing_put_fm_pcmrx_switch_mixer(struct snd_kcontrol *kcontrol,
2382 struct snd_ctl_elem_value *ucontrol)
2383{
Asish Bhattacharya34504582017-08-08 12:55:01 +05302384 struct snd_soc_dapm_widget *widget =
2385 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302386 struct snd_soc_dapm_update *update = NULL;
2387
2388 pr_debug("%s: FM Switch enable %ld\n", __func__,
2389 ucontrol->value.integer.value[0]);
2390 if (ucontrol->value.integer.value[0])
2391 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 1,
2392 update);
2393 else
2394 snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, 0,
2395 update);
2396 fm_pcmrx_switch_enable = ucontrol->value.integer.value[0];
2397 return 1;
2398}
2399
2400static int msm_routing_lsm_port_get(struct snd_kcontrol *kcontrol,
2401 struct snd_ctl_elem_value *ucontrol)
2402{
2403 ucontrol->value.integer.value[0] = lsm_port_index;
2404 return 0;
2405}
2406
2407static int msm_routing_lsm_port_put(struct snd_kcontrol *kcontrol,
2408 struct snd_ctl_elem_value *ucontrol)
2409{
2410 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
2411 int mux = ucontrol->value.enumerated.item[0];
2412 int lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_5_TX;
2413
2414 if (mux >= e->items) {
2415 pr_err("%s: Invalid mux value %d\n", __func__, mux);
2416 return -EINVAL;
2417 }
2418
2419 pr_debug("%s: LSM enable %ld\n", __func__,
2420 ucontrol->value.integer.value[0]);
2421 switch (ucontrol->value.integer.value[0]) {
2422 case 1:
2423 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_0_TX;
2424 break;
2425 case 2:
2426 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_1_TX;
2427 break;
2428 case 3:
2429 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_2_TX;
2430 break;
2431 case 4:
2432 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_3_TX;
2433 break;
2434 case 5:
2435 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_4_TX;
2436 break;
2437 case 6:
2438 lsm_port = AFE_PORT_ID_SLIMBUS_MULTI_CHAN_5_TX;
2439 break;
2440 case 7:
2441 lsm_port = AFE_PORT_ID_TERTIARY_MI2S_TX;
2442 break;
2443 case 8:
2444 lsm_port = AFE_PORT_ID_QUATERNARY_MI2S_TX;
2445 break;
2446 case 9:
2447 lsm_port = ADM_LSM_PORT_ID;
2448 break;
2449 case 10:
2450 lsm_port = AFE_PORT_ID_INT3_MI2S_TX;
2451 break;
2452 default:
2453 pr_err("Default lsm port");
2454 break;
2455 }
2456 set_lsm_port(lsm_port);
2457 lsm_port_index = ucontrol->value.integer.value[0];
2458
2459 return 0;
2460}
2461
2462static int msm_routing_lsm_func_get(struct snd_kcontrol *kcontrol,
2463 struct snd_ctl_elem_value *ucontrol)
2464{
2465 int i;
2466 u16 port_id;
2467 enum afe_mad_type mad_type;
2468
2469 pr_debug("%s: enter\n", __func__);
2470 for (i = 0; i < ARRAY_SIZE(lsm_port_text); i++)
2471 if (!strnstr(kcontrol->id.name, lsm_port_text[i],
2472 strlen(lsm_port_text[i])))
2473 break;
2474
2475 if (i-- == ARRAY_SIZE(lsm_port_text)) {
2476 WARN(1, "Invalid id name %s\n", kcontrol->id.name);
2477 return -EINVAL;
2478 }
2479
2480 port_id = i * 2 + 1 + SLIMBUS_0_RX;
2481
2482 /*Check for Tertiary/Quaternary/INT3 TX port*/
2483 if (strnstr(kcontrol->id.name, lsm_port_text[7],
2484 strlen(lsm_port_text[7])))
2485 port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
2486
2487 if (strnstr(kcontrol->id.name, lsm_port_text[8],
2488 strlen(lsm_port_text[8])))
2489 port_id = AFE_PORT_ID_QUATERNARY_MI2S_TX;
2490
2491 if (strnstr(kcontrol->id.name, lsm_port_text[10],
2492 strlen(lsm_port_text[10])))
2493 port_id = AFE_PORT_ID_INT3_MI2S_TX;
2494
2495 mad_type = afe_port_get_mad_type(port_id);
2496 pr_debug("%s: port_id 0x%x, mad_type %d\n", __func__, port_id,
2497 mad_type);
2498 switch (mad_type) {
2499 case MAD_HW_NONE:
2500 ucontrol->value.integer.value[0] = MADNONE;
2501 break;
2502 case MAD_HW_AUDIO:
2503 ucontrol->value.integer.value[0] = MADAUDIO;
2504 break;
2505 case MAD_HW_BEACON:
2506 ucontrol->value.integer.value[0] = MADBEACON;
2507 break;
2508 case MAD_HW_ULTRASOUND:
2509 ucontrol->value.integer.value[0] = MADULTRASOUND;
2510 break;
2511 case MAD_SW_AUDIO:
2512 ucontrol->value.integer.value[0] = MADSWAUDIO;
2513 break;
2514 default:
2515 WARN(1, "Unknown\n");
2516 return -EINVAL;
2517 }
2518 return 0;
2519}
2520
2521static int msm_routing_lsm_func_put(struct snd_kcontrol *kcontrol,
2522 struct snd_ctl_elem_value *ucontrol)
2523{
2524 int i;
2525 u16 port_id;
2526 enum afe_mad_type mad_type;
2527
2528 pr_debug("%s: enter\n", __func__);
2529 for (i = 0; i < ARRAY_SIZE(lsm_port_text); i++)
2530 if (strnstr(kcontrol->id.name, lsm_port_text[i],
2531 strlen(lsm_port_text[i])))
2532 break;
2533
2534 if (i-- == ARRAY_SIZE(lsm_port_text)) {
2535 WARN(1, "Invalid id name %s\n", kcontrol->id.name);
2536 return -EINVAL;
2537 }
2538
2539 port_id = i * 2 + 1 + SLIMBUS_0_RX;
2540 switch (ucontrol->value.integer.value[0]) {
2541 case MADNONE:
2542 mad_type = MAD_HW_NONE;
2543 break;
2544 case MADAUDIO:
2545 mad_type = MAD_HW_AUDIO;
2546 break;
2547 case MADBEACON:
2548 mad_type = MAD_HW_BEACON;
2549 break;
2550 case MADULTRASOUND:
2551 mad_type = MAD_HW_ULTRASOUND;
2552 break;
2553 case MADSWAUDIO:
2554 mad_type = MAD_SW_AUDIO;
2555 break;
2556 default:
2557 WARN(1, "Unknown\n");
2558 return -EINVAL;
2559 }
2560
2561 /*Check for Tertiary/Quaternary/INT3 TX port*/
2562 if (strnstr(kcontrol->id.name, lsm_port_text[7],
2563 strlen(lsm_port_text[7])))
2564 port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
2565
2566 if (strnstr(kcontrol->id.name, lsm_port_text[8],
2567 strlen(lsm_port_text[8])))
2568 port_id = AFE_PORT_ID_QUATERNARY_MI2S_TX;
2569
2570 if (strnstr(kcontrol->id.name, lsm_port_text[10],
2571 strlen(lsm_port_text[10])))
2572 port_id = AFE_PORT_ID_INT3_MI2S_TX;
2573
2574 pr_debug("%s: port_id 0x%x, mad_type %d\n", __func__, port_id,
2575 mad_type);
2576 return afe_port_set_mad_type(port_id, mad_type);
2577}
2578
2579static const char *const adm_override_chs_text[] = {"Zero", "One", "Two"};
2580
2581static SOC_ENUM_SINGLE_EXT_DECL(slim_7_rx_adm_override_chs,
2582 adm_override_chs_text);
2583
2584static int msm_routing_adm_get_backend_idx(struct snd_kcontrol *kcontrol)
2585{
2586 int backend_id;
2587
2588 if (strnstr(kcontrol->id.name, "SLIM7_RX", sizeof("SLIM7_RX"))) {
2589 backend_id = MSM_BACKEND_DAI_SLIMBUS_7_RX;
2590 } else {
2591 pr_err("%s: unsupported backend id: %s",
2592 __func__, kcontrol->id.name);
2593 return -EINVAL;
2594 }
2595
2596 return backend_id;
2597}
2598static int msm_routing_adm_channel_config_get(
2599 struct snd_kcontrol *kcontrol,
2600 struct snd_ctl_elem_value *ucontrol)
2601{
2602 int backend_id = msm_routing_adm_get_backend_idx(kcontrol);
2603
2604 if (backend_id >= 0) {
2605 mutex_lock(&routing_lock);
2606 ucontrol->value.integer.value[0] =
2607 msm_bedais[backend_id].adm_override_ch;
2608 pr_debug("%s: adm channel count %ld for BE:%d\n", __func__,
2609 ucontrol->value.integer.value[0], backend_id);
2610 mutex_unlock(&routing_lock);
2611 }
2612
2613 return 0;
2614}
2615
2616static int msm_routing_adm_channel_config_put(
2617 struct snd_kcontrol *kcontrol,
2618 struct snd_ctl_elem_value *ucontrol)
2619{
2620 int backend_id = msm_routing_adm_get_backend_idx(kcontrol);
2621
2622 if (backend_id >= 0) {
2623 mutex_lock(&routing_lock);
2624 msm_bedais[backend_id].adm_override_ch =
2625 ucontrol->value.integer.value[0];
2626 pr_debug("%s:updating BE :%d adm channels: %d\n",
2627 __func__, backend_id,
2628 msm_bedais[backend_id].adm_override_ch);
2629 mutex_unlock(&routing_lock);
2630 }
2631
2632 return 0;
2633}
2634
2635static const struct snd_kcontrol_new adm_channel_config_controls[] = {
2636 SOC_ENUM_EXT("SLIM7_RX ADM Channels", slim_7_rx_adm_override_chs,
2637 msm_routing_adm_channel_config_get,
2638 msm_routing_adm_channel_config_put),
2639};
2640
2641static int msm_routing_slim_0_rx_aanc_mux_get(struct snd_kcontrol *kcontrol,
2642 struct snd_ctl_elem_value *ucontrol)
2643{
2644
2645 mutex_lock(&routing_lock);
2646 ucontrol->value.integer.value[0] = slim0_rx_aanc_fb_port;
2647 mutex_unlock(&routing_lock);
2648 pr_debug("%s: AANC Mux Port %ld\n", __func__,
2649 ucontrol->value.integer.value[0]);
2650 return 0;
2651};
2652
2653static int msm_routing_slim_0_rx_aanc_mux_put(struct snd_kcontrol *kcontrol,
2654 struct snd_ctl_elem_value *ucontrol)
2655{
2656 struct aanc_data aanc_info;
2657
2658 mutex_lock(&routing_lock);
2659 memset(&aanc_info, 0x00, sizeof(aanc_info));
2660 pr_debug("%s: AANC Mux Port %ld\n", __func__,
2661 ucontrol->value.integer.value[0]);
2662 slim0_rx_aanc_fb_port = ucontrol->value.integer.value[0];
2663 if (ucontrol->value.integer.value[0] == 0) {
2664 aanc_info.aanc_active = false;
2665 aanc_info.aanc_tx_port = 0;
2666 aanc_info.aanc_rx_port = 0;
2667 } else {
2668 aanc_info.aanc_active = true;
2669 aanc_info.aanc_rx_port = SLIMBUS_0_RX;
2670 aanc_info.aanc_tx_port =
2671 (SLIMBUS_0_RX - 1 + (slim0_rx_aanc_fb_port * 2));
2672 }
2673 afe_set_aanc_info(&aanc_info);
2674 mutex_unlock(&routing_lock);
2675 return 0;
2676};
2677static int msm_routing_get_port_mixer(struct snd_kcontrol *kcontrol,
2678 struct snd_ctl_elem_value *ucontrol)
2679{
2680 int idx = 0, shift = 0;
2681 struct soc_mixer_control *mc =
2682 (struct soc_mixer_control *)kcontrol->private_value;
2683
2684 idx = mc->shift/(sizeof(msm_bedais[mc->reg].port_sessions[0]) * 8);
2685 shift = mc->shift%(sizeof(msm_bedais[mc->reg].port_sessions[0]) * 8);
2686
2687 if (idx >= BE_DAI_PORT_SESSIONS_IDX_MAX) {
2688 pr_err("%s: Invalid idx = %d\n", __func__, idx);
2689 return -EINVAL;
2690 }
2691
2692 if (test_bit(shift,
2693 (unsigned long *)&msm_bedais[mc->reg].port_sessions[idx]))
2694 ucontrol->value.integer.value[0] = 1;
2695 else
2696 ucontrol->value.integer.value[0] = 0;
2697
2698 pr_debug("%s: reg %x shift %x val %ld\n", __func__, mc->reg, mc->shift,
2699 ucontrol->value.integer.value[0]);
2700
2701 return 0;
2702}
2703
2704static int msm_routing_put_port_mixer(struct snd_kcontrol *kcontrol,
2705 struct snd_ctl_elem_value *ucontrol)
2706{
2707 int idx = 0, shift = 0;
2708 struct soc_mixer_control *mc =
2709 (struct soc_mixer_control *)kcontrol->private_value;
2710
2711 idx = mc->shift/(sizeof(msm_bedais[mc->reg].port_sessions[0]) * 8);
2712 shift = mc->shift%(sizeof(msm_bedais[mc->reg].port_sessions[0]) * 8);
2713
2714 if (idx >= BE_DAI_PORT_SESSIONS_IDX_MAX) {
2715 pr_err("%s: Invalid idx = %d\n", __func__, idx);
2716 return -EINVAL;
2717 }
2718
2719 pr_debug("%s: reg 0x%x shift 0x%x val %ld idx %d reminder shift %d\n",
2720 __func__, mc->reg, mc->shift,
2721 ucontrol->value.integer.value[0], idx, shift);
2722
2723 if (ucontrol->value.integer.value[0]) {
2724 afe_loopback(1, msm_bedais[mc->reg].port_id,
2725 msm_bedais[mc->shift].port_id);
2726 set_bit(shift,
2727 (unsigned long *)&msm_bedais[mc->reg].port_sessions[idx]);
2728 } else {
2729 afe_loopback(0, msm_bedais[mc->reg].port_id,
2730 msm_bedais[mc->shift].port_id);
2731 clear_bit(shift,
2732 (unsigned long *)&msm_bedais[mc->reg].port_sessions[idx]);
2733 }
2734
2735 return 1;
2736}
2737
2738static int msm_pcm_get_channel_rule_index(struct snd_kcontrol *kcontrol,
2739 struct snd_ctl_elem_value *ucontrol)
2740{
2741 u16 fe_id = 0;
2742
2743 fe_id = ((struct soc_mixer_control *)
2744 kcontrol->private_value)->shift;
2745 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2746 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2747 return -EINVAL;
2748 }
2749
2750 ucontrol->value.integer.value[0] = channel_mixer[fe_id].rule;
2751
2752 return 0;
2753}
2754
2755static int msm_pcm_put_channel_rule_index(struct snd_kcontrol *kcontrol,
2756 struct snd_ctl_elem_value *ucontrol)
2757{
2758 u16 fe_id = 0;
2759
2760 fe_id = ((struct soc_mixer_control *)
2761 kcontrol->private_value)->shift;
2762 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2763 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2764 return -EINVAL;
2765 }
2766
2767 channel_mixer[fe_id].rule = ucontrol->value.integer.value[0];
2768
2769 return 1;
2770}
2771
2772static int msm_pcm_get_out_chs(struct snd_kcontrol *kcontrol,
2773 struct snd_ctl_elem_value *ucontrol)
2774{
2775 u16 fe_id = 0;
2776
2777 fe_id = ((struct soc_multi_mixer_control *)
2778 kcontrol->private_value)->shift;
2779 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2780 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2781 return -EINVAL;
2782 }
2783
2784 ucontrol->value.integer.value[0] =
2785 channel_mixer[fe_id].output_channel;
2786 return 0;
2787}
2788
2789static int msm_pcm_put_out_chs(struct snd_kcontrol *kcontrol,
2790 struct snd_ctl_elem_value *ucontrol)
2791{
2792 u16 fe_id = 0;
2793
2794 fe_id = ((struct soc_multi_mixer_control *)
2795 kcontrol->private_value)->shift;
2796 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2797 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2798 return -EINVAL;
2799 }
2800
2801 pr_debug("%s: fe_id is %d, output channels = %d\n", __func__,
2802 fe_id,
2803 (unsigned int)(ucontrol->value.integer.value[0]));
2804 channel_mixer[fe_id].output_channel =
2805 (unsigned int)(ucontrol->value.integer.value[0]);
2806
2807 return 1;
2808}
2809
2810static const char *const ch_mixer[] = {"Disable", "Enable"};
2811
2812/* If new backend is added, need update this array */
2813static const char *const be_name[] = {
2814"ZERO", "PRI_I2S_RX", "PRI_I2S_TX", "SLIM_0_RX",
2815"SLIM_0_TX", "HDMI_RX", "INT_BT_SCO_RX", "INT_BT_SCO_TX",
2816"INT_FM_RX", "INT_FM_TX", "AFE_PCM_RX", "AFE_PCM_TX",
2817"AUXPCM_RX", "AUXPCM_TX", "VOICE_PLAYBACK_TX", "VOICE2_PLAYBACK_TX",
2818"INCALL_RECORD_RX", "INCALL_RECORD_TX", "MI2S_RX", "MI2S_TX",
2819"SEC_I2S_RX", "SLIM_1_RX", "SLIM_1_TX", "SLIM_2_RX",
2820"SLIM_2_TX", "SLIM_3_RX", "SLIM_3_TX", "SLIM_4_RX",
2821"SLIM_4_TX", "SLIM_5_RX", "SLIM_5_TX", "SLIM_6_RX",
2822"SLIM_6_TX", "SLIM_7_RX", "SLIM_7_TX", "SLIM_8_RX",
2823"SLIM_8_TX", "EXTPROC_RX", "EXTPROC_TX", "EXPROC_EC_TX",
2824"QUAT_MI2S_RX", "QUAT_MI2S_TX", "SECOND_MI2S_RX", "SECOND_MI2S_TX",
2825"PRI_MI2S_RX", "PRI_MI2S_TX", "TERT_MI2S_RX", "TERT_MI2S_TX",
2826"AUDIO_I2S_RX", "SEC_AUXPCM_RX", "SEC_AUXPCM_TX", "SPDIF_RX",
2827"SECOND_MI2S_RX_SD1", "QUIN_MI2S_RX", "QUIN_MI2S_TX", "SENARY_MI2S_TX",
2828"PRI_TDM_RX_0", "PRI_TDM_TX_0", "PRI_TDM_RX_1", "PRI_TDM_TX_1",
2829"PRI_TDM_RX_2", "PRI_TDM_TX_2", "PRI_TDM_RX_3", "PRI_TDM_TX_3",
2830"PRI_TDM_RX_4", "PRI_TDM_TX_4", "PRI_TDM_RX_5", "PRI_TDM_TX_5",
2831"PRI_TDM_RX_6", "PRI_TDM_TX_6", "PRI_TDM_RX_7", "PRI_TDM_TX_7",
2832"SEC_TDM_RX_0", "SEC_TDM_TX_0", "SEC_TDM_RX_1", "SEC_TDM_TX_1",
2833"SEC_TDM_RX_2", "SEC_TDM_TX_2", "SEC_TDM_RX_3", "SEC_TDM_TX_3",
2834"SEC_TDM_RX_4", "SEC_TDM_TX_4", "SEC_TDM_RX_5", "SEC_TDM_TX_5",
2835"SEC_TDM_RX_6", "SEC_TDM_TX_6", "SEC_TDM_RX_7", "SEC_TDM_TX_7",
2836"TERT_TDM_RX_0", "TERT_TDM_TX_0", "TERT_TDM_RX_1", "TERT_TDM_TX_1",
2837"TERT_TDM_RX_2", "TERT_TDM_TX_2", "TERT_TDM_RX_3", "TERT_TDM_TX_3",
2838"TERT_TDM_RX_4", "TERT_TDM_TX_4", "TERT_TDM_RX_5", "TERT_TDM_TX_5",
2839"TERT_TDM_RX_6", "TERT_TDM_TX_6", "TERT_TDM_RX_7", "TERT_TDM_TX_7",
2840"QUAT_TDM_RX_0", "QUAT_TDM_TX_0", "QUAT_TDM_RX_1", "QUAT_TDM_TX_1",
2841"QUAT_TDM_RX_2", "QUAT_TDM_TX_2", "QUAT_TDM_RX_3", "QUAT_TDM_TX_3",
2842"QUAT_TDM_RX_4", "QUAT_TDM_TX_4", "QUAT_TDM_RX_5", "QUAT_TDM_TX_5",
2843"QUAT_TDM_RX_6", "QUAT_TDM_TX_6", "QUAT_TDM_RX_7", "QUAT_TDM_TX_7",
Rohit Kumara5077932017-09-10 22:05:05 +05302844"QUIN_TDM_RX_0", "QUIN_TDM_TX_0", "QUIN_TDM_RX_1", "QUIN_TDM_TX_1",
2845"QUIN_TDM_RX_2", "QUIN_TDM_TX_2", "QUIN_TDM_RX_3", "QUIN_TDM_TX_3",
2846"QUIN_TDM_RX_4", "QUIN_TDM_TX_4", "QUIN_TDM_RX_5", "QUIN_TDM_TX_5",
2847"QUIN_TDM_RX_6", "QUIN_TDM_TX_6", "QUIN_TDM_RX_7", "QUIN_TDM_TX_7",
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302848"INT_BT_A2DP_RX", "USB_RX", "USB_TX", "DISPLAY_PORT_RX",
2849"TERT_AUXPCM_RX", "TERT_AUXPCM_TX", "QUAT_AUXPCM_RX", "QUAT_AUXPCM_TX",
Rohit Kumara5077932017-09-10 22:05:05 +05302850"QUIN_AUXPCM_RX", "QUIN_AUXPCM_TX",
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05302851"INT0_MI2S_RX", "INT0_MI2S_TX", "INT1_MI2S_RX", "INT1_MI2S_TX",
2852"INT2_MI2S_RX", "INT2_MI2S_TX", "INT3_MI2S_RX", "INT3_MI2S_TX",
2853"INT4_MI2S_RX", "INT4_MI2S_TX", "INT5_MI2S_RX", "INT5_MI2S_TX",
2854"INT6_MI2S_RX", "INT6_MI2S_TX"
2855};
2856
2857static SOC_ENUM_SINGLE_DECL(mm1_channel_mux,
2858 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, ch_mixer);
2859static SOC_ENUM_SINGLE_DECL(mm2_channel_mux,
2860 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA2, ch_mixer);
2861static SOC_ENUM_SINGLE_DECL(mm3_channel_mux,
2862 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA3, ch_mixer);
2863static SOC_ENUM_SINGLE_DECL(mm4_channel_mux,
2864 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA4, ch_mixer);
2865
2866static SOC_ENUM_DOUBLE_DECL(mm1_ch1_enum,
2867 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 0, be_name);
2868static SOC_ENUM_DOUBLE_DECL(mm1_ch2_enum,
2869 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 1, be_name);
2870static SOC_ENUM_DOUBLE_DECL(mm1_ch3_enum,
2871 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 2, be_name);
2872static SOC_ENUM_DOUBLE_DECL(mm1_ch4_enum,
2873 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 3, be_name);
2874static SOC_ENUM_DOUBLE_DECL(mm1_ch5_enum,
2875 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 4, be_name);
2876static SOC_ENUM_DOUBLE_DECL(mm1_ch6_enum,
2877 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 5, be_name);
2878static SOC_ENUM_DOUBLE_DECL(mm1_ch7_enum,
2879 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 6, be_name);
2880static SOC_ENUM_DOUBLE_DECL(mm1_ch8_enum,
2881 SND_SOC_NOPM, MSM_FRONTEND_DAI_MULTIMEDIA1, 7, be_name);
2882
2883static int msm_pcm_get_ctl_enum_info(struct snd_ctl_elem_info *uinfo,
2884 unsigned int channels,
2885 unsigned int items, const char *const names[])
2886{
2887 if (uinfo->value.enumerated.item >= items)
2888 uinfo->value.enumerated.item = items - 1;
2889
2890 WARN(strlen(names[uinfo->value.enumerated.item]) >=
2891 sizeof(uinfo->value.enumerated.name),
2892 "ALSA: too long item name '%s'\n",
2893 names[uinfo->value.enumerated.item]);
2894 strlcpy(uinfo->value.enumerated.name,
2895 names[uinfo->value.enumerated.item],
2896 sizeof(uinfo->value.enumerated.name));
2897 return 0;
2898}
2899
2900static int msm_pcm_channel_mixer_info(struct snd_kcontrol *kcontrol,
2901 struct snd_ctl_elem_info *uinfo)
2902{
2903 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
2904
2905 uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED;
2906 uinfo->count = 1;
2907
2908 uinfo->value.enumerated.items = ARRAY_SIZE(ch_mixer);
2909 msm_pcm_get_ctl_enum_info(uinfo, 1, e->items, e->texts);
2910
2911 return 0;
2912}
2913static int msm_pcm_channel_mixer_get(struct snd_kcontrol *kcontrol,
2914 struct snd_ctl_elem_value *ucontrol)
2915{
2916 u16 fe_id = 0;
2917
2918 fe_id = ((struct soc_enum *)
2919 kcontrol->private_value)->shift_l;
2920 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2921 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2922 return -EINVAL;
2923 }
2924
2925 pr_debug("%s: FE %d %s\n", __func__,
2926 fe_id,
2927 channel_mixer[fe_id].enable ? "Enabled" : "Disabled");
2928 ucontrol->value.enumerated.item[0] = channel_mixer[fe_id].enable;
2929 return 0;
2930}
2931
2932static int msm_pcm_channel_mixer_put(struct snd_kcontrol *kcontrol,
2933 struct snd_ctl_elem_value *ucontrol)
2934{
2935 u16 fe_id = 0;
2936
2937 fe_id = ((struct soc_enum *)
2938 kcontrol->private_value)->shift_l;
2939 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2940 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2941 return -EINVAL;
2942 }
2943
2944 channel_mixer[fe_id].enable = ucontrol->value.enumerated.item[0];
2945 pr_debug("%s: %s FE %d\n", __func__,
2946 channel_mixer[fe_id].enable ? "Enable" : "Disable",
2947 fe_id);
2948 return 0;
2949}
2950
2951static int msm_pcm_channel_input_be_info(struct snd_kcontrol *kcontrol,
2952 struct snd_ctl_elem_info *uinfo)
2953{
2954 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
2955
2956 uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED;
2957 uinfo->count = 1;
2958
2959 uinfo->value.enumerated.items = ARRAY_SIZE(be_name);
2960 msm_pcm_get_ctl_enum_info(uinfo, 1, e->items, e->texts);
2961
2962 return 0;
2963}
2964
2965static int msm_pcm_channel_input_be_put(struct snd_kcontrol *kcontrol,
2966 struct snd_ctl_elem_value *ucontrol)
2967{
2968 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
2969 u16 fe_id = 0, in_ch = 0;
2970
2971 fe_id = e->shift_l;
2972 in_ch = e->shift_r;
2973 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2974 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2975 return -EINVAL;
2976 }
2977 if (in_ch >= ADM_MAX_CHANNELS) {
2978 pr_err("%s: invalid input channel %d\n", __func__, in_ch);
2979 return -EINVAL;
2980 }
2981
2982 channel_input[fe_id][in_ch] = ucontrol->value.enumerated.item[0];
2983 return 1;
2984}
2985
2986static int msm_pcm_channel_input_be_get(struct snd_kcontrol *kcontrol,
2987 struct snd_ctl_elem_value *ucontrol)
2988{
2989 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
2990 u16 fe_id = 0, in_ch = 0;
2991
2992 fe_id = e->shift_l;
2993 in_ch = e->shift_r;
2994 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
2995 pr_err("%s: invalid FE %d\n", __func__, fe_id);
2996 return -EINVAL;
2997 }
2998 if (in_ch >= ADM_MAX_CHANNELS) {
2999 pr_err("%s: invalid input channel %d\n", __func__, in_ch);
3000 return -EINVAL;
3001 }
3002
3003 ucontrol->value.enumerated.item[0] = channel_input[fe_id][in_ch];
3004 return 1;
3005}
3006
3007
3008static int msm_pcm_channel_weight_info(struct snd_kcontrol *kcontrol,
3009 struct snd_ctl_elem_info *uinfo)
3010{
3011 uinfo->type = SNDRV_CTL_ELEM_TYPE_INTEGER;
3012 uinfo->count = ADM_MAX_CHANNELS;
3013 uinfo->value.integer.min = 0;
3014 uinfo->value.integer.max = WEIGHT_0_DB;
3015
3016 return 0;
3017}
3018
3019static int msm_pcm_channel_weight_put(struct snd_kcontrol *kcontrol,
3020 struct snd_ctl_elem_value *ucontrol)
3021{
3022 u16 fe_id = 0, out_ch = 0;
3023 int i, weight;
3024
3025 fe_id = ((struct soc_multi_mixer_control *)
3026 kcontrol->private_value)->shift;
3027 out_ch = ((struct soc_multi_mixer_control *)
3028 kcontrol->private_value)->rshift;
3029 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
3030 pr_err("%s: invalid FE %d\n", __func__, fe_id);
3031 return -EINVAL;
3032 }
3033 if (out_ch >= ADM_MAX_CHANNELS) {
3034 pr_err("%s: invalid input channel %d\n", __func__, out_ch);
3035 return -EINVAL;
3036 }
3037
3038 pr_debug("%s: FE_ID: %d, channel weight %ld, %ld, %ld, %ld, %ld, %ld, %ld, %ld\n",
3039 __func__, fe_id,
3040 ucontrol->value.integer.value[0],
3041 ucontrol->value.integer.value[1],
3042 ucontrol->value.integer.value[2],
3043 ucontrol->value.integer.value[3],
3044 ucontrol->value.integer.value[4],
3045 ucontrol->value.integer.value[5],
3046 ucontrol->value.integer.value[6],
3047 ucontrol->value.integer.value[7]);
3048
3049 for (i = 0; i < ADM_MAX_CHANNELS; ++i) {
3050 weight = ucontrol->value.integer.value[i];
3051 channel_mixer[fe_id].channel_weight[out_ch][i] = weight;
3052 pr_debug("%s: FE_ID %d, output %d input %d weight %d\n",
3053 __func__, fe_id, out_ch, i,
3054 channel_mixer[fe_id].channel_weight[out_ch][i]);
3055 }
3056
3057 return 0;
3058}
3059
3060static int msm_pcm_channel_weight_get(struct snd_kcontrol *kcontrol,
3061 struct snd_ctl_elem_value *ucontrol)
3062{
3063 u16 fe_id = 0, out_ch = 0;
3064 int i;
3065
3066 fe_id = ((struct soc_multi_mixer_control *)
3067 kcontrol->private_value)->shift;
3068 out_ch = ((struct soc_multi_mixer_control *)
3069 kcontrol->private_value)->rshift;
3070 if (fe_id >= MSM_FRONTEND_DAI_MM_SIZE) {
3071 pr_err("%s: invalid FE %d\n", __func__, fe_id);
3072 return -EINVAL;
3073 }
3074 if (out_ch >= ADM_MAX_CHANNELS) {
3075 pr_err("%s: invalid input channel %d\n", __func__, out_ch);
3076 return -EINVAL;
3077 }
3078
3079 for (i = 0; i < ADM_MAX_CHANNELS; ++i)
3080 ucontrol->value.integer.value[i] =
3081 channel_mixer[fe_id].channel_weight[out_ch][i];
3082
3083 pr_debug("%s: FE_ID: %d, weight %ld, %ld, %ld, %ld, %ld, %ld, %ld, %ld",
3084 __func__, fe_id,
3085 ucontrol->value.integer.value[0],
3086 ucontrol->value.integer.value[1],
3087 ucontrol->value.integer.value[2],
3088 ucontrol->value.integer.value[3],
3089 ucontrol->value.integer.value[4],
3090 ucontrol->value.integer.value[5],
3091 ucontrol->value.integer.value[6],
3092 ucontrol->value.integer.value[7]);
3093
3094 return 0;
3095}
3096
3097static const struct snd_kcontrol_new channel_mixer_controls[] = {
3098 SOC_SINGLE_EXT("MultiMedia1 Channel Rule", SND_SOC_NOPM,
3099 MSM_FRONTEND_DAI_MULTIMEDIA1, 8, 0,
3100 msm_pcm_get_channel_rule_index,
3101 msm_pcm_put_channel_rule_index),
3102 SOC_SINGLE_EXT("MultiMedia2 Channel Rule", SND_SOC_NOPM,
3103 MSM_FRONTEND_DAI_MULTIMEDIA2, 8, 0,
3104 msm_pcm_get_channel_rule_index,
3105 msm_pcm_put_channel_rule_index),
3106 SOC_SINGLE_EXT("MultiMedia3 Channel Rule", SND_SOC_NOPM,
3107 MSM_FRONTEND_DAI_MULTIMEDIA3, 8, 0,
3108 msm_pcm_get_channel_rule_index,
3109 msm_pcm_put_channel_rule_index),
3110 SOC_SINGLE_EXT("MultiMedia4 Channel Rule", SND_SOC_NOPM,
3111 MSM_FRONTEND_DAI_MULTIMEDIA4, 8, 0,
3112 msm_pcm_get_channel_rule_index,
3113 msm_pcm_put_channel_rule_index),
3114 SOC_SINGLE_EXT("MultiMedia5 Channel Rule", SND_SOC_NOPM,
3115 MSM_FRONTEND_DAI_MULTIMEDIA5, 8, 0,
3116 msm_pcm_get_channel_rule_index,
3117 msm_pcm_put_channel_rule_index),
3118 SOC_SINGLE_EXT("MultiMedia6 Channel Rule", SND_SOC_NOPM,
3119 MSM_FRONTEND_DAI_MULTIMEDIA6, 8, 0,
3120 msm_pcm_get_channel_rule_index,
3121 msm_pcm_put_channel_rule_index),
3122
3123 SOC_SINGLE_EXT("MultiMedia1 Channels", SND_SOC_NOPM,
3124 MSM_FRONTEND_DAI_MULTIMEDIA1, 8, 0,
3125 msm_pcm_get_out_chs,
3126 msm_pcm_put_out_chs),
3127 SOC_SINGLE_EXT("MultiMedia2 Channels", SND_SOC_NOPM,
3128 MSM_FRONTEND_DAI_MULTIMEDIA2, 8, 0,
3129 msm_pcm_get_out_chs,
3130 msm_pcm_put_out_chs),
3131 SOC_SINGLE_EXT("MultiMedia3 Channels", SND_SOC_NOPM,
3132 MSM_FRONTEND_DAI_MULTIMEDIA3, 8, 0,
3133 msm_pcm_get_out_chs,
3134 msm_pcm_put_out_chs),
3135 SOC_SINGLE_EXT("MultiMedia4 Channels", SND_SOC_NOPM,
3136 MSM_FRONTEND_DAI_MULTIMEDIA4, 8, 0,
3137 msm_pcm_get_out_chs,
3138 msm_pcm_put_out_chs),
3139 SOC_SINGLE_EXT("MultiMedia5 Channels", SND_SOC_NOPM,
3140 MSM_FRONTEND_DAI_MULTIMEDIA5, 8, 0,
3141 msm_pcm_get_out_chs,
3142 msm_pcm_put_out_chs),
3143 SOC_SINGLE_EXT("MultiMedia6 Channels", SND_SOC_NOPM,
3144 MSM_FRONTEND_DAI_MULTIMEDIA6, 8, 0,
3145 msm_pcm_get_out_chs,
3146 msm_pcm_put_out_chs),
3147 {
3148 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3149 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3150 .name = "MultiMedia1 Channel Mixer",
3151 .info = msm_pcm_channel_mixer_info,
3152 .get = msm_pcm_channel_mixer_get,
3153 .put = msm_pcm_channel_mixer_put,
3154 .private_value = (unsigned long)&(mm1_channel_mux)
3155 },
3156 {
3157 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3158 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3159 .name = "MultiMedia2 Channel Mixer",
3160 .info = msm_pcm_channel_mixer_info,
3161 .get = msm_pcm_channel_mixer_get,
3162 .put = msm_pcm_channel_mixer_put,
3163 .private_value = (unsigned long)&(mm2_channel_mux)
3164 },
3165 {
3166 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3167 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3168 .name = "MultiMedia3 Channel Mixer",
3169 .info = msm_pcm_channel_mixer_info,
3170 .get = msm_pcm_channel_mixer_get,
3171 .put = msm_pcm_channel_mixer_put,
3172 .private_value = (unsigned long)&(mm3_channel_mux)
3173 },
3174 {
3175 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3176 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3177 .name = "MultiMedia4 Channel Mixer",
3178 .info = msm_pcm_channel_mixer_info,
3179 .get = msm_pcm_channel_mixer_get,
3180 .put = msm_pcm_channel_mixer_put,
3181 .private_value = (unsigned long)&(mm4_channel_mux)
3182 },
3183 {
3184 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3185 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3186 .name = "MultiMedia1 Output Channel1",
3187 .info = msm_pcm_channel_weight_info,
3188 .get = msm_pcm_channel_weight_get,
3189 .put = msm_pcm_channel_weight_put,
3190 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3191 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 0,}
3192 },
3193 {
3194 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3195 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3196 .name = "MultiMedia1 Output Channel2",
3197 .info = msm_pcm_channel_weight_info,
3198 .get = msm_pcm_channel_weight_get,
3199 .put = msm_pcm_channel_weight_put,
3200 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3201 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 1, }
3202 },
3203 {
3204 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3205 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3206 .name = "MultiMedia1 Output Channel3",
3207 .info = msm_pcm_channel_weight_info,
3208 .get = msm_pcm_channel_weight_get,
3209 .put = msm_pcm_channel_weight_put,
3210 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3211 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 2,}
3212 },
3213 {
3214 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3215 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3216 .name = "MultiMedia1 Output Channel4",
3217 .info = msm_pcm_channel_weight_info,
3218 .get = msm_pcm_channel_weight_get,
3219 .put = msm_pcm_channel_weight_put,
3220 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3221 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 3,}
3222 },
3223 {
3224 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3225 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3226 .name = "MultiMedia1 Output Channel5",
3227 .info = msm_pcm_channel_weight_info,
3228 .get = msm_pcm_channel_weight_get,
3229 .put = msm_pcm_channel_weight_put,
3230 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3231 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 4,}
3232 },
3233 {
3234 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3235 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3236 .name = "MultiMedia1 Output Channel6",
3237 .info = msm_pcm_channel_weight_info,
3238 .get = msm_pcm_channel_weight_get,
3239 .put = msm_pcm_channel_weight_put,
3240 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3241 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 5,}
3242 },
3243 {
3244 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3245 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3246 .name = "MultiMedia1 Output Channel7",
3247 .info = msm_pcm_channel_weight_info,
3248 .get = msm_pcm_channel_weight_get,
3249 .put = msm_pcm_channel_weight_put,
3250 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3251 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 6,}
3252 },
3253 {
3254 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3255 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3256 .name = "MultiMedia1 Output Channel8",
3257 .info = msm_pcm_channel_weight_info,
3258 .get = msm_pcm_channel_weight_get,
3259 .put = msm_pcm_channel_weight_put,
3260 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3261 { .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 7,}
3262 },
3263 {
3264 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3265 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3266 .name = "MultiMedia2 Output Channel1",
3267 .info = msm_pcm_channel_weight_info,
3268 .get = msm_pcm_channel_weight_get,
3269 .put = msm_pcm_channel_weight_put,
3270 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3271 {.shift = MSM_FRONTEND_DAI_MULTIMEDIA2, .rshift = 0,}
3272 },
3273 {
3274 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3275 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3276 .name = "MultiMedia2 Output Channel2",
3277 .info = msm_pcm_channel_weight_info,
3278 .get = msm_pcm_channel_weight_get,
3279 .put = msm_pcm_channel_weight_put,
3280 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3281 {.shift = MSM_FRONTEND_DAI_MULTIMEDIA2, .rshift = 1,}
3282 },
3283 {
3284 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3285 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3286 .name = "MultiMedia2 Output Channel3",
3287 .info = msm_pcm_channel_weight_info,
3288 .get = msm_pcm_channel_weight_get,
3289 .put = msm_pcm_channel_weight_put,
3290 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3291 {.shift = MSM_FRONTEND_DAI_MULTIMEDIA2, .rshift = 2,}
3292 },
3293 {
3294 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3295 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3296 .name = "MultiMedia3 Output Channel1",
3297 .info = msm_pcm_channel_weight_info,
3298 .get = msm_pcm_channel_weight_get,
3299 .put = msm_pcm_channel_weight_put,
3300 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3301 {.shift = MSM_FRONTEND_DAI_MULTIMEDIA3, .rshift = 0,}
3302 },
3303 {
3304 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3305 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3306 .name = "MultiMedia3 Output Channel2",
3307 .info = msm_pcm_channel_weight_info,
3308 .get = msm_pcm_channel_weight_get,
3309 .put = msm_pcm_channel_weight_put,
3310 .private_value = (unsigned long)&(struct soc_multi_mixer_control)
3311 {.shift = MSM_FRONTEND_DAI_MULTIMEDIA3, .rshift = 1,}
3312 },
3313 {
3314 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3315 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3316 .name = "MultiMedia1 Channel1",
3317 .info = msm_pcm_channel_input_be_info,
3318 .get = msm_pcm_channel_input_be_get,
3319 .put = msm_pcm_channel_input_be_put,
3320 .private_value = (unsigned long)&(mm1_ch1_enum)
3321 },
3322 {
3323 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3324 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3325 .name = "MultiMedia1 Channel2",
3326 .info = msm_pcm_channel_input_be_info,
3327 .get = msm_pcm_channel_input_be_get,
3328 .put = msm_pcm_channel_input_be_put,
3329 .private_value = (unsigned long)&(mm1_ch2_enum)
3330 },
3331 {
3332 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3333 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3334 .name = "MultiMedia1 Channel3",
3335 .info = msm_pcm_channel_input_be_info,
3336 .get = msm_pcm_channel_input_be_get,
3337 .put = msm_pcm_channel_input_be_put,
3338 .private_value = (unsigned long)&(mm1_ch3_enum)
3339 },
3340 {
3341 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3342 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3343 .name = "MultiMedia1 Channel4",
3344 .info = msm_pcm_channel_input_be_info,
3345 .get = msm_pcm_channel_input_be_get,
3346 .put = msm_pcm_channel_input_be_put,
3347 .private_value = (unsigned long)&(mm1_ch4_enum)
3348 },
3349 {
3350 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3351 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3352 .name = "MultiMedia1 Channel5",
3353 .info = msm_pcm_channel_input_be_info,
3354 .get = msm_pcm_channel_input_be_get,
3355 .put = msm_pcm_channel_input_be_put,
3356 .private_value = (unsigned long)&(mm1_ch5_enum)
3357 },
3358 {
3359 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3360 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3361 .name = "MultiMedia1 Channel6",
3362 .info = msm_pcm_channel_input_be_info,
3363 .get = msm_pcm_channel_input_be_get,
3364 .put = msm_pcm_channel_input_be_put,
3365 .private_value = (unsigned long)&(mm1_ch6_enum)
3366 },
3367 {
3368 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3369 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3370 .name = "MultiMedia1 Channel7",
3371 .info = msm_pcm_channel_input_be_info,
3372 .get = msm_pcm_channel_input_be_get,
3373 .put = msm_pcm_channel_input_be_put,
3374 .private_value = (unsigned long)&(mm1_ch7_enum)
3375 },
3376 {
3377 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3378 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
3379 .name = "MultiMedia1 Channel8",
3380 .info = msm_pcm_channel_input_be_info,
3381 .get = msm_pcm_channel_input_be_get,
3382 .put = msm_pcm_channel_input_be_put,
3383 .private_value = (unsigned long)&(mm1_ch8_enum)
3384 },
3385};
3386static int msm_ec_ref_ch_get(struct snd_kcontrol *kcontrol,
3387 struct snd_ctl_elem_value *ucontrol)
3388{
3389 ucontrol->value.integer.value[0] = msm_ec_ref_ch;
3390 pr_debug("%s: msm_ec_ref_ch = %ld\n", __func__,
3391 ucontrol->value.integer.value[0]);
3392 return 0;
3393}
3394
3395static int msm_ec_ref_ch_put(struct snd_kcontrol *kcontrol,
3396 struct snd_ctl_elem_value *ucontrol)
3397{
3398 msm_ec_ref_ch = ucontrol->value.integer.value[0];
3399 pr_debug("%s: msm_ec_ref_ch = %d\n", __func__, msm_ec_ref_ch);
3400 adm_num_ec_ref_rx_chans(msm_ec_ref_ch);
3401 return 0;
3402}
3403
3404static const char *const ec_ref_ch_text[] = {"Zero", "One", "Two", "Three",
3405 "Four", "Five", "Six", "Seven", "Eight"};
3406
3407static int msm_ec_ref_bit_format_get(struct snd_kcontrol *kcontrol,
3408 struct snd_ctl_elem_value *ucontrol)
3409{
3410 switch (msm_ec_ref_bit_format) {
3411 case SNDRV_PCM_FORMAT_S24_LE:
3412 ucontrol->value.integer.value[0] = 2;
3413 break;
3414 case SNDRV_PCM_FORMAT_S16_LE:
3415 ucontrol->value.integer.value[0] = 1;
3416 break;
3417 default:
3418 ucontrol->value.integer.value[0] = 0;
3419 break;
3420 }
3421 pr_debug("%s: msm_ec_ref_bit_format = %ld\n",
3422 __func__, ucontrol->value.integer.value[0]);
3423 return 0;
3424}
3425
3426static int msm_ec_ref_bit_format_put(struct snd_kcontrol *kcontrol,
3427 struct snd_ctl_elem_value *ucontrol)
3428{
3429 u16 bit_width = 0;
3430
3431 switch (ucontrol->value.integer.value[0]) {
3432 case 2:
3433 msm_ec_ref_bit_format = SNDRV_PCM_FORMAT_S24_LE;
3434 break;
3435 case 1:
3436 msm_ec_ref_bit_format = SNDRV_PCM_FORMAT_S16_LE;
3437 break;
3438 default:
3439 msm_ec_ref_bit_format = 0;
3440 break;
3441 }
3442
3443 if (msm_ec_ref_bit_format == SNDRV_PCM_FORMAT_S16_LE)
3444 bit_width = 16;
3445 else if (msm_ec_ref_bit_format == SNDRV_PCM_FORMAT_S24_LE)
3446 bit_width = 24;
3447
3448 pr_debug("%s: msm_ec_ref_bit_format = %d\n",
3449 __func__, msm_ec_ref_bit_format);
3450 adm_ec_ref_rx_bit_width(bit_width);
3451 return 0;
3452}
3453
3454static char const *ec_ref_bit_format_text[] = {"0", "S16_LE", "S24_LE"};
3455
3456static int msm_ec_ref_rate_get(struct snd_kcontrol *kcontrol,
3457 struct snd_ctl_elem_value *ucontrol)
3458{
3459 ucontrol->value.integer.value[0] = msm_ec_ref_sampling_rate;
3460 pr_debug("%s: msm_ec_ref_sampling_rate = %ld\n",
3461 __func__, ucontrol->value.integer.value[0]);
3462 return 0;
3463}
3464
3465static int msm_ec_ref_rate_put(struct snd_kcontrol *kcontrol,
3466 struct snd_ctl_elem_value *ucontrol)
3467{
3468 switch (ucontrol->value.integer.value[0]) {
3469 case 0:
3470 msm_ec_ref_sampling_rate = 0;
3471 break;
3472 case 1:
3473 msm_ec_ref_sampling_rate = 8000;
3474 break;
3475 case 2:
3476 msm_ec_ref_sampling_rate = 16000;
3477 break;
3478 case 3:
3479 msm_ec_ref_sampling_rate = 32000;
3480 break;
3481 case 4:
3482 msm_ec_ref_sampling_rate = 44100;
3483 break;
3484 case 5:
3485 msm_ec_ref_sampling_rate = 48000;
3486 break;
3487 case 6:
3488 msm_ec_ref_sampling_rate = 96000;
3489 break;
3490 case 7:
3491 msm_ec_ref_sampling_rate = 192000;
3492 break;
3493 case 8:
3494 msm_ec_ref_sampling_rate = 384000;
3495 break;
3496 default:
3497 msm_ec_ref_sampling_rate = 48000;
3498 break;
3499 }
3500 pr_debug("%s: msm_ec_ref_sampling_rate = %d\n",
3501 __func__, msm_ec_ref_sampling_rate);
3502 adm_ec_ref_rx_sampling_rate(msm_ec_ref_sampling_rate);
3503 return 0;
3504}
3505
3506static const char *const ec_ref_rate_text[] = {"0", "8000", "16000",
3507 "32000", "44100", "48000", "96000", "192000", "384000"};
3508
3509static const struct soc_enum msm_route_ec_ref_params_enum[] = {
3510 SOC_ENUM_SINGLE_EXT(9, ec_ref_ch_text),
3511 SOC_ENUM_SINGLE_EXT(3, ec_ref_bit_format_text),
3512 SOC_ENUM_SINGLE_EXT(9, ec_ref_rate_text),
3513};
3514
3515static const struct snd_kcontrol_new ec_ref_param_controls[] = {
3516 SOC_ENUM_EXT("EC Reference Channels", msm_route_ec_ref_params_enum[0],
3517 msm_ec_ref_ch_get, msm_ec_ref_ch_put),
3518 SOC_ENUM_EXT("EC Reference Bit Format", msm_route_ec_ref_params_enum[1],
3519 msm_ec_ref_bit_format_get, msm_ec_ref_bit_format_put),
3520 SOC_ENUM_EXT("EC Reference SampleRate", msm_route_ec_ref_params_enum[2],
3521 msm_ec_ref_rate_get, msm_ec_ref_rate_put),
3522};
3523
3524static int msm_routing_ec_ref_rx_get(struct snd_kcontrol *kcontrol,
3525 struct snd_ctl_elem_value *ucontrol)
3526{
3527 pr_debug("%s: ec_ref_rx = %d", __func__, msm_route_ec_ref_rx);
3528 mutex_lock(&routing_lock);
3529 ucontrol->value.integer.value[0] = msm_route_ec_ref_rx;
3530 mutex_unlock(&routing_lock);
3531 return 0;
3532}
3533
3534static int msm_routing_ec_ref_rx_put(struct snd_kcontrol *kcontrol,
3535 struct snd_ctl_elem_value *ucontrol)
3536{
3537 int ec_ref_port_id;
Asish Bhattacharya34504582017-08-08 12:55:01 +05303538 struct snd_soc_dapm_widget *widget =
3539 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303540 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
3541 struct snd_soc_dapm_update *update = NULL;
3542
3543
3544 mutex_lock(&routing_lock);
3545 switch (ucontrol->value.integer.value[0]) {
3546 case 0:
3547 msm_route_ec_ref_rx = 0;
3548 ec_ref_port_id = AFE_PORT_INVALID;
3549 break;
3550 case 1:
3551 msm_route_ec_ref_rx = 1;
3552 ec_ref_port_id = SLIMBUS_0_RX;
3553 break;
3554 case 2:
3555 msm_route_ec_ref_rx = 2;
3556 ec_ref_port_id = AFE_PORT_ID_PRIMARY_MI2S_RX;
3557 break;
3558 case 3:
3559 msm_route_ec_ref_rx = 3;
3560 ec_ref_port_id = AFE_PORT_ID_PRIMARY_MI2S_TX;
3561 break;
3562 case 4:
3563 msm_route_ec_ref_rx = 4;
3564 ec_ref_port_id = AFE_PORT_ID_SECONDARY_MI2S_TX;
3565 break;
3566 case 5:
3567 msm_route_ec_ref_rx = 5;
3568 ec_ref_port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
3569 break;
3570 case 6:
3571 msm_route_ec_ref_rx = 6;
3572 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_MI2S_TX;
3573 break;
3574 case 7:
3575 msm_route_ec_ref_rx = 7;
3576 ec_ref_port_id = AFE_PORT_ID_SECONDARY_MI2S_RX;
3577 break;
3578 case 9:
3579 msm_route_ec_ref_rx = 9;
3580 ec_ref_port_id = SLIMBUS_5_RX;
3581 break;
3582 case 10:
3583 msm_route_ec_ref_rx = 10;
3584 ec_ref_port_id = SLIMBUS_1_TX;
3585 break;
3586 case 11:
3587 msm_route_ec_ref_rx = 11;
3588 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_TDM_TX_1;
3589 break;
3590 case 12:
3591 msm_route_ec_ref_rx = 12;
3592 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_TDM_RX;
3593 break;
3594 case 13:
3595 msm_route_ec_ref_rx = 13;
3596 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_TDM_RX_1;
3597 break;
3598 case 14:
3599 msm_route_ec_ref_rx = 14;
3600 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_TDM_RX_2;
3601 break;
3602 case 15:
3603 msm_route_ec_ref_rx = 15;
3604 ec_ref_port_id = SLIMBUS_6_RX;
3605 break;
3606 case 16:
3607 msm_route_ec_ref_rx = 16;
3608 ec_ref_port_id = AFE_PORT_ID_TERTIARY_MI2S_RX;
3609 break;
3610 case 17:
3611 msm_route_ec_ref_rx = 17;
3612 ec_ref_port_id = AFE_PORT_ID_QUATERNARY_MI2S_RX;
3613 break;
3614 case 18:
3615 msm_route_ec_ref_rx = 18;
3616 ec_ref_port_id = AFE_PORT_ID_TERTIARY_TDM_TX;
3617 break;
3618 case 19:
3619 msm_route_ec_ref_rx = 19;
3620 ec_ref_port_id = AFE_PORT_ID_USB_RX;
3621 break;
3622 case 20:
3623 msm_route_ec_ref_rx = 20;
3624 ec_ref_port_id = AFE_PORT_ID_INT0_MI2S_RX;
3625 break;
3626 case 21:
3627 msm_route_ec_ref_rx = 21;
3628 ec_ref_port_id = AFE_PORT_ID_INT4_MI2S_RX;
3629 break;
3630 case 22:
3631 msm_route_ec_ref_rx = 22;
3632 ec_ref_port_id = AFE_PORT_ID_INT3_MI2S_TX;
3633 break;
Aalique Grahamee4fd7d52017-11-28 13:24:13 -08003634 case 23:
3635 msm_route_ec_ref_rx = 23;
3636 ec_ref_port_id = AFE_PORT_ID_HDMI_OVER_DP_RX;
3637 break;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303638 default:
3639 msm_route_ec_ref_rx = 0; /* NONE */
3640 pr_err("%s EC ref rx %ld not valid\n",
3641 __func__, ucontrol->value.integer.value[0]);
3642 ec_ref_port_id = AFE_PORT_INVALID;
3643 break;
3644 }
3645 adm_ec_ref_rx_id(ec_ref_port_id);
3646 pr_debug("%s: msm_route_ec_ref_rx = %d\n",
3647 __func__, msm_route_ec_ref_rx);
3648 mutex_unlock(&routing_lock);
3649 snd_soc_dapm_mux_update_power(widget->dapm, kcontrol,
3650 msm_route_ec_ref_rx, e, update);
3651 return 0;
3652}
3653
3654static const char *const ec_ref_rx[] = { "None", "SLIM_RX", "I2S_RX",
3655 "PRI_MI2S_TX", "SEC_MI2S_TX",
3656 "TERT_MI2S_TX", "QUAT_MI2S_TX", "SEC_I2S_RX", "PROXY_RX",
3657 "SLIM_5_RX", "SLIM_1_TX", "QUAT_TDM_TX_1",
3658 "QUAT_TDM_RX_0", "QUAT_TDM_RX_1", "QUAT_TDM_RX_2", "SLIM_6_RX",
3659 "TERT_MI2S_RX", "QUAT_MI2S_RX", "TERT_TDM_TX_0", "USB_AUDIO_RX",
Aalique Grahamee4fd7d52017-11-28 13:24:13 -08003660 "INT0_MI2S_RX", "INT4_MI2S_RX", "INT3_MI2S_TX", "DISPLAY_PORT"};
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303661
3662static const struct soc_enum msm_route_ec_ref_rx_enum[] = {
3663 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(ec_ref_rx), ec_ref_rx),
3664};
3665
3666static const struct snd_kcontrol_new ext_ec_ref_mux_ul1 =
3667 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL1 MUX Mux",
3668 msm_route_ec_ref_rx_enum[0],
3669 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3670
3671static const struct snd_kcontrol_new ext_ec_ref_mux_ul2 =
3672 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL2 MUX Mux",
3673 msm_route_ec_ref_rx_enum[0],
3674 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3675
3676static const struct snd_kcontrol_new ext_ec_ref_mux_ul3 =
3677 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL3 MUX Mux",
3678 msm_route_ec_ref_rx_enum[0],
3679 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3680
3681static const struct snd_kcontrol_new ext_ec_ref_mux_ul4 =
3682 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL4 MUX Mux",
3683 msm_route_ec_ref_rx_enum[0],
3684 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3685
3686static const struct snd_kcontrol_new ext_ec_ref_mux_ul5 =
3687 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL5 MUX Mux",
3688 msm_route_ec_ref_rx_enum[0],
3689 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3690
3691static const struct snd_kcontrol_new ext_ec_ref_mux_ul6 =
3692 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL6 MUX Mux",
3693 msm_route_ec_ref_rx_enum[0],
3694 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3695
3696static const struct snd_kcontrol_new ext_ec_ref_mux_ul8 =
3697 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL8 MUX Mux",
3698 msm_route_ec_ref_rx_enum[0],
3699 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3700
3701static const struct snd_kcontrol_new ext_ec_ref_mux_ul9 =
3702 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL9 MUX Mux",
3703 msm_route_ec_ref_rx_enum[0],
3704 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3705
Asish Bhattacharya34504582017-08-08 12:55:01 +05303706static const struct snd_kcontrol_new ext_ec_ref_mux_ul16 =
3707 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL16 MUX Mux",
3708 msm_route_ec_ref_rx_enum[0],
3709 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3710
Laxminath Kasam38070be2017-08-17 18:21:59 +05303711static const struct snd_kcontrol_new ext_ec_ref_mux_ul10 =
3712 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL10 MUX Mux",
3713 msm_route_ec_ref_rx_enum[0],
3714 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3715
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303716static const struct snd_kcontrol_new ext_ec_ref_mux_ul17 =
3717 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL17 MUX Mux",
3718 msm_route_ec_ref_rx_enum[0],
3719 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3720
3721static const struct snd_kcontrol_new ext_ec_ref_mux_ul18 =
3722 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL18 MUX Mux",
3723 msm_route_ec_ref_rx_enum[0],
3724 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3725
3726static const struct snd_kcontrol_new ext_ec_ref_mux_ul19 =
3727 SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL19 MUX Mux",
3728 msm_route_ec_ref_rx_enum[0],
3729 msm_routing_ec_ref_rx_get, msm_routing_ec_ref_rx_put);
3730
3731static int msm_routing_ext_ec_get(struct snd_kcontrol *kcontrol,
3732 struct snd_ctl_elem_value *ucontrol)
3733{
3734 pr_debug("%s: ext_ec_ref_rx = %x\n", __func__, msm_route_ext_ec_ref);
3735
3736 mutex_lock(&routing_lock);
3737 ucontrol->value.integer.value[0] = msm_route_ext_ec_ref;
3738 mutex_unlock(&routing_lock);
3739 return 0;
3740}
3741
3742static int msm_routing_ext_ec_put(struct snd_kcontrol *kcontrol,
3743 struct snd_ctl_elem_value *ucontrol)
3744{
Asish Bhattacharya34504582017-08-08 12:55:01 +05303745 struct snd_soc_dapm_widget *widget =
3746 snd_soc_dapm_kcontrol_widget(kcontrol);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05303747 int mux = ucontrol->value.enumerated.item[0];
3748 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
3749 int ret = 1;
3750 bool state = true;
3751 uint16_t ext_ec_ref_port_id;
3752 struct snd_soc_dapm_update *update = NULL;
3753
3754 if (mux >= e->items) {
3755 pr_err("%s: Invalid mux value %d\n", __func__, mux);
3756 return -EINVAL;
3757 }
3758
3759 mutex_lock(&routing_lock);
3760 msm_route_ext_ec_ref = ucontrol->value.integer.value[0];
3761
3762 switch (msm_route_ext_ec_ref) {
3763 case EXT_EC_REF_PRI_MI2S_TX:
3764 ext_ec_ref_port_id = AFE_PORT_ID_PRIMARY_MI2S_TX;
3765 break;
3766 case EXT_EC_REF_SEC_MI2S_TX:
3767 ext_ec_ref_port_id = AFE_PORT_ID_SECONDARY_MI2S_TX;
3768 break;
3769 case EXT_EC_REF_TERT_MI2S_TX:
3770 ext_ec_ref_port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
3771 break;
3772 case EXT_EC_REF_QUAT_MI2S_TX:
3773 ext_ec_ref_port_id = AFE_PORT_ID_QUATERNARY_MI2S_TX;
3774 break;
3775 case EXT_EC_REF_QUIN_MI2S_TX:
3776 ext_ec_ref_port_id = AFE_PORT_ID_QUINARY_MI2S_TX;
3777 break;
3778 case EXT_EC_REF_SLIM_1_TX:
3779 ext_ec_ref_port_id = SLIMBUS_1_TX;
3780 break;
3781 case EXT_EC_REF_NONE:
3782 default:
3783 ext_ec_ref_port_id = AFE_PORT_INVALID;
3784 state = false;
3785 break;
3786 }
3787
3788 pr_debug("%s: val = %d ext_ec_ref_port_id = 0x%0x state = %d\n",
3789 __func__, msm_route_ext_ec_ref, ext_ec_ref_port_id, state);
3790
3791 if (!voc_set_ext_ec_ref_port_id(ext_ec_ref_port_id, state)) {
3792 mutex_unlock(&routing_lock);
3793 snd_soc_dapm_mux_update_power(widget->dapm, kcontrol, mux, e,
3794 update);
3795 } else {
3796 ret = -EINVAL;
3797 mutex_unlock(&routing_lock);
3798 }
3799 return ret;
3800}
3801
3802static const char * const ext_ec_ref_rx[] = {"NONE", "PRI_MI2S_TX",
3803 "SEC_MI2S_TX", "TERT_MI2S_TX",
3804 "QUAT_MI2S_TX", "QUIN_MI2S_TX",
3805 "SLIM_1_TX"};
3806
3807static const struct soc_enum msm_route_ext_ec_ref_rx_enum[] = {
3808 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(ext_ec_ref_rx), ext_ec_ref_rx),
3809};
3810
3811static const struct snd_kcontrol_new voc_ext_ec_mux =
3812 SOC_DAPM_ENUM_EXT("VOC_EXT_EC MUX Mux", msm_route_ext_ec_ref_rx_enum[0],
3813 msm_routing_ext_ec_get, msm_routing_ext_ec_put);
3814
3815
3816static const struct snd_kcontrol_new pri_i2s_rx_mixer_controls[] = {
3817 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_I2S_RX,
3818 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
3819 msm_routing_put_audio_mixer),
3820 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_I2S_RX,
3821 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
3822 msm_routing_put_audio_mixer),
3823 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_I2S_RX,
3824 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
3825 msm_routing_put_audio_mixer),
3826 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_I2S_RX,
3827 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
3828 msm_routing_put_audio_mixer),
3829 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_I2S_RX,
3830 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
3831 msm_routing_put_audio_mixer),
3832 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_I2S_RX,
3833 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
3834 msm_routing_put_audio_mixer),
3835 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_I2S_RX,
3836 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
3837 msm_routing_put_audio_mixer),
3838 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_I2S_RX,
3839 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
3840 msm_routing_put_audio_mixer),
3841 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_I2S_RX,
3842 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
3843 msm_routing_put_audio_mixer),
3844 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_I2S_RX,
3845 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
3846 msm_routing_put_audio_mixer),
3847 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_I2S_RX,
3848 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
3849 msm_routing_put_audio_mixer),
3850 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_I2S_RX,
3851 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
3852 msm_routing_put_audio_mixer),
3853 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_I2S_RX,
3854 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
3855 msm_routing_put_audio_mixer),
3856 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_I2S_RX,
3857 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
3858 msm_routing_put_audio_mixer),
3859 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_I2S_RX,
3860 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
3861 msm_routing_put_audio_mixer),
3862 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_I2S_RX,
3863 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
3864 msm_routing_put_audio_mixer),
3865 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_PRI_I2S_RX,
3866 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
3867 msm_routing_put_audio_mixer),
3868 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_PRI_I2S_RX,
3869 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
3870 msm_routing_put_audio_mixer),
3871 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_PRI_I2S_RX,
3872 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
3873 msm_routing_put_audio_mixer),
3874};
3875
3876static const struct snd_kcontrol_new sec_i2s_rx_mixer_controls[] = {
3877 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_I2S_RX,
3878 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
3879 msm_routing_put_audio_mixer),
3880 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_I2S_RX,
3881 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
3882 msm_routing_put_audio_mixer),
3883 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_I2S_RX,
3884 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
3885 msm_routing_put_audio_mixer),
3886 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_I2S_RX,
3887 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
3888 msm_routing_put_audio_mixer),
3889 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_I2S_RX,
3890 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
3891 msm_routing_put_audio_mixer),
3892 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_I2S_RX,
3893 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
3894 msm_routing_put_audio_mixer),
3895 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_I2S_RX,
3896 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
3897 msm_routing_put_audio_mixer),
3898 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_I2S_RX,
3899 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
3900 msm_routing_put_audio_mixer),
3901 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_I2S_RX,
3902 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
3903 msm_routing_put_audio_mixer),
3904 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_I2S_RX,
3905 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
3906 msm_routing_put_audio_mixer),
3907 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_I2S_RX,
3908 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
3909 msm_routing_put_audio_mixer),
3910 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_I2S_RX,
3911 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
3912 msm_routing_put_audio_mixer),
3913 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_I2S_RX,
3914 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
3915 msm_routing_put_audio_mixer),
3916 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_I2S_RX,
3917 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
3918 msm_routing_put_audio_mixer),
3919 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_I2S_RX,
3920 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
3921 msm_routing_put_audio_mixer),
3922 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_I2S_RX,
3923 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
3924 msm_routing_put_audio_mixer),
3925 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SEC_I2S_RX,
3926 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
3927 msm_routing_put_audio_mixer),
3928 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SEC_I2S_RX,
3929 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
3930 msm_routing_put_audio_mixer),
3931 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SEC_I2S_RX,
3932 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
3933 msm_routing_put_audio_mixer),
3934};
3935
3936static const struct snd_kcontrol_new spdif_rx_mixer_controls[] = {
3937 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SPDIF_RX,
3938 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
3939 msm_routing_put_audio_mixer),
3940 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SPDIF_RX,
3941 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
3942 msm_routing_put_audio_mixer),
3943 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SPDIF_RX,
3944 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
3945 msm_routing_put_audio_mixer),
3946 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SPDIF_RX,
3947 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
3948 msm_routing_put_audio_mixer),
3949 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SPDIF_RX,
3950 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
3951 msm_routing_put_audio_mixer),
3952 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SPDIF_RX,
3953 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
3954 msm_routing_put_audio_mixer),
3955 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SPDIF_RX,
3956 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
3957 msm_routing_put_audio_mixer),
3958 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SPDIF_RX,
3959 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
3960 msm_routing_put_audio_mixer),
3961 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SPDIF_RX,
3962 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
3963 msm_routing_put_audio_mixer),
3964 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SPDIF_RX,
3965 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
3966 msm_routing_put_audio_mixer),
3967 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SPDIF_RX,
3968 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
3969 msm_routing_put_audio_mixer),
3970 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SPDIF_RX,
3971 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
3972 msm_routing_put_audio_mixer),
3973 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SPDIF_RX,
3974 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
3975 msm_routing_put_audio_mixer),
3976 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SPDIF_RX,
3977 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
3978 msm_routing_put_audio_mixer),
3979 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SPDIF_RX,
3980 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
3981 msm_routing_put_audio_mixer),
3982 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SPDIF_RX,
3983 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
3984 msm_routing_put_audio_mixer),
3985 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SPDIF_RX,
3986 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
3987 msm_routing_put_audio_mixer),
3988 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SPDIF_RX,
3989 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
3990 msm_routing_put_audio_mixer),
3991 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SPDIF_RX,
3992 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
3993 msm_routing_put_audio_mixer),
3994
3995};
3996
3997static const struct snd_kcontrol_new slimbus_2_rx_mixer_controls[] = {
3998 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_2_RX,
3999 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4000 msm_routing_put_audio_mixer),
4001 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4002 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4003 msm_routing_put_audio_mixer),
4004 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4005 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4006 msm_routing_put_audio_mixer),
4007 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4008 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4009 msm_routing_put_audio_mixer),
4010 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4011 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4012 msm_routing_put_audio_mixer),
4013 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4014 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4015 msm_routing_put_audio_mixer),
4016 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4017 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4018 msm_routing_put_audio_mixer),
4019 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4020 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4021 msm_routing_put_audio_mixer),
4022 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4023 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4024 msm_routing_put_audio_mixer),
4025 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4026 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4027 msm_routing_put_audio_mixer),
4028 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4029 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4030 msm_routing_put_audio_mixer),
4031 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4032 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4033 msm_routing_put_audio_mixer),
4034 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4035 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4036 msm_routing_put_audio_mixer),
4037 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4038 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4039 msm_routing_put_audio_mixer),
4040 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4041 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4042 msm_routing_put_audio_mixer),
4043 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SLIMBUS_2_RX,
4044 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4045 msm_routing_put_audio_mixer),
4046};
4047
4048static const struct snd_kcontrol_new slimbus_5_rx_mixer_controls[] = {
4049 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4050 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4051 msm_routing_put_audio_mixer),
4052 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4053 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4054 msm_routing_put_audio_mixer),
4055 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4056 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4057 msm_routing_put_audio_mixer),
4058 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4059 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4060 msm_routing_put_audio_mixer),
4061 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4062 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4063 msm_routing_put_audio_mixer),
4064 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4065 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4066 msm_routing_put_audio_mixer),
4067 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4068 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4069 msm_routing_put_audio_mixer),
4070 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4071 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4072 msm_routing_put_audio_mixer),
4073 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4074 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4075 msm_routing_put_audio_mixer),
4076 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4077 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4078 msm_routing_put_audio_mixer),
4079 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4080 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4081 msm_routing_put_audio_mixer),
4082 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4083 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4084 msm_routing_put_audio_mixer),
4085 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4086 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4087 msm_routing_put_audio_mixer),
4088 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4089 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4090 msm_routing_put_audio_mixer),
4091 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4092 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4093 msm_routing_put_audio_mixer),
4094 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4095 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4096 msm_routing_put_audio_mixer),
4097 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4098 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4099 msm_routing_put_audio_mixer),
4100 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4101 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4102 msm_routing_put_audio_mixer),
4103 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SLIMBUS_5_RX,
4104 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4105 msm_routing_put_audio_mixer),
4106};
4107
4108static const struct snd_kcontrol_new slimbus_rx_mixer_controls[] = {
4109 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4110 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4111 msm_routing_put_audio_mixer),
4112 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4113 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4114 msm_routing_put_audio_mixer),
4115 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4116 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4117 msm_routing_put_audio_mixer),
4118 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4119 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4120 msm_routing_put_audio_mixer),
4121 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4122 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4123 msm_routing_put_audio_mixer),
4124 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4125 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4126 msm_routing_put_audio_mixer),
4127 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4128 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4129 msm_routing_put_audio_mixer),
4130 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4131 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4132 msm_routing_put_audio_mixer),
4133 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4134 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4135 msm_routing_put_audio_mixer),
4136 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4137 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4138 msm_routing_put_audio_mixer),
4139 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4140 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4141 msm_routing_put_audio_mixer),
4142 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4143 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4144 msm_routing_put_audio_mixer),
4145 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4146 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4147 msm_routing_put_audio_mixer),
4148 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4149 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4150 msm_routing_put_audio_mixer),
4151 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4152 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4153 msm_routing_put_audio_mixer),
4154 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4155 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4156 msm_routing_put_audio_mixer),
4157 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4158 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4159 msm_routing_put_audio_mixer),
4160 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4161 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4162 msm_routing_put_audio_mixer),
4163 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SLIMBUS_0_RX,
4164 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4165 msm_routing_put_audio_mixer),
4166};
4167
4168static const struct snd_kcontrol_new mi2s_rx_mixer_controls[] = {
4169 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_MI2S_RX,
4170 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4171 msm_routing_put_audio_mixer),
4172 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_MI2S_RX,
4173 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4174 msm_routing_put_audio_mixer),
4175 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_MI2S_RX,
4176 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4177 msm_routing_put_audio_mixer),
4178 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_MI2S_RX,
4179 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4180 msm_routing_put_audio_mixer),
4181 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_MI2S_RX,
4182 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4183 msm_routing_put_audio_mixer),
4184 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_MI2S_RX,
4185 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4186 msm_routing_put_audio_mixer),
4187 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_MI2S_RX,
4188 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4189 msm_routing_put_audio_mixer),
4190 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_MI2S_RX,
4191 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4192 msm_routing_put_audio_mixer),
4193 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_MI2S_RX,
4194 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4195 msm_routing_put_audio_mixer),
4196 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_MI2S_RX,
4197 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4198 msm_routing_put_audio_mixer),
4199 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_MI2S_RX,
4200 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4201 msm_routing_put_audio_mixer),
4202 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_MI2S_RX,
4203 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4204 msm_routing_put_audio_mixer),
4205 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_MI2S_RX,
4206 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4207 msm_routing_put_audio_mixer),
4208 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_MI2S_RX,
4209 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4210 msm_routing_put_audio_mixer),
4211 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_MI2S_RX,
4212 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4213 msm_routing_put_audio_mixer),
4214 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_MI2S_RX,
4215 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4216 msm_routing_put_audio_mixer),
4217 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_MI2S_RX,
4218 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4219 msm_routing_put_audio_mixer),
4220 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_MI2S_RX,
4221 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4222 msm_routing_put_audio_mixer),
4223 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_MI2S_RX,
4224 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4225 msm_routing_put_audio_mixer),
4226};
4227
4228static const struct snd_kcontrol_new quaternary_mi2s_rx_mixer_controls[] = {
4229 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4230 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4231 msm_routing_put_audio_mixer),
4232 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4233 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4234 msm_routing_put_audio_mixer),
4235 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4236 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4237 msm_routing_put_audio_mixer),
4238 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4239 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4240 msm_routing_put_audio_mixer),
4241 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4242 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4243 msm_routing_put_audio_mixer),
4244 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4245 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4246 msm_routing_put_audio_mixer),
4247 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4248 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4249 msm_routing_put_audio_mixer),
4250 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4251 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4252 msm_routing_put_audio_mixer),
4253 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4254 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4255 msm_routing_put_audio_mixer),
4256 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4257 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4258 msm_routing_put_audio_mixer),
4259 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4260 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4261 msm_routing_put_audio_mixer),
4262 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4263 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4264 msm_routing_put_audio_mixer),
4265 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4266 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4267 msm_routing_put_audio_mixer),
4268 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4269 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4270 msm_routing_put_audio_mixer),
4271 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4272 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4273 msm_routing_put_audio_mixer),
4274 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4275 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4276 msm_routing_put_audio_mixer),
4277 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4278 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4279 msm_routing_put_audio_mixer),
4280 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4281 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4282 msm_routing_put_audio_mixer),
4283 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
4284 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4285 msm_routing_put_audio_mixer),
4286};
4287
4288static const struct snd_kcontrol_new quinary_mi2s_rx_mixer_controls[] = {
4289 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4290 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4291 msm_routing_put_audio_mixer),
4292 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4293 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4294 msm_routing_put_audio_mixer),
4295 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4296 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4297 msm_routing_put_audio_mixer),
4298 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4299 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4300 msm_routing_put_audio_mixer),
4301 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4302 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4303 msm_routing_put_audio_mixer),
4304 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4305 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4306 msm_routing_put_audio_mixer),
4307 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4308 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4309 msm_routing_put_audio_mixer),
4310 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4311 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4312 msm_routing_put_audio_mixer),
4313 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4314 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4315 msm_routing_put_audio_mixer),
4316 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4317 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4318 msm_routing_put_audio_mixer),
4319 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4320 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4321 msm_routing_put_audio_mixer),
4322 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4323 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4324 msm_routing_put_audio_mixer),
4325 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4326 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4327 msm_routing_put_audio_mixer),
4328 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4329 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4330 msm_routing_put_audio_mixer),
4331 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4332 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4333 msm_routing_put_audio_mixer),
4334 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4335 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4336 msm_routing_put_audio_mixer),
4337 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4338 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4339 msm_routing_put_audio_mixer),
4340 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4341 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4342 msm_routing_put_audio_mixer),
4343 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
4344 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4345 msm_routing_put_audio_mixer),
4346};
4347
4348static const struct snd_kcontrol_new tertiary_mi2s_rx_mixer_controls[] = {
4349 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4350 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4351 msm_routing_put_audio_mixer),
4352 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4353 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4354 msm_routing_put_audio_mixer),
4355 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4356 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4357 msm_routing_put_audio_mixer),
4358 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4359 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4360 msm_routing_put_audio_mixer),
4361 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4362 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4363 msm_routing_put_audio_mixer),
4364 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4365 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4366 msm_routing_put_audio_mixer),
4367 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4368 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4369 msm_routing_put_audio_mixer),
4370 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4371 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4372 msm_routing_put_audio_mixer),
4373 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4374 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4375 msm_routing_put_audio_mixer),
4376 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4377 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4378 msm_routing_put_audio_mixer),
4379 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4380 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4381 msm_routing_put_audio_mixer),
4382 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4383 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4384 msm_routing_put_audio_mixer),
4385 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4386 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4387 msm_routing_put_audio_mixer),
4388 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4389 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4390 msm_routing_put_audio_mixer),
4391 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4392 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4393 msm_routing_put_audio_mixer),
4394 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4395 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4396 msm_routing_put_audio_mixer),
4397 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
4398 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4399 msm_routing_put_audio_mixer),
4400};
4401
4402static const struct snd_kcontrol_new secondary_mi2s_rx2_mixer_controls[] = {
4403 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SECONDARY_MI2S_RX_SD1,
4404 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4405 msm_routing_put_audio_mixer),
4406};
4407
4408static const struct snd_kcontrol_new secondary_mi2s_rx_mixer_controls[] = {
4409 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4410 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4411 msm_routing_put_audio_mixer),
4412 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4413 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4414 msm_routing_put_audio_mixer),
4415 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4416 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4417 msm_routing_put_audio_mixer),
4418 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4419 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4420 msm_routing_put_audio_mixer),
4421 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4422 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4423 msm_routing_put_audio_mixer),
4424 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4425 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4426 msm_routing_put_audio_mixer),
4427 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4428 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4429 msm_routing_put_audio_mixer),
4430 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4431 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4432 msm_routing_put_audio_mixer),
4433 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4434 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4435 msm_routing_put_audio_mixer),
4436 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4437 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4438 msm_routing_put_audio_mixer),
4439 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4440 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4441 msm_routing_put_audio_mixer),
4442 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4443 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4444 msm_routing_put_audio_mixer),
4445 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4446 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4447 msm_routing_put_audio_mixer),
4448 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4449 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4450 msm_routing_put_audio_mixer),
4451 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4452 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4453 msm_routing_put_audio_mixer),
4454 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4455 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4456 msm_routing_put_audio_mixer),
4457 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4458 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4459 msm_routing_put_audio_mixer),
4460 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4461 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4462 msm_routing_put_audio_mixer),
4463 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
4464 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4465 msm_routing_put_audio_mixer),
4466};
4467
4468static const struct snd_kcontrol_new primary_mi2s_rx_mixer_controls[] = {
4469 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_MI2S_RX,
4470 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4471 msm_routing_put_audio_mixer),
4472 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_MI2S_RX,
4473 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4474 msm_routing_put_audio_mixer),
4475 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_MI2S_RX,
4476 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4477 msm_routing_put_audio_mixer),
4478 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_MI2S_RX,
4479 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4480 msm_routing_put_audio_mixer),
4481 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_MI2S_RX,
4482 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4483 msm_routing_put_audio_mixer),
4484 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_MI2S_RX,
4485 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4486 msm_routing_put_audio_mixer),
4487 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_MI2S_RX,
4488 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4489 msm_routing_put_audio_mixer),
4490 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_MI2S_RX,
4491 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4492 msm_routing_put_audio_mixer),
4493 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_MI2S_RX,
4494 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4495 msm_routing_put_audio_mixer),
4496 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_MI2S_RX,
4497 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4498 msm_routing_put_audio_mixer),
4499 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_MI2S_RX,
4500 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4501 msm_routing_put_audio_mixer),
4502 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_MI2S_RX,
4503 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4504 msm_routing_put_audio_mixer),
4505 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_MI2S_RX,
4506 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4507 msm_routing_put_audio_mixer),
4508 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_MI2S_RX,
4509 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4510 msm_routing_put_audio_mixer),
4511 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_MI2S_RX,
4512 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4513 msm_routing_put_audio_mixer),
4514 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_MI2S_RX,
4515 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4516 msm_routing_put_audio_mixer),
4517 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_PRI_MI2S_RX,
4518 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4519 msm_routing_put_audio_mixer),
4520 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_PRI_MI2S_RX,
4521 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4522 msm_routing_put_audio_mixer),
4523 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_PRI_MI2S_RX,
4524 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4525 msm_routing_put_audio_mixer),
4526};
4527
4528static const struct snd_kcontrol_new int0_mi2s_rx_mixer_controls[] = {
4529 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_INT0_MI2S_RX,
4530 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4531 msm_routing_put_audio_mixer),
4532 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_INT0_MI2S_RX,
4533 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4534 msm_routing_put_audio_mixer),
4535 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_INT0_MI2S_RX,
4536 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4537 msm_routing_put_audio_mixer),
4538 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_INT0_MI2S_RX,
4539 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4540 msm_routing_put_audio_mixer),
4541 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_INT0_MI2S_RX,
4542 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4543 msm_routing_put_audio_mixer),
4544 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_INT0_MI2S_RX,
4545 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4546 msm_routing_put_audio_mixer),
4547 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_INT0_MI2S_RX,
4548 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4549 msm_routing_put_audio_mixer),
4550 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_INT0_MI2S_RX,
4551 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4552 msm_routing_put_audio_mixer),
4553 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_INT0_MI2S_RX,
4554 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4555 msm_routing_put_audio_mixer),
4556 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_INT0_MI2S_RX,
4557 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4558 msm_routing_put_audio_mixer),
4559 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_INT0_MI2S_RX,
4560 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4561 msm_routing_put_audio_mixer),
4562 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_INT0_MI2S_RX,
4563 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4564 msm_routing_put_audio_mixer),
4565 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_INT0_MI2S_RX,
4566 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4567 msm_routing_put_audio_mixer),
4568 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_INT0_MI2S_RX,
4569 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4570 msm_routing_put_audio_mixer),
4571 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_INT0_MI2S_RX,
4572 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4573 msm_routing_put_audio_mixer),
4574 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_INT0_MI2S_RX,
4575 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4576 msm_routing_put_audio_mixer),
4577};
4578
4579static const struct snd_kcontrol_new int4_mi2s_rx_mixer_controls[] = {
4580 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_INT4_MI2S_RX,
4581 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4582 msm_routing_put_audio_mixer),
4583 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_INT4_MI2S_RX,
4584 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4585 msm_routing_put_audio_mixer),
4586 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_INT4_MI2S_RX,
4587 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4588 msm_routing_put_audio_mixer),
4589 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_INT4_MI2S_RX,
4590 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4591 msm_routing_put_audio_mixer),
4592 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_INT4_MI2S_RX,
4593 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4594 msm_routing_put_audio_mixer),
4595 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_INT4_MI2S_RX,
4596 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4597 msm_routing_put_audio_mixer),
4598 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_INT4_MI2S_RX,
4599 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4600 msm_routing_put_audio_mixer),
4601 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_INT4_MI2S_RX,
4602 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4603 msm_routing_put_audio_mixer),
4604 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_INT4_MI2S_RX,
4605 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4606 msm_routing_put_audio_mixer),
4607 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_INT4_MI2S_RX,
4608 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4609 msm_routing_put_audio_mixer),
4610 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_INT4_MI2S_RX,
4611 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4612 msm_routing_put_audio_mixer),
4613 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_INT4_MI2S_RX,
4614 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4615 msm_routing_put_audio_mixer),
4616 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_INT4_MI2S_RX,
4617 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4618 msm_routing_put_audio_mixer),
4619 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_INT4_MI2S_RX,
4620 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4621 msm_routing_put_audio_mixer),
4622 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_INT4_MI2S_RX,
4623 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4624 msm_routing_put_audio_mixer),
4625 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_INT4_MI2S_RX,
4626 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4627 msm_routing_put_audio_mixer),
4628};
4629
4630static const struct snd_kcontrol_new hdmi_mixer_controls[] = {
4631 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_HDMI_RX,
4632 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4633 msm_routing_put_audio_mixer),
4634 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_HDMI_RX,
4635 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4636 msm_routing_put_audio_mixer),
4637 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_HDMI_RX,
4638 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4639 msm_routing_put_audio_mixer),
4640 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_HDMI_RX,
4641 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4642 msm_routing_put_audio_mixer),
4643 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_HDMI_RX,
4644 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4645 msm_routing_put_audio_mixer),
4646 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_HDMI_RX,
4647 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4648 msm_routing_put_audio_mixer),
4649 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_HDMI_RX,
4650 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4651 msm_routing_put_audio_mixer),
4652 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_HDMI_RX,
4653 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4654 msm_routing_put_audio_mixer),
4655 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_HDMI_RX,
4656 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4657 msm_routing_put_audio_mixer),
4658 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_HDMI_RX,
4659 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4660 msm_routing_put_audio_mixer),
4661 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_HDMI_RX,
4662 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4663 msm_routing_put_audio_mixer),
4664 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_HDMI_RX,
4665 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4666 msm_routing_put_audio_mixer),
4667 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_HDMI_RX,
4668 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4669 msm_routing_put_audio_mixer),
4670 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_HDMI_RX,
4671 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4672 msm_routing_put_audio_mixer),
4673 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_HDMI_RX,
4674 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4675 msm_routing_put_audio_mixer),
4676 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_HDMI_RX,
4677 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4678 msm_routing_put_audio_mixer),
4679 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_HDMI_RX,
4680 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4681 msm_routing_put_audio_mixer),
4682 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_HDMI_RX,
4683 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4684 msm_routing_put_audio_mixer),
4685 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_HDMI_RX,
4686 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4687 msm_routing_put_audio_mixer),
4688};
4689
4690static const struct snd_kcontrol_new display_port_mixer_controls[] = {
4691 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4692 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4693 msm_routing_put_audio_mixer),
4694 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4695 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4696 msm_routing_put_audio_mixer),
4697 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4698 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4699 msm_routing_put_audio_mixer),
4700 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4701 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4702 msm_routing_put_audio_mixer),
4703 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4704 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4705 msm_routing_put_audio_mixer),
4706 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4707 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4708 msm_routing_put_audio_mixer),
4709 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4710 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4711 msm_routing_put_audio_mixer),
4712 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4713 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4714 msm_routing_put_audio_mixer),
4715 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4716 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4717 msm_routing_put_audio_mixer),
4718 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4719 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4720 msm_routing_put_audio_mixer),
4721 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4722 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4723 msm_routing_put_audio_mixer),
4724 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4725 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4726 msm_routing_put_audio_mixer),
4727 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4728 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4729 msm_routing_put_audio_mixer),
4730 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4731 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4732 msm_routing_put_audio_mixer),
4733 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4734 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4735 msm_routing_put_audio_mixer),
4736 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
4737 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4738 msm_routing_put_audio_mixer),
4739};
4740
4741 /* incall music delivery mixer */
4742static const struct snd_kcontrol_new incall_music_delivery_mixer_controls[] = {
4743 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_VOICE_PLAYBACK_TX,
4744 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4745 msm_routing_put_audio_mixer),
4746 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_VOICE_PLAYBACK_TX,
4747 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4748 msm_routing_put_audio_mixer),
4749 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_VOICE_PLAYBACK_TX,
4750 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4751 msm_routing_put_audio_mixer),
4752 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_VOICE_PLAYBACK_TX,
4753 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4754 msm_routing_put_audio_mixer),
4755};
4756
4757static const struct snd_kcontrol_new incall_music2_delivery_mixer_controls[] = {
4758 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_VOICE2_PLAYBACK_TX,
4759 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4760 msm_routing_put_audio_mixer),
4761 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_VOICE2_PLAYBACK_TX,
4762 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4763 msm_routing_put_audio_mixer),
4764 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_VOICE2_PLAYBACK_TX,
4765 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4766 msm_routing_put_audio_mixer),
4767 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_VOICE2_PLAYBACK_TX,
4768 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4769 msm_routing_put_audio_mixer),
4770};
4771
4772static const struct snd_kcontrol_new slimbus_4_rx_mixer_controls[] = {
4773 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_4_RX,
4774 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4775 msm_routing_put_audio_mixer),
4776 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_4_RX,
4777 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4778 msm_routing_put_audio_mixer),
4779 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_4_RX,
4780 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4781 msm_routing_put_audio_mixer),
4782 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_4_RX,
4783 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4784 msm_routing_put_audio_mixer),
4785};
4786
4787static const struct snd_kcontrol_new slimbus_6_rx_mixer_controls[] = {
4788 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4789 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4790 msm_routing_put_audio_mixer),
4791 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4792 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4793 msm_routing_put_audio_mixer),
4794 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4795 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4796 msm_routing_put_audio_mixer),
4797 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4798 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4799 msm_routing_put_audio_mixer),
4800 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4801 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4802 msm_routing_put_audio_mixer),
4803 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4804 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4805 msm_routing_put_audio_mixer),
4806 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4807 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4808 msm_routing_put_audio_mixer),
4809 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4810 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4811 msm_routing_put_audio_mixer),
4812 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4813 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4814 msm_routing_put_audio_mixer),
4815 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4816 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4817 msm_routing_put_audio_mixer),
4818 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4819 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4820 msm_routing_put_audio_mixer),
4821 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4822 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4823 msm_routing_put_audio_mixer),
4824 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4825 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4826 msm_routing_put_audio_mixer),
4827 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4828 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4829 msm_routing_put_audio_mixer),
4830 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4831 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4832 msm_routing_put_audio_mixer),
4833 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SLIMBUS_6_RX,
4834 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4835 msm_routing_put_audio_mixer),
4836};
4837
4838static const struct snd_kcontrol_new slimbus_7_rx_mixer_controls[] = {
4839 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4840 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4841 msm_routing_put_audio_mixer),
4842 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4843 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4844 msm_routing_put_audio_mixer),
4845 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4846 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4847 msm_routing_put_audio_mixer),
4848 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4849 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4850 msm_routing_put_audio_mixer),
4851 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4852 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4853 msm_routing_put_audio_mixer),
4854 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4855 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4856 msm_routing_put_audio_mixer),
4857 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4858 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4859 msm_routing_put_audio_mixer),
4860 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4861 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4862 msm_routing_put_audio_mixer),
4863 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4864 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4865 msm_routing_put_audio_mixer),
4866 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4867 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4868 msm_routing_put_audio_mixer),
4869 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4870 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4871 msm_routing_put_audio_mixer),
4872 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4873 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4874 msm_routing_put_audio_mixer),
4875 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4876 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4877 msm_routing_put_audio_mixer),
4878 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4879 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4880 msm_routing_put_audio_mixer),
4881 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4882 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4883 msm_routing_put_audio_mixer),
4884 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SLIMBUS_7_RX,
4885 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4886 msm_routing_put_audio_mixer),
4887};
4888
4889static const struct snd_kcontrol_new usb_audio_rx_mixer_controls[] = {
4890 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_USB_RX,
4891 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4892 msm_routing_put_audio_mixer),
4893 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_USB_RX,
4894 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4895 msm_routing_put_audio_mixer),
4896 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_USB_RX,
4897 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4898 msm_routing_put_audio_mixer),
4899 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_USB_RX,
4900 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4901 msm_routing_put_audio_mixer),
4902 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_USB_RX,
4903 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4904 msm_routing_put_audio_mixer),
4905 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_USB_RX,
4906 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4907 msm_routing_put_audio_mixer),
4908 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_USB_RX,
4909 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4910 msm_routing_put_audio_mixer),
4911 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_USB_RX,
4912 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4913 msm_routing_put_audio_mixer),
4914 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_USB_RX,
4915 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4916 msm_routing_put_audio_mixer),
4917 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_USB_RX,
4918 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4919 msm_routing_put_audio_mixer),
4920 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_USB_RX,
4921 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4922 msm_routing_put_audio_mixer),
4923 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_USB_RX,
4924 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4925 msm_routing_put_audio_mixer),
4926 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_USB_RX,
4927 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4928 msm_routing_put_audio_mixer),
4929 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_USB_RX,
4930 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4931 msm_routing_put_audio_mixer),
4932 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_USB_RX,
4933 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4934 msm_routing_put_audio_mixer),
4935 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_USB_RX,
4936 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4937 msm_routing_put_audio_mixer),
4938};
4939
4940static const struct snd_kcontrol_new int_bt_sco_rx_mixer_controls[] = {
4941 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4942 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
4943 msm_routing_put_audio_mixer),
4944 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4945 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
4946 msm_routing_put_audio_mixer),
4947 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4948 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
4949 msm_routing_put_audio_mixer),
4950 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4951 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
4952 msm_routing_put_audio_mixer),
4953 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4954 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
4955 msm_routing_put_audio_mixer),
4956 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4957 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
4958 msm_routing_put_audio_mixer),
4959 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4960 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
4961 msm_routing_put_audio_mixer),
4962 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4963 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
4964 msm_routing_put_audio_mixer),
4965 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4966 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
4967 msm_routing_put_audio_mixer),
4968 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4969 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
4970 msm_routing_put_audio_mixer),
4971 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4972 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
4973 msm_routing_put_audio_mixer),
4974 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4975 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
4976 msm_routing_put_audio_mixer),
4977 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4978 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
4979 msm_routing_put_audio_mixer),
4980 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4981 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
4982 msm_routing_put_audio_mixer),
4983 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4984 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
4985 msm_routing_put_audio_mixer),
4986 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4987 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
4988 msm_routing_put_audio_mixer),
4989 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4990 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
4991 msm_routing_put_audio_mixer),
4992 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4993 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
4994 msm_routing_put_audio_mixer),
4995 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_INT_BT_SCO_RX,
4996 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
4997 msm_routing_put_audio_mixer),
4998};
4999
5000static const struct snd_kcontrol_new int_bt_a2dp_rx_mixer_controls[] = {
5001 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5002 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5003 msm_routing_put_audio_mixer),
5004 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5005 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5006 msm_routing_put_audio_mixer),
5007 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5008 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5009 msm_routing_put_audio_mixer),
5010 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5011 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5012 msm_routing_put_audio_mixer),
5013 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5014 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5015 msm_routing_put_audio_mixer),
5016 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5017 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5018 msm_routing_put_audio_mixer),
5019 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5020 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5021 msm_routing_put_audio_mixer),
5022 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5023 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5024 msm_routing_put_audio_mixer),
5025 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5026 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5027 msm_routing_put_audio_mixer),
5028 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5029 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5030 msm_routing_put_audio_mixer),
5031 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5032 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5033 msm_routing_put_audio_mixer),
5034 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5035 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5036 msm_routing_put_audio_mixer),
5037 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5038 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5039 msm_routing_put_audio_mixer),
5040 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5041 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5042 msm_routing_put_audio_mixer),
5043 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5044 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5045 msm_routing_put_audio_mixer),
5046 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_INT_BT_A2DP_RX,
5047 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5048 msm_routing_put_audio_mixer),
5049};
5050
5051static const struct snd_kcontrol_new int_fm_rx_mixer_controls[] = {
5052 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_INT_FM_RX,
5053 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5054 msm_routing_put_audio_mixer),
5055 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_INT_FM_RX,
5056 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5057 msm_routing_put_audio_mixer),
5058 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_INT_FM_RX,
5059 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5060 msm_routing_put_audio_mixer),
5061 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_INT_FM_RX,
5062 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5063 msm_routing_put_audio_mixer),
5064 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_INT_FM_RX,
5065 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5066 msm_routing_put_audio_mixer),
5067 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_INT_FM_RX,
5068 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5069 msm_routing_put_audio_mixer),
5070 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_INT_FM_RX,
5071 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5072 msm_routing_put_audio_mixer),
5073 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_INT_FM_RX,
5074 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5075 msm_routing_put_audio_mixer),
5076 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_INT_FM_RX,
5077 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5078 msm_routing_put_audio_mixer),
5079 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_INT_FM_RX,
5080 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5081 msm_routing_put_audio_mixer),
5082 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_INT_FM_RX,
5083 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5084 msm_routing_put_audio_mixer),
5085 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_INT_FM_RX,
5086 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5087 msm_routing_put_audio_mixer),
5088 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_INT_FM_RX,
5089 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5090 msm_routing_put_audio_mixer),
5091 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_INT_FM_RX,
5092 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5093 msm_routing_put_audio_mixer),
5094 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_INT_FM_RX,
5095 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5096 msm_routing_put_audio_mixer),
5097 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_INT_FM_RX,
5098 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5099 msm_routing_put_audio_mixer),
5100 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_INT_FM_RX,
5101 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
5102 msm_routing_put_audio_mixer),
5103 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_INT_FM_RX,
5104 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
5105 msm_routing_put_audio_mixer),
5106 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_INT_FM_RX,
5107 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
5108 msm_routing_put_audio_mixer),
5109};
5110
5111static const struct snd_kcontrol_new afe_pcm_rx_mixer_controls[] = {
5112 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_AFE_PCM_RX,
5113 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5114 msm_routing_put_audio_mixer),
5115 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_AFE_PCM_RX,
5116 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5117 msm_routing_put_audio_mixer),
5118 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_AFE_PCM_RX,
5119 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5120 msm_routing_put_audio_mixer),
5121 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_AFE_PCM_RX,
5122 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5123 msm_routing_put_audio_mixer),
5124 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_AFE_PCM_RX,
5125 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5126 msm_routing_put_audio_mixer),
5127 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_AFE_PCM_RX,
5128 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5129 msm_routing_put_audio_mixer),
5130 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_AFE_PCM_RX,
5131 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5132 msm_routing_put_audio_mixer),
5133 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_AFE_PCM_RX,
5134 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5135 msm_routing_put_audio_mixer),
5136 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_AFE_PCM_RX,
5137 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5138 msm_routing_put_audio_mixer),
5139 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_AFE_PCM_RX,
5140 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5141 msm_routing_put_audio_mixer),
5142 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_AFE_PCM_RX,
5143 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5144 msm_routing_put_audio_mixer),
5145 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_AFE_PCM_RX,
5146 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5147 msm_routing_put_audio_mixer),
5148 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_AFE_PCM_RX,
5149 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5150 msm_routing_put_audio_mixer),
5151 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_AFE_PCM_RX,
5152 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5153 msm_routing_put_audio_mixer),
5154 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_AFE_PCM_RX,
5155 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5156 msm_routing_put_audio_mixer),
5157 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_AFE_PCM_RX,
5158 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5159 msm_routing_put_audio_mixer),
5160 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_AFE_PCM_RX,
5161 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
5162 msm_routing_put_audio_mixer),
5163 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_AFE_PCM_RX,
5164 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
5165 msm_routing_put_audio_mixer),
5166 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_AFE_PCM_RX,
5167 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
5168 msm_routing_put_audio_mixer),
5169};
5170
5171static const struct snd_kcontrol_new auxpcm_rx_mixer_controls[] = {
5172 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_AUXPCM_RX,
5173 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5174 msm_routing_put_audio_mixer),
5175 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_AUXPCM_RX,
5176 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5177 msm_routing_put_audio_mixer),
5178 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_AUXPCM_RX,
5179 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5180 msm_routing_put_audio_mixer),
5181 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_AUXPCM_RX,
5182 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5183 msm_routing_put_audio_mixer),
5184 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_AUXPCM_RX,
5185 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5186 msm_routing_put_audio_mixer),
5187 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_AUXPCM_RX,
5188 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5189 msm_routing_put_audio_mixer),
5190 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_AUXPCM_RX,
5191 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5192 msm_routing_put_audio_mixer),
5193 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_AUXPCM_RX,
5194 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5195 msm_routing_put_audio_mixer),
5196 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_AUXPCM_RX,
5197 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5198 msm_routing_put_audio_mixer),
5199 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_AUXPCM_RX,
5200 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5201 msm_routing_put_audio_mixer),
5202 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_AUXPCM_RX,
5203 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5204 msm_routing_put_audio_mixer),
5205 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_AUXPCM_RX,
5206 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5207 msm_routing_put_audio_mixer),
5208 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_AUXPCM_RX,
5209 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5210 msm_routing_put_audio_mixer),
5211 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_AUXPCM_RX,
5212 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5213 msm_routing_put_audio_mixer),
5214 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_AUXPCM_RX,
5215 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5216 msm_routing_put_audio_mixer),
5217 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_AUXPCM_RX,
5218 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5219 msm_routing_put_audio_mixer),
5220 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_AUXPCM_RX,
5221 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
5222 msm_routing_put_audio_mixer),
5223 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_AUXPCM_RX,
5224 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
5225 msm_routing_put_audio_mixer),
5226 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_AUXPCM_RX,
5227 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
5228 msm_routing_put_audio_mixer),
5229};
5230
5231static const struct snd_kcontrol_new sec_auxpcm_rx_mixer_controls[] = {
5232 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5233 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5234 msm_routing_put_audio_mixer),
5235 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5236 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5237 msm_routing_put_audio_mixer),
5238 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5239 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5240 msm_routing_put_audio_mixer),
5241 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5242 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5243 msm_routing_put_audio_mixer),
5244 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5245 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5246 msm_routing_put_audio_mixer),
5247 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5248 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5249 msm_routing_put_audio_mixer),
5250 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5251 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5252 msm_routing_put_audio_mixer),
5253 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5254 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5255 msm_routing_put_audio_mixer),
5256 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5257 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5258 msm_routing_put_audio_mixer),
5259 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5260 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5261 msm_routing_put_audio_mixer),
5262 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5263 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5264 msm_routing_put_audio_mixer),
5265 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5266 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5267 msm_routing_put_audio_mixer),
5268 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5269 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5270 msm_routing_put_audio_mixer),
5271 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5272 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5273 msm_routing_put_audio_mixer),
5274 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5275 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5276 msm_routing_put_audio_mixer),
5277 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5278 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5279 msm_routing_put_audio_mixer),
5280 SOC_SINGLE_EXT("MultiMedia17", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5281 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
5282 msm_routing_put_audio_mixer),
5283 SOC_SINGLE_EXT("MultiMedia18", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5284 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
5285 msm_routing_put_audio_mixer),
5286 SOC_SINGLE_EXT("MultiMedia19", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
5287 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
5288 msm_routing_put_audio_mixer),
5289};
5290
5291static const struct snd_kcontrol_new tert_auxpcm_rx_mixer_controls[] = {
5292 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5293 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5294 msm_routing_put_audio_mixer),
5295 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5296 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5297 msm_routing_put_audio_mixer),
5298 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5299 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5300 msm_routing_put_audio_mixer),
5301 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5302 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5303 msm_routing_put_audio_mixer),
5304 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5305 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5306 msm_routing_put_audio_mixer),
5307 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5308 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5309 msm_routing_put_audio_mixer),
5310 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5311 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5312 msm_routing_put_audio_mixer),
5313 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5314 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5315 msm_routing_put_audio_mixer),
5316 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5317 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5318 msm_routing_put_audio_mixer),
5319 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5320 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5321 msm_routing_put_audio_mixer),
5322 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5323 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5324 msm_routing_put_audio_mixer),
5325 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5326 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5327 msm_routing_put_audio_mixer),
5328 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5329 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5330 msm_routing_put_audio_mixer),
5331 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5332 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5333 msm_routing_put_audio_mixer),
5334 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5335 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5336 msm_routing_put_audio_mixer),
5337 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
5338 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5339 msm_routing_put_audio_mixer),
5340};
5341
5342static const struct snd_kcontrol_new quat_auxpcm_rx_mixer_controls[] = {
5343 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5344 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5345 msm_routing_put_audio_mixer),
5346 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5347 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5348 msm_routing_put_audio_mixer),
5349 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5350 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5351 msm_routing_put_audio_mixer),
5352 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5353 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5354 msm_routing_put_audio_mixer),
5355 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5356 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5357 msm_routing_put_audio_mixer),
5358 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5359 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5360 msm_routing_put_audio_mixer),
5361 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5362 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5363 msm_routing_put_audio_mixer),
5364 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5365 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5366 msm_routing_put_audio_mixer),
5367 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5368 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5369 msm_routing_put_audio_mixer),
5370 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5371 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5372 msm_routing_put_audio_mixer),
5373 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5374 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5375 msm_routing_put_audio_mixer),
5376 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5377 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5378 msm_routing_put_audio_mixer),
5379 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5380 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5381 msm_routing_put_audio_mixer),
5382 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5383 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5384 msm_routing_put_audio_mixer),
5385 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5386 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5387 msm_routing_put_audio_mixer),
5388 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
5389 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5390 msm_routing_put_audio_mixer),
5391};
5392
Rohit Kumara5077932017-09-10 22:05:05 +05305393static const struct snd_kcontrol_new quin_auxpcm_rx_mixer_controls[] = {
5394 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5395 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5396 msm_routing_put_audio_mixer),
5397 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5398 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5399 msm_routing_put_audio_mixer),
5400 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5401 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5402 msm_routing_put_audio_mixer),
5403 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5404 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5405 msm_routing_put_audio_mixer),
5406 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5407 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5408 msm_routing_put_audio_mixer),
5409 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5410 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5411 msm_routing_put_audio_mixer),
5412 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5413 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5414 msm_routing_put_audio_mixer),
5415 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5416 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5417 msm_routing_put_audio_mixer),
5418 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5419 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5420 msm_routing_put_audio_mixer),
5421 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5422 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5423 msm_routing_put_audio_mixer),
5424 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5425 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5426 msm_routing_put_audio_mixer),
5427 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5428 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5429 msm_routing_put_audio_mixer),
5430 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5431 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5432 msm_routing_put_audio_mixer),
5433 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5434 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5435 msm_routing_put_audio_mixer),
5436 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5437 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5438 msm_routing_put_audio_mixer),
5439 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
5440 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5441 msm_routing_put_audio_mixer),
5442};
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05305443static const struct snd_kcontrol_new pri_tdm_rx_0_mixer_controls[] = {
5444 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5445 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5446 msm_routing_put_audio_mixer),
5447 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5448 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5449 msm_routing_put_audio_mixer),
5450 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5451 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5452 msm_routing_put_audio_mixer),
5453 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5454 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5455 msm_routing_put_audio_mixer),
5456 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5457 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5458 msm_routing_put_audio_mixer),
5459 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5460 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5461 msm_routing_put_audio_mixer),
5462 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5463 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5464 msm_routing_put_audio_mixer),
5465 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5466 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5467 msm_routing_put_audio_mixer),
5468 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5469 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5470 msm_routing_put_audio_mixer),
5471 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5472 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5473 msm_routing_put_audio_mixer),
5474 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5475 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5476 msm_routing_put_audio_mixer),
5477 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5478 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5479 msm_routing_put_audio_mixer),
5480 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5481 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5482 msm_routing_put_audio_mixer),
5483 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5484 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5485 msm_routing_put_audio_mixer),
5486 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5487 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5488 msm_routing_put_audio_mixer),
5489 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_TDM_RX_0,
5490 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5491 msm_routing_put_audio_mixer),
5492};
5493
5494static const struct snd_kcontrol_new pri_tdm_rx_1_mixer_controls[] = {
5495 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5496 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5497 msm_routing_put_audio_mixer),
5498 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5499 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5500 msm_routing_put_audio_mixer),
5501 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5502 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5503 msm_routing_put_audio_mixer),
5504 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5505 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5506 msm_routing_put_audio_mixer),
5507 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5508 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5509 msm_routing_put_audio_mixer),
5510 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5511 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5512 msm_routing_put_audio_mixer),
5513 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5514 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5515 msm_routing_put_audio_mixer),
5516 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5517 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5518 msm_routing_put_audio_mixer),
5519 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5520 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5521 msm_routing_put_audio_mixer),
5522 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5523 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5524 msm_routing_put_audio_mixer),
5525 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5526 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5527 msm_routing_put_audio_mixer),
5528 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5529 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5530 msm_routing_put_audio_mixer),
5531 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5532 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5533 msm_routing_put_audio_mixer),
5534 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5535 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5536 msm_routing_put_audio_mixer),
5537 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5538 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5539 msm_routing_put_audio_mixer),
5540 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_TDM_RX_1,
5541 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5542 msm_routing_put_audio_mixer),
5543};
5544
5545static const struct snd_kcontrol_new pri_tdm_rx_2_mixer_controls[] = {
5546 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5547 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5548 msm_routing_put_audio_mixer),
5549 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5550 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5551 msm_routing_put_audio_mixer),
5552 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5553 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5554 msm_routing_put_audio_mixer),
5555 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5556 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5557 msm_routing_put_audio_mixer),
5558 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5559 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5560 msm_routing_put_audio_mixer),
5561 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5562 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5563 msm_routing_put_audio_mixer),
5564 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5565 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5566 msm_routing_put_audio_mixer),
5567 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5568 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5569 msm_routing_put_audio_mixer),
5570 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5571 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5572 msm_routing_put_audio_mixer),
5573 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5574 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5575 msm_routing_put_audio_mixer),
5576 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5577 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5578 msm_routing_put_audio_mixer),
5579 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5580 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5581 msm_routing_put_audio_mixer),
5582 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5583 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5584 msm_routing_put_audio_mixer),
5585 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5586 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5587 msm_routing_put_audio_mixer),
5588 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5589 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5590 msm_routing_put_audio_mixer),
5591 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_TDM_RX_2,
5592 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5593 msm_routing_put_audio_mixer),
5594};
5595
5596static const struct snd_kcontrol_new pri_tdm_rx_3_mixer_controls[] = {
5597 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5598 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5599 msm_routing_put_audio_mixer),
5600 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5601 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5602 msm_routing_put_audio_mixer),
5603 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5604 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5605 msm_routing_put_audio_mixer),
5606 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5607 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5608 msm_routing_put_audio_mixer),
5609 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5610 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5611 msm_routing_put_audio_mixer),
5612 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5613 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5614 msm_routing_put_audio_mixer),
5615 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5616 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5617 msm_routing_put_audio_mixer),
5618 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5619 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5620 msm_routing_put_audio_mixer),
5621 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5622 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5623 msm_routing_put_audio_mixer),
5624 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5625 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5626 msm_routing_put_audio_mixer),
5627 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5628 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5629 msm_routing_put_audio_mixer),
5630 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5631 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5632 msm_routing_put_audio_mixer),
5633 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5634 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5635 msm_routing_put_audio_mixer),
5636 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5637 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5638 msm_routing_put_audio_mixer),
5639 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5640 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5641 msm_routing_put_audio_mixer),
5642 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_TDM_RX_3,
5643 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5644 msm_routing_put_audio_mixer),
5645};
5646
5647static const struct snd_kcontrol_new pri_tdm_tx_0_mixer_controls[] = {
5648 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5649 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5650 msm_routing_put_audio_mixer),
5651 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5652 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5653 msm_routing_put_audio_mixer),
5654 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5655 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5656 msm_routing_put_audio_mixer),
5657 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5658 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5659 msm_routing_put_audio_mixer),
5660 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5661 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5662 msm_routing_put_audio_mixer),
5663 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5664 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5665 msm_routing_put_audio_mixer),
5666 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5667 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5668 msm_routing_put_audio_mixer),
5669 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5670 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5671 msm_routing_put_audio_mixer),
5672 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5673 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5674 msm_routing_put_audio_mixer),
5675 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5676 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5677 msm_routing_put_audio_mixer),
5678 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5679 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5680 msm_routing_put_audio_mixer),
5681 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5682 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5683 msm_routing_put_audio_mixer),
5684 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5685 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5686 msm_routing_put_audio_mixer),
5687 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5688 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5689 msm_routing_put_audio_mixer),
5690 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5691 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5692 msm_routing_put_audio_mixer),
5693 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_PRI_TDM_TX_0,
5694 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5695 msm_routing_put_audio_mixer),
5696};
5697
5698static const struct snd_kcontrol_new sec_tdm_rx_0_mixer_controls[] = {
5699 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5700 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5701 msm_routing_put_audio_mixer),
5702 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5703 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5704 msm_routing_put_audio_mixer),
5705 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5706 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5707 msm_routing_put_audio_mixer),
5708 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5709 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5710 msm_routing_put_audio_mixer),
5711 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5712 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5713 msm_routing_put_audio_mixer),
5714 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5715 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5716 msm_routing_put_audio_mixer),
5717 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5718 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5719 msm_routing_put_audio_mixer),
5720 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5721 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5722 msm_routing_put_audio_mixer),
5723 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5724 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5725 msm_routing_put_audio_mixer),
5726 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5727 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5728 msm_routing_put_audio_mixer),
5729 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5730 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5731 msm_routing_put_audio_mixer),
5732 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5733 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5734 msm_routing_put_audio_mixer),
5735 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5736 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5737 msm_routing_put_audio_mixer),
5738 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5739 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5740 msm_routing_put_audio_mixer),
5741 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5742 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5743 msm_routing_put_audio_mixer),
5744 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_TDM_RX_0,
5745 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5746 msm_routing_put_audio_mixer),
5747};
5748
5749static const struct snd_kcontrol_new sec_tdm_rx_1_mixer_controls[] = {
5750 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5751 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5752 msm_routing_put_audio_mixer),
5753 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5754 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5755 msm_routing_put_audio_mixer),
5756 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5757 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5758 msm_routing_put_audio_mixer),
5759 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5760 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5761 msm_routing_put_audio_mixer),
5762 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5763 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5764 msm_routing_put_audio_mixer),
5765 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5766 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5767 msm_routing_put_audio_mixer),
5768 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5769 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5770 msm_routing_put_audio_mixer),
5771 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5772 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5773 msm_routing_put_audio_mixer),
5774 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5775 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5776 msm_routing_put_audio_mixer),
5777 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5778 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5779 msm_routing_put_audio_mixer),
5780 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5781 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5782 msm_routing_put_audio_mixer),
5783 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5784 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5785 msm_routing_put_audio_mixer),
5786 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5787 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5788 msm_routing_put_audio_mixer),
5789 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5790 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5791 msm_routing_put_audio_mixer),
5792 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5793 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5794 msm_routing_put_audio_mixer),
5795 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_TDM_RX_1,
5796 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5797 msm_routing_put_audio_mixer),
5798};
5799
5800static const struct snd_kcontrol_new sec_tdm_rx_2_mixer_controls[] = {
5801 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5802 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5803 msm_routing_put_audio_mixer),
5804 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5805 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5806 msm_routing_put_audio_mixer),
5807 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5808 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5809 msm_routing_put_audio_mixer),
5810 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5811 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5812 msm_routing_put_audio_mixer),
5813 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5814 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5815 msm_routing_put_audio_mixer),
5816 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5817 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5818 msm_routing_put_audio_mixer),
5819 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5820 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5821 msm_routing_put_audio_mixer),
5822 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5823 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5824 msm_routing_put_audio_mixer),
5825 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5826 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5827 msm_routing_put_audio_mixer),
5828 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5829 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5830 msm_routing_put_audio_mixer),
5831 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5832 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5833 msm_routing_put_audio_mixer),
5834 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5835 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5836 msm_routing_put_audio_mixer),
5837 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5838 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5839 msm_routing_put_audio_mixer),
5840 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5841 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5842 msm_routing_put_audio_mixer),
5843 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5844 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5845 msm_routing_put_audio_mixer),
5846 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_TDM_RX_2,
5847 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5848 msm_routing_put_audio_mixer),
5849};
5850
5851static const struct snd_kcontrol_new sec_tdm_rx_3_mixer_controls[] = {
5852 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5853 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5854 msm_routing_put_audio_mixer),
5855 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5856 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5857 msm_routing_put_audio_mixer),
5858 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5859 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5860 msm_routing_put_audio_mixer),
5861 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5862 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5863 msm_routing_put_audio_mixer),
5864 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5865 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5866 msm_routing_put_audio_mixer),
5867 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5868 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5869 msm_routing_put_audio_mixer),
5870 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5871 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5872 msm_routing_put_audio_mixer),
5873 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5874 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5875 msm_routing_put_audio_mixer),
5876 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5877 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5878 msm_routing_put_audio_mixer),
5879 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5880 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5881 msm_routing_put_audio_mixer),
5882 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5883 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5884 msm_routing_put_audio_mixer),
5885 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5886 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5887 msm_routing_put_audio_mixer),
5888 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5889 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5890 msm_routing_put_audio_mixer),
5891 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5892 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5893 msm_routing_put_audio_mixer),
5894 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5895 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5896 msm_routing_put_audio_mixer),
5897 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_TDM_RX_3,
5898 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5899 msm_routing_put_audio_mixer),
5900};
5901
5902static const struct snd_kcontrol_new sec_tdm_tx_0_mixer_controls[] = {
5903 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5904 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5905 msm_routing_put_audio_mixer),
5906 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5907 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5908 msm_routing_put_audio_mixer),
5909 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5910 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5911 msm_routing_put_audio_mixer),
5912 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5913 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5914 msm_routing_put_audio_mixer),
5915 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5916 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5917 msm_routing_put_audio_mixer),
5918 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5919 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5920 msm_routing_put_audio_mixer),
5921 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5922 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5923 msm_routing_put_audio_mixer),
5924 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5925 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5926 msm_routing_put_audio_mixer),
5927 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5928 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5929 msm_routing_put_audio_mixer),
5930 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5931 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5932 msm_routing_put_audio_mixer),
5933 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5934 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5935 msm_routing_put_audio_mixer),
5936 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5937 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5938 msm_routing_put_audio_mixer),
5939 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5940 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5941 msm_routing_put_audio_mixer),
5942 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5943 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5944 msm_routing_put_audio_mixer),
5945 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5946 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5947 msm_routing_put_audio_mixer),
5948 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_SEC_TDM_TX_0,
5949 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
5950 msm_routing_put_audio_mixer),
5951};
5952
5953static const struct snd_kcontrol_new tert_tdm_rx_0_mixer_controls[] = {
5954 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5955 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
5956 msm_routing_put_audio_mixer),
5957 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5958 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
5959 msm_routing_put_audio_mixer),
5960 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5961 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
5962 msm_routing_put_audio_mixer),
5963 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5964 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
5965 msm_routing_put_audio_mixer),
5966 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5967 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
5968 msm_routing_put_audio_mixer),
5969 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5970 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
5971 msm_routing_put_audio_mixer),
5972 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5973 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
5974 msm_routing_put_audio_mixer),
5975 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5976 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
5977 msm_routing_put_audio_mixer),
5978 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5979 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
5980 msm_routing_put_audio_mixer),
5981 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5982 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
5983 msm_routing_put_audio_mixer),
5984 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5985 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
5986 msm_routing_put_audio_mixer),
5987 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5988 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
5989 msm_routing_put_audio_mixer),
5990 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5991 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
5992 msm_routing_put_audio_mixer),
5993 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5994 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
5995 msm_routing_put_audio_mixer),
5996 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_RX_0,
5997 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
5998 msm_routing_put_audio_mixer),
5999 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_RX_0,
6000 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6001 msm_routing_put_audio_mixer),
6002};
6003
6004static const struct snd_kcontrol_new tert_tdm_tx_0_mixer_controls[] = {
6005 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6006 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6007 msm_routing_put_audio_mixer),
6008 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6009 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6010 msm_routing_put_audio_mixer),
6011 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6012 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6013 msm_routing_put_audio_mixer),
6014 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6015 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6016 msm_routing_put_audio_mixer),
6017 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6018 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6019 msm_routing_put_audio_mixer),
6020 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6021 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6022 msm_routing_put_audio_mixer),
6023 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6024 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6025 msm_routing_put_audio_mixer),
6026 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6027 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6028 msm_routing_put_audio_mixer),
6029 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6030 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6031 msm_routing_put_audio_mixer),
6032 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6033 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6034 msm_routing_put_audio_mixer),
6035 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6036 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6037 msm_routing_put_audio_mixer),
6038 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6039 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6040 msm_routing_put_audio_mixer),
6041 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6042 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6043 msm_routing_put_audio_mixer),
6044 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6045 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6046 msm_routing_put_audio_mixer),
6047 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6048 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6049 msm_routing_put_audio_mixer),
6050 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6051 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6052 msm_routing_put_audio_mixer),
6053};
6054
6055static const struct snd_kcontrol_new tert_tdm_rx_1_mixer_controls[] = {
6056 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6057 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6058 msm_routing_put_audio_mixer),
6059 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6060 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6061 msm_routing_put_audio_mixer),
6062 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6063 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6064 msm_routing_put_audio_mixer),
6065 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6066 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6067 msm_routing_put_audio_mixer),
6068 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6069 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6070 msm_routing_put_audio_mixer),
6071 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6072 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6073 msm_routing_put_audio_mixer),
6074 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6075 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6076 msm_routing_put_audio_mixer),
6077 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6078 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6079 msm_routing_put_audio_mixer),
6080 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6081 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6082 msm_routing_put_audio_mixer),
6083 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6084 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6085 msm_routing_put_audio_mixer),
6086 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6087 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6088 msm_routing_put_audio_mixer),
6089 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6090 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6091 msm_routing_put_audio_mixer),
6092 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6093 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6094 msm_routing_put_audio_mixer),
6095 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6096 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6097 msm_routing_put_audio_mixer),
6098 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6099 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6100 msm_routing_put_audio_mixer),
6101 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_RX_1,
6102 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6103 msm_routing_put_audio_mixer),
6104};
6105
6106static const struct snd_kcontrol_new tert_tdm_rx_2_mixer_controls[] = {
6107 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6108 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6109 msm_routing_put_audio_mixer),
6110 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6111 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6112 msm_routing_put_audio_mixer),
6113 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6114 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6115 msm_routing_put_audio_mixer),
6116 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6117 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6118 msm_routing_put_audio_mixer),
6119 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6120 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6121 msm_routing_put_audio_mixer),
6122 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6123 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6124 msm_routing_put_audio_mixer),
6125 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6126 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6127 msm_routing_put_audio_mixer),
6128 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6129 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6130 msm_routing_put_audio_mixer),
6131 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6132 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6133 msm_routing_put_audio_mixer),
6134 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6135 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6136 msm_routing_put_audio_mixer),
6137 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6138 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6139 msm_routing_put_audio_mixer),
6140 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6141 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6142 msm_routing_put_audio_mixer),
6143 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6144 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6145 msm_routing_put_audio_mixer),
6146 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6147 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6148 msm_routing_put_audio_mixer),
6149 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6150 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6151 msm_routing_put_audio_mixer),
6152 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_RX_2,
6153 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6154 msm_routing_put_audio_mixer),
6155};
6156
6157static const struct snd_kcontrol_new tert_tdm_rx_3_mixer_controls[] = {
6158 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6159 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6160 msm_routing_put_audio_mixer),
6161 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6162 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6163 msm_routing_put_audio_mixer),
6164 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6165 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6166 msm_routing_put_audio_mixer),
6167 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6168 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6169 msm_routing_put_audio_mixer),
6170 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6171 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6172 msm_routing_put_audio_mixer),
6173 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6174 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6175 msm_routing_put_audio_mixer),
6176 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6177 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6178 msm_routing_put_audio_mixer),
6179 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6180 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6181 msm_routing_put_audio_mixer),
6182 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6183 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6184 msm_routing_put_audio_mixer),
6185 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6186 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6187 msm_routing_put_audio_mixer),
6188 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6189 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6190 msm_routing_put_audio_mixer),
6191 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6192 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6193 msm_routing_put_audio_mixer),
6194 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6195 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6196 msm_routing_put_audio_mixer),
6197 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6198 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6199 msm_routing_put_audio_mixer),
6200 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6201 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6202 msm_routing_put_audio_mixer),
6203 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_RX_3,
6204 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6205 msm_routing_put_audio_mixer),
6206};
6207
6208static const struct snd_kcontrol_new tert_tdm_rx_4_mixer_controls[] = {
6209 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6210 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6211 msm_routing_put_audio_mixer),
6212 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6213 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6214 msm_routing_put_audio_mixer),
6215 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6216 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6217 msm_routing_put_audio_mixer),
6218 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6219 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6220 msm_routing_put_audio_mixer),
6221 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6222 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6223 msm_routing_put_audio_mixer),
6224 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6225 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6226 msm_routing_put_audio_mixer),
6227 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6228 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6229 msm_routing_put_audio_mixer),
6230 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6231 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6232 msm_routing_put_audio_mixer),
6233 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6234 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6235 msm_routing_put_audio_mixer),
6236 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6237 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6238 msm_routing_put_audio_mixer),
6239 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6240 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6241 msm_routing_put_audio_mixer),
6242 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6243 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6244 msm_routing_put_audio_mixer),
6245 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6246 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6247 msm_routing_put_audio_mixer),
6248 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6249 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6250 msm_routing_put_audio_mixer),
6251 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6252 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6253 msm_routing_put_audio_mixer),
6254 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_TERT_TDM_RX_4,
6255 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6256 msm_routing_put_audio_mixer),
6257};
6258
6259static const struct snd_kcontrol_new quat_tdm_rx_0_mixer_controls[] = {
6260 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6261 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6262 msm_routing_put_audio_mixer),
6263 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6264 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6265 msm_routing_put_audio_mixer),
6266 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6267 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6268 msm_routing_put_audio_mixer),
6269 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6270 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6271 msm_routing_put_audio_mixer),
6272 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6273 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6274 msm_routing_put_audio_mixer),
6275 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6276 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6277 msm_routing_put_audio_mixer),
6278 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6279 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6280 msm_routing_put_audio_mixer),
6281 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6282 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6283 msm_routing_put_audio_mixer),
6284 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6285 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6286 msm_routing_put_audio_mixer),
6287 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6288 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6289 msm_routing_put_audio_mixer),
6290 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6291 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6292 msm_routing_put_audio_mixer),
6293 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6294 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6295 msm_routing_put_audio_mixer),
6296 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6297 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6298 msm_routing_put_audio_mixer),
6299 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6300 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6301 msm_routing_put_audio_mixer),
6302 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6303 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6304 msm_routing_put_audio_mixer),
6305 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6306 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6307 msm_routing_put_audio_mixer),
6308 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
6309 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6310 msm_routing_put_audio_mixer),
6311};
6312
6313static const struct snd_kcontrol_new quat_tdm_tx_0_mixer_controls[] = {
6314 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6315 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6316 msm_routing_put_audio_mixer),
6317 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6318 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6319 msm_routing_put_audio_mixer),
6320 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6321 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6322 msm_routing_put_audio_mixer),
6323 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6324 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6325 msm_routing_put_audio_mixer),
6326 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6327 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6328 msm_routing_put_audio_mixer),
6329 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6330 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6331 msm_routing_put_audio_mixer),
6332 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6333 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6334 msm_routing_put_audio_mixer),
6335 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6336 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6337 msm_routing_put_audio_mixer),
6338 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6339 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6340 msm_routing_put_audio_mixer),
6341 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6342 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6343 msm_routing_put_audio_mixer),
6344 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6345 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6346 msm_routing_put_audio_mixer),
6347 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6348 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6349 msm_routing_put_audio_mixer),
6350 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6351 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6352 msm_routing_put_audio_mixer),
6353 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6354 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6355 msm_routing_put_audio_mixer),
6356 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6357 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6358 msm_routing_put_audio_mixer),
6359 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6360 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6361 msm_routing_put_audio_mixer),
6362};
6363
6364static const struct snd_kcontrol_new quat_tdm_rx_1_mixer_controls[] = {
6365 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6366 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6367 msm_routing_put_audio_mixer),
6368 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6369 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6370 msm_routing_put_audio_mixer),
6371 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6372 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6373 msm_routing_put_audio_mixer),
6374 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6375 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6376 msm_routing_put_audio_mixer),
6377 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6378 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6379 msm_routing_put_audio_mixer),
6380 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6381 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6382 msm_routing_put_audio_mixer),
6383 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6384 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6385 msm_routing_put_audio_mixer),
6386 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6387 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6388 msm_routing_put_audio_mixer),
6389 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6390 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6391 msm_routing_put_audio_mixer),
6392 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6393 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6394 msm_routing_put_audio_mixer),
6395 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6396 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6397 msm_routing_put_audio_mixer),
6398 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6399 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6400 msm_routing_put_audio_mixer),
6401 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6402 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6403 msm_routing_put_audio_mixer),
6404 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6405 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6406 msm_routing_put_audio_mixer),
6407 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6408 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6409 msm_routing_put_audio_mixer),
6410 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6411 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6412 msm_routing_put_audio_mixer),
6413 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
6414 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6415 msm_routing_put_audio_mixer),
6416};
6417
6418static const struct snd_kcontrol_new quat_tdm_rx_2_mixer_controls[] = {
6419 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6420 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6421 msm_routing_put_audio_mixer),
6422 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6423 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6424 msm_routing_put_audio_mixer),
6425 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6426 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6427 msm_routing_put_audio_mixer),
6428 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6429 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6430 msm_routing_put_audio_mixer),
6431 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6432 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6433 msm_routing_put_audio_mixer),
6434 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6435 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6436 msm_routing_put_audio_mixer),
6437 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6438 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6439 msm_routing_put_audio_mixer),
6440 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6441 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6442 msm_routing_put_audio_mixer),
6443 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6444 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6445 msm_routing_put_audio_mixer),
6446 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6447 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6448 msm_routing_put_audio_mixer),
6449 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6450 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6451 msm_routing_put_audio_mixer),
6452 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6453 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6454 msm_routing_put_audio_mixer),
6455 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6456 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6457 msm_routing_put_audio_mixer),
6458 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6459 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6460 msm_routing_put_audio_mixer),
6461 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6462 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6463 msm_routing_put_audio_mixer),
6464 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6465 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6466 msm_routing_put_audio_mixer),
6467 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
6468 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6469 msm_routing_put_audio_mixer),
6470};
6471
6472static const struct snd_kcontrol_new quat_tdm_rx_3_mixer_controls[] = {
6473 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6474 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6475 msm_routing_put_audio_mixer),
6476 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6477 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6478 msm_routing_put_audio_mixer),
6479 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6480 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6481 msm_routing_put_audio_mixer),
6482 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6483 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6484 msm_routing_put_audio_mixer),
6485 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6486 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6487 msm_routing_put_audio_mixer),
6488 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6489 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6490 msm_routing_put_audio_mixer),
6491 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6492 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6493 msm_routing_put_audio_mixer),
6494 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6495 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6496 msm_routing_put_audio_mixer),
6497 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6498 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6499 msm_routing_put_audio_mixer),
6500 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6501 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6502 msm_routing_put_audio_mixer),
6503 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6504 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6505 msm_routing_put_audio_mixer),
6506 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6507 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6508 msm_routing_put_audio_mixer),
6509 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6510 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6511 msm_routing_put_audio_mixer),
6512 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6513 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6514 msm_routing_put_audio_mixer),
6515 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6516 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6517 msm_routing_put_audio_mixer),
6518 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6519 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6520 msm_routing_put_audio_mixer),
6521 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
6522 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6523 msm_routing_put_audio_mixer),
6524};
6525
Rohit Kumara5077932017-09-10 22:05:05 +05306526static const struct snd_kcontrol_new quin_tdm_rx_0_mixer_controls[] = {
6527 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6528 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6529 msm_routing_put_audio_mixer),
6530 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6531 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6532 msm_routing_put_audio_mixer),
6533 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6534 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6535 msm_routing_put_audio_mixer),
6536 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6537 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6538 msm_routing_put_audio_mixer),
6539 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6540 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6541 msm_routing_put_audio_mixer),
6542 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6543 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6544 msm_routing_put_audio_mixer),
6545 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6546 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6547 msm_routing_put_audio_mixer),
6548 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6549 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6550 msm_routing_put_audio_mixer),
6551 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6552 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6553 msm_routing_put_audio_mixer),
6554 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6555 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6556 msm_routing_put_audio_mixer),
6557 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6558 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6559 msm_routing_put_audio_mixer),
6560 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6561 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6562 msm_routing_put_audio_mixer),
6563 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6564 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6565 msm_routing_put_audio_mixer),
6566 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6567 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6568 msm_routing_put_audio_mixer),
6569 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6570 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6571 msm_routing_put_audio_mixer),
6572 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6573 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6574 msm_routing_put_audio_mixer),
6575 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
6576 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6577 msm_routing_put_audio_mixer),
6578};
6579
6580static const struct snd_kcontrol_new quin_tdm_tx_0_mixer_controls[] = {
6581 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6582 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6583 msm_routing_put_audio_mixer),
6584 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6585 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6586 msm_routing_put_audio_mixer),
6587 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6588 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6589 msm_routing_put_audio_mixer),
6590 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6591 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6592 msm_routing_put_audio_mixer),
6593 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6594 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6595 msm_routing_put_audio_mixer),
6596 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6597 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6598 msm_routing_put_audio_mixer),
6599 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6600 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6601 msm_routing_put_audio_mixer),
6602 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6603 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6604 msm_routing_put_audio_mixer),
6605 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6606 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6607 msm_routing_put_audio_mixer),
6608 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6609 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6610 msm_routing_put_audio_mixer),
6611 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6612 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6613 msm_routing_put_audio_mixer),
6614 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6615 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6616 msm_routing_put_audio_mixer),
6617 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6618 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6619 msm_routing_put_audio_mixer),
6620 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6621 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6622 msm_routing_put_audio_mixer),
6623 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6624 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6625 msm_routing_put_audio_mixer),
6626 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6627 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6628 msm_routing_put_audio_mixer),
6629};
6630
6631static const struct snd_kcontrol_new quin_tdm_rx_1_mixer_controls[] = {
6632 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6633 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6634 msm_routing_put_audio_mixer),
6635 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6636 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6637 msm_routing_put_audio_mixer),
6638 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6639 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6640 msm_routing_put_audio_mixer),
6641 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6642 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6643 msm_routing_put_audio_mixer),
6644 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6645 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6646 msm_routing_put_audio_mixer),
6647 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6648 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6649 msm_routing_put_audio_mixer),
6650 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6651 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6652 msm_routing_put_audio_mixer),
6653 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6654 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6655 msm_routing_put_audio_mixer),
6656 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6657 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6658 msm_routing_put_audio_mixer),
6659 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6660 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6661 msm_routing_put_audio_mixer),
6662 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6663 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6664 msm_routing_put_audio_mixer),
6665 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6666 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6667 msm_routing_put_audio_mixer),
6668 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6669 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6670 msm_routing_put_audio_mixer),
6671 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6672 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6673 msm_routing_put_audio_mixer),
6674 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6675 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6676 msm_routing_put_audio_mixer),
6677 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6678 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6679 msm_routing_put_audio_mixer),
6680 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
6681 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6682 msm_routing_put_audio_mixer),
6683};
6684
6685static const struct snd_kcontrol_new quin_tdm_rx_2_mixer_controls[] = {
6686 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6687 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6688 msm_routing_put_audio_mixer),
6689 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6690 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6691 msm_routing_put_audio_mixer),
6692 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6693 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6694 msm_routing_put_audio_mixer),
6695 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6696 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6697 msm_routing_put_audio_mixer),
6698 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6699 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6700 msm_routing_put_audio_mixer),
6701 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6702 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6703 msm_routing_put_audio_mixer),
6704 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6705 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6706 msm_routing_put_audio_mixer),
6707 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6708 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6709 msm_routing_put_audio_mixer),
6710 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6711 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6712 msm_routing_put_audio_mixer),
6713 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6714 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6715 msm_routing_put_audio_mixer),
6716 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6717 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6718 msm_routing_put_audio_mixer),
6719 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6720 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6721 msm_routing_put_audio_mixer),
6722 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6723 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6724 msm_routing_put_audio_mixer),
6725 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6726 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6727 msm_routing_put_audio_mixer),
6728 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6729 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6730 msm_routing_put_audio_mixer),
6731 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6732 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6733 msm_routing_put_audio_mixer),
6734 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
6735 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6736 msm_routing_put_audio_mixer),
6737};
6738
6739static const struct snd_kcontrol_new quin_tdm_rx_3_mixer_controls[] = {
6740 SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6741 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6742 msm_routing_put_audio_mixer),
6743 SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6744 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6745 msm_routing_put_audio_mixer),
6746 SOC_SINGLE_EXT("MultiMedia3", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6747 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
6748 msm_routing_put_audio_mixer),
6749 SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6750 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
6751 msm_routing_put_audio_mixer),
6752 SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6753 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
6754 msm_routing_put_audio_mixer),
6755 SOC_SINGLE_EXT("MultiMedia6", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6756 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
6757 msm_routing_put_audio_mixer),
6758 SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6759 MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
6760 msm_routing_put_audio_mixer),
6761 SOC_SINGLE_EXT("MultiMedia8", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6762 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
6763 msm_routing_put_audio_mixer),
6764 SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6765 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
6766 msm_routing_put_audio_mixer),
6767 SOC_SINGLE_EXT("MultiMedia10", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6768 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
6769 msm_routing_put_audio_mixer),
6770 SOC_SINGLE_EXT("MultiMedia11", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6771 MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
6772 msm_routing_put_audio_mixer),
6773 SOC_SINGLE_EXT("MultiMedia12", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6774 MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
6775 msm_routing_put_audio_mixer),
6776 SOC_SINGLE_EXT("MultiMedia13", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6777 MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
6778 msm_routing_put_audio_mixer),
6779 SOC_SINGLE_EXT("MultiMedia14", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6780 MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
6781 msm_routing_put_audio_mixer),
6782 SOC_SINGLE_EXT("MultiMedia15", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6783 MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
6784 msm_routing_put_audio_mixer),
6785 SOC_SINGLE_EXT("MultiMedia16", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6786 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
6787 msm_routing_put_audio_mixer),
6788 SOC_SINGLE_EXT("MultiMedia20", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
6789 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
6790 msm_routing_put_audio_mixer),
6791};
6792
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306793static const struct snd_kcontrol_new mmul1_mixer_controls[] = {
6794 SOC_SINGLE_EXT("PRI_TX", MSM_BACKEND_DAI_PRI_I2S_TX,
6795 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6796 msm_routing_put_audio_mixer),
6797 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
6798 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6799 msm_routing_put_audio_mixer),
6800 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
6801 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6802 msm_routing_put_audio_mixer),
6803 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
6804 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6805 msm_routing_put_audio_mixer),
6806 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
6807 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6808 msm_routing_put_audio_mixer),
6809 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
6810 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6811 msm_routing_put_audio_mixer),
6812 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
6813 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6814 msm_routing_put_audio_mixer),
6815 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
6816 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6817 msm_routing_put_audio_mixer),
6818 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
6819 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6820 msm_routing_put_audio_mixer),
6821 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
6822 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6823 msm_routing_put_audio_mixer),
6824 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
6825 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6826 msm_routing_put_audio_mixer),
6827 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
6828 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6829 msm_routing_put_audio_mixer),
6830 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
6831 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6832 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05306833 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
6834 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6835 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306836 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
6837 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6838 msm_routing_put_audio_mixer),
6839 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
6840 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6841 msm_routing_put_audio_mixer),
6842 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
6843 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6844 msm_routing_put_audio_mixer),
6845 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
6846 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6847 msm_routing_put_audio_mixer),
6848 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
6849 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6850 msm_routing_put_audio_mixer),
6851 SOC_SINGLE_EXT("SLIM_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
6852 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6853 msm_routing_put_audio_mixer),
6854 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
6855 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6856 msm_routing_put_audio_mixer),
6857 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_TX,
6858 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6859 msm_routing_put_audio_mixer),
6860 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
6861 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6862 msm_routing_put_audio_mixer),
6863 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
6864 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6865 msm_routing_put_audio_mixer),
6866 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
6867 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6868 msm_routing_put_audio_mixer),
6869 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
6870 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6871 msm_routing_put_audio_mixer),
6872 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6873 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6874 msm_routing_put_audio_mixer),
6875 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
6876 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6877 msm_routing_put_audio_mixer),
6878 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
6879 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6880 msm_routing_put_audio_mixer),
6881 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
6882 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6883 msm_routing_put_audio_mixer),
6884 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6885 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6886 msm_routing_put_audio_mixer),
6887 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
6888 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6889 msm_routing_put_audio_mixer),
6890 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
6891 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6892 msm_routing_put_audio_mixer),
6893 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
6894 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6895 msm_routing_put_audio_mixer),
6896 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
6897 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6898 msm_routing_put_audio_mixer),
6899 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
6900 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6901 msm_routing_put_audio_mixer),
6902 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
6903 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6904 msm_routing_put_audio_mixer),
6905 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
6906 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6907 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05306908 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
6909 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6910 msm_routing_put_audio_mixer),
6911 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
6912 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6913 msm_routing_put_audio_mixer),
6914 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
6915 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6916 msm_routing_put_audio_mixer),
6917 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
6918 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6919 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05306920 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
6921 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6922 msm_routing_put_audio_mixer),
6923 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
6924 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6925 msm_routing_put_audio_mixer),
6926 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
6927 MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
6928 msm_routing_put_audio_mixer),
6929};
6930
6931static const struct snd_kcontrol_new mmul2_mixer_controls[] = {
6932 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
6933 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6934 msm_routing_put_audio_mixer),
6935 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
6936 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6937 msm_routing_put_audio_mixer),
6938 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
6939 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6940 msm_routing_put_audio_mixer),
6941 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
6942 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6943 msm_routing_put_audio_mixer),
6944 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
6945 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6946 msm_routing_put_audio_mixer),
6947 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
6948 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6949 msm_routing_put_audio_mixer),
6950 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
6951 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6952 msm_routing_put_audio_mixer),
6953 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
6954 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6955 msm_routing_put_audio_mixer),
6956 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
6957 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6958 msm_routing_put_audio_mixer),
6959 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
6960 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6961 msm_routing_put_audio_mixer),
6962 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
6963 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6964 msm_routing_put_audio_mixer),
6965 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_TX,
6966 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6967 msm_routing_put_audio_mixer),
6968 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
6969 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6970 msm_routing_put_audio_mixer),
6971 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
6972 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6973 msm_routing_put_audio_mixer),
6974 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
6975 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6976 msm_routing_put_audio_mixer),
6977 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
6978 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6979 msm_routing_put_audio_mixer),
6980 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
6981 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6982 msm_routing_put_audio_mixer),
6983 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
6984 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6985 msm_routing_put_audio_mixer),
6986 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
6987 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6988 msm_routing_put_audio_mixer),
6989 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
6990 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6991 msm_routing_put_audio_mixer),
6992 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
6993 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6994 msm_routing_put_audio_mixer),
6995 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
6996 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
6997 msm_routing_put_audio_mixer),
6998 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
6999 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7000 msm_routing_put_audio_mixer),
7001 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7002 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7003 msm_routing_put_audio_mixer),
7004 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7005 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7006 msm_routing_put_audio_mixer),
7007 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7008 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7009 msm_routing_put_audio_mixer),
7010 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7011 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7012 msm_routing_put_audio_mixer),
7013 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7014 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7015 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307016 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7017 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7018 msm_routing_put_audio_mixer),
7019 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7020 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7021 msm_routing_put_audio_mixer),
7022 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7023 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7024 msm_routing_put_audio_mixer),
7025 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7026 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7027 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307028 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
7029 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7030 msm_routing_put_audio_mixer),
7031 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7032 MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
7033 msm_routing_put_audio_mixer),
7034};
7035
7036static const struct snd_kcontrol_new mmul3_mixer_controls[] = {
7037 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7038 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7039 msm_routing_put_audio_mixer),
7040 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7041 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7042 msm_routing_put_audio_mixer),
7043 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
7044 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7045 msm_routing_put_audio_mixer),
7046 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7047 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7048 msm_routing_put_audio_mixer),
7049 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7050 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7051 msm_routing_put_audio_mixer),
7052 SOC_SINGLE_EXT("AUX_PCM_TX", MSM_BACKEND_DAI_AUXPCM_TX,
7053 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7054 msm_routing_put_audio_mixer),
7055 SOC_SINGLE_EXT("SEC_AUX_PCM_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
7056 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7057 msm_routing_put_audio_mixer),
7058 SOC_SINGLE_EXT("TERT_AUX_PCM_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
7059 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7060 msm_routing_put_audio_mixer),
7061 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
7062 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7063 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307064 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
7065 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7066 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307067 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7068 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7069 msm_routing_put_audio_mixer),
7070 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7071 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7072 msm_routing_put_audio_mixer),
7073 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7074 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7075 msm_routing_put_audio_mixer),
7076 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7077 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7078 msm_routing_put_audio_mixer),
7079 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7080 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7081 msm_routing_put_audio_mixer),
7082 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7083 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7084 msm_routing_put_audio_mixer),
7085 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7086 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7087 msm_routing_put_audio_mixer),
7088 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7089 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7090 msm_routing_put_audio_mixer),
7091 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7092 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7093 msm_routing_put_audio_mixer),
7094 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7095 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7096 msm_routing_put_audio_mixer),
7097 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7098 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7099 msm_routing_put_audio_mixer),
7100 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7101 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7102 msm_routing_put_audio_mixer),
7103 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7104 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7105 msm_routing_put_audio_mixer),
7106 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7107 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7108 msm_routing_put_audio_mixer),
7109 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7110 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7111 msm_routing_put_audio_mixer),
7112 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7113 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7114 msm_routing_put_audio_mixer),
7115 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7116 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7117 msm_routing_put_audio_mixer),
7118 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7119 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7120 msm_routing_put_audio_mixer),
7121 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7122 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7123 msm_routing_put_audio_mixer),
7124 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7125 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7126 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307127 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7128 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7129 msm_routing_put_audio_mixer),
7130 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7131 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7132 msm_routing_put_audio_mixer),
7133 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7134 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7135 msm_routing_put_audio_mixer),
7136 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7137 MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
7138 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307139};
7140
7141static const struct snd_kcontrol_new mmul4_mixer_controls[] = {
7142 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7143 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7144 msm_routing_put_audio_mixer),
7145 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7146 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7147 msm_routing_put_audio_mixer),
7148 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7149 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7150 msm_routing_put_audio_mixer),
7151 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7152 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7153 msm_routing_put_audio_mixer),
7154 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7155 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7156 msm_routing_put_audio_mixer),
7157 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7158 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7159 msm_routing_put_audio_mixer),
7160 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7161 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7162 msm_routing_put_audio_mixer),
7163 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7164 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7165 msm_routing_put_audio_mixer),
7166 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7167 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7168 msm_routing_put_audio_mixer),
7169 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7170 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7171 msm_routing_put_audio_mixer),
7172 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7173 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7174 msm_routing_put_audio_mixer),
7175 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7176 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7177 msm_routing_put_audio_mixer),
7178 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7179 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7180 msm_routing_put_audio_mixer),
7181 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7182 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7183 msm_routing_put_audio_mixer),
7184 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7185 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7186 msm_routing_put_audio_mixer),
7187 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7188 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7189 msm_routing_put_audio_mixer),
7190 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7191 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7192 msm_routing_put_audio_mixer),
7193 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7194 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7195 msm_routing_put_audio_mixer),
7196 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7197 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7198 msm_routing_put_audio_mixer),
7199 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7200 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7201 msm_routing_put_audio_mixer),
7202 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7203 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7204 msm_routing_put_audio_mixer),
7205 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7206 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7207 msm_routing_put_audio_mixer),
7208 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7209 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7210 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307211 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7212 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7213 msm_routing_put_audio_mixer),
7214 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7215 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7216 msm_routing_put_audio_mixer),
7217 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7218 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7219 msm_routing_put_audio_mixer),
7220 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7221 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7222 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307223 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7224 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7225 msm_routing_put_audio_mixer),
7226 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7227 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7228 msm_routing_put_audio_mixer),
7229 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7230 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7231 msm_routing_put_audio_mixer),
7232 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7233 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7234 msm_routing_put_audio_mixer),
7235 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7236 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7237 msm_routing_put_audio_mixer),
7238 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7239 MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
7240 msm_routing_put_audio_mixer),
7241};
7242
7243static const struct snd_kcontrol_new mmul5_mixer_controls[] = {
7244 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7245 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7246 msm_routing_put_audio_mixer),
7247 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7248 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7249 msm_routing_put_audio_mixer),
7250 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
7251 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7252 msm_routing_put_audio_mixer),
7253 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7254 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7255 msm_routing_put_audio_mixer),
7256 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7257 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7258 msm_routing_put_audio_mixer),
7259 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
7260 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7261 msm_routing_put_audio_mixer),
7262 SOC_SINGLE_EXT("SEC_AUX_PCM_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
7263 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7264 msm_routing_put_audio_mixer),
7265 SOC_SINGLE_EXT("TERT_AUX_PCM_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
7266 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7267 msm_routing_put_audio_mixer),
7268 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
7269 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7270 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307271 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
7272 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7273 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307274 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7275 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7276 msm_routing_put_audio_mixer),
7277 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7278 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7279 msm_routing_put_audio_mixer),
7280 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7281 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7282 msm_routing_put_audio_mixer),
7283 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7284 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7285 msm_routing_put_audio_mixer),
7286 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7287 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7288 msm_routing_put_audio_mixer),
7289 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7290 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7291 msm_routing_put_audio_mixer),
7292 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7293 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7294 msm_routing_put_audio_mixer),
7295 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7296 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7297 msm_routing_put_audio_mixer),
7298 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7299 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7300 msm_routing_put_audio_mixer),
7301 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7302 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7303 msm_routing_put_audio_mixer),
7304 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7305 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7306 msm_routing_put_audio_mixer),
7307 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7308 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7309 msm_routing_put_audio_mixer),
7310 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7311 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7312 msm_routing_put_audio_mixer),
7313 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7314 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7315 msm_routing_put_audio_mixer),
7316 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7317 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7318 msm_routing_put_audio_mixer),
7319 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7320 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7321 msm_routing_put_audio_mixer),
7322 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7323 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7324 msm_routing_put_audio_mixer),
7325 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7326 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7327 msm_routing_put_audio_mixer),
7328 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7329 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7330 msm_routing_put_audio_mixer),
7331 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7332 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7333 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307334 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7335 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7336 msm_routing_put_audio_mixer),
7337 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7338 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7339 msm_routing_put_audio_mixer),
7340 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7341 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7342 msm_routing_put_audio_mixer),
7343 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7344 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7345 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307346 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7347 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7348 msm_routing_put_audio_mixer),
7349 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7350 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7351 msm_routing_put_audio_mixer),
7352 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
7353 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7354 msm_routing_put_audio_mixer),
7355 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
7356 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7357 msm_routing_put_audio_mixer),
7358 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7359 MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
7360 msm_routing_put_audio_mixer),
7361};
7362
7363static const struct snd_kcontrol_new mmul6_mixer_controls[] = {
7364 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7365 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7366 msm_routing_put_audio_mixer),
7367 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7368 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7369 msm_routing_put_audio_mixer),
7370 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7371 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7372 msm_routing_put_audio_mixer),
7373 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7374 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7375 msm_routing_put_audio_mixer),
7376 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7377 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7378 msm_routing_put_audio_mixer),
7379 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7380 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7381 msm_routing_put_audio_mixer),
7382 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7383 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7384 msm_routing_put_audio_mixer),
7385 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7386 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7387 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307388 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_TX,
7389 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7390 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307391 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
7392 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7393 msm_routing_put_audio_mixer),
7394 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
7395 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7396 msm_routing_put_audio_mixer),
7397 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
7398 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7399 msm_routing_put_audio_mixer),
7400 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
7401 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7402 msm_routing_put_audio_mixer),
7403 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7404 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7405 msm_routing_put_audio_mixer),
7406 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7407 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7408 msm_routing_put_audio_mixer),
7409 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7410 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7411 msm_routing_put_audio_mixer),
7412 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7413 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7414 msm_routing_put_audio_mixer),
7415 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7416 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7417 msm_routing_put_audio_mixer),
7418 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7419 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7420 msm_routing_put_audio_mixer),
7421 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7422 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7423 msm_routing_put_audio_mixer),
7424 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7425 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7426 msm_routing_put_audio_mixer),
7427 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7428 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7429 msm_routing_put_audio_mixer),
7430 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7431 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7432 msm_routing_put_audio_mixer),
7433 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7434 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7435 msm_routing_put_audio_mixer),
7436 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7437 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7438 msm_routing_put_audio_mixer),
7439 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7440 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7441 msm_routing_put_audio_mixer),
7442 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7443 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7444 msm_routing_put_audio_mixer),
7445 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7446 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7447 msm_routing_put_audio_mixer),
7448 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7449 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7450 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307451 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7452 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7453 msm_routing_put_audio_mixer),
7454 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7455 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7456 msm_routing_put_audio_mixer),
7457 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7458 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7459 msm_routing_put_audio_mixer),
7460 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7461 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7462 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307463 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7464 MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
7465 msm_routing_put_audio_mixer),
7466};
7467
7468static const struct snd_kcontrol_new mmul8_mixer_controls[] = {
7469 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7470 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7471 msm_routing_put_audio_mixer),
7472 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7473 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7474 msm_routing_put_audio_mixer),
7475 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7476 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7477 msm_routing_put_audio_mixer),
7478 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7479 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7480 msm_routing_put_audio_mixer),
7481 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7482 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7483 msm_routing_put_audio_mixer),
7484 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7485 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7486 msm_routing_put_audio_mixer),
7487 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7488 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7489 msm_routing_put_audio_mixer),
7490 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7491 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7492 msm_routing_put_audio_mixer),
7493 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7494 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7495 msm_routing_put_audio_mixer),
7496 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7497 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7498 msm_routing_put_audio_mixer),
7499 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7500 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7501 msm_routing_put_audio_mixer),
7502 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7503 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7504 msm_routing_put_audio_mixer),
7505 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
7506 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7507 msm_routing_put_audio_mixer),
7508 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7509 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7510 msm_routing_put_audio_mixer),
7511 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7512 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7513 msm_routing_put_audio_mixer),
7514 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7515 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7516 msm_routing_put_audio_mixer),
7517 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7518 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7519 msm_routing_put_audio_mixer),
7520 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7521 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7522 msm_routing_put_audio_mixer),
7523 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7524 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7525 msm_routing_put_audio_mixer),
7526 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7527 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7528 msm_routing_put_audio_mixer),
7529 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7530 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7531 msm_routing_put_audio_mixer),
7532 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7533 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7534 msm_routing_put_audio_mixer),
7535 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7536 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7537 msm_routing_put_audio_mixer),
7538 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7539 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7540 msm_routing_put_audio_mixer),
7541 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7542 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7543 msm_routing_put_audio_mixer),
7544 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7545 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7546 msm_routing_put_audio_mixer),
7547 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7548 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7549 msm_routing_put_audio_mixer),
7550 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7551 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7552 msm_routing_put_audio_mixer),
7553 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7554 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7555 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307556 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7557 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7558 msm_routing_put_audio_mixer),
7559 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7560 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7561 msm_routing_put_audio_mixer),
7562 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7563 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7564 msm_routing_put_audio_mixer),
7565 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7566 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7567 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307568 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
7569 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7570 msm_routing_put_audio_mixer),
7571 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7572 MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
7573 msm_routing_put_audio_mixer),
7574};
7575
Asish Bhattacharya34504582017-08-08 12:55:01 +05307576static const struct snd_kcontrol_new mmul16_mixer_controls[] = {
7577 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7578 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7579 msm_routing_put_audio_mixer),
7580 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7581 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7582 msm_routing_put_audio_mixer),
7583 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7584 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7585 msm_routing_put_audio_mixer),
7586 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7587 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7588 msm_routing_put_audio_mixer),
7589 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7590 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7591 msm_routing_put_audio_mixer),
7592 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7593 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7594 msm_routing_put_audio_mixer),
7595 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7596 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7597 msm_routing_put_audio_mixer),
7598 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7599 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7600 msm_routing_put_audio_mixer),
7601 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7602 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7603 msm_routing_put_audio_mixer),
7604 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7605 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7606 msm_routing_put_audio_mixer),
7607 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7608 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7609 msm_routing_put_audio_mixer),
7610 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7611 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7612 msm_routing_put_audio_mixer),
7613 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
7614 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7615 msm_routing_put_audio_mixer),
7616 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7617 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7618 msm_routing_put_audio_mixer),
7619 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7620 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7621 msm_routing_put_audio_mixer),
7622 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7623 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7624 msm_routing_put_audio_mixer),
7625 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7626 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7627 msm_routing_put_audio_mixer),
7628 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7629 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7630 msm_routing_put_audio_mixer),
7631 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7632 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7633 msm_routing_put_audio_mixer),
7634 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7635 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7636 msm_routing_put_audio_mixer),
7637 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7638 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7639 msm_routing_put_audio_mixer),
7640 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7641 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7642 msm_routing_put_audio_mixer),
7643 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7644 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7645 msm_routing_put_audio_mixer),
7646 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7647 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7648 msm_routing_put_audio_mixer),
7649 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7650 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7651 msm_routing_put_audio_mixer),
7652 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7653 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7654 msm_routing_put_audio_mixer),
7655 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7656 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7657 msm_routing_put_audio_mixer),
7658 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7659 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7660 msm_routing_put_audio_mixer),
7661 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7662 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7663 msm_routing_put_audio_mixer),
7664 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
7665 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7666 msm_routing_put_audio_mixer),
7667 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7668 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7669 msm_routing_put_audio_mixer),
7670 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
7671 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7672 msm_routing_put_audio_mixer),
7673 SOC_SINGLE_EXT("AUX_PCM_TX", MSM_BACKEND_DAI_AUXPCM_TX,
7674 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7675 msm_routing_put_audio_mixer),
7676 SOC_SINGLE_EXT("SEC_AUX_PCM_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
7677 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7678 msm_routing_put_audio_mixer),
7679 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
7680 MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
7681 msm_routing_put_audio_mixer),
7682};
7683
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307684static const struct snd_kcontrol_new mmul9_mixer_controls[] = {
7685 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7686 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7687 msm_routing_put_audio_mixer),
7688 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7689 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7690 msm_routing_put_audio_mixer),
7691 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7692 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7693 msm_routing_put_audio_mixer),
7694 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7695 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7696 msm_routing_put_audio_mixer),
7697 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7698 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7699 msm_routing_put_audio_mixer),
7700 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7701 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7702 msm_routing_put_audio_mixer),
7703 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7704 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7705 msm_routing_put_audio_mixer),
7706 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
7707 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7708 msm_routing_put_audio_mixer),
7709 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7710 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7711 msm_routing_put_audio_mixer),
7712 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7713 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7714 msm_routing_put_audio_mixer),
7715 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7716 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7717 msm_routing_put_audio_mixer),
7718 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7719 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7720 msm_routing_put_audio_mixer),
7721 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7722 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7723 msm_routing_put_audio_mixer),
7724 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7725 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7726 msm_routing_put_audio_mixer),
7727 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7728 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7729 msm_routing_put_audio_mixer),
7730 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7731 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7732 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307733 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7734 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7735 msm_routing_put_audio_mixer),
7736 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7737 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7738 msm_routing_put_audio_mixer),
7739 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7740 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7741 msm_routing_put_audio_mixer),
7742 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7743 MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
7744 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307745};
7746
Laxminath Kasam38070be2017-08-17 18:21:59 +05307747static const struct snd_kcontrol_new mmul10_mixer_controls[] = {
7748 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7749 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7750 msm_routing_put_audio_mixer),
7751 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7752 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7753 msm_routing_put_audio_mixer),
7754 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7755 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7756 msm_routing_put_audio_mixer),
7757 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7758 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7759 msm_routing_put_audio_mixer),
7760 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7761 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7762 msm_routing_put_audio_mixer),
7763 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7764 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7765 msm_routing_put_audio_mixer),
7766 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7767 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7768 msm_routing_put_audio_mixer),
7769 SOC_SINGLE_EXT("SLIM_6_TX", MSM_BACKEND_DAI_SLIMBUS_6_TX,
7770 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7771 msm_routing_put_audio_mixer),
Vikram Panduranga72863152017-09-06 15:47:35 -07007772 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
7773 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7774 msm_routing_put_audio_mixer),
Laxminath Kasam38070be2017-08-17 18:21:59 +05307775 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7776 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7777 msm_routing_put_audio_mixer),
7778 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7779 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7780 msm_routing_put_audio_mixer),
7781 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7782 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7783 msm_routing_put_audio_mixer),
7784 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7785 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7786 msm_routing_put_audio_mixer),
7787 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7788 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7789 msm_routing_put_audio_mixer),
7790 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7791 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7792 msm_routing_put_audio_mixer),
7793 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7794 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7795 msm_routing_put_audio_mixer),
7796 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7797 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7798 msm_routing_put_audio_mixer),
7799 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_TX,
7800 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7801 msm_routing_put_audio_mixer),
Vikram Panduranga016c49f2017-09-11 15:15:56 -07007802 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
7803 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7804 msm_routing_put_audio_mixer),
7805 SOC_SINGLE_EXT("AUX_PCM_TX", MSM_BACKEND_DAI_AUXPCM_TX,
7806 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7807 msm_routing_put_audio_mixer),
7808 SOC_SINGLE_EXT("SEC_AUX_PCM_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
7809 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7810 msm_routing_put_audio_mixer),
7811 SOC_SINGLE_EXT("TERT_AUX_PCM_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
7812 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7813 msm_routing_put_audio_mixer),
7814 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
7815 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7816 msm_routing_put_audio_mixer),
7817 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7818 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7819 msm_routing_put_audio_mixer),
7820 SOC_SINGLE_EXT("INT2_MI2S_TX", MSM_BACKEND_DAI_INT2_MI2S_TX,
7821 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7822 msm_routing_put_audio_mixer),
7823 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
7824 MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
7825 msm_routing_put_audio_mixer),
Laxminath Kasam38070be2017-08-17 18:21:59 +05307826};
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307827static const struct snd_kcontrol_new mmul17_mixer_controls[] = {
7828 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7829 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7830 msm_routing_put_audio_mixer),
7831 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7832 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7833 msm_routing_put_audio_mixer),
7834 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7835 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7836 msm_routing_put_audio_mixer),
7837 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7838 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7839 msm_routing_put_audio_mixer),
7840 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7841 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7842 msm_routing_put_audio_mixer),
7843 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7844 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7845 msm_routing_put_audio_mixer),
7846 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7847 MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
7848 msm_routing_put_audio_mixer),
7849};
7850
7851static const struct snd_kcontrol_new mmul18_mixer_controls[] = {
7852 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7853 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
7854 msm_routing_put_audio_mixer),
7855 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7856 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
7857 msm_routing_put_audio_mixer),
7858 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7859 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
7860 msm_routing_put_audio_mixer),
7861 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7862 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
7863 msm_routing_put_audio_mixer),
7864 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7865 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
7866 msm_routing_put_audio_mixer),
7867 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7868 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
7869 msm_routing_put_audio_mixer),
7870 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7871 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
7872 msm_routing_put_audio_mixer),
7873 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7874 MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
7875 msm_routing_put_audio_mixer),
7876};
7877
7878static const struct snd_kcontrol_new mmul19_mixer_controls[] = {
7879 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
7880 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
7881 msm_routing_put_audio_mixer),
7882 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7883 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
7884 msm_routing_put_audio_mixer),
7885 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT_FM_TX,
7886 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
7887 msm_routing_put_audio_mixer),
7888 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
7889 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
7890 msm_routing_put_audio_mixer),
7891 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
7892 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
7893 msm_routing_put_audio_mixer),
7894 SOC_SINGLE_EXT("VOC_REC_DL", MSM_BACKEND_DAI_INCALL_RECORD_RX,
7895 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
7896 msm_routing_put_audio_mixer),
7897 SOC_SINGLE_EXT("VOC_REC_UL", MSM_BACKEND_DAI_INCALL_RECORD_TX,
7898 MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
7899 msm_routing_put_audio_mixer),
7900};
7901
7902static const struct snd_kcontrol_new mmul20_mixer_controls[] = {
7903 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
7904 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7905 msm_routing_put_audio_mixer),
7906 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_TX,
7907 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7908 msm_routing_put_audio_mixer),
7909 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
7910 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7911 msm_routing_put_audio_mixer),
7912 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
7913 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7914 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307915 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_TX,
7916 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7917 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307918 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_TX_0,
7919 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7920 msm_routing_put_audio_mixer),
7921 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_TX_1,
7922 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7923 msm_routing_put_audio_mixer),
7924 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_TX_2,
7925 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7926 msm_routing_put_audio_mixer),
7927 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_TX_3,
7928 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7929 msm_routing_put_audio_mixer),
7930 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_TX_0,
7931 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7932 msm_routing_put_audio_mixer),
7933 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_TX_1,
7934 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7935 msm_routing_put_audio_mixer),
7936 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_TX_2,
7937 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7938 msm_routing_put_audio_mixer),
7939 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_TX_3,
7940 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7941 msm_routing_put_audio_mixer),
7942 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_TX_0,
7943 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7944 msm_routing_put_audio_mixer),
7945 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_TX_1,
7946 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7947 msm_routing_put_audio_mixer),
7948 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_TX_2,
7949 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7950 msm_routing_put_audio_mixer),
7951 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_TX_3,
7952 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7953 msm_routing_put_audio_mixer),
7954 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_TX_0,
7955 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7956 msm_routing_put_audio_mixer),
7957 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_TX_1,
7958 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7959 msm_routing_put_audio_mixer),
7960 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_TX_2,
7961 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7962 msm_routing_put_audio_mixer),
7963 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_TX_3,
7964 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7965 msm_routing_put_audio_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05307966 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_TX_0,
7967 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7968 msm_routing_put_audio_mixer),
7969 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_TX_1,
7970 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7971 msm_routing_put_audio_mixer),
7972 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_TX_2,
7973 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7974 msm_routing_put_audio_mixer),
7975 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_TX_3,
7976 MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
7977 msm_routing_put_audio_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307978};
7979
7980static const struct snd_kcontrol_new pri_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307981 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_PRI_I2S_RX,
7982 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
7983 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307984 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_PRI_I2S_RX,
7985 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
7986 msm_routing_put_voice_mixer),
7987 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_PRI_I2S_RX,
7988 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
7989 msm_routing_put_voice_mixer),
7990 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_PRI_I2S_RX,
7991 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
7992 msm_routing_put_voice_mixer),
7993 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_PRI_I2S_RX,
7994 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
7995 msm_routing_put_voice_mixer),
7996};
7997
7998static const struct snd_kcontrol_new sec_i2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05307999 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SEC_I2S_RX,
8000 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8001 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308002 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SEC_I2S_RX,
8003 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8004 msm_routing_put_voice_mixer),
8005 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SEC_I2S_RX,
8006 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8007 msm_routing_put_voice_mixer),
8008};
8009
8010static const struct snd_kcontrol_new sec_mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308011 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
8012 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8013 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308014 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
8015 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8016 msm_routing_put_voice_mixer),
8017 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
8018 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8019 msm_routing_put_voice_mixer),
8020 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
8021 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8022 msm_routing_put_voice_mixer),
8023 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
8024 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8025 msm_routing_put_voice_mixer),
8026};
8027
8028static const struct snd_kcontrol_new slimbus_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308029 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8030 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8031 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308032 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8033 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8034 msm_routing_put_voice_mixer),
8035 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8036 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8037 msm_routing_put_voice_mixer),
8038 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8039 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8040 msm_routing_put_voice_mixer),
8041 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8042 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8043 msm_routing_put_voice_mixer),
8044};
8045
8046static const struct snd_kcontrol_new slimbus_6_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308047 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8048 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8049 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308050 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8051 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8052 msm_routing_put_voice_mixer),
8053 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8054 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8055 msm_routing_put_voice_mixer),
8056 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8057 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8058 msm_routing_put_voice_mixer),
8059 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_6_RX,
8060 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8061 msm_routing_put_voice_mixer),
8062};
8063
8064static const struct snd_kcontrol_new usb_audio_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308065 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_USB_RX,
8066 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8067 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308068 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_USB_RX,
8069 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8070 msm_routing_put_voice_mixer),
8071 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_USB_RX,
8072 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8073 msm_routing_put_voice_mixer),
8074 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_USB_RX,
8075 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8076 msm_routing_put_voice_mixer),
8077 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_USB_RX,
8078 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8079 msm_routing_put_voice_mixer),
8080};
8081
Aalique Grahamee4fd7d52017-11-28 13:24:13 -08008082static const struct snd_kcontrol_new display_port_rx_voice_mixer_controls[] = {
8083 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
8084 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8085 msm_routing_put_voice_mixer),
Aalique Grahamee4fd7d52017-11-28 13:24:13 -08008086 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
8087 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8088 msm_routing_put_voice_mixer),
8089 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
8090 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8091 msm_routing_put_voice_mixer),
8092 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
8093 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8094 msm_routing_put_voice_mixer),
8095 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
8096 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8097 msm_routing_put_voice_mixer),
8098};
8099
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308100static const struct snd_kcontrol_new bt_sco_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308101 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8102 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8103 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308104 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8105 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8106 msm_routing_put_voice_mixer),
8107 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8108 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8109 msm_routing_put_voice_mixer),
8110 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8111 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8112 msm_routing_put_voice_mixer),
8113 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_INT_BT_SCO_RX,
8114 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8115 msm_routing_put_voice_mixer),
8116};
8117
8118static const struct snd_kcontrol_new mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308119 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_MI2S_RX,
8120 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8121 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308122 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_MI2S_RX,
8123 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8124 msm_routing_put_voice_mixer),
8125 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_MI2S_RX,
8126 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8127 msm_routing_put_voice_mixer),
8128 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_MI2S_RX,
8129 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8130 msm_routing_put_voice_mixer),
8131 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_MI2S_RX,
8132 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8133 msm_routing_put_voice_mixer),
8134};
8135
8136static const struct snd_kcontrol_new pri_mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308137 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_PRI_MI2S_RX,
8138 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8139 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308140 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_PRI_MI2S_RX,
8141 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8142 msm_routing_put_voice_mixer),
8143 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_PRI_MI2S_RX,
8144 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8145 msm_routing_put_voice_mixer),
8146 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_PRI_MI2S_RX,
8147 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8148 msm_routing_put_voice_mixer),
8149 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_PRI_MI2S_RX,
8150 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8151 msm_routing_put_voice_mixer),
8152};
8153
8154static const struct snd_kcontrol_new int0_mi2s_rx_voice_mixer_controls[] = {
8155 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_INT0_MI2S_RX,
8156 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8157 msm_routing_put_voice_mixer),
8158 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_INT0_MI2S_RX,
8159 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8160 msm_routing_put_voice_mixer),
8161 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_INT0_MI2S_RX,
8162 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8163 msm_routing_put_voice_mixer),
8164 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_INT0_MI2S_RX,
8165 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8166 msm_routing_put_voice_mixer),
8167 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_INT0_MI2S_RX,
8168 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8169 msm_routing_put_voice_mixer),
8170};
8171
8172static const struct snd_kcontrol_new int4_mi2s_rx_voice_mixer_controls[] = {
8173 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_INT4_MI2S_RX,
8174 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8175 msm_routing_put_voice_mixer),
8176 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_INT4_MI2S_RX,
8177 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8178 msm_routing_put_voice_mixer),
8179 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_INT4_MI2S_RX,
8180 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8181 msm_routing_put_voice_mixer),
8182 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_INT4_MI2S_RX,
8183 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8184 msm_routing_put_voice_mixer),
8185 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_INT4_MI2S_RX,
8186 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8187 msm_routing_put_voice_mixer),
8188};
8189
8190static const struct snd_kcontrol_new tert_mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308191 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8192 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8193 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308194 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8195 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8196 msm_routing_put_voice_mixer),
8197 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8198 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8199 msm_routing_put_voice_mixer),
8200 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8201 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8202 msm_routing_put_voice_mixer),
8203 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
8204 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8205 msm_routing_put_voice_mixer),
8206};
8207
8208static const struct snd_kcontrol_new quat_mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308209 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8210 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8211 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308212 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8213 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8214 msm_routing_put_voice_mixer),
8215 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8216 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8217 msm_routing_put_voice_mixer),
8218 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8219 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8220 msm_routing_put_voice_mixer),
8221 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
8222 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8223 msm_routing_put_voice_mixer),
8224};
8225
8226static const struct snd_kcontrol_new quin_mi2s_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308227 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8228 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8229 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308230 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8231 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8232 msm_routing_put_voice_mixer),
8233 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8234 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8235 msm_routing_put_voice_mixer),
8236 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8237 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8238 msm_routing_put_voice_mixer),
8239 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
8240 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8241 msm_routing_put_voice_mixer),
8242};
8243
8244static const struct snd_kcontrol_new afe_pcm_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308245 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_AFE_PCM_RX,
8246 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8247 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308248 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_AFE_PCM_RX,
8249 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8250 msm_routing_put_voice_mixer),
8251 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_AFE_PCM_RX,
8252 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8253 msm_routing_put_voice_mixer),
8254 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_AFE_PCM_RX,
8255 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8256 msm_routing_put_voice_mixer),
8257 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_AFE_PCM_RX,
8258 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8259 msm_routing_put_voice_mixer),
8260};
8261
8262static const struct snd_kcontrol_new aux_pcm_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308263 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_AUXPCM_RX,
8264 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8265 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308266 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_AUXPCM_RX,
8267 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8268 msm_routing_put_voice_mixer),
8269 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_AUXPCM_RX,
8270 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8271 msm_routing_put_voice_mixer),
8272 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_AUXPCM_RX,
8273 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8274 msm_routing_put_voice_mixer),
8275 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_AUXPCM_RX,
8276 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8277 msm_routing_put_voice_mixer),
8278};
8279
8280static const struct snd_kcontrol_new sec_aux_pcm_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308281 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8282 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8283 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308284 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8285 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8286 msm_routing_put_voice_mixer),
8287 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8288 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8289 msm_routing_put_voice_mixer),
8290 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8291 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8292 msm_routing_put_voice_mixer),
8293 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8294 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8295 msm_routing_put_voice_mixer),
8296};
8297
8298static const struct snd_kcontrol_new tert_aux_pcm_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308299 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8300 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8301 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308302 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8303 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8304 msm_routing_put_voice_mixer),
8305 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8306 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8307 msm_routing_put_voice_mixer),
8308 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8309 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8310 msm_routing_put_voice_mixer),
8311 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8312 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8313 msm_routing_put_voice_mixer),
8314};
8315
8316static const struct snd_kcontrol_new quat_aux_pcm_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308317 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8318 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8319 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308320 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8321 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8322 msm_routing_put_voice_mixer),
8323 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8324 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8325 msm_routing_put_voice_mixer),
8326 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8327 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8328 msm_routing_put_voice_mixer),
8329 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8330 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8331 msm_routing_put_voice_mixer),
8332};
8333
Rohit Kumara5077932017-09-10 22:05:05 +05308334static const struct snd_kcontrol_new quin_aux_pcm_rx_voice_mixer_controls[] = {
Rohit Kumara5077932017-09-10 22:05:05 +05308335 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
8336 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8337 msm_routing_put_voice_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308338 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
8339 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8340 msm_routing_put_voice_mixer),
8341 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
8342 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8343 msm_routing_put_voice_mixer),
8344 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
8345 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8346 msm_routing_put_voice_mixer),
8347 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
8348 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8349 msm_routing_put_voice_mixer),
8350};
8351
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308352static const struct snd_kcontrol_new hdmi_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308353 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_HDMI_RX,
8354 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8355 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308356 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_HDMI_RX,
8357 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8358 msm_routing_put_voice_mixer),
8359 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_HDMI_RX,
8360 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8361 msm_routing_put_voice_mixer),
8362 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_HDMI_RX,
8363 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8364 msm_routing_put_voice_mixer),
8365 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_HDMI_RX,
8366 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8367 msm_routing_put_voice_mixer),
8368};
8369
8370static const struct snd_kcontrol_new slimbus_7_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308371 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8372 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8373 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308374 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8375 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8376 msm_routing_put_voice_mixer),
8377 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8378 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8379 msm_routing_put_voice_mixer),
8380 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8381 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8382 msm_routing_put_voice_mixer),
8383 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_7_RX,
8384 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8385 msm_routing_put_voice_mixer),
8386};
8387
8388static const struct snd_kcontrol_new slimbus_8_rx_voice_mixer_controls[] = {
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308389 SOC_SINGLE_EXT("Voip", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8390 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8391 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308392 SOC_SINGLE_EXT("DTMF", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8393 MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
8394 msm_routing_put_voice_mixer),
8395 SOC_SINGLE_EXT("QCHAT", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8396 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8397 msm_routing_put_voice_mixer),
8398 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8399 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8400 msm_routing_put_voice_mixer),
8401 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_8_RX,
8402 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8403 msm_routing_put_voice_mixer),
8404};
8405
8406static const struct snd_kcontrol_new quat_tdm_rx_2_voice_mixer_controls[] = {
8407 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
8408 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8409 msm_routing_put_voice_mixer),
8410};
8411
8412static const struct snd_kcontrol_new stub_rx_mixer_controls[] = {
kunleizdf5a00a2017-11-27 15:27:36 +08008413 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_EXTPROC_RX,
8414 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8415 msm_routing_put_voice_mixer),
8416 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_EXTPROC_RX,
8417 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8418 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308419};
8420
8421static const struct snd_kcontrol_new slimbus_1_rx_mixer_controls[] = {
kunleizdf5a00a2017-11-27 15:27:36 +08008422 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_1_RX,
8423 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8424 msm_routing_put_voice_mixer),
8425 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_1_RX,
8426 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8427 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308428};
8429
8430static const struct snd_kcontrol_new slimbus_3_rx_mixer_controls[] = {
kunleizdf5a00a2017-11-27 15:27:36 +08008431 SOC_SINGLE_EXT("VoiceMMode1", MSM_BACKEND_DAI_SLIMBUS_3_RX,
8432 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8433 msm_routing_put_voice_mixer),
8434 SOC_SINGLE_EXT("VoiceMMode2", MSM_BACKEND_DAI_SLIMBUS_3_RX,
8435 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8436 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308437};
8438
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308439static const struct snd_kcontrol_new tx_voicemmode1_mixer_controls[] = {
8440 SOC_SINGLE_EXT("PRI_TX_MMode1", MSM_BACKEND_DAI_PRI_I2S_TX,
8441 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8442 msm_routing_put_voice_mixer),
8443 SOC_SINGLE_EXT("MI2S_TX_MMode1", MSM_BACKEND_DAI_MI2S_TX,
8444 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8445 msm_routing_put_voice_mixer),
8446 SOC_SINGLE_EXT("SLIM_0_TX_MMode1",
8447 MSM_BACKEND_DAI_SLIMBUS_0_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8448 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8449 SOC_SINGLE_EXT("INT_BT_SCO_TX_MMode1",
8450 MSM_BACKEND_DAI_INT_BT_SCO_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8451 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8452 SOC_SINGLE_EXT("AFE_PCM_TX_MMode1",
8453 MSM_BACKEND_DAI_AFE_PCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0,
8454 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8455 SOC_SINGLE_EXT("AUX_PCM_TX_MMode1",
8456 MSM_BACKEND_DAI_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0,
8457 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8458 SOC_SINGLE_EXT("SEC_AUX_PCM_TX_MMode1",
8459 MSM_BACKEND_DAI_SEC_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8460 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8461 SOC_SINGLE_EXT("TERT_AUX_PCM_TX_MMode1",
8462 MSM_BACKEND_DAI_TERT_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8463 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8464 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX_MMode1",
8465 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8466 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308467 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX_MMode1",
8468 MSM_BACKEND_DAI_QUIN_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8469 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308470 SOC_SINGLE_EXT("PRI_MI2S_TX_MMode1",
8471 MSM_BACKEND_DAI_PRI_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0,
8472 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8473 SOC_SINGLE_EXT("TERT_MI2S_TX_MMode1",
8474 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE1,
8475 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8476 SOC_SINGLE_EXT("INT3_MI2S_TX_MMode1",
8477 MSM_BACKEND_DAI_INT3_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE1,
8478 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8479 SOC_SINGLE_EXT("SLIM_7_TX_MMode1",
8480 MSM_BACKEND_DAI_SLIMBUS_7_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8481 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8482 SOC_SINGLE_EXT("SLIM_8_TX_MMode1",
8483 MSM_BACKEND_DAI_SLIMBUS_8_TX, MSM_FRONTEND_DAI_VOICEMMODE1, 1,
8484 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8485 SOC_SINGLE_EXT("USB_AUDIO_TX_MMode1", MSM_BACKEND_DAI_USB_TX,
8486 MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
8487 msm_routing_put_voice_mixer),
8488 SOC_SINGLE_EXT("QUAT_TDM_TX_0_MMode1",
8489 MSM_BACKEND_DAI_QUAT_TDM_TX_0, MSM_FRONTEND_DAI_VOICEMMODE1,
8490 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8491};
8492
8493static const struct snd_kcontrol_new tx_voicemmode2_mixer_controls[] = {
8494 SOC_SINGLE_EXT("PRI_TX_MMode2", MSM_BACKEND_DAI_PRI_I2S_TX,
8495 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8496 msm_routing_put_voice_mixer),
8497 SOC_SINGLE_EXT("MI2S_TX_MMode2", MSM_BACKEND_DAI_MI2S_TX,
8498 MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
8499 msm_routing_put_voice_mixer),
8500 SOC_SINGLE_EXT("SLIM_0_TX_MMode2",
8501 MSM_BACKEND_DAI_SLIMBUS_0_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8502 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8503 SOC_SINGLE_EXT("INT_BT_SCO_TX_MMode2",
8504 MSM_BACKEND_DAI_INT_BT_SCO_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8505 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8506 SOC_SINGLE_EXT("AFE_PCM_TX_MMode2",
8507 MSM_BACKEND_DAI_AFE_PCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0,
8508 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8509 SOC_SINGLE_EXT("AUX_PCM_TX_MMode2",
8510 MSM_BACKEND_DAI_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0,
8511 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8512 SOC_SINGLE_EXT("SEC_AUX_PCM_TX_MMode2",
8513 MSM_BACKEND_DAI_SEC_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8514 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8515 SOC_SINGLE_EXT("TERT_AUX_PCM_TX_MMode2",
8516 MSM_BACKEND_DAI_TERT_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8517 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8518 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX_MMode2",
8519 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8520 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308521 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX_MMode2",
8522 MSM_BACKEND_DAI_QUIN_AUXPCM_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8523 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308524 SOC_SINGLE_EXT("PRI_MI2S_TX_MMode2",
8525 MSM_BACKEND_DAI_PRI_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0,
8526 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8527 SOC_SINGLE_EXT("TERT_MI2S_TX_MMode2",
8528 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE2,
8529 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8530 SOC_SINGLE_EXT("INT3_MI2S_TX_MMode2",
8531 MSM_BACKEND_DAI_INT3_MI2S_TX, MSM_FRONTEND_DAI_VOICEMMODE2,
8532 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8533 SOC_SINGLE_EXT("SLIM_7_TX_MMode2",
8534 MSM_BACKEND_DAI_SLIMBUS_7_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8535 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8536 SOC_SINGLE_EXT("SLIM_8_TX_MMode2",
8537 MSM_BACKEND_DAI_SLIMBUS_8_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8538 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8539 SOC_SINGLE_EXT("USB_AUDIO_TX_MMode2",
8540 MSM_BACKEND_DAI_USB_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1,
8541 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8542};
8543
8544static const struct snd_kcontrol_new tx_voip_mixer_controls[] = {
8545 SOC_SINGLE_EXT("PRI_TX_Voip", MSM_BACKEND_DAI_PRI_I2S_TX,
8546 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8547 msm_routing_put_voice_mixer),
8548 SOC_SINGLE_EXT("MI2S_TX_Voip", MSM_BACKEND_DAI_MI2S_TX,
8549 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8550 msm_routing_put_voice_mixer),
8551 SOC_SINGLE_EXT("SLIM_0_TX_Voip", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8552 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8553 msm_routing_put_voice_mixer),
8554 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX_Voip", MSM_BACKEND_DAI_INT_BT_SCO_TX,
8555 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8556 msm_routing_put_voice_mixer),
8557 SOC_SINGLE_EXT("AFE_PCM_TX_Voip", MSM_BACKEND_DAI_AFE_PCM_TX,
8558 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8559 msm_routing_put_voice_mixer),
8560 SOC_SINGLE_EXT("AUX_PCM_TX_Voip", MSM_BACKEND_DAI_AUXPCM_TX,
8561 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8562 msm_routing_put_voice_mixer),
8563 SOC_SINGLE_EXT("SEC_AUX_PCM_TX_Voip", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
8564 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8565 msm_routing_put_voice_mixer),
8566 SOC_SINGLE_EXT("TERT_AUX_PCM_TX_Voip", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
8567 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8568 msm_routing_put_voice_mixer),
8569 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX_Voip", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
8570 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8571 msm_routing_put_voice_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308572 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX_Voip", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
8573 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8574 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308575 SOC_SINGLE_EXT("PRI_MI2S_TX_Voip", MSM_BACKEND_DAI_PRI_MI2S_TX,
8576 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8577 msm_routing_put_voice_mixer),
8578 SOC_SINGLE_EXT("TERT_MI2S_TX_Voip", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
8579 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8580 msm_routing_put_voice_mixer),
8581 SOC_SINGLE_EXT("INT3_MI2S_TX_Voip", MSM_BACKEND_DAI_INT3_MI2S_TX,
8582 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8583 msm_routing_put_voice_mixer),
8584 SOC_SINGLE_EXT("SLIM_7_TX_Voip", MSM_BACKEND_DAI_SLIMBUS_7_TX,
8585 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8586 msm_routing_put_voice_mixer),
8587 SOC_SINGLE_EXT("SLIM_8_TX_Voip", MSM_BACKEND_DAI_SLIMBUS_8_TX,
8588 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8589 msm_routing_put_voice_mixer),
8590 SOC_SINGLE_EXT("USB_AUDIO_TX_Voip", MSM_BACKEND_DAI_USB_TX,
8591 MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
8592 msm_routing_put_voice_mixer),
8593};
8594
8595static const struct snd_kcontrol_new tx_voice_stub_mixer_controls[] = {
8596 SOC_SINGLE_EXT("STUB_TX_HL", MSM_BACKEND_DAI_EXTPROC_TX,
8597 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8598 msm_routing_put_voice_stub_mixer),
8599 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT_BT_SCO_TX,
8600 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8601 msm_routing_put_voice_stub_mixer),
8602 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
8603 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8604 msm_routing_put_voice_stub_mixer),
8605 SOC_SINGLE_EXT("STUB_1_TX_HL", MSM_BACKEND_DAI_EXTPROC_EC_TX,
8606 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8607 msm_routing_put_voice_stub_mixer),
8608 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_TX,
8609 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8610 msm_routing_put_voice_stub_mixer),
8611 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
8612 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8613 msm_routing_put_voice_stub_mixer),
8614 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
8615 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8616 msm_routing_put_voice_stub_mixer),
8617 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
8618 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8619 msm_routing_put_voice_stub_mixer),
8620 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
8621 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8622 msm_routing_put_voice_stub_mixer),
8623 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
8624 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8625 msm_routing_put_voice_stub_mixer),
8626 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
8627 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8628 msm_routing_put_voice_stub_mixer),
8629 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
8630 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8631 msm_routing_put_voice_stub_mixer),
8632 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
8633 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8634 msm_routing_put_voice_stub_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308635 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
8636 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8637 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308638 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8639 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8640 msm_routing_put_voice_stub_mixer),
8641 SOC_SINGLE_EXT("SLIM_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
8642 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8643 msm_routing_put_voice_stub_mixer),
8644 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
8645 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8646 msm_routing_put_voice_stub_mixer),
8647 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
8648 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8649 msm_routing_put_voice_stub_mixer),
8650 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
8651 MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8652 msm_routing_put_voice_stub_mixer),
8653};
8654
8655static const struct snd_kcontrol_new tx_voice2_stub_mixer_controls[] = {
8656 SOC_SINGLE_EXT("STUB_TX_HL", MSM_BACKEND_DAI_EXTPROC_TX,
8657 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8658 msm_routing_put_voice_stub_mixer),
8659 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
8660 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8661 msm_routing_put_voice_stub_mixer),
8662 SOC_SINGLE_EXT("STUB_1_TX_HL", MSM_BACKEND_DAI_EXTPROC_EC_TX,
8663 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8664 msm_routing_put_voice_stub_mixer),
8665 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
8666 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8667 msm_routing_put_voice_stub_mixer),
8668 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
8669 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8670 msm_routing_put_voice_stub_mixer),
8671 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
8672 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8673 msm_routing_put_voice_stub_mixer),
8674 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
8675 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8676 msm_routing_put_voice_stub_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308677 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
8678 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8679 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308680 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8681 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8682 msm_routing_put_voice_stub_mixer),
8683 SOC_SINGLE_EXT("SLIM_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
8684 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8685 msm_routing_put_voice_stub_mixer),
8686 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
8687 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8688 msm_routing_put_voice_stub_mixer),
8689 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
8690 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8691 msm_routing_put_voice_stub_mixer),
8692 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
8693 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8694 msm_routing_put_voice_stub_mixer),
8695 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
8696 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8697 msm_routing_put_voice_stub_mixer),
8698 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
8699 MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8700 msm_routing_put_voice_stub_mixer),
8701};
8702
8703static const struct snd_kcontrol_new tx_volte_stub_mixer_controls[] = {
8704 SOC_SINGLE_EXT("STUB_TX_HL", MSM_BACKEND_DAI_EXTPROC_TX,
8705 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8706 msm_routing_put_voice_stub_mixer),
8707 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
8708 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8709 msm_routing_put_voice_stub_mixer),
8710 SOC_SINGLE_EXT("STUB_1_TX_HL", MSM_BACKEND_DAI_EXTPROC_EC_TX,
8711 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8712 msm_routing_put_voice_stub_mixer),
8713 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_TX,
8714 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8715 msm_routing_put_voice_stub_mixer),
8716 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
8717 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8718 msm_routing_put_voice_stub_mixer),
8719 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
8720 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8721 msm_routing_put_voice_stub_mixer),
8722 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
8723 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8724 msm_routing_put_voice_stub_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308725 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
8726 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8727 msm_routing_put_voice_stub_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308728 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8729 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8730 msm_routing_put_voice_stub_mixer),
8731 SOC_SINGLE_EXT("SLIM_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
8732 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8733 msm_routing_put_voice_stub_mixer),
8734 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_AFE_PCM_TX,
8735 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8736 msm_routing_put_voice_stub_mixer),
8737 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_TX,
8738 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8739 msm_routing_put_voice_stub_mixer),
8740 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
8741 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8742 msm_routing_put_voice_stub_mixer),
8743 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_7_TX,
8744 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8745 msm_routing_put_voice_stub_mixer),
8746 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_8_TX,
8747 MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer,
8748 msm_routing_put_voice_stub_mixer),
8749};
8750
8751static const struct snd_kcontrol_new tx_qchat_mixer_controls[] = {
8752 SOC_SINGLE_EXT("PRI_TX_QCHAT", MSM_BACKEND_DAI_PRI_I2S_TX,
8753 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8754 msm_routing_put_voice_mixer),
8755 SOC_SINGLE_EXT("SLIM_0_TX_QCHAT", MSM_BACKEND_DAI_SLIMBUS_0_TX,
8756 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8757 msm_routing_put_voice_mixer),
8758 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX_QCHAT",
8759 MSM_BACKEND_DAI_INT_BT_SCO_TX, MSM_FRONTEND_DAI_QCHAT, 1, 0,
8760 msm_routing_get_voice_mixer, msm_routing_put_voice_mixer),
8761 SOC_SINGLE_EXT("AFE_PCM_TX_QCHAT", MSM_BACKEND_DAI_AFE_PCM_TX,
8762 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8763 msm_routing_put_voice_mixer),
8764 SOC_SINGLE_EXT("AUX_PCM_TX_QCHAT", MSM_BACKEND_DAI_AUXPCM_TX,
8765 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8766 msm_routing_put_voice_mixer),
8767 SOC_SINGLE_EXT("SEC_AUX_PCM_TX_QCHAT", MSM_BACKEND_DAI_SEC_AUXPCM_TX,
8768 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8769 msm_routing_put_voice_mixer),
8770 SOC_SINGLE_EXT("TERT_AUX_PCM_TX_QCHAT", MSM_BACKEND_DAI_TERT_AUXPCM_TX,
8771 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8772 msm_routing_put_voice_mixer),
8773 SOC_SINGLE_EXT("QUAT_AUX_PCM_TX_QCHAT", MSM_BACKEND_DAI_QUAT_AUXPCM_TX,
8774 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8775 msm_routing_put_voice_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308776 SOC_SINGLE_EXT("QUIN_AUX_PCM_TX_QCHAT", MSM_BACKEND_DAI_QUIN_AUXPCM_TX,
8777 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8778 msm_routing_put_voice_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308779 SOC_SINGLE_EXT("MI2S_TX_QCHAT", MSM_BACKEND_DAI_MI2S_TX,
8780 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8781 msm_routing_put_voice_mixer),
8782 SOC_SINGLE_EXT("PRI_MI2S_TX_QCHAT", MSM_BACKEND_DAI_PRI_MI2S_TX,
8783 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8784 msm_routing_put_voice_mixer),
8785 SOC_SINGLE_EXT("TERT_MI2S_TX_QCHAT", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
8786 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8787 msm_routing_put_voice_mixer),
8788 SOC_SINGLE_EXT("INT3_MI2S_TX_QCHAT", MSM_BACKEND_DAI_INT3_MI2S_TX,
8789 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8790 msm_routing_put_voice_mixer),
8791 SOC_SINGLE_EXT("SLIM_7_TX_QCHAT", MSM_BACKEND_DAI_SLIMBUS_7_TX,
8792 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8793 msm_routing_put_voice_mixer),
8794 SOC_SINGLE_EXT("SLIM_8_TX_QCHAT", MSM_BACKEND_DAI_SLIMBUS_8_TX,
8795 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8796 msm_routing_put_voice_mixer),
8797 SOC_SINGLE_EXT("USB_AUDIO_TX_QCHAT", MSM_BACKEND_DAI_USB_TX,
8798 MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
8799 msm_routing_put_voice_mixer),
8800};
8801
8802static const struct snd_kcontrol_new int0_mi2s_rx_port_mixer_controls[] = {
8803 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
8804 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8805 msm_routing_put_port_mixer),
8806 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
8807 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8808 msm_routing_put_port_mixer),
8809 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
8810 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8811 msm_routing_put_port_mixer),
8812 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
8813 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8814 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308815 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
8816 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8817 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308818 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
8819 MSM_BACKEND_DAI_INT3_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8820 msm_routing_put_port_mixer),
8821 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
8822 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
8823 msm_routing_put_port_mixer),
8824 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
8825 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
8826 msm_routing_put_port_mixer),
8827 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
8828 MSM_BACKEND_DAI_SLIMBUS_7_TX, 1, 0, msm_routing_get_port_mixer,
8829 msm_routing_put_port_mixer),
8830 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_INT0_MI2S_RX,
8831 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
8832 msm_routing_put_port_mixer),
8833};
8834
8835static const struct snd_kcontrol_new int4_mi2s_rx_port_mixer_controls[] = {
8836 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
8837 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8838 msm_routing_put_port_mixer),
8839 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
8840 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8841 msm_routing_put_port_mixer),
8842 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
8843 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8844 msm_routing_put_port_mixer),
8845 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
8846 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8847 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308848 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
8849 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8850 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308851 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
8852 MSM_BACKEND_DAI_INT3_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8853 msm_routing_put_port_mixer),
8854 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
8855 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
8856 msm_routing_put_port_mixer),
8857 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
8858 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
8859 msm_routing_put_port_mixer),
8860 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
8861 MSM_BACKEND_DAI_SLIMBUS_7_TX, 1, 0, msm_routing_get_port_mixer,
8862 msm_routing_put_port_mixer),
8863 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_INT4_MI2S_RX,
8864 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
8865 msm_routing_put_port_mixer),
8866};
8867
8868static const struct snd_kcontrol_new sbus_0_rx_port_mixer_controls[] = {
8869 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8870 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
8871 msm_routing_put_port_mixer),
8872 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8873 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
8874 msm_routing_put_port_mixer),
8875 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8876 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
8877 msm_routing_put_port_mixer),
8878 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8879 MSM_BACKEND_DAI_SLIMBUS_7_TX, 1, 0, msm_routing_get_port_mixer,
8880 msm_routing_put_port_mixer),
8881 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8882 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
8883 msm_routing_put_port_mixer),
8884 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8885 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
8886 msm_routing_put_port_mixer),
8887 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8888 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
8889 msm_routing_put_port_mixer),
8890 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8891 MSM_BACKEND_DAI_TERT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
8892 msm_routing_put_port_mixer),
8893 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8894 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
8895 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308896 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8897 MSM_BACKEND_DAI_QUIN_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
8898 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308899 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8900 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8901 msm_routing_put_port_mixer),
8902 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8903 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8904 msm_routing_put_port_mixer),
8905 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8906 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8907 msm_routing_put_port_mixer),
8908 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8909 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8910 msm_routing_put_port_mixer),
8911 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8912 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8913 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308914 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8915 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8916 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308917 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8918 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
8919 msm_routing_put_port_mixer),
8920 SOC_SINGLE_EXT("PRI_MI2S_RX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8921 MSM_BACKEND_DAI_PRI_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
8922 msm_routing_put_port_mixer),
8923 SOC_SINGLE_EXT("SEC_MI2S_RX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8924 MSM_BACKEND_DAI_SECONDARY_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
8925 msm_routing_put_port_mixer),
8926 SOC_SINGLE_EXT("TERT_MI2S_RX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8927 MSM_BACKEND_DAI_TERTIARY_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
8928 msm_routing_put_port_mixer),
8929 SOC_SINGLE_EXT("QUAT_MI2S_RX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8930 MSM_BACKEND_DAI_QUATERNARY_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
8931 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05308932 SOC_SINGLE_EXT("QUIN_MI2S_RX", MSM_BACKEND_DAI_SLIMBUS_0_RX,
8933 MSM_BACKEND_DAI_QUINARY_MI2S_RX, 1, 0, msm_routing_get_port_mixer,
8934 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308935};
8936
8937static const struct snd_kcontrol_new aux_pcm_rx_port_mixer_controls[] = {
8938 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_RX,
8939 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
8940 msm_routing_put_port_mixer),
8941 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_AUXPCM_RX,
8942 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
8943 msm_routing_put_port_mixer),
8944 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_AUXPCM_RX,
8945 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
8946 msm_routing_put_port_mixer),
8947 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_AUXPCM_RX,
8948 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
8949 msm_routing_put_port_mixer),
8950 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_AUXPCM_RX,
8951 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0, msm_routing_get_port_mixer,
8952 msm_routing_put_port_mixer),
Karthikeyan Mani9f66f6f2017-12-13 13:38:46 -08008953 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_AUXPCM_RX,
8954 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8955 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308956};
8957
8958static const struct snd_kcontrol_new sec_auxpcm_rx_port_mixer_controls[] = {
8959 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8960 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
8961 msm_routing_put_port_mixer),
8962 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8963 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
8964 msm_routing_put_port_mixer),
8965 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8966 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
8967 msm_routing_put_port_mixer),
Karthikeyan Mani9f66f6f2017-12-13 13:38:46 -08008968 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SEC_AUXPCM_RX,
8969 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
8970 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05308971};
8972
8973static const struct snd_kcontrol_new tert_auxpcm_rx_port_mixer_controls[] = {
8974 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8975 MSM_BACKEND_DAI_TERT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
8976 msm_routing_put_port_mixer),
8977 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8978 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
8979 msm_routing_put_port_mixer),
8980 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_AUXPCM_RX,
8981 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
8982 msm_routing_put_port_mixer),
8983};
8984
8985static const struct snd_kcontrol_new quat_auxpcm_rx_port_mixer_controls[] = {
8986 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8987 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
8988 msm_routing_put_port_mixer),
8989 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8990 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
8991 msm_routing_put_port_mixer),
8992 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_AUXPCM_RX,
8993 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
8994 msm_routing_put_port_mixer),
8995};
8996
Rohit Kumara5077932017-09-10 22:05:05 +05308997static const struct snd_kcontrol_new quin_auxpcm_rx_port_mixer_controls[] = {
8998 SOC_SINGLE_EXT("QUIN_AUXPCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
8999 MSM_BACKEND_DAI_QUIN_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9000 msm_routing_put_port_mixer),
9001 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
9002 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9003 msm_routing_put_port_mixer),
9004 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_AUXPCM_RX,
9005 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9006 msm_routing_put_port_mixer),
9007};
9008
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309009static const struct snd_kcontrol_new sbus_1_rx_port_mixer_controls[] = {
9010 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9011 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
9012 msm_routing_put_port_mixer),
9013 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9014 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0, msm_routing_get_port_mixer,
9015 msm_routing_put_port_mixer),
9016 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9017 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9018 msm_routing_put_port_mixer),
9019 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9020 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9021 msm_routing_put_port_mixer),
9022 SOC_SINGLE_EXT("TERT_AUXPCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9023 MSM_BACKEND_DAI_TERT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9024 msm_routing_put_port_mixer),
9025 SOC_SINGLE_EXT("QUAT_AUXPCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_1_RX,
9026 MSM_BACKEND_DAI_QUAT_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9027 msm_routing_put_port_mixer),
9028};
9029
9030static const struct snd_kcontrol_new sbus_3_rx_port_mixer_controls[] = {
9031 SOC_SINGLE_EXT("INTERNAL_BT_SCO_RX", MSM_BACKEND_DAI_SLIMBUS_3_RX,
9032 MSM_BACKEND_DAI_INT_BT_SCO_RX, 1, 0, msm_routing_get_port_mixer,
9033 msm_routing_put_port_mixer),
9034 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_3_RX,
9035 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9036 msm_routing_put_port_mixer),
9037 SOC_SINGLE_EXT("AFE_PCM_RX", MSM_BACKEND_DAI_SLIMBUS_3_RX,
9038 MSM_BACKEND_DAI_AFE_PCM_RX, 1, 0, msm_routing_get_port_mixer,
9039 msm_routing_put_port_mixer),
9040 SOC_SINGLE_EXT("AUX_PCM_RX", MSM_BACKEND_DAI_SLIMBUS_3_RX,
9041 MSM_BACKEND_DAI_AUXPCM_RX, 1, 0, msm_routing_get_port_mixer,
9042 msm_routing_put_port_mixer),
9043 SOC_SINGLE_EXT("SLIM_0_RX", MSM_BACKEND_DAI_SLIMBUS_3_RX,
9044 MSM_BACKEND_DAI_SLIMBUS_0_RX, 1, 0, msm_routing_get_port_mixer,
9045 msm_routing_put_port_mixer),
9046};
9047
9048static const struct snd_kcontrol_new sbus_6_rx_port_mixer_controls[] = {
9049 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9050 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9051 msm_routing_put_port_mixer),
9052 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9053 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9054 msm_routing_put_port_mixer),
9055 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9056 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9057 msm_routing_put_port_mixer),
9058 SOC_SINGLE_EXT("SLIM_7_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9059 MSM_BACKEND_DAI_SLIMBUS_7_TX, 1, 0, msm_routing_get_port_mixer,
9060 msm_routing_put_port_mixer),
9061 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9062 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9063 msm_routing_put_port_mixer),
9064 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9065 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9066 msm_routing_put_port_mixer),
9067 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9068 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9069 msm_routing_put_port_mixer),
9070 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9071 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9072 msm_routing_put_port_mixer),
9073 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9074 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9075 msm_routing_put_port_mixer),
9076 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9077 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9078 msm_routing_put_port_mixer),
9079 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9080 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9081 msm_routing_put_port_mixer),
9082 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SLIMBUS_6_RX,
9083 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
9084 msm_routing_put_port_mixer),
9085};
9086
9087static const struct snd_kcontrol_new bt_sco_rx_port_mixer_controls[] = {
9088 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_INT_BT_SCO_RX,
9089 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9090 msm_routing_put_port_mixer),
9091 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_INT_BT_SCO_RX,
9092 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9093 msm_routing_put_port_mixer),
9094};
9095
9096static const struct snd_kcontrol_new afe_pcm_rx_port_mixer_controls[] = {
9097 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_AFE_PCM_RX,
9098 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9099 msm_routing_put_port_mixer),
9100 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_AFE_PCM_RX,
9101 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9102 msm_routing_put_port_mixer),
9103};
9104
9105
9106static const struct snd_kcontrol_new hdmi_rx_port_mixer_controls[] = {
9107 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_HDMI_RX,
9108 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9109 msm_routing_put_port_mixer),
9110};
9111
9112static const struct snd_kcontrol_new display_port_rx_port_mixer_controls[] = {
9113 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_DISPLAY_PORT_RX,
9114 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9115 msm_routing_put_port_mixer),
9116};
9117
9118static const struct snd_kcontrol_new sec_i2s_rx_port_mixer_controls[] = {
9119 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_SEC_I2S_RX,
9120 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9121 msm_routing_put_port_mixer),
9122};
9123
9124static const struct snd_kcontrol_new mi2s_rx_port_mixer_controls[] = {
9125 SOC_SINGLE_EXT("SLIM_1_TX", MSM_BACKEND_DAI_MI2S_RX,
9126 MSM_BACKEND_DAI_SLIMBUS_1_TX, 1, 0, msm_routing_get_port_mixer,
9127 msm_routing_put_port_mixer),
9128 SOC_SINGLE_EXT("MI2S_TX", MSM_BACKEND_DAI_MI2S_RX,
9129 MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9130 msm_routing_put_port_mixer),
9131};
9132
9133static const struct snd_kcontrol_new primary_mi2s_rx_port_mixer_controls[] = {
9134 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9135 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9136 msm_routing_put_port_mixer),
9137 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9138 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9139 msm_routing_put_port_mixer),
9140 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9141 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9142 msm_routing_put_port_mixer),
9143 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9144 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9145 msm_routing_put_port_mixer),
9146 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9147 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0, msm_routing_get_port_mixer,
9148 msm_routing_put_port_mixer),
9149 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9150 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9151 msm_routing_put_port_mixer),
9152 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9153 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9154 msm_routing_put_port_mixer),
9155 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9156 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9157 msm_routing_put_port_mixer),
9158 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9159 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9160 msm_routing_put_port_mixer),
Karthikeyan Mani9f66f6f2017-12-13 13:38:46 -08009161 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_MI2S_RX,
9162 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9163 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309164};
9165
9166static const struct snd_kcontrol_new usb_rx_port_mixer_controls[] = {
9167 SOC_SINGLE_EXT("USB_AUDIO_TX", MSM_BACKEND_DAI_USB_RX,
9168 MSM_BACKEND_DAI_USB_TX, 1, 0, msm_routing_get_port_mixer,
9169 msm_routing_put_port_mixer),
9170};
9171
9172static const struct snd_kcontrol_new quat_mi2s_rx_port_mixer_controls[] = {
9173 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9174 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9175 msm_routing_put_port_mixer),
9176 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9177 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9178 msm_routing_put_port_mixer),
9179 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9180 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
9181 msm_routing_put_port_mixer),
9182 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9183 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
9184 msm_routing_put_port_mixer),
9185 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9186 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9187 msm_routing_put_port_mixer),
9188 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9189 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9190 msm_routing_put_port_mixer),
9191 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9192 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9193 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309194 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9195 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9196 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309197 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_RX,
9198 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9199 msm_routing_put_port_mixer),
9200};
9201
Rohit Kumara5077932017-09-10 22:05:05 +05309202static const struct snd_kcontrol_new quin_mi2s_rx_port_mixer_controls[] = {
9203 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9204 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9205 msm_routing_put_port_mixer),
9206 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9207 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9208 msm_routing_put_port_mixer),
9209 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9210 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
9211 msm_routing_put_port_mixer),
9212 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9213 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9214 msm_routing_put_port_mixer),
9215 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9216 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9217 msm_routing_put_port_mixer),
9218 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9219 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
9220 msm_routing_put_port_mixer),
9221 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_QUINARY_MI2S_RX,
9222 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
9223 msm_routing_put_port_mixer),
9224};
9225
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309226static const struct snd_kcontrol_new pri_tdm_rx_0_port_mixer_controls[] = {
9227 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9228 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9229 msm_routing_get_port_mixer,
9230 msm_routing_put_port_mixer),
9231 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9232 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9233 msm_routing_get_port_mixer,
9234 msm_routing_put_port_mixer),
9235 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9236 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9237 msm_routing_get_port_mixer,
9238 msm_routing_put_port_mixer),
9239 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9240 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9241 msm_routing_get_port_mixer,
9242 msm_routing_put_port_mixer),
9243 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9244 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9245 msm_routing_get_port_mixer,
9246 msm_routing_put_port_mixer),
9247 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9248 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9249 msm_routing_get_port_mixer,
9250 msm_routing_put_port_mixer),
9251 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9252 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9253 msm_routing_get_port_mixer,
9254 msm_routing_put_port_mixer),
9255 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9256 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9257 msm_routing_get_port_mixer,
9258 msm_routing_put_port_mixer),
9259 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9260 MSM_BACKEND_DAI_PRI_TDM_TX_0, 1, 0,
9261 msm_routing_get_port_mixer,
9262 msm_routing_put_port_mixer),
9263 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9264 MSM_BACKEND_DAI_PRI_TDM_TX_1, 1, 0,
9265 msm_routing_get_port_mixer,
9266 msm_routing_put_port_mixer),
9267 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9268 MSM_BACKEND_DAI_PRI_TDM_TX_2, 1, 0,
9269 msm_routing_get_port_mixer,
9270 msm_routing_put_port_mixer),
9271 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9272 MSM_BACKEND_DAI_PRI_TDM_TX_3, 1, 0,
9273 msm_routing_get_port_mixer,
9274 msm_routing_put_port_mixer),
9275 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9276 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9277 msm_routing_get_port_mixer,
9278 msm_routing_put_port_mixer),
9279 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9280 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9281 msm_routing_get_port_mixer,
9282 msm_routing_put_port_mixer),
9283 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9284 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9285 msm_routing_get_port_mixer,
9286 msm_routing_put_port_mixer),
9287 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9288 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9289 msm_routing_get_port_mixer,
9290 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309291 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9292 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9293 msm_routing_get_port_mixer,
9294 msm_routing_put_port_mixer),
9295 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9296 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9297 msm_routing_get_port_mixer,
9298 msm_routing_put_port_mixer),
9299 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9300 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9301 msm_routing_get_port_mixer,
9302 msm_routing_put_port_mixer),
9303 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_0,
9304 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9305 msm_routing_get_port_mixer,
9306 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309307};
9308
9309static const struct snd_kcontrol_new pri_tdm_rx_1_port_mixer_controls[] = {
9310 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9311 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9312 msm_routing_get_port_mixer,
9313 msm_routing_put_port_mixer),
9314 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9315 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9316 msm_routing_get_port_mixer,
9317 msm_routing_put_port_mixer),
9318 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9319 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9320 msm_routing_get_port_mixer,
9321 msm_routing_put_port_mixer),
9322 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9323 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9324 msm_routing_get_port_mixer,
9325 msm_routing_put_port_mixer),
9326 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9327 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9328 msm_routing_get_port_mixer,
9329 msm_routing_put_port_mixer),
9330 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9331 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9332 msm_routing_get_port_mixer,
9333 msm_routing_put_port_mixer),
9334 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9335 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9336 msm_routing_get_port_mixer,
9337 msm_routing_put_port_mixer),
9338 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9339 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9340 msm_routing_get_port_mixer,
9341 msm_routing_put_port_mixer),
9342 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9343 MSM_BACKEND_DAI_PRI_TDM_TX_0, 1, 0,
9344 msm_routing_get_port_mixer,
9345 msm_routing_put_port_mixer),
9346 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9347 MSM_BACKEND_DAI_PRI_TDM_TX_1, 1, 0,
9348 msm_routing_get_port_mixer,
9349 msm_routing_put_port_mixer),
9350 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9351 MSM_BACKEND_DAI_PRI_TDM_TX_2, 1, 0,
9352 msm_routing_get_port_mixer,
9353 msm_routing_put_port_mixer),
9354 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9355 MSM_BACKEND_DAI_PRI_TDM_TX_3, 1, 0,
9356 msm_routing_get_port_mixer,
9357 msm_routing_put_port_mixer),
9358 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9359 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9360 msm_routing_get_port_mixer,
9361 msm_routing_put_port_mixer),
9362 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9363 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9364 msm_routing_get_port_mixer,
9365 msm_routing_put_port_mixer),
9366 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9367 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9368 msm_routing_get_port_mixer,
9369 msm_routing_put_port_mixer),
9370 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9371 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9372 msm_routing_get_port_mixer,
9373 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309374 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9375 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9376 msm_routing_get_port_mixer,
9377 msm_routing_put_port_mixer),
9378 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9379 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9380 msm_routing_get_port_mixer,
9381 msm_routing_put_port_mixer),
9382 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9383 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9384 msm_routing_get_port_mixer,
9385 msm_routing_put_port_mixer),
9386 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_1,
9387 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9388 msm_routing_get_port_mixer,
9389 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309390};
9391
9392static const struct snd_kcontrol_new pri_tdm_rx_2_port_mixer_controls[] = {
9393 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9394 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9395 msm_routing_get_port_mixer,
9396 msm_routing_put_port_mixer),
9397 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9398 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9399 msm_routing_get_port_mixer,
9400 msm_routing_put_port_mixer),
9401 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9402 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9403 msm_routing_get_port_mixer,
9404 msm_routing_put_port_mixer),
9405 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9406 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9407 msm_routing_get_port_mixer,
9408 msm_routing_put_port_mixer),
9409 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9410 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9411 msm_routing_get_port_mixer,
9412 msm_routing_put_port_mixer),
9413 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9414 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9415 msm_routing_get_port_mixer,
9416 msm_routing_put_port_mixer),
9417 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9418 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9419 msm_routing_get_port_mixer,
9420 msm_routing_put_port_mixer),
9421 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9422 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9423 msm_routing_get_port_mixer,
9424 msm_routing_put_port_mixer),
9425 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9426 MSM_BACKEND_DAI_PRI_TDM_TX_0, 1, 0,
9427 msm_routing_get_port_mixer,
9428 msm_routing_put_port_mixer),
9429 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9430 MSM_BACKEND_DAI_PRI_TDM_TX_1, 1, 0,
9431 msm_routing_get_port_mixer,
9432 msm_routing_put_port_mixer),
9433 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9434 MSM_BACKEND_DAI_PRI_TDM_TX_2, 1, 0,
9435 msm_routing_get_port_mixer,
9436 msm_routing_put_port_mixer),
9437 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9438 MSM_BACKEND_DAI_PRI_TDM_TX_3, 1, 0,
9439 msm_routing_get_port_mixer,
9440 msm_routing_put_port_mixer),
9441 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9442 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9443 msm_routing_get_port_mixer,
9444 msm_routing_put_port_mixer),
9445 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9446 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9447 msm_routing_get_port_mixer,
9448 msm_routing_put_port_mixer),
9449 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9450 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9451 msm_routing_get_port_mixer,
9452 msm_routing_put_port_mixer),
9453 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9454 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9455 msm_routing_get_port_mixer,
9456 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309457 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9458 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9459 msm_routing_get_port_mixer,
9460 msm_routing_put_port_mixer),
9461 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9462 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9463 msm_routing_get_port_mixer,
9464 msm_routing_put_port_mixer),
9465 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9466 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9467 msm_routing_get_port_mixer,
9468 msm_routing_put_port_mixer),
9469 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_2,
9470 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9471 msm_routing_get_port_mixer,
9472 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309473};
9474
9475static const struct snd_kcontrol_new pri_tdm_rx_3_port_mixer_controls[] = {
9476 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9477 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9478 msm_routing_get_port_mixer,
9479 msm_routing_put_port_mixer),
9480 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9481 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9482 msm_routing_get_port_mixer,
9483 msm_routing_put_port_mixer),
9484 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9485 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9486 msm_routing_get_port_mixer,
9487 msm_routing_put_port_mixer),
9488 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9489 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9490 msm_routing_get_port_mixer,
9491 msm_routing_put_port_mixer),
9492 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9493 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9494 msm_routing_get_port_mixer,
9495 msm_routing_put_port_mixer),
9496 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9497 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9498 msm_routing_get_port_mixer,
9499 msm_routing_put_port_mixer),
9500 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9501 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9502 msm_routing_get_port_mixer,
9503 msm_routing_put_port_mixer),
9504 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9505 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9506 msm_routing_get_port_mixer,
9507 msm_routing_put_port_mixer),
9508 SOC_SINGLE_EXT("PRI_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9509 MSM_BACKEND_DAI_PRI_TDM_TX_0, 1, 0,
9510 msm_routing_get_port_mixer,
9511 msm_routing_put_port_mixer),
9512 SOC_SINGLE_EXT("PRI_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9513 MSM_BACKEND_DAI_PRI_TDM_TX_1, 1, 0,
9514 msm_routing_get_port_mixer,
9515 msm_routing_put_port_mixer),
9516 SOC_SINGLE_EXT("PRI_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9517 MSM_BACKEND_DAI_PRI_TDM_TX_2, 1, 0,
9518 msm_routing_get_port_mixer,
9519 msm_routing_put_port_mixer),
9520 SOC_SINGLE_EXT("PRI_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9521 MSM_BACKEND_DAI_PRI_TDM_TX_3, 1, 0,
9522 msm_routing_get_port_mixer,
9523 msm_routing_put_port_mixer),
9524 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9525 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9526 msm_routing_get_port_mixer,
9527 msm_routing_put_port_mixer),
9528 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9529 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9530 msm_routing_get_port_mixer,
9531 msm_routing_put_port_mixer),
9532 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9533 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9534 msm_routing_get_port_mixer,
9535 msm_routing_put_port_mixer),
9536 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9537 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9538 msm_routing_get_port_mixer,
9539 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309540 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9541 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9542 msm_routing_get_port_mixer,
9543 msm_routing_put_port_mixer),
9544 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9545 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9546 msm_routing_get_port_mixer,
9547 msm_routing_put_port_mixer),
9548 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9549 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9550 msm_routing_get_port_mixer,
9551 msm_routing_put_port_mixer),
9552 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_PRI_TDM_RX_3,
9553 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9554 msm_routing_get_port_mixer,
9555 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309556};
9557
9558static const struct snd_kcontrol_new sec_tdm_rx_0_port_mixer_controls[] = {
9559 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9560 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9561 msm_routing_get_port_mixer,
9562 msm_routing_put_port_mixer),
9563 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9564 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9565 msm_routing_get_port_mixer,
9566 msm_routing_put_port_mixer),
9567 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9568 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9569 msm_routing_get_port_mixer,
9570 msm_routing_put_port_mixer),
9571 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9572 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9573 msm_routing_get_port_mixer,
9574 msm_routing_put_port_mixer),
9575 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9576 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9577 msm_routing_get_port_mixer,
9578 msm_routing_put_port_mixer),
9579 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9580 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9581 msm_routing_get_port_mixer,
9582 msm_routing_put_port_mixer),
9583 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9584 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9585 msm_routing_get_port_mixer,
9586 msm_routing_put_port_mixer),
9587 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9588 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9589 msm_routing_get_port_mixer,
9590 msm_routing_put_port_mixer),
9591 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9592 MSM_BACKEND_DAI_SEC_TDM_TX_0, 1, 0,
9593 msm_routing_get_port_mixer,
9594 msm_routing_put_port_mixer),
9595 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9596 MSM_BACKEND_DAI_SEC_TDM_TX_1, 1, 0,
9597 msm_routing_get_port_mixer,
9598 msm_routing_put_port_mixer),
9599 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9600 MSM_BACKEND_DAI_SEC_TDM_TX_2, 1, 0,
9601 msm_routing_get_port_mixer,
9602 msm_routing_put_port_mixer),
9603 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9604 MSM_BACKEND_DAI_SEC_TDM_TX_3, 1, 0,
9605 msm_routing_get_port_mixer,
9606 msm_routing_put_port_mixer),
9607 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9608 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9609 msm_routing_get_port_mixer,
9610 msm_routing_put_port_mixer),
9611 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9612 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9613 msm_routing_get_port_mixer,
9614 msm_routing_put_port_mixer),
9615 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9616 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9617 msm_routing_get_port_mixer,
9618 msm_routing_put_port_mixer),
9619 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9620 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9621 msm_routing_get_port_mixer,
9622 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309623 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9624 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9625 msm_routing_get_port_mixer,
9626 msm_routing_put_port_mixer),
9627 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9628 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9629 msm_routing_get_port_mixer,
9630 msm_routing_put_port_mixer),
9631 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9632 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9633 msm_routing_get_port_mixer,
9634 msm_routing_put_port_mixer),
9635 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_0,
9636 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9637 msm_routing_get_port_mixer,
9638 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309639};
9640
9641static const struct snd_kcontrol_new sec_tdm_rx_1_port_mixer_controls[] = {
9642 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9643 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9644 msm_routing_get_port_mixer,
9645 msm_routing_put_port_mixer),
9646 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9647 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9648 msm_routing_get_port_mixer,
9649 msm_routing_put_port_mixer),
9650 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9651 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9652 msm_routing_get_port_mixer,
9653 msm_routing_put_port_mixer),
9654 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9655 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9656 msm_routing_get_port_mixer,
9657 msm_routing_put_port_mixer),
9658 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9659 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9660 msm_routing_get_port_mixer,
9661 msm_routing_put_port_mixer),
9662 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9663 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9664 msm_routing_get_port_mixer,
9665 msm_routing_put_port_mixer),
9666 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9667 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9668 msm_routing_get_port_mixer,
9669 msm_routing_put_port_mixer),
9670 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9671 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9672 msm_routing_get_port_mixer,
9673 msm_routing_put_port_mixer),
9674 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9675 MSM_BACKEND_DAI_SEC_TDM_TX_0, 1, 0,
9676 msm_routing_get_port_mixer,
9677 msm_routing_put_port_mixer),
9678 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9679 MSM_BACKEND_DAI_SEC_TDM_TX_1, 1, 0,
9680 msm_routing_get_port_mixer,
9681 msm_routing_put_port_mixer),
9682 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9683 MSM_BACKEND_DAI_SEC_TDM_TX_2, 1, 0,
9684 msm_routing_get_port_mixer,
9685 msm_routing_put_port_mixer),
9686 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9687 MSM_BACKEND_DAI_SEC_TDM_TX_3, 1, 0,
9688 msm_routing_get_port_mixer,
9689 msm_routing_put_port_mixer),
9690 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9691 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9692 msm_routing_get_port_mixer,
9693 msm_routing_put_port_mixer),
9694 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9695 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9696 msm_routing_get_port_mixer,
9697 msm_routing_put_port_mixer),
9698 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9699 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9700 msm_routing_get_port_mixer,
9701 msm_routing_put_port_mixer),
9702 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9703 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9704 msm_routing_get_port_mixer,
9705 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309706 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9707 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9708 msm_routing_get_port_mixer,
9709 msm_routing_put_port_mixer),
9710 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9711 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9712 msm_routing_get_port_mixer,
9713 msm_routing_put_port_mixer),
9714 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9715 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9716 msm_routing_get_port_mixer,
9717 msm_routing_put_port_mixer),
9718 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_1,
9719 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9720 msm_routing_get_port_mixer,
9721 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309722};
9723
9724static const struct snd_kcontrol_new sec_tdm_rx_2_port_mixer_controls[] = {
9725 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9726 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9727 msm_routing_get_port_mixer,
9728 msm_routing_put_port_mixer),
9729 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9730 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9731 msm_routing_get_port_mixer,
9732 msm_routing_put_port_mixer),
9733 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9734 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9735 msm_routing_get_port_mixer,
9736 msm_routing_put_port_mixer),
9737 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9738 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9739 msm_routing_get_port_mixer,
9740 msm_routing_put_port_mixer),
9741 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9742 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9743 msm_routing_get_port_mixer,
9744 msm_routing_put_port_mixer),
9745 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9746 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9747 msm_routing_get_port_mixer,
9748 msm_routing_put_port_mixer),
9749 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9750 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9751 msm_routing_get_port_mixer,
9752 msm_routing_put_port_mixer),
9753 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9754 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9755 msm_routing_get_port_mixer,
9756 msm_routing_put_port_mixer),
9757 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9758 MSM_BACKEND_DAI_SEC_TDM_TX_0, 1, 0,
9759 msm_routing_get_port_mixer,
9760 msm_routing_put_port_mixer),
9761 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9762 MSM_BACKEND_DAI_SEC_TDM_TX_1, 1, 0,
9763 msm_routing_get_port_mixer,
9764 msm_routing_put_port_mixer),
9765 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9766 MSM_BACKEND_DAI_SEC_TDM_TX_2, 1, 0,
9767 msm_routing_get_port_mixer,
9768 msm_routing_put_port_mixer),
9769 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9770 MSM_BACKEND_DAI_SEC_TDM_TX_3, 1, 0,
9771 msm_routing_get_port_mixer,
9772 msm_routing_put_port_mixer),
9773 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9774 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9775 msm_routing_get_port_mixer,
9776 msm_routing_put_port_mixer),
9777 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9778 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9779 msm_routing_get_port_mixer,
9780 msm_routing_put_port_mixer),
9781 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9782 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9783 msm_routing_get_port_mixer,
9784 msm_routing_put_port_mixer),
9785 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9786 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9787 msm_routing_get_port_mixer,
9788 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309789 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9790 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9791 msm_routing_get_port_mixer,
9792 msm_routing_put_port_mixer),
9793 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9794 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9795 msm_routing_get_port_mixer,
9796 msm_routing_put_port_mixer),
9797 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9798 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9799 msm_routing_get_port_mixer,
9800 msm_routing_put_port_mixer),
9801 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_2,
9802 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9803 msm_routing_get_port_mixer,
9804 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309805};
9806
9807static const struct snd_kcontrol_new sec_tdm_rx_3_port_mixer_controls[] = {
9808 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9809 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9810 msm_routing_get_port_mixer,
9811 msm_routing_put_port_mixer),
9812 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9813 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9814 msm_routing_get_port_mixer,
9815 msm_routing_put_port_mixer),
9816 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9817 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9818 msm_routing_get_port_mixer,
9819 msm_routing_put_port_mixer),
9820 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9821 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9822 msm_routing_get_port_mixer,
9823 msm_routing_put_port_mixer),
9824 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9825 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9826 msm_routing_get_port_mixer,
9827 msm_routing_put_port_mixer),
9828 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9829 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9830 msm_routing_get_port_mixer,
9831 msm_routing_put_port_mixer),
9832 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9833 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9834 msm_routing_get_port_mixer,
9835 msm_routing_put_port_mixer),
9836 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9837 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9838 msm_routing_get_port_mixer,
9839 msm_routing_put_port_mixer),
9840 SOC_SINGLE_EXT("SEC_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9841 MSM_BACKEND_DAI_SEC_TDM_TX_0, 1, 0,
9842 msm_routing_get_port_mixer,
9843 msm_routing_put_port_mixer),
9844 SOC_SINGLE_EXT("SEC_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9845 MSM_BACKEND_DAI_SEC_TDM_TX_1, 1, 0,
9846 msm_routing_get_port_mixer,
9847 msm_routing_put_port_mixer),
9848 SOC_SINGLE_EXT("SEC_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9849 MSM_BACKEND_DAI_SEC_TDM_TX_2, 1, 0,
9850 msm_routing_get_port_mixer,
9851 msm_routing_put_port_mixer),
9852 SOC_SINGLE_EXT("SEC_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9853 MSM_BACKEND_DAI_SEC_TDM_TX_3, 1, 0,
9854 msm_routing_get_port_mixer,
9855 msm_routing_put_port_mixer),
9856 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9857 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9858 msm_routing_get_port_mixer,
9859 msm_routing_put_port_mixer),
9860 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9861 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9862 msm_routing_get_port_mixer,
9863 msm_routing_put_port_mixer),
9864 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9865 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9866 msm_routing_get_port_mixer,
9867 msm_routing_put_port_mixer),
9868 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9869 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9870 msm_routing_get_port_mixer,
9871 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309872 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9873 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9874 msm_routing_get_port_mixer,
9875 msm_routing_put_port_mixer),
9876 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9877 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9878 msm_routing_get_port_mixer,
9879 msm_routing_put_port_mixer),
9880 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9881 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9882 msm_routing_get_port_mixer,
9883 msm_routing_put_port_mixer),
9884 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_SEC_TDM_RX_3,
9885 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9886 msm_routing_get_port_mixer,
9887 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309888};
9889
9890static const struct snd_kcontrol_new tert_tdm_rx_0_port_mixer_controls[] = {
9891 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
9892 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9893 msm_routing_get_port_mixer,
9894 msm_routing_put_port_mixer),
9895 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
9896 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9897 msm_routing_get_port_mixer,
9898 msm_routing_put_port_mixer),
9899 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
9900 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9901 msm_routing_get_port_mixer,
9902 msm_routing_put_port_mixer),
9903 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
9904 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9905 msm_routing_get_port_mixer,
9906 msm_routing_put_port_mixer),
9907 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
9908 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9909 msm_routing_get_port_mixer,
9910 msm_routing_put_port_mixer),
9911 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
9912 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9913 msm_routing_get_port_mixer,
9914 msm_routing_put_port_mixer),
9915 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
9916 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
9917 msm_routing_get_port_mixer,
9918 msm_routing_put_port_mixer),
9919 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_0,
9920 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
9921 msm_routing_get_port_mixer,
9922 msm_routing_put_port_mixer),
9923 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_0,
9924 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
9925 msm_routing_get_port_mixer,
9926 msm_routing_put_port_mixer),
9927 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_0,
9928 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
9929 msm_routing_get_port_mixer,
9930 msm_routing_put_port_mixer),
9931 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_0,
9932 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
9933 msm_routing_get_port_mixer,
9934 msm_routing_put_port_mixer),
9935 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_0,
9936 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
9937 msm_routing_get_port_mixer,
9938 msm_routing_put_port_mixer),
9939 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_0,
9940 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
9941 msm_routing_get_port_mixer,
9942 msm_routing_put_port_mixer),
9943 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_0,
9944 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
9945 msm_routing_get_port_mixer,
9946 msm_routing_put_port_mixer),
9947 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_0,
9948 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
9949 msm_routing_get_port_mixer,
9950 msm_routing_put_port_mixer),
9951 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_0,
9952 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
9953 msm_routing_get_port_mixer,
9954 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +05309955 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_0,
9956 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
9957 msm_routing_get_port_mixer,
9958 msm_routing_put_port_mixer),
9959 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_0,
9960 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
9961 msm_routing_get_port_mixer,
9962 msm_routing_put_port_mixer),
9963 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_0,
9964 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
9965 msm_routing_get_port_mixer,
9966 msm_routing_put_port_mixer),
9967 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_0,
9968 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
9969 msm_routing_get_port_mixer,
9970 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +05309971};
9972
9973static const struct snd_kcontrol_new tert_tdm_rx_1_port_mixer_controls[] = {
9974 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
9975 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
9976 msm_routing_get_port_mixer,
9977 msm_routing_put_port_mixer),
9978 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
9979 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
9980 msm_routing_get_port_mixer,
9981 msm_routing_put_port_mixer),
9982 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
9983 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
9984 msm_routing_get_port_mixer,
9985 msm_routing_put_port_mixer),
9986 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
9987 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
9988 msm_routing_get_port_mixer,
9989 msm_routing_put_port_mixer),
9990 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
9991 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
9992 msm_routing_get_port_mixer,
9993 msm_routing_put_port_mixer),
9994 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
9995 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
9996 msm_routing_get_port_mixer,
9997 msm_routing_put_port_mixer),
9998 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
9999 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10000 msm_routing_get_port_mixer,
10001 msm_routing_put_port_mixer),
10002 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10003 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10004 msm_routing_get_port_mixer,
10005 msm_routing_put_port_mixer),
10006 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10007 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10008 msm_routing_get_port_mixer,
10009 msm_routing_put_port_mixer),
10010 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10011 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10012 msm_routing_get_port_mixer,
10013 msm_routing_put_port_mixer),
10014 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10015 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10016 msm_routing_get_port_mixer,
10017 msm_routing_put_port_mixer),
10018 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10019 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10020 msm_routing_get_port_mixer,
10021 msm_routing_put_port_mixer),
10022 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10023 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10024 msm_routing_get_port_mixer,
10025 msm_routing_put_port_mixer),
10026 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10027 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10028 msm_routing_get_port_mixer,
10029 msm_routing_put_port_mixer),
10030 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10031 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10032 msm_routing_get_port_mixer,
10033 msm_routing_put_port_mixer),
10034 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10035 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10036 msm_routing_get_port_mixer,
10037 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010038 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10039 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10040 msm_routing_get_port_mixer,
10041 msm_routing_put_port_mixer),
10042 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10043 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10044 msm_routing_get_port_mixer,
10045 msm_routing_put_port_mixer),
10046 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10047 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10048 msm_routing_get_port_mixer,
10049 msm_routing_put_port_mixer),
10050 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_1,
10051 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10052 msm_routing_get_port_mixer,
10053 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010054};
10055
10056static const struct snd_kcontrol_new tert_tdm_rx_2_port_mixer_controls[] = {
10057 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10058 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10059 msm_routing_get_port_mixer,
10060 msm_routing_put_port_mixer),
10061 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10062 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10063 msm_routing_get_port_mixer,
10064 msm_routing_put_port_mixer),
10065 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10066 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
10067 msm_routing_get_port_mixer,
10068 msm_routing_put_port_mixer),
10069 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10070 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10071 msm_routing_get_port_mixer,
10072 msm_routing_put_port_mixer),
10073 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10074 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10075 msm_routing_get_port_mixer,
10076 msm_routing_put_port_mixer),
10077 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10078 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10079 msm_routing_get_port_mixer,
10080 msm_routing_put_port_mixer),
10081 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10082 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10083 msm_routing_get_port_mixer,
10084 msm_routing_put_port_mixer),
10085 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10086 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10087 msm_routing_get_port_mixer,
10088 msm_routing_put_port_mixer),
10089 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10090 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10091 msm_routing_get_port_mixer,
10092 msm_routing_put_port_mixer),
10093 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10094 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10095 msm_routing_get_port_mixer,
10096 msm_routing_put_port_mixer),
10097 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10098 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10099 msm_routing_get_port_mixer,
10100 msm_routing_put_port_mixer),
10101 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10102 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10103 msm_routing_get_port_mixer,
10104 msm_routing_put_port_mixer),
10105 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10106 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10107 msm_routing_get_port_mixer,
10108 msm_routing_put_port_mixer),
10109 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10110 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10111 msm_routing_get_port_mixer,
10112 msm_routing_put_port_mixer),
10113 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10114 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10115 msm_routing_get_port_mixer,
10116 msm_routing_put_port_mixer),
10117 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10118 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10119 msm_routing_get_port_mixer,
10120 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010121 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10122 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10123 msm_routing_get_port_mixer,
10124 msm_routing_put_port_mixer),
10125 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10126 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10127 msm_routing_get_port_mixer,
10128 msm_routing_put_port_mixer),
10129 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10130 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10131 msm_routing_get_port_mixer,
10132 msm_routing_put_port_mixer),
10133 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_2,
10134 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10135 msm_routing_get_port_mixer,
10136 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010137};
10138
10139static const struct snd_kcontrol_new tert_tdm_rx_3_port_mixer_controls[] = {
10140 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10141 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10142 msm_routing_get_port_mixer,
10143 msm_routing_put_port_mixer),
10144 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10145 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10146 msm_routing_get_port_mixer,
10147 msm_routing_put_port_mixer),
10148 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10149 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0,
10150 msm_routing_get_port_mixer,
10151 msm_routing_put_port_mixer),
10152 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10153 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10154 msm_routing_get_port_mixer,
10155 msm_routing_put_port_mixer),
10156 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10157 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10158 msm_routing_get_port_mixer,
10159 msm_routing_put_port_mixer),
10160 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10161 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10162 msm_routing_get_port_mixer,
10163 msm_routing_put_port_mixer),
10164 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10165 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10166 msm_routing_get_port_mixer,
10167 msm_routing_put_port_mixer),
10168 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10169 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10170 msm_routing_get_port_mixer,
10171 msm_routing_put_port_mixer),
10172 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10173 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10174 msm_routing_get_port_mixer,
10175 msm_routing_put_port_mixer),
10176 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10177 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10178 msm_routing_get_port_mixer,
10179 msm_routing_put_port_mixer),
10180 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10181 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10182 msm_routing_get_port_mixer,
10183 msm_routing_put_port_mixer),
10184 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10185 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10186 msm_routing_get_port_mixer,
10187 msm_routing_put_port_mixer),
10188 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10189 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10190 msm_routing_get_port_mixer,
10191 msm_routing_put_port_mixer),
10192 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10193 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10194 msm_routing_get_port_mixer,
10195 msm_routing_put_port_mixer),
10196 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10197 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10198 msm_routing_get_port_mixer,
10199 msm_routing_put_port_mixer),
10200 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10201 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10202 msm_routing_get_port_mixer,
10203 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010204 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10205 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10206 msm_routing_get_port_mixer,
10207 msm_routing_put_port_mixer),
10208 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10209 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10210 msm_routing_get_port_mixer,
10211 msm_routing_put_port_mixer),
10212 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10213 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10214 msm_routing_get_port_mixer,
10215 msm_routing_put_port_mixer),
10216 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_TERT_TDM_RX_3,
10217 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10218 msm_routing_get_port_mixer,
10219 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010220};
10221
10222static const struct snd_kcontrol_new quat_tdm_rx_0_port_mixer_controls[] = {
10223 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10224 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10225 msm_routing_get_port_mixer,
10226 msm_routing_put_port_mixer),
10227 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10228 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10229 msm_routing_get_port_mixer,
10230 msm_routing_put_port_mixer),
10231 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10232 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10233 msm_routing_get_port_mixer,
10234 msm_routing_put_port_mixer),
10235 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10236 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10237 msm_routing_get_port_mixer,
10238 msm_routing_put_port_mixer),
10239 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10240 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10241 msm_routing_get_port_mixer,
10242 msm_routing_put_port_mixer),
10243 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10244 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10245 msm_routing_get_port_mixer,
10246 msm_routing_put_port_mixer),
10247 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10248 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10249 msm_routing_get_port_mixer,
10250 msm_routing_put_port_mixer),
10251 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10252 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10253 msm_routing_get_port_mixer,
10254 msm_routing_put_port_mixer),
10255 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10256 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10257 msm_routing_get_port_mixer,
10258 msm_routing_put_port_mixer),
10259 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10260 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10261 msm_routing_get_port_mixer,
10262 msm_routing_put_port_mixer),
10263 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10264 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10265 msm_routing_get_port_mixer,
10266 msm_routing_put_port_mixer),
10267 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10268 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10269 msm_routing_get_port_mixer,
10270 msm_routing_put_port_mixer),
10271 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10272 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10273 msm_routing_get_port_mixer,
10274 msm_routing_put_port_mixer),
10275 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10276 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10277 msm_routing_get_port_mixer,
10278 msm_routing_put_port_mixer),
10279 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10280 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10281 msm_routing_get_port_mixer,
10282 msm_routing_put_port_mixer),
10283 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10284 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10285 msm_routing_get_port_mixer,
10286 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010287 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10288 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10289 msm_routing_get_port_mixer,
10290 msm_routing_put_port_mixer),
10291 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10292 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10293 msm_routing_get_port_mixer,
10294 msm_routing_put_port_mixer),
10295 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10296 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10297 msm_routing_get_port_mixer,
10298 msm_routing_put_port_mixer),
10299 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_0,
10300 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10301 msm_routing_get_port_mixer,
10302 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010303};
10304
10305static const struct snd_kcontrol_new quat_tdm_rx_1_port_mixer_controls[] = {
10306 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10307 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10308 msm_routing_get_port_mixer,
10309 msm_routing_put_port_mixer),
10310 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10311 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10312 msm_routing_get_port_mixer,
10313 msm_routing_put_port_mixer),
10314 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10315 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10316 msm_routing_get_port_mixer,
10317 msm_routing_put_port_mixer),
10318 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10319 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10320 msm_routing_get_port_mixer,
10321 msm_routing_put_port_mixer),
10322 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10323 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10324 msm_routing_get_port_mixer,
10325 msm_routing_put_port_mixer),
10326 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10327 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10328 msm_routing_get_port_mixer,
10329 msm_routing_put_port_mixer),
10330 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10331 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10332 msm_routing_get_port_mixer,
10333 msm_routing_put_port_mixer),
10334 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10335 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10336 msm_routing_get_port_mixer,
10337 msm_routing_put_port_mixer),
10338 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10339 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10340 msm_routing_get_port_mixer,
10341 msm_routing_put_port_mixer),
10342 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10343 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10344 msm_routing_get_port_mixer,
10345 msm_routing_put_port_mixer),
10346 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10347 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10348 msm_routing_get_port_mixer,
10349 msm_routing_put_port_mixer),
10350 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10351 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10352 msm_routing_get_port_mixer,
10353 msm_routing_put_port_mixer),
10354 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10355 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10356 msm_routing_get_port_mixer,
10357 msm_routing_put_port_mixer),
10358 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10359 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10360 msm_routing_get_port_mixer,
10361 msm_routing_put_port_mixer),
10362 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10363 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10364 msm_routing_get_port_mixer,
10365 msm_routing_put_port_mixer),
10366 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10367 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10368 msm_routing_get_port_mixer,
10369 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010370 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10371 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10372 msm_routing_get_port_mixer,
10373 msm_routing_put_port_mixer),
10374 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10375 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10376 msm_routing_get_port_mixer,
10377 msm_routing_put_port_mixer),
10378 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10379 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10380 msm_routing_get_port_mixer,
10381 msm_routing_put_port_mixer),
10382 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_1,
10383 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10384 msm_routing_get_port_mixer,
10385 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010386};
10387
10388static const struct snd_kcontrol_new quat_tdm_rx_2_port_mixer_controls[] = {
10389 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10390 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10391 msm_routing_get_port_mixer,
10392 msm_routing_put_port_mixer),
10393 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10394 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10395 msm_routing_get_port_mixer,
10396 msm_routing_put_port_mixer),
10397 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10398 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10399 msm_routing_get_port_mixer,
10400 msm_routing_put_port_mixer),
10401 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10402 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10403 msm_routing_get_port_mixer,
10404 msm_routing_put_port_mixer),
10405 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10406 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10407 msm_routing_get_port_mixer,
10408 msm_routing_put_port_mixer),
10409 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10410 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10411 msm_routing_get_port_mixer,
10412 msm_routing_put_port_mixer),
10413 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10414 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10415 msm_routing_get_port_mixer,
10416 msm_routing_put_port_mixer),
10417 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10418 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10419 msm_routing_get_port_mixer,
10420 msm_routing_put_port_mixer),
10421 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10422 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10423 msm_routing_get_port_mixer,
10424 msm_routing_put_port_mixer),
10425 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10426 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10427 msm_routing_get_port_mixer,
10428 msm_routing_put_port_mixer),
10429 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10430 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10431 msm_routing_get_port_mixer,
10432 msm_routing_put_port_mixer),
10433 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10434 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10435 msm_routing_get_port_mixer,
10436 msm_routing_put_port_mixer),
10437 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10438 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10439 msm_routing_get_port_mixer,
10440 msm_routing_put_port_mixer),
10441 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10442 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10443 msm_routing_get_port_mixer,
10444 msm_routing_put_port_mixer),
10445 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10446 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10447 msm_routing_get_port_mixer,
10448 msm_routing_put_port_mixer),
10449 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10450 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10451 msm_routing_get_port_mixer,
10452 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010453 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10454 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10455 msm_routing_get_port_mixer,
10456 msm_routing_put_port_mixer),
10457 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10458 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10459 msm_routing_get_port_mixer,
10460 msm_routing_put_port_mixer),
10461 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10462 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10463 msm_routing_get_port_mixer,
10464 msm_routing_put_port_mixer),
10465 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_2,
10466 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10467 msm_routing_get_port_mixer,
10468 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010469};
10470
10471static const struct snd_kcontrol_new quat_tdm_rx_3_port_mixer_controls[] = {
10472 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10473 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10474 msm_routing_get_port_mixer,
10475 msm_routing_put_port_mixer),
10476 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10477 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10478 msm_routing_get_port_mixer,
10479 msm_routing_put_port_mixer),
10480 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10481 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10482 msm_routing_get_port_mixer,
10483 msm_routing_put_port_mixer),
10484 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10485 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10486 msm_routing_get_port_mixer,
10487 msm_routing_put_port_mixer),
10488 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10489 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10490 msm_routing_get_port_mixer,
10491 msm_routing_put_port_mixer),
10492 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10493 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10494 msm_routing_get_port_mixer,
10495 msm_routing_put_port_mixer),
10496 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10497 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10498 msm_routing_get_port_mixer,
10499 msm_routing_put_port_mixer),
10500 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10501 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10502 msm_routing_get_port_mixer,
10503 msm_routing_put_port_mixer),
10504 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10505 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10506 msm_routing_get_port_mixer,
10507 msm_routing_put_port_mixer),
10508 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10509 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10510 msm_routing_get_port_mixer,
10511 msm_routing_put_port_mixer),
10512 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10513 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10514 msm_routing_get_port_mixer,
10515 msm_routing_put_port_mixer),
10516 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10517 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10518 msm_routing_get_port_mixer,
10519 msm_routing_put_port_mixer),
10520 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10521 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10522 msm_routing_get_port_mixer,
10523 msm_routing_put_port_mixer),
10524 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10525 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10526 msm_routing_get_port_mixer,
10527 msm_routing_put_port_mixer),
10528 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10529 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10530 msm_routing_get_port_mixer,
10531 msm_routing_put_port_mixer),
10532 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10533 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10534 msm_routing_get_port_mixer,
10535 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010536 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10537 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10538 msm_routing_get_port_mixer,
10539 msm_routing_put_port_mixer),
10540 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10541 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10542 msm_routing_get_port_mixer,
10543 msm_routing_put_port_mixer),
10544 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10545 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10546 msm_routing_get_port_mixer,
10547 msm_routing_put_port_mixer),
10548 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUAT_TDM_RX_3,
10549 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10550 msm_routing_get_port_mixer,
10551 msm_routing_put_port_mixer),
10552};
10553
10554static const struct snd_kcontrol_new quin_tdm_rx_0_port_mixer_controls[] = {
10555 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10556 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10557 msm_routing_get_port_mixer,
10558 msm_routing_put_port_mixer),
10559 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10560 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10561 msm_routing_get_port_mixer,
10562 msm_routing_put_port_mixer),
10563 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10564 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10565 msm_routing_get_port_mixer,
10566 msm_routing_put_port_mixer),
10567 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10568 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10569 msm_routing_get_port_mixer,
10570 msm_routing_put_port_mixer),
10571 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10572 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10573 msm_routing_get_port_mixer,
10574 msm_routing_put_port_mixer),
10575 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10576 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10577 msm_routing_get_port_mixer,
10578 msm_routing_put_port_mixer),
10579 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10580 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10581 msm_routing_get_port_mixer,
10582 msm_routing_put_port_mixer),
10583 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10584 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10585 msm_routing_get_port_mixer,
10586 msm_routing_put_port_mixer),
10587 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10588 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10589 msm_routing_get_port_mixer,
10590 msm_routing_put_port_mixer),
10591 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10592 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10593 msm_routing_get_port_mixer,
10594 msm_routing_put_port_mixer),
10595 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10596 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10597 msm_routing_get_port_mixer,
10598 msm_routing_put_port_mixer),
10599 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10600 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10601 msm_routing_get_port_mixer,
10602 msm_routing_put_port_mixer),
10603 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10604 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10605 msm_routing_get_port_mixer,
10606 msm_routing_put_port_mixer),
10607 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10608 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10609 msm_routing_get_port_mixer,
10610 msm_routing_put_port_mixer),
10611 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10612 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10613 msm_routing_get_port_mixer,
10614 msm_routing_put_port_mixer),
10615 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10616 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10617 msm_routing_get_port_mixer,
10618 msm_routing_put_port_mixer),
10619 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10620 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10621 msm_routing_get_port_mixer,
10622 msm_routing_put_port_mixer),
10623 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10624 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10625 msm_routing_get_port_mixer,
10626 msm_routing_put_port_mixer),
10627 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10628 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10629 msm_routing_get_port_mixer,
10630 msm_routing_put_port_mixer),
10631 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_0,
10632 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10633 msm_routing_get_port_mixer,
10634 msm_routing_put_port_mixer),
10635};
10636
10637static const struct snd_kcontrol_new quin_tdm_rx_1_port_mixer_controls[] = {
10638 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10639 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10640 msm_routing_get_port_mixer,
10641 msm_routing_put_port_mixer),
10642 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10643 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10644 msm_routing_get_port_mixer,
10645 msm_routing_put_port_mixer),
10646 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10647 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10648 msm_routing_get_port_mixer,
10649 msm_routing_put_port_mixer),
10650 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10651 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10652 msm_routing_get_port_mixer,
10653 msm_routing_put_port_mixer),
10654 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10655 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10656 msm_routing_get_port_mixer,
10657 msm_routing_put_port_mixer),
10658 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10659 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10660 msm_routing_get_port_mixer,
10661 msm_routing_put_port_mixer),
10662 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10663 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10664 msm_routing_get_port_mixer,
10665 msm_routing_put_port_mixer),
10666 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10667 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10668 msm_routing_get_port_mixer,
10669 msm_routing_put_port_mixer),
10670 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10671 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10672 msm_routing_get_port_mixer,
10673 msm_routing_put_port_mixer),
10674 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10675 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10676 msm_routing_get_port_mixer,
10677 msm_routing_put_port_mixer),
10678 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10679 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10680 msm_routing_get_port_mixer,
10681 msm_routing_put_port_mixer),
10682 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10683 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10684 msm_routing_get_port_mixer,
10685 msm_routing_put_port_mixer),
10686 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10687 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10688 msm_routing_get_port_mixer,
10689 msm_routing_put_port_mixer),
10690 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10691 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10692 msm_routing_get_port_mixer,
10693 msm_routing_put_port_mixer),
10694 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10695 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10696 msm_routing_get_port_mixer,
10697 msm_routing_put_port_mixer),
10698 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10699 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10700 msm_routing_get_port_mixer,
10701 msm_routing_put_port_mixer),
10702 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10703 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10704 msm_routing_get_port_mixer,
10705 msm_routing_put_port_mixer),
10706 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10707 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10708 msm_routing_get_port_mixer,
10709 msm_routing_put_port_mixer),
10710 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10711 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10712 msm_routing_get_port_mixer,
10713 msm_routing_put_port_mixer),
10714 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_1,
10715 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10716 msm_routing_get_port_mixer,
10717 msm_routing_put_port_mixer),
10718};
10719
10720static const struct snd_kcontrol_new quin_tdm_rx_2_port_mixer_controls[] = {
10721 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10722 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10723 msm_routing_get_port_mixer,
10724 msm_routing_put_port_mixer),
10725 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10726 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10727 msm_routing_get_port_mixer,
10728 msm_routing_put_port_mixer),
10729 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10730 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10731 msm_routing_get_port_mixer,
10732 msm_routing_put_port_mixer),
10733 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10734 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10735 msm_routing_get_port_mixer,
10736 msm_routing_put_port_mixer),
10737 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10738 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10739 msm_routing_get_port_mixer,
10740 msm_routing_put_port_mixer),
10741 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10742 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10743 msm_routing_get_port_mixer,
10744 msm_routing_put_port_mixer),
10745 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10746 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10747 msm_routing_get_port_mixer,
10748 msm_routing_put_port_mixer),
10749 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10750 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10751 msm_routing_get_port_mixer,
10752 msm_routing_put_port_mixer),
10753 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10754 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10755 msm_routing_get_port_mixer,
10756 msm_routing_put_port_mixer),
10757 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10758 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10759 msm_routing_get_port_mixer,
10760 msm_routing_put_port_mixer),
10761 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10762 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10763 msm_routing_get_port_mixer,
10764 msm_routing_put_port_mixer),
10765 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10766 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10767 msm_routing_get_port_mixer,
10768 msm_routing_put_port_mixer),
10769 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10770 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10771 msm_routing_get_port_mixer,
10772 msm_routing_put_port_mixer),
10773 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10774 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10775 msm_routing_get_port_mixer,
10776 msm_routing_put_port_mixer),
10777 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10778 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10779 msm_routing_get_port_mixer,
10780 msm_routing_put_port_mixer),
10781 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10782 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10783 msm_routing_get_port_mixer,
10784 msm_routing_put_port_mixer),
10785 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10786 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10787 msm_routing_get_port_mixer,
10788 msm_routing_put_port_mixer),
10789 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10790 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10791 msm_routing_get_port_mixer,
10792 msm_routing_put_port_mixer),
10793 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10794 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10795 msm_routing_get_port_mixer,
10796 msm_routing_put_port_mixer),
10797 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_2,
10798 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10799 msm_routing_get_port_mixer,
10800 msm_routing_put_port_mixer),
10801};
10802
10803static const struct snd_kcontrol_new quin_tdm_rx_3_port_mixer_controls[] = {
10804 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10805 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0,
10806 msm_routing_get_port_mixer,
10807 msm_routing_put_port_mixer),
10808 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10809 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0,
10810 msm_routing_get_port_mixer,
10811 msm_routing_put_port_mixer),
10812 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10813 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0,
10814 msm_routing_get_port_mixer,
10815 msm_routing_put_port_mixer),
10816 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10817 MSM_BACKEND_DAI_INT_FM_TX, 1, 0,
10818 msm_routing_get_port_mixer,
10819 msm_routing_put_port_mixer),
10820 SOC_SINGLE_EXT("INTERNAL_BT_SCO_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10821 MSM_BACKEND_DAI_INT_BT_SCO_TX, 1, 0,
10822 msm_routing_get_port_mixer,
10823 msm_routing_put_port_mixer),
10824 SOC_SINGLE_EXT("AFE_PCM_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10825 MSM_BACKEND_DAI_AFE_PCM_TX, 1, 0,
10826 msm_routing_get_port_mixer,
10827 msm_routing_put_port_mixer),
10828 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10829 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0,
10830 msm_routing_get_port_mixer,
10831 msm_routing_put_port_mixer),
10832 SOC_SINGLE_EXT("SEC_AUX_PCM_UL_TX", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10833 MSM_BACKEND_DAI_SEC_AUXPCM_TX, 1, 0,
10834 msm_routing_get_port_mixer,
10835 msm_routing_put_port_mixer),
10836 SOC_SINGLE_EXT("TERT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10837 MSM_BACKEND_DAI_TERT_TDM_TX_0, 1, 0,
10838 msm_routing_get_port_mixer,
10839 msm_routing_put_port_mixer),
10840 SOC_SINGLE_EXT("TERT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10841 MSM_BACKEND_DAI_TERT_TDM_TX_1, 1, 0,
10842 msm_routing_get_port_mixer,
10843 msm_routing_put_port_mixer),
10844 SOC_SINGLE_EXT("TERT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10845 MSM_BACKEND_DAI_TERT_TDM_TX_2, 1, 0,
10846 msm_routing_get_port_mixer,
10847 msm_routing_put_port_mixer),
10848 SOC_SINGLE_EXT("TERT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10849 MSM_BACKEND_DAI_TERT_TDM_TX_3, 1, 0,
10850 msm_routing_get_port_mixer,
10851 msm_routing_put_port_mixer),
10852 SOC_SINGLE_EXT("QUAT_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10853 MSM_BACKEND_DAI_QUAT_TDM_TX_0, 1, 0,
10854 msm_routing_get_port_mixer,
10855 msm_routing_put_port_mixer),
10856 SOC_SINGLE_EXT("QUAT_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10857 MSM_BACKEND_DAI_QUAT_TDM_TX_1, 1, 0,
10858 msm_routing_get_port_mixer,
10859 msm_routing_put_port_mixer),
10860 SOC_SINGLE_EXT("QUAT_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10861 MSM_BACKEND_DAI_QUAT_TDM_TX_2, 1, 0,
10862 msm_routing_get_port_mixer,
10863 msm_routing_put_port_mixer),
10864 SOC_SINGLE_EXT("QUAT_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10865 MSM_BACKEND_DAI_QUAT_TDM_TX_3, 1, 0,
10866 msm_routing_get_port_mixer,
10867 msm_routing_put_port_mixer),
10868 SOC_SINGLE_EXT("QUIN_TDM_TX_0", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10869 MSM_BACKEND_DAI_QUIN_TDM_TX_0, 1, 0,
10870 msm_routing_get_port_mixer,
10871 msm_routing_put_port_mixer),
10872 SOC_SINGLE_EXT("QUIN_TDM_TX_1", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10873 MSM_BACKEND_DAI_QUIN_TDM_TX_1, 1, 0,
10874 msm_routing_get_port_mixer,
10875 msm_routing_put_port_mixer),
10876 SOC_SINGLE_EXT("QUIN_TDM_TX_2", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10877 MSM_BACKEND_DAI_QUIN_TDM_TX_2, 1, 0,
10878 msm_routing_get_port_mixer,
10879 msm_routing_put_port_mixer),
10880 SOC_SINGLE_EXT("QUIN_TDM_TX_3", MSM_BACKEND_DAI_QUIN_TDM_RX_3,
10881 MSM_BACKEND_DAI_QUIN_TDM_TX_3, 1, 0,
10882 msm_routing_get_port_mixer,
10883 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010884};
10885
10886static const struct snd_kcontrol_new tert_mi2s_rx_port_mixer_controls[] = {
10887 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
10888 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
10889 msm_routing_put_port_mixer),
10890 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
10891 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
10892 msm_routing_put_port_mixer),
10893 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
10894 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
10895 msm_routing_put_port_mixer),
10896 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
10897 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
10898 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010899 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
10900 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
10901 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010902 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
10903 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
10904 msm_routing_put_port_mixer),
10905 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_RX,
10906 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
10907 msm_routing_put_port_mixer),
10908};
10909
10910static const struct snd_kcontrol_new sec_mi2s_rx_port_mixer_controls[] = {
10911 SOC_SINGLE_EXT("PRI_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
10912 MSM_BACKEND_DAI_PRI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
10913 msm_routing_put_port_mixer),
10914 SOC_SINGLE_EXT("SEC_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
10915 MSM_BACKEND_DAI_SECONDARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
10916 msm_routing_put_port_mixer),
10917 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
10918 MSM_BACKEND_DAI_TERTIARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
10919 msm_routing_put_port_mixer),
10920 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
10921 MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
10922 msm_routing_put_port_mixer),
Rohit Kumara5077932017-09-10 22:05:05 +053010923 SOC_SINGLE_EXT("QUIN_MI2S_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
10924 MSM_BACKEND_DAI_QUINARY_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
10925 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010926 SOC_SINGLE_EXT("SLIM_0_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
10927 MSM_BACKEND_DAI_SLIMBUS_0_TX, 1, 0, msm_routing_get_port_mixer,
10928 msm_routing_put_port_mixer),
10929 SOC_SINGLE_EXT("INTERNAL_FM_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
10930 MSM_BACKEND_DAI_INT_FM_TX, 1, 0, msm_routing_get_port_mixer,
10931 msm_routing_put_port_mixer),
10932 SOC_SINGLE_EXT("SLIM_8_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
10933 MSM_BACKEND_DAI_SLIMBUS_8_TX, 1, 0, msm_routing_get_port_mixer,
10934 msm_routing_put_port_mixer),
Karthikeyan Mani9f66f6f2017-12-13 13:38:46 -080010935 SOC_SINGLE_EXT("AUX_PCM_UL_TX", MSM_BACKEND_DAI_SECONDARY_MI2S_RX,
10936 MSM_BACKEND_DAI_AUXPCM_TX, 1, 0, msm_routing_get_port_mixer,
10937 msm_routing_put_port_mixer),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053010938};
10939
10940static const struct snd_kcontrol_new lsm1_mixer_controls[] = {
10941 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
10942 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
10943 msm_routing_put_listen_mixer),
10944 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
10945 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
10946 msm_routing_put_listen_mixer),
10947 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
10948 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
10949 msm_routing_put_listen_mixer),
10950 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
10951 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
10952 msm_routing_put_listen_mixer),
10953 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
10954 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
10955 msm_routing_put_listen_mixer),
10956 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
10957 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
10958 msm_routing_put_listen_mixer),
10959 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
10960 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
10961 msm_routing_put_listen_mixer),
10962 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
10963 MSM_FRONTEND_DAI_LSM1, 1, 0, msm_routing_get_listen_mixer,
10964 msm_routing_put_listen_mixer),
10965};
10966
10967static const struct snd_kcontrol_new lsm2_mixer_controls[] = {
10968 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
10969 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
10970 msm_routing_put_listen_mixer),
10971 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
10972 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
10973 msm_routing_put_listen_mixer),
10974 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
10975 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
10976 msm_routing_put_listen_mixer),
10977 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
10978 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
10979 msm_routing_put_listen_mixer),
10980 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
10981 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
10982 msm_routing_put_listen_mixer),
10983 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
10984 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
10985 msm_routing_put_listen_mixer),
10986 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
10987 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
10988 msm_routing_put_listen_mixer),
10989 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
10990 MSM_FRONTEND_DAI_LSM2, 1, 0, msm_routing_get_listen_mixer,
10991 msm_routing_put_listen_mixer),
10992};
10993
10994static const struct snd_kcontrol_new lsm3_mixer_controls[] = {
10995 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
10996 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
10997 msm_routing_put_listen_mixer),
10998 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
10999 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11000 msm_routing_put_listen_mixer),
11001 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11002 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11003 msm_routing_put_listen_mixer),
11004 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11005 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11006 msm_routing_put_listen_mixer),
11007 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11008 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11009 msm_routing_put_listen_mixer),
11010 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11011 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11012 msm_routing_put_listen_mixer),
11013 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11014 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11015 msm_routing_put_listen_mixer),
11016 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11017 MSM_FRONTEND_DAI_LSM3, 1, 0, msm_routing_get_listen_mixer,
11018 msm_routing_put_listen_mixer),
11019};
11020
11021static const struct snd_kcontrol_new lsm4_mixer_controls[] = {
11022 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11023 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11024 msm_routing_put_listen_mixer),
11025 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11026 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11027 msm_routing_put_listen_mixer),
11028 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11029 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11030 msm_routing_put_listen_mixer),
11031 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11032 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11033 msm_routing_put_listen_mixer),
11034 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11035 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11036 msm_routing_put_listen_mixer),
11037 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11038 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11039 msm_routing_put_listen_mixer),
11040 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11041 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11042 msm_routing_put_listen_mixer),
11043 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11044 MSM_FRONTEND_DAI_LSM4, 1, 0, msm_routing_get_listen_mixer,
11045 msm_routing_put_listen_mixer),
11046};
11047
11048static const struct snd_kcontrol_new lsm5_mixer_controls[] = {
11049 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11050 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11051 msm_routing_put_listen_mixer),
11052 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11053 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11054 msm_routing_put_listen_mixer),
11055 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11056 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11057 msm_routing_put_listen_mixer),
11058 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11059 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11060 msm_routing_put_listen_mixer),
11061 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11062 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11063 msm_routing_put_listen_mixer),
11064 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11065 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11066 msm_routing_put_listen_mixer),
11067 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11068 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11069 msm_routing_put_listen_mixer),
11070 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11071 MSM_FRONTEND_DAI_LSM5, 1, 0, msm_routing_get_listen_mixer,
11072 msm_routing_put_listen_mixer),
11073};
11074
11075static const struct snd_kcontrol_new lsm6_mixer_controls[] = {
11076 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11077 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11078 msm_routing_put_listen_mixer),
11079 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11080 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11081 msm_routing_put_listen_mixer),
11082 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11083 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11084 msm_routing_put_listen_mixer),
11085 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11086 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11087 msm_routing_put_listen_mixer),
11088 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11089 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11090 msm_routing_put_listen_mixer),
11091 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11092 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11093 msm_routing_put_listen_mixer),
11094 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11095 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11096 msm_routing_put_listen_mixer),
11097 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11098 MSM_FRONTEND_DAI_LSM6, 1, 0, msm_routing_get_listen_mixer,
11099 msm_routing_put_listen_mixer),
11100};
11101
11102static const struct snd_kcontrol_new lsm7_mixer_controls[] = {
11103 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11104 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11105 msm_routing_put_listen_mixer),
11106 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11107 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11108 msm_routing_put_listen_mixer),
11109 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11110 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11111 msm_routing_put_listen_mixer),
11112 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11113 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11114 msm_routing_put_listen_mixer),
11115 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11116 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11117 msm_routing_put_listen_mixer),
11118 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11119 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11120 msm_routing_put_listen_mixer),
11121 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11122 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11123 msm_routing_put_listen_mixer),
11124 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11125 MSM_FRONTEND_DAI_LSM7, 1, 0, msm_routing_get_listen_mixer,
11126 msm_routing_put_listen_mixer),
11127};
11128
11129static const struct snd_kcontrol_new lsm8_mixer_controls[] = {
11130 SOC_SINGLE_EXT("SLIMBUS_0_TX", MSM_BACKEND_DAI_SLIMBUS_0_TX,
11131 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11132 msm_routing_put_listen_mixer),
11133 SOC_SINGLE_EXT("SLIMBUS_1_TX", MSM_BACKEND_DAI_SLIMBUS_1_TX,
11134 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11135 msm_routing_put_listen_mixer),
11136 SOC_SINGLE_EXT("SLIMBUS_3_TX", MSM_BACKEND_DAI_SLIMBUS_3_TX,
11137 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11138 msm_routing_put_listen_mixer),
11139 SOC_SINGLE_EXT("SLIMBUS_4_TX", MSM_BACKEND_DAI_SLIMBUS_4_TX,
11140 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11141 msm_routing_put_listen_mixer),
11142 SOC_SINGLE_EXT("SLIMBUS_5_TX", MSM_BACKEND_DAI_SLIMBUS_5_TX,
11143 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11144 msm_routing_put_listen_mixer),
11145 SOC_SINGLE_EXT("TERT_MI2S_TX", MSM_BACKEND_DAI_TERTIARY_MI2S_TX,
11146 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11147 msm_routing_put_listen_mixer),
11148 SOC_SINGLE_EXT("QUAT_MI2S_TX", MSM_BACKEND_DAI_QUATERNARY_MI2S_TX,
11149 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11150 msm_routing_put_listen_mixer),
11151 SOC_SINGLE_EXT("INT3_MI2S_TX", MSM_BACKEND_DAI_INT3_MI2S_TX,
11152 MSM_FRONTEND_DAI_LSM8, 1, 0, msm_routing_get_listen_mixer,
11153 msm_routing_put_listen_mixer),
11154};
11155
11156static const struct snd_kcontrol_new slim_fm_switch_mixer_controls =
11157 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11158 0, 1, 0, msm_routing_get_switch_mixer,
11159 msm_routing_put_switch_mixer);
11160
11161static const struct snd_kcontrol_new slim1_fm_switch_mixer_controls =
11162 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11163 0, 1, 0, msm_routing_get_switch_mixer,
11164 msm_routing_put_switch_mixer);
11165
11166static const struct snd_kcontrol_new slim3_fm_switch_mixer_controls =
11167 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11168 0, 1, 0, msm_routing_get_switch_mixer,
11169 msm_routing_put_switch_mixer);
11170
11171static const struct snd_kcontrol_new slim4_fm_switch_mixer_controls =
11172 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11173 0, 1, 0, msm_routing_get_switch_mixer,
11174 msm_routing_put_switch_mixer);
11175
11176static const struct snd_kcontrol_new slim6_fm_switch_mixer_controls =
11177 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11178 0, 1, 0, msm_routing_get_switch_mixer,
11179 msm_routing_put_switch_mixer);
11180
11181static const struct snd_kcontrol_new pcm_rx_switch_mixer_controls =
11182 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11183 0, 1, 0, msm_routing_get_fm_pcmrx_switch_mixer,
11184 msm_routing_put_fm_pcmrx_switch_mixer);
11185
11186static const struct snd_kcontrol_new int0_mi2s_rx_switch_mixer_controls =
11187 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11188 0, 1, 0, msm_routing_get_int0_mi2s_switch_mixer,
11189 msm_routing_put_int0_mi2s_switch_mixer);
11190
11191static const struct snd_kcontrol_new int4_mi2s_rx_switch_mixer_controls =
11192 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11193 0, 1, 0, msm_routing_get_int4_mi2s_switch_mixer,
11194 msm_routing_put_int4_mi2s_switch_mixer);
11195
11196static const struct snd_kcontrol_new pri_mi2s_rx_switch_mixer_controls =
11197 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11198 0, 1, 0, msm_routing_get_pri_mi2s_switch_mixer,
11199 msm_routing_put_pri_mi2s_switch_mixer);
11200
11201static const struct snd_kcontrol_new sec_mi2s_rx_switch_mixer_controls =
11202 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11203 0, 1, 0, msm_routing_get_sec_mi2s_switch_mixer,
11204 msm_routing_put_sec_mi2s_switch_mixer);
11205
11206static const struct snd_kcontrol_new tert_mi2s_rx_switch_mixer_controls =
11207 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11208 0, 1, 0, msm_routing_get_tert_mi2s_switch_mixer,
11209 msm_routing_put_tert_mi2s_switch_mixer);
11210
11211static const struct snd_kcontrol_new quat_mi2s_rx_switch_mixer_controls =
11212 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11213 0, 1, 0, msm_routing_get_quat_mi2s_switch_mixer,
11214 msm_routing_put_quat_mi2s_switch_mixer);
11215
Rohit Kumara5077932017-09-10 22:05:05 +053011216static const struct snd_kcontrol_new quin_mi2s_rx_switch_mixer_controls =
11217 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11218 0, 1, 0, msm_routing_get_quin_mi2s_switch_mixer,
11219 msm_routing_put_quin_mi2s_switch_mixer);
11220
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011221static const struct snd_kcontrol_new hfp_pri_aux_switch_mixer_controls =
11222 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11223 0, 1, 0, msm_routing_get_hfp_switch_mixer,
11224 msm_routing_put_hfp_switch_mixer);
11225
11226static const struct snd_kcontrol_new hfp_aux_switch_mixer_controls =
11227 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11228 0, 1, 0, msm_routing_get_hfp_switch_mixer,
11229 msm_routing_put_hfp_switch_mixer);
11230
11231static const struct snd_kcontrol_new hfp_int_switch_mixer_controls =
11232 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11233 0, 1, 0, msm_routing_get_hfp_switch_mixer,
11234 msm_routing_put_hfp_switch_mixer);
11235
11236static const struct snd_kcontrol_new hfp_slim7_switch_mixer_controls =
11237 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11238 0, 1, 0, msm_routing_get_hfp_switch_mixer,
11239 msm_routing_put_hfp_switch_mixer);
11240
11241static const struct snd_kcontrol_new usb_switch_mixer_controls =
11242 SOC_SINGLE_EXT("Switch", SND_SOC_NOPM,
11243 0, 1, 0, msm_routing_get_usb_switch_mixer,
11244 msm_routing_put_usb_switch_mixer);
11245
11246static const struct soc_enum lsm_port_enum =
11247 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(lsm_port_text), lsm_port_text);
11248
11249static const char * const lsm_func_text[] = {
11250 "None", "AUDIO", "BEACON", "ULTRASOUND", "SWAUDIO",
11251};
11252static const struct soc_enum lsm_func_enum =
11253 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(lsm_func_text), lsm_func_text);
11254
11255static const struct snd_kcontrol_new lsm_controls[] = {
11256 /* kcontrol of lsm_function */
11257 SOC_ENUM_EXT(SLIMBUS_0_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11258 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11259 SOC_ENUM_EXT(SLIMBUS_1_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11260 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11261 SOC_ENUM_EXT(SLIMBUS_2_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11262 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11263 SOC_ENUM_EXT(SLIMBUS_3_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11264 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11265 SOC_ENUM_EXT(SLIMBUS_4_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11266 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11267 SOC_ENUM_EXT(SLIMBUS_5_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11268 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11269 SOC_ENUM_EXT(TERT_MI2S_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11270 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11271 SOC_ENUM_EXT(QUAT_MI2S_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11272 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11273 SOC_ENUM_EXT(INT3_MI2S_TX_TEXT" "LSM_FUNCTION_TEXT, lsm_func_enum,
11274 msm_routing_lsm_func_get, msm_routing_lsm_func_put),
11275 /* kcontrol of lsm_port */
11276 SOC_ENUM_EXT("LSM1 Port", lsm_port_enum,
11277 msm_routing_lsm_port_get,
11278 msm_routing_lsm_port_put),
11279 SOC_ENUM_EXT("LSM2 Port", lsm_port_enum,
11280 msm_routing_lsm_port_get,
11281 msm_routing_lsm_port_put),
11282 SOC_ENUM_EXT("LSM3 Port", lsm_port_enum,
11283 msm_routing_lsm_port_get,
11284 msm_routing_lsm_port_put),
11285 SOC_ENUM_EXT("LSM4 Port", lsm_port_enum,
11286 msm_routing_lsm_port_get,
11287 msm_routing_lsm_port_put),
11288 SOC_ENUM_EXT("LSM5 Port", lsm_port_enum,
11289 msm_routing_lsm_port_get,
11290 msm_routing_lsm_port_put),
11291 SOC_ENUM_EXT("LSM6 Port", lsm_port_enum,
11292 msm_routing_lsm_port_get,
11293 msm_routing_lsm_port_put),
11294 SOC_ENUM_EXT("LSM7 Port", lsm_port_enum,
11295 msm_routing_lsm_port_get,
11296 msm_routing_lsm_port_put),
11297 SOC_ENUM_EXT("LSM8 Port", lsm_port_enum,
11298 msm_routing_lsm_port_get,
11299 msm_routing_lsm_port_put),
11300};
11301
11302static const char * const aanc_slim_0_rx_text[] = {
11303 "ZERO", "SLIMBUS_0_TX", "SLIMBUS_1_TX", "SLIMBUS_2_TX", "SLIMBUS_3_TX",
11304 "SLIMBUS_4_TX", "SLIMBUS_5_TX", "SLIMBUS_6_TX"
11305};
11306
11307static const struct soc_enum aanc_slim_0_rx_enum =
11308 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(aanc_slim_0_rx_text),
11309 aanc_slim_0_rx_text);
11310
11311static const struct snd_kcontrol_new aanc_slim_0_rx_mux[] = {
11312 SOC_ENUM_EXT("AANC_SLIM_0_RX MUX", aanc_slim_0_rx_enum,
11313 msm_routing_slim_0_rx_aanc_mux_get,
11314 msm_routing_slim_0_rx_aanc_mux_put)
11315};
11316
11317static int msm_routing_get_stereo_to_custom_stereo_control(
11318 struct snd_kcontrol *kcontrol,
11319 struct snd_ctl_elem_value *ucontrol)
11320{
11321 ucontrol->value.integer.value[0] = is_custom_stereo_on;
11322 return 0;
11323}
11324
11325static int msm_routing_put_stereo_to_custom_stereo_control(
11326 struct snd_kcontrol *kcontrol,
11327 struct snd_ctl_elem_value *ucontrol)
11328{
11329 int flag = 0, i = 0, rc = 0, idx = 0;
11330 int be_index = 0, port_id, topo_id;
11331 unsigned int session_id = 0;
11332 uint16_t op_FL_ip_FL_weight = 0;
11333 uint16_t op_FL_ip_FR_weight = 0;
11334 uint16_t op_FR_ip_FL_weight = 0;
11335 uint16_t op_FR_ip_FR_weight = 0;
11336
11337 flag = ucontrol->value.integer.value[0];
11338 pr_debug("%s E flag %d\n", __func__, flag);
11339
11340 if ((is_custom_stereo_on && flag) || (!is_custom_stereo_on && !flag)) {
11341 pr_err("%s: is_custom_stereo_on %d, flag %d\n",
11342 __func__, is_custom_stereo_on, flag);
11343 return 0;
11344 }
11345 is_custom_stereo_on = flag ? true : false;
11346 pr_debug("%s:is_custom_stereo_on %d\n", __func__, is_custom_stereo_on);
11347 for (be_index = 0; be_index < MSM_BACKEND_DAI_MAX; be_index++) {
11348 port_id = msm_bedais[be_index].port_id;
11349 if (!msm_bedais[be_index].active)
11350 continue;
11351 if ((port_id != SLIMBUS_0_RX) &&
11352 (port_id != RT_PROXY_PORT_001_RX) &&
11353 (port_id != AFE_PORT_ID_PRIMARY_MI2S_RX) &&
11354 (port_id != AFE_PORT_ID_INT4_MI2S_RX))
11355 continue;
11356
11357 for_each_set_bit(i, &msm_bedais[be_index].fe_sessions[0],
11358 MSM_FRONTEND_DAI_MM_SIZE) {
11359 if (fe_dai_map[i][SESSION_TYPE_RX].perf_mode !=
11360 LEGACY_PCM_MODE)
11361 goto skip_send_custom_stereo;
11362 session_id =
11363 fe_dai_map[i][SESSION_TYPE_RX].strm_id;
11364 if (is_custom_stereo_on) {
11365 op_FL_ip_FL_weight =
11366 Q14_GAIN_ZERO_POINT_FIVE;
11367 op_FL_ip_FR_weight =
11368 Q14_GAIN_ZERO_POINT_FIVE;
11369 op_FR_ip_FL_weight =
11370 Q14_GAIN_ZERO_POINT_FIVE;
11371 op_FR_ip_FR_weight =
11372 Q14_GAIN_ZERO_POINT_FIVE;
11373 } else {
11374 op_FL_ip_FL_weight = Q14_GAIN_UNITY;
11375 op_FL_ip_FR_weight = 0;
11376 op_FR_ip_FL_weight = 0;
11377 op_FR_ip_FR_weight = Q14_GAIN_UNITY;
11378 }
11379 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++) {
11380 unsigned long copp =
11381 session_copp_map[i]
11382 [SESSION_TYPE_RX][be_index];
11383 if (!test_bit(idx, &copp))
11384 goto skip_send_custom_stereo;
11385 topo_id = adm_get_topology_for_port_copp_idx(
11386 msm_bedais[be_index].port_id, idx);
11387 if (topo_id < 0)
11388 pr_debug("%s:Err:custom stereo topo %d",
11389 __func__, topo_id);
11390 pr_debug("idx %d\n", idx);
11391 if (topo_id == DS2_ADM_COPP_TOPOLOGY_ID)
11392 rc = msm_ds2_dap_set_custom_stereo_onoff
11393 (msm_bedais[be_index].port_id,
11394 idx, is_custom_stereo_on);
11395 else if (topo_id == DOLBY_ADM_COPP_TOPOLOGY_ID)
11396 rc = dolby_dap_set_custom_stereo_onoff(
11397 msm_bedais[be_index].port_id,
11398 idx, is_custom_stereo_on);
11399 else
11400 rc = msm_qti_pp_send_stereo_to_custom_stereo_cmd
11401 (msm_bedais[be_index].port_id,
11402 idx, session_id,
11403 op_FL_ip_FL_weight,
11404 op_FL_ip_FR_weight,
11405 op_FR_ip_FL_weight,
11406 op_FR_ip_FR_weight);
11407 if (rc < 0)
11408skip_send_custom_stereo:
11409 pr_err("%s: err setting custom stereo\n",
11410 __func__);
11411 }
11412
11413 }
11414 }
11415 return 0;
11416}
11417
11418static const struct snd_kcontrol_new stereo_to_custom_stereo_controls[] = {
11419 SOC_SINGLE_EXT("Set Custom Stereo OnOff", SND_SOC_NOPM, 0,
11420 1, 0, msm_routing_get_stereo_to_custom_stereo_control,
11421 msm_routing_put_stereo_to_custom_stereo_control),
11422};
11423
11424static int msm_routing_get_app_type_cfg_control(struct snd_kcontrol *kcontrol,
11425 struct snd_ctl_elem_value *ucontrol)
11426{
11427 return 0;
11428}
11429
11430static int msm_routing_put_app_type_cfg_control(struct snd_kcontrol *kcontrol,
11431 struct snd_ctl_elem_value *ucontrol)
11432{
11433 int i = 0, j;
11434 int num_app_types = ucontrol->value.integer.value[i++];
11435
11436 pr_debug("%s\n", __func__);
11437
11438 memset(app_type_cfg, 0, MAX_APP_TYPES*
11439 sizeof(struct msm_pcm_routing_app_type_data));
11440 if (num_app_types > MAX_APP_TYPES) {
11441 pr_err("%s: number of app types exceed the max supported\n",
11442 __func__);
11443 return -EINVAL;
11444 }
11445 for (j = 0; j < num_app_types; j++) {
11446 app_type_cfg[j].app_type =
11447 ucontrol->value.integer.value[i++];
11448 app_type_cfg[j].sample_rate =
11449 ucontrol->value.integer.value[i++];
11450 app_type_cfg[j].bit_width =
11451 ucontrol->value.integer.value[i++];
11452 }
11453
11454 return 0;
11455}
11456
11457static int msm_routing_put_app_type_gain_control(struct snd_kcontrol *kcontrol,
11458 struct snd_ctl_elem_value *ucontrol)
11459{
11460 int j, fe_id, be_id, port_type;
11461 int ret = 0;
11462 unsigned long copp;
11463 struct msm_pcm_routing_bdai_data *bedai;
11464 int dir = ucontrol->value.integer.value[0] ? SESSION_TYPE_TX :
11465 SESSION_TYPE_RX;
11466 int app_type = ucontrol->value.integer.value[1];
11467 int gain = (ucontrol->value.integer.value[2] +
11468 ucontrol->value.integer.value[3])/2;
11469
11470 port_type = (dir == SESSION_TYPE_RX) ? MSM_AFE_PORT_TYPE_RX :
11471 MSM_AFE_PORT_TYPE_TX;
11472
11473 mutex_lock(&routing_lock);
11474 for (be_id = 0; be_id < MSM_BACKEND_DAI_MAX; be_id++) {
11475 if (is_be_dai_extproc(be_id))
11476 continue;
11477
11478 bedai = &msm_bedais[be_id];
11479 if (afe_get_port_type(bedai->port_id) != port_type)
11480 continue;
11481
11482 if (!bedai->active)
11483 continue;
11484
11485 for (fe_id = 0; fe_id < MSM_FRONTEND_DAI_MAX; fe_id++) {
11486 if (!test_bit(fe_id, &bedai->fe_sessions[0]))
11487 continue;
11488
11489 if (app_type !=
11490 fe_dai_app_type_cfg[fe_id][dir][be_id].app_type)
11491 continue;
11492
11493 copp = session_copp_map[fe_id][dir][be_id];
11494 for (j = 0; j < MAX_COPPS_PER_PORT; j++) {
11495 if (!test_bit(j, &copp))
11496 continue;
11497 ret |= adm_set_volume(bedai->port_id, j, gain);
11498 }
11499 }
11500 }
11501 mutex_unlock(&routing_lock);
11502 return ret ? -EINVAL : 0;
11503}
11504
11505static const struct snd_kcontrol_new app_type_cfg_controls[] = {
11506 SOC_SINGLE_MULTI_EXT("App Type Config", SND_SOC_NOPM, 0,
11507 0xFFFFFFFF, 0, 128, msm_routing_get_app_type_cfg_control,
11508 msm_routing_put_app_type_cfg_control),
11509 SOC_SINGLE_MULTI_EXT("App Type Gain", SND_SOC_NOPM, 0,
11510 0x2000, 0, 4, NULL, msm_routing_put_app_type_gain_control)
11511};
11512
Vikram Pandurangaee9c03a2017-09-07 15:06:17 -070011513static int msm_routing_put_module_cfg_control(struct snd_kcontrol *kcontrol,
11514 struct snd_ctl_elem_value *ucontrol)
11515{
11516 int copp_idx, fe_id, be_id, port_type;
11517 int ret = 0;
11518 unsigned long copp;
11519 struct msm_pcm_routing_bdai_data *bedai;
11520 char *param_data = NULL;
11521 uint32_t *update_param_data = NULL;
11522 uint32_t param_size = sizeof(uint32_t) +
11523 sizeof(struct adm_param_data_v5);
11524 int dir = ucontrol->value.integer.value[0] ? SESSION_TYPE_TX :
11525 SESSION_TYPE_RX;
11526 int app_type = ucontrol->value.integer.value[1];
11527 int module_id = ucontrol->value.integer.value[2];
11528 int instance_id = ucontrol->value.integer.value[3];
11529 int param_id = ucontrol->value.integer.value[4];
11530 int param_value = ucontrol->value.integer.value[5];
11531
11532 port_type = (dir == SESSION_TYPE_RX) ? MSM_AFE_PORT_TYPE_RX :
11533 MSM_AFE_PORT_TYPE_TX;
11534 pr_debug("%s app_type:%d mod_id:%d instance_id:%d param_id:%d value:%d\n",
11535 __func__, app_type, module_id,
11536 instance_id, param_id, param_value);
11537
11538 param_data = kzalloc(param_size, GFP_KERNEL);
11539 if (!param_data)
11540 return -ENOMEM;
11541
11542 update_param_data = (uint32_t *)param_data;
11543 *update_param_data++ = module_id;
11544 *update_param_data++ = param_id;
11545 *update_param_data++ = sizeof(uint32_t);
11546 *update_param_data++ = param_value;
11547
11548 mutex_lock(&routing_lock);
11549 for (be_id = 0; be_id < MSM_BACKEND_DAI_MAX; be_id++) {
11550 if (is_be_dai_extproc(be_id))
11551 continue;
11552
11553 bedai = &msm_bedais[be_id];
11554 if (afe_get_port_type(bedai->port_id) != port_type)
11555 continue;
11556
11557 if (!bedai->active)
11558 continue;
11559
11560 for (fe_id = 0; fe_id < MSM_FRONTEND_DAI_MAX; fe_id++) {
11561 if (!test_bit(fe_id, &bedai->fe_sessions[0]))
11562 continue;
11563
11564 if (app_type !=
11565 fe_dai_app_type_cfg[fe_id][dir][be_id].app_type)
11566 continue;
11567
11568 copp = session_copp_map[fe_id][dir][be_id];
11569 for (copp_idx = 0; copp_idx < MAX_COPPS_PER_PORT;
11570 copp_idx++) {
11571 if (!test_bit(copp_idx, &copp))
11572 continue;
11573
11574 ret = adm_send_params_v5(bedai->port_id,
11575 copp_idx,
11576 param_data,
11577 param_size);
11578 if (ret) {
11579 pr_err("%s: Setting param failed with err=%d\n",
11580 __func__, ret);
11581 ret = -EINVAL;
11582 goto done;
11583 }
11584 }
11585 }
11586 }
11587done:
11588 mutex_unlock(&routing_lock);
11589 kfree(param_data);
11590 return ret;
11591}
11592
11593static const struct snd_kcontrol_new module_cfg_controls[] = {
11594 SOC_SINGLE_MULTI_EXT("Audio Effect", SND_SOC_NOPM, 0,
11595 0x2000, 0, 6, NULL, msm_routing_put_module_cfg_control)
11596};
11597
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011598static int msm_routing_get_lsm_app_type_cfg_control(
11599 struct snd_kcontrol *kcontrol,
11600 struct snd_ctl_elem_value *ucontrol)
11601{
11602 return 0;
11603}
11604
11605static int msm_routing_put_lsm_app_type_cfg_control(
11606 struct snd_kcontrol *kcontrol,
11607 struct snd_ctl_elem_value *ucontrol)
11608{
11609 int i = 0, j;
11610 int num_app_types = ucontrol->value.integer.value[i++];
11611
11612 memset(lsm_app_type_cfg, 0, MAX_APP_TYPES*
11613 sizeof(struct msm_pcm_routing_app_type_data));
11614 if (num_app_types > MAX_APP_TYPES) {
11615 pr_err("%s: number of app types exceed the max supported\n",
11616 __func__);
11617 return -EINVAL;
11618 }
11619 for (j = 0; j < num_app_types; j++) {
11620 lsm_app_type_cfg[j].app_type =
11621 ucontrol->value.integer.value[i++];
11622 lsm_app_type_cfg[j].sample_rate =
11623 ucontrol->value.integer.value[i++];
11624 lsm_app_type_cfg[j].bit_width =
11625 ucontrol->value.integer.value[i++];
11626 }
11627
11628 return 0;
11629}
11630
11631static const struct snd_kcontrol_new lsm_app_type_cfg_controls[] = {
11632 SOC_SINGLE_MULTI_EXT("Listen App Type Config", SND_SOC_NOPM, 0,
11633 0xFFFFFFFF, 0, 128, msm_routing_get_lsm_app_type_cfg_control,
11634 msm_routing_put_lsm_app_type_cfg_control),
11635};
11636
11637static int msm_routing_get_use_ds1_or_ds2_control(
11638 struct snd_kcontrol *kcontrol,
11639 struct snd_ctl_elem_value *ucontrol)
11640{
11641 ucontrol->value.integer.value[0] = is_ds2_on;
11642 return 0;
11643}
11644
11645static int msm_routing_put_use_ds1_or_ds2_control(
11646 struct snd_kcontrol *kcontrol,
11647 struct snd_ctl_elem_value *ucontrol)
11648{
11649 is_ds2_on = ucontrol->value.integer.value[0];
11650 return 0;
11651}
11652
11653static const struct snd_kcontrol_new use_ds1_or_ds2_controls[] = {
11654 SOC_SINGLE_EXT("DS2 OnOff", SND_SOC_NOPM, 0,
11655 1, 0, msm_routing_get_use_ds1_or_ds2_control,
11656 msm_routing_put_use_ds1_or_ds2_control),
11657};
11658
11659int msm_routing_get_rms_value_control(struct snd_kcontrol *kcontrol,
11660 struct snd_ctl_elem_value *ucontrol) {
11661 int rc = 0;
11662 int be_idx = 0;
11663 char *param_value;
11664 int *update_param_value;
11665 uint32_t param_length = sizeof(uint32_t);
11666 uint32_t param_payload_len = RMS_PAYLOAD_LEN * sizeof(uint32_t);
11667
11668 param_value = kzalloc(param_length + param_payload_len, GFP_KERNEL);
11669 if (!param_value)
11670 return -ENOMEM;
11671
11672 for (be_idx = 0; be_idx < MSM_BACKEND_DAI_MAX; be_idx++)
11673 if (msm_bedais[be_idx].port_id == SLIMBUS_0_TX)
11674 break;
11675 if ((be_idx < MSM_BACKEND_DAI_MAX) && msm_bedais[be_idx].active) {
11676 rc = adm_get_params(SLIMBUS_0_TX, 0,
11677 RMS_MODULEID_APPI_PASSTHRU,
11678 RMS_PARAM_FIRST_SAMPLE,
11679 param_length + param_payload_len,
11680 param_value);
11681 if (rc) {
11682 pr_err("%s: get parameters failed:%d\n", __func__, rc);
11683 kfree(param_value);
11684 return -EINVAL;
11685 }
11686 update_param_value = (int *)param_value;
11687 ucontrol->value.integer.value[0] = update_param_value[0];
11688
11689 pr_debug("%s: FROM DSP value[0] 0x%x\n",
11690 __func__, update_param_value[0]);
11691 }
11692 kfree(param_value);
11693 return 0;
11694}
11695
11696static int msm_voc_session_id_put(struct snd_kcontrol *kcontrol,
11697 struct snd_ctl_elem_value *ucontrol)
11698{
11699 voc_session_id = ucontrol->value.integer.value[0];
11700
11701 pr_debug("%s: voc_session_id=%u\n", __func__, voc_session_id);
11702
11703 return 0;
11704}
11705
11706static int msm_voc_session_id_get(struct snd_kcontrol *kcontrol,
11707 struct snd_ctl_elem_value *ucontrol)
11708{
11709 ucontrol->value.integer.value[0] = voc_session_id;
11710
11711 return 0;
11712}
11713
11714static struct snd_kcontrol_new msm_voc_session_controls[] = {
11715 SOC_SINGLE_MULTI_EXT("Voc VSID", SND_SOC_NOPM, 0,
11716 0xFFFFFFFF, 0, 1, msm_voc_session_id_get,
11717 msm_voc_session_id_put),
11718};
11719
11720static int msm_sound_focus_info(struct snd_kcontrol *kcontrol,
11721 struct snd_ctl_elem_info *uinfo)
11722{
11723 uinfo->type = SNDRV_CTL_ELEM_TYPE_BYTES;
11724 uinfo->count = sizeof(struct sound_focus_param);
11725
11726 return 0;
11727}
11728
11729static int msm_voice_sound_focus_put(struct snd_kcontrol *kcontrol,
11730 struct snd_ctl_elem_value *ucontrol)
11731{
11732 int ret = 0;
11733 struct sound_focus_param soundFocusData;
11734
11735 memcpy((void *)&soundFocusData, ucontrol->value.bytes.data,
11736 sizeof(struct sound_focus_param));
11737 ret = voc_set_sound_focus(soundFocusData);
11738 if (ret) {
11739 pr_err("%s: Error setting Sound Focus Params, err=%d\n",
11740 __func__, ret);
11741
11742 ret = -EINVAL;
11743 }
11744
11745 return ret;
11746}
11747
11748static int msm_voice_sound_focus_get(struct snd_kcontrol *kcontrol,
11749 struct snd_ctl_elem_value *ucontrol)
11750{
11751 int ret = 0;
11752 struct sound_focus_param soundFocusData;
11753
11754 memset(&soundFocusData, 0, sizeof(struct sound_focus_param));
11755
11756 ret = voc_get_sound_focus(&soundFocusData);
11757 if (ret) {
11758 pr_err("%s: Error getting Sound Focus Params, err=%d\n",
11759 __func__, ret);
11760
11761 ret = -EINVAL;
11762 goto done;
11763 }
11764 memcpy(ucontrol->value.bytes.data, (void *)&soundFocusData,
11765 sizeof(struct sound_focus_param));
11766
11767done:
11768 return ret;
11769}
11770
11771static int msm_source_tracking_info(struct snd_kcontrol *kcontrol,
11772 struct snd_ctl_elem_info *uinfo)
11773{
11774 uinfo->type = SNDRV_CTL_ELEM_TYPE_BYTES;
11775 uinfo->count = sizeof(struct source_tracking_param);
11776
11777 return 0;
11778}
11779
11780static int msm_voice_source_tracking_get(struct snd_kcontrol *kcontrol,
11781 struct snd_ctl_elem_value *ucontrol)
11782{
Meng Wang85b62082018-02-04 09:59:16 +080011783 return -EINVAL;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053011784}
11785
11786static int msm_audio_get_copp_idx_from_port_id(int port_id, int session_type,
11787 int *copp_idx)
11788{
11789 int i, idx, be_idx;
11790 int ret = 0;
11791 unsigned long copp;
11792
11793 pr_debug("%s: Enter, port_id=%d\n", __func__, port_id);
11794
11795 ret = q6audio_validate_port(port_id);
11796 if (ret < 0) {
11797 pr_err("%s: port validation failed id 0x%x ret %d\n",
11798 __func__, port_id, ret);
11799
11800 ret = -EINVAL;
11801 goto done;
11802 }
11803
11804 for (be_idx = 0; be_idx < MSM_BACKEND_DAI_MAX; be_idx++) {
11805 if (msm_bedais[be_idx].port_id == port_id)
11806 break;
11807 }
11808 if (be_idx >= MSM_BACKEND_DAI_MAX) {
11809 pr_err("%s: Invalid be id %d\n", __func__, be_idx);
11810
11811 ret = -EINVAL;
11812 goto done;
11813 }
11814
11815 for_each_set_bit(i, &msm_bedais[be_idx].fe_sessions[0],
11816 MSM_FRONTEND_DAI_MM_SIZE) {
11817 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++) {
11818 copp = session_copp_map[i]
11819 [session_type][be_idx];
11820 if (test_bit(idx, &copp))
11821 break;
11822 }
11823 if (idx >= MAX_COPPS_PER_PORT)
11824 continue;
11825 else
11826 break;
11827 }
11828 if (i >= MSM_FRONTEND_DAI_MM_SIZE) {
11829 pr_err("%s: Invalid FE, exiting\n", __func__);
11830
11831 ret = -EINVAL;
11832 goto done;
11833 }
11834 *copp_idx = idx;
11835 pr_debug("%s: copp_idx=%d\n", __func__, *copp_idx);
11836
11837done:
11838 return ret;
11839}
11840
11841static int msm_audio_sound_focus_derive_port_id(struct snd_kcontrol *kcontrol,
11842 const char *prefix, int *port_id)
11843{
11844 int ret = 0;
11845
11846 pr_debug("%s: Enter, prefix:%s\n", __func__, prefix);
11847
11848 /*
11849 * Mixer control name will be like "Sound Focus Audio Tx SLIMBUS_0"
11850 * where the prefix is "Sound Focus Audio Tx ". Skip the prefix
11851 * and compare the string with the backend name to derive the port id.
11852 */
11853 if (!strcmp(kcontrol->id.name + strlen(prefix),
11854 "SLIMBUS_0")) {
11855 *port_id = SLIMBUS_0_TX;
11856 } else if (!strcmp(kcontrol->id.name + strlen(prefix),
11857 "TERT_MI2S")) {
11858 *port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
11859 } else if (!strcmp(kcontrol->id.name + strlen(prefix),
11860 "INT3_MI2S")) {
11861 *port_id = AFE_PORT_ID_INT3_MI2S_TX;
11862 } else {
11863 pr_err("%s: mixer ctl name=%s, could not derive valid port id\n",
11864 __func__, kcontrol->id.name);
11865
11866 ret = -EINVAL;
11867 goto done;
11868 }
11869 pr_debug("%s: mixer ctl name=%s, derived port_id=%d\n",
11870 __func__, kcontrol->id.name, *port_id);
11871
11872done:
11873 return ret;
11874}
11875
11876static int msm_audio_sound_focus_put(struct snd_kcontrol *kcontrol,
11877 struct snd_ctl_elem_value *ucontrol)
11878{
11879 int ret = 0;
11880 struct sound_focus_param soundFocusData;
11881 int port_id, copp_idx;
11882
11883 ret = msm_audio_sound_focus_derive_port_id(kcontrol,
11884 "Sound Focus Audio Tx ", &port_id);
11885 if (ret != 0) {
11886 pr_err("%s: Error in deriving port id, err=%d\n",
11887 __func__, ret);
11888
11889 ret = -EINVAL;
11890 goto done;
11891 }
11892
11893 ret = msm_audio_get_copp_idx_from_port_id(port_id, SESSION_TYPE_TX,
11894 &copp_idx);
11895 if (ret) {
11896 pr_err("%s: Could not get copp idx for port_id=%d\n",
11897 __func__, port_id);
11898
11899 ret = -EINVAL;
11900 goto done;
11901 }
11902
11903 memcpy((void *)&soundFocusData, ucontrol->value.bytes.data,
11904 sizeof(struct sound_focus_param));
11905
11906 ret = adm_set_sound_focus(port_id, copp_idx, soundFocusData);
11907 if (ret) {
11908 pr_err("%s: Error setting Sound Focus Params, err=%d\n",
11909 __func__, ret);
11910
11911 ret = -EINVAL;
11912 goto done;
11913 }
11914
11915done:
11916 return ret;
11917}
11918
11919static int msm_audio_sound_focus_get(struct snd_kcontrol *kcontrol,
11920 struct snd_ctl_elem_value *ucontrol)
11921{
11922 int ret = 0;
11923 struct sound_focus_param soundFocusData;
11924 int port_id, copp_idx;
11925
11926 ret = msm_audio_sound_focus_derive_port_id(kcontrol,
11927 "Sound Focus Audio Tx ", &port_id);
11928 if (ret) {
11929 pr_err("%s: Error in deriving port id, err=%d\n",
11930 __func__, ret);
11931
11932 ret = -EINVAL;
11933 goto done;
11934 }
11935
11936 ret = msm_audio_get_copp_idx_from_port_id(port_id, SESSION_TYPE_TX,
11937 &copp_idx);
11938 if (ret) {
11939 pr_err("%s: Could not get copp idx for port_id=%d\n",
11940 __func__, port_id);
11941
11942 ret = -EINVAL;
11943 goto done;
11944 }
11945
11946 ret = adm_get_sound_focus(port_id, copp_idx, &soundFocusData);
11947 if (ret) {
11948 pr_err("%s: Error getting Sound Focus Params, err=%d\n",
11949 __func__, ret);
11950
11951 ret = -EINVAL;
11952 goto done;
11953 }
11954
11955 memcpy(ucontrol->value.bytes.data, (void *)&soundFocusData,
11956 sizeof(struct sound_focus_param));
11957
11958done:
11959 return ret;
11960}
11961
11962static int msm_audio_source_tracking_get(struct snd_kcontrol *kcontrol,
11963 struct snd_ctl_elem_value *ucontrol)
11964{
11965 int ret = 0;
11966 struct source_tracking_param sourceTrackingData;
11967 int port_id, copp_idx;
11968
11969 ret = msm_audio_sound_focus_derive_port_id(kcontrol,
11970 "Source Tracking Audio Tx ", &port_id);
11971 if (ret) {
11972 pr_err("%s: Error in deriving port id, err=%d\n",
11973 __func__, ret);
11974
11975 ret = -EINVAL;
11976 goto done;
11977 }
11978
11979 ret = msm_audio_get_copp_idx_from_port_id(port_id, SESSION_TYPE_TX,
11980 &copp_idx);
11981 if (ret) {
11982 pr_err("%s: Could not get copp idx for port_id=%d\n",
11983 __func__, port_id);
11984
11985 ret = -EINVAL;
11986 goto done;
11987 }
11988
11989 ret = adm_get_source_tracking(port_id, copp_idx, &sourceTrackingData);
11990 if (ret) {
11991 pr_err("%s: Error getting Source Tracking Params, err=%d\n",
11992 __func__, ret);
11993
11994 ret = -EINVAL;
11995 goto done;
11996 }
11997
11998 memcpy(ucontrol->value.bytes.data, (void *)&sourceTrackingData,
11999 sizeof(struct source_tracking_param));
12000
12001done:
12002 return ret;
12003}
12004
12005static const struct snd_kcontrol_new msm_source_tracking_controls[] = {
12006 {
12007 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12008 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12009 .name = "Sound Focus Voice Tx SLIMBUS_0",
12010 .info = msm_sound_focus_info,
12011 .get = msm_voice_sound_focus_get,
12012 .put = msm_voice_sound_focus_put,
12013 },
12014 {
12015 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12016 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12017 .name = "Source Tracking Voice Tx SLIMBUS_0",
12018 .info = msm_source_tracking_info,
12019 .get = msm_voice_source_tracking_get,
12020 },
12021 {
12022 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12023 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12024 .name = "Sound Focus Audio Tx SLIMBUS_0",
12025 .info = msm_sound_focus_info,
12026 .get = msm_audio_sound_focus_get,
12027 .put = msm_audio_sound_focus_put,
12028 },
12029 {
12030 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12031 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12032 .name = "Source Tracking Audio Tx SLIMBUS_0",
12033 .info = msm_source_tracking_info,
12034 .get = msm_audio_source_tracking_get,
12035 },
12036 {
12037 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12038 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12039 .name = "Sound Focus Voice Tx TERT_MI2S",
12040 .info = msm_sound_focus_info,
12041 .get = msm_voice_sound_focus_get,
12042 .put = msm_voice_sound_focus_put,
12043 },
12044 {
12045 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12046 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12047 .name = "Source Tracking Voice Tx TERT_MI2S",
12048 .info = msm_source_tracking_info,
12049 .get = msm_voice_source_tracking_get,
12050 },
12051 {
12052 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12053 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12054 .name = "Sound Focus Audio Tx TERT_MI2S",
12055 .info = msm_sound_focus_info,
12056 .get = msm_audio_sound_focus_get,
12057 .put = msm_audio_sound_focus_put,
12058 },
12059 {
12060 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12061 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12062 .name = "Source Tracking Audio Tx TERT_MI2S",
12063 .info = msm_source_tracking_info,
12064 .get = msm_audio_source_tracking_get,
12065 },
12066 {
12067 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12068 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12069 .name = "Sound Focus Voice Tx INT3_MI2S",
12070 .info = msm_sound_focus_info,
12071 .get = msm_voice_sound_focus_get,
12072 .put = msm_voice_sound_focus_put,
12073 },
12074 {
12075 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12076 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12077 .name = "Source Tracking Voice Tx INT3_MI2S",
12078 .info = msm_source_tracking_info,
12079 .get = msm_voice_source_tracking_get,
12080 },
12081 {
12082 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
12083 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12084 .name = "Sound Focus Audio Tx INT3_MI2S",
12085 .info = msm_sound_focus_info,
12086 .get = msm_audio_sound_focus_get,
12087 .put = msm_audio_sound_focus_put,
12088 },
12089 {
12090 .access = SNDRV_CTL_ELEM_ACCESS_READ,
12091 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
12092 .name = "Source Tracking Audio Tx INT3_MI2S",
12093 .info = msm_source_tracking_info,
12094 .get = msm_audio_source_tracking_get,
12095 },
12096};
12097
12098static int spkr_prot_put_vi_lch_port(struct snd_kcontrol *kcontrol,
12099 struct snd_ctl_elem_value *ucontrol)
12100{
12101 int ret = 0;
12102 int item;
12103 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
12104
12105 pr_debug("%s item is %d\n", __func__,
12106 ucontrol->value.enumerated.item[0]);
12107 mutex_lock(&routing_lock);
12108 item = ucontrol->value.enumerated.item[0];
12109 if (item < e->items) {
12110 pr_debug("%s RX DAI ID %d TX DAI id %d\n",
12111 __func__, e->shift_l, e->values[item]);
12112 if (e->shift_l < MSM_BACKEND_DAI_MAX &&
12113 e->values[item] < MSM_BACKEND_DAI_MAX)
12114 /* Enable feedback TX path */
12115 ret = afe_spk_prot_feed_back_cfg(
12116 msm_bedais[e->values[item]].port_id,
12117 msm_bedais[e->shift_l].port_id, 1, 0, 1);
12118 else {
12119 pr_debug("%s values are out of range item %d\n",
12120 __func__, e->values[item]);
12121 /* Disable feedback TX path */
12122 if (e->values[item] == MSM_BACKEND_DAI_MAX)
12123 ret = afe_spk_prot_feed_back_cfg(0, 0, 0, 0, 0);
12124 else
12125 ret = -EINVAL;
12126 }
12127 } else {
12128 pr_err("%s item value is out of range item\n", __func__);
12129 ret = -EINVAL;
12130 }
12131 mutex_unlock(&routing_lock);
12132 return ret;
12133}
12134
12135static int spkr_prot_put_vi_rch_port(struct snd_kcontrol *kcontrol,
12136 struct snd_ctl_elem_value *ucontrol)
12137{
12138 int ret = 0;
12139 int item;
12140 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
12141
12142 pr_debug("%s item is %d\n", __func__,
12143 ucontrol->value.enumerated.item[0]);
12144 mutex_lock(&routing_lock);
12145 item = ucontrol->value.enumerated.item[0];
12146 if (item < e->items) {
12147 pr_debug("%s RX DAI ID %d TX DAI id %d\n",
12148 __func__, e->shift_l, e->values[item]);
12149 if (e->shift_l < MSM_BACKEND_DAI_MAX &&
12150 e->values[item] < MSM_BACKEND_DAI_MAX)
12151 /* Enable feedback TX path */
12152 ret = afe_spk_prot_feed_back_cfg(
12153 msm_bedais[e->values[item]].port_id,
12154 msm_bedais[e->shift_l].port_id,
12155 1, 1, 1);
12156 else {
12157 pr_debug("%s values are out of range item %d\n",
12158 __func__, e->values[item]);
12159 /* Disable feedback TX path */
12160 if (e->values[item] == MSM_BACKEND_DAI_MAX)
12161 ret = afe_spk_prot_feed_back_cfg(0,
12162 0, 0, 0, 0);
12163 else
12164 ret = -EINVAL;
12165 }
12166 } else {
12167 pr_err("%s item value is out of range item\n", __func__);
12168 ret = -EINVAL;
12169 }
12170 mutex_unlock(&routing_lock);
12171 return ret;
12172}
12173
12174static int spkr_prot_get_vi_lch_port(struct snd_kcontrol *kcontrol,
12175 struct snd_ctl_elem_value *ucontrol)
12176{
12177 pr_debug("%s\n", __func__);
12178 return 0;
12179}
12180
12181static int spkr_prot_get_vi_rch_port(struct snd_kcontrol *kcontrol,
12182 struct snd_ctl_elem_value *ucontrol)
12183{
12184 pr_debug("%s\n", __func__);
12185 ucontrol->value.enumerated.item[0] = 0;
12186 return 0;
12187}
12188
12189static const char * const slim0_rx_vi_fb_tx_lch_mux_text[] = {
12190 "ZERO", "SLIM4_TX"
12191};
12192
12193static const char * const slim0_rx_vi_fb_tx_rch_mux_text[] = {
12194 "ZERO", "SLIM4_TX"
12195};
12196
12197static const char * const mi2s_rx_vi_fb_tx_mux_text[] = {
12198 "ZERO", "SENARY_TX"
12199};
12200
12201static const char * const int4_mi2s_rx_vi_fb_tx_mono_mux_text[] = {
12202 "ZERO", "INT5_MI2S_TX"
12203};
12204
12205static const char * const int4_mi2s_rx_vi_fb_tx_stereo_mux_text[] = {
12206 "ZERO", "INT5_MI2S_TX"
12207};
12208
12209static const int const slim0_rx_vi_fb_tx_lch_value[] = {
12210 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_SLIMBUS_4_TX
12211};
12212
12213static const int const slim0_rx_vi_fb_tx_rch_value[] = {
12214 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_SLIMBUS_4_TX
12215};
12216
12217static const int const mi2s_rx_vi_fb_tx_value[] = {
12218 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_SENARY_MI2S_TX
12219};
12220
12221static const int const int4_mi2s_rx_vi_fb_tx_mono_ch_value[] = {
12222 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_INT5_MI2S_TX
12223};
12224
12225static const int const int4_mi2s_rx_vi_fb_tx_stereo_ch_value[] = {
12226 MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_INT5_MI2S_TX
12227};
12228
12229static const struct soc_enum slim0_rx_vi_fb_lch_mux_enum =
12230 SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_SLIMBUS_0_RX, 0, 0,
12231 ARRAY_SIZE(slim0_rx_vi_fb_tx_lch_mux_text),
12232 slim0_rx_vi_fb_tx_lch_mux_text, slim0_rx_vi_fb_tx_lch_value);
12233
12234static const struct soc_enum slim0_rx_vi_fb_rch_mux_enum =
12235 SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_SLIMBUS_0_RX, 0, 0,
12236 ARRAY_SIZE(slim0_rx_vi_fb_tx_rch_mux_text),
12237 slim0_rx_vi_fb_tx_rch_mux_text, slim0_rx_vi_fb_tx_rch_value);
12238
12239static const struct soc_enum mi2s_rx_vi_fb_mux_enum =
12240 SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_PRI_MI2S_RX, 0, 0,
12241 ARRAY_SIZE(mi2s_rx_vi_fb_tx_mux_text),
12242 mi2s_rx_vi_fb_tx_mux_text, mi2s_rx_vi_fb_tx_value);
12243
12244static const struct soc_enum int4_mi2s_rx_vi_fb_mono_ch_mux_enum =
12245 SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_INT4_MI2S_RX, 0, 0,
12246 ARRAY_SIZE(int4_mi2s_rx_vi_fb_tx_mono_mux_text),
12247 int4_mi2s_rx_vi_fb_tx_mono_mux_text,
12248 int4_mi2s_rx_vi_fb_tx_mono_ch_value);
12249
12250static const struct soc_enum int4_mi2s_rx_vi_fb_stereo_ch_mux_enum =
12251 SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_INT4_MI2S_RX, 0, 0,
12252 ARRAY_SIZE(int4_mi2s_rx_vi_fb_tx_stereo_mux_text),
12253 int4_mi2s_rx_vi_fb_tx_stereo_mux_text,
12254 int4_mi2s_rx_vi_fb_tx_stereo_ch_value);
12255
12256static const struct snd_kcontrol_new slim0_rx_vi_fb_lch_mux =
12257 SOC_DAPM_ENUM_EXT("SLIM0_RX_VI_FB_LCH_MUX",
12258 slim0_rx_vi_fb_lch_mux_enum, spkr_prot_get_vi_lch_port,
12259 spkr_prot_put_vi_lch_port);
12260
12261static const struct snd_kcontrol_new slim0_rx_vi_fb_rch_mux =
12262 SOC_DAPM_ENUM_EXT("SLIM0_RX_VI_FB_RCH_MUX",
12263 slim0_rx_vi_fb_rch_mux_enum, spkr_prot_get_vi_rch_port,
12264 spkr_prot_put_vi_rch_port);
12265
12266static const struct snd_kcontrol_new mi2s_rx_vi_fb_mux =
12267 SOC_DAPM_ENUM_EXT("PRI_MI2S_RX_VI_FB_MUX",
12268 mi2s_rx_vi_fb_mux_enum, spkr_prot_get_vi_lch_port,
12269 spkr_prot_put_vi_lch_port);
12270
12271static const struct snd_kcontrol_new int4_mi2s_rx_vi_fb_mono_ch_mux =
12272 SOC_DAPM_ENUM_EXT("INT4_MI2S_RX_VI_FB_MONO_CH_MUX",
12273 int4_mi2s_rx_vi_fb_mono_ch_mux_enum, spkr_prot_get_vi_lch_port,
12274 spkr_prot_put_vi_lch_port);
12275
12276static const struct snd_kcontrol_new int4_mi2s_rx_vi_fb_stereo_ch_mux =
12277 SOC_DAPM_ENUM_EXT("INT4_MI2S_RX_VI_FB_STEREO_CH_MUX",
12278 int4_mi2s_rx_vi_fb_stereo_ch_mux_enum, spkr_prot_get_vi_rch_port,
12279 spkr_prot_put_vi_rch_port);
12280
12281static const struct snd_soc_dapm_widget msm_qdsp6_widgets[] = {
12282 /* Frontend AIF */
12283 /* Widget name equals to Front-End DAI name<Need confirmation>,
12284 * Stream name must contains substring of front-end dai name
12285 */
12286 SND_SOC_DAPM_AIF_IN("MM_DL1", "MultiMedia1 Playback", 0, 0, 0, 0),
12287 SND_SOC_DAPM_AIF_IN("MM_DL2", "MultiMedia2 Playback", 0, 0, 0, 0),
12288 SND_SOC_DAPM_AIF_IN("MM_DL3", "MultiMedia3 Playback", 0, 0, 0, 0),
12289 SND_SOC_DAPM_AIF_IN("MM_DL4", "MultiMedia4 Playback", 0, 0, 0, 0),
12290 SND_SOC_DAPM_AIF_IN("MM_DL5", "MultiMedia5 Playback", 0, 0, 0, 0),
12291 SND_SOC_DAPM_AIF_IN("MM_DL6", "MultiMedia6 Playback", 0, 0, 0, 0),
12292 SND_SOC_DAPM_AIF_IN("MM_DL7", "MultiMedia7 Playback", 0, 0, 0, 0),
12293 SND_SOC_DAPM_AIF_IN("MM_DL8", "MultiMedia8 Playback", 0, 0, 0, 0),
12294 SND_SOC_DAPM_AIF_IN("MM_DL9", "MultiMedia9 Playback", 0, 0, 0, 0),
12295 SND_SOC_DAPM_AIF_IN("MM_DL10", "MultiMedia10 Playback", 0, 0, 0, 0),
12296 SND_SOC_DAPM_AIF_IN("MM_DL11", "MultiMedia11 Playback", 0, 0, 0, 0),
12297 SND_SOC_DAPM_AIF_IN("MM_DL12", "MultiMedia12 Playback", 0, 0, 0, 0),
12298 SND_SOC_DAPM_AIF_IN("MM_DL13", "MultiMedia13 Playback", 0, 0, 0, 0),
12299 SND_SOC_DAPM_AIF_IN("MM_DL14", "MultiMedia14 Playback", 0, 0, 0, 0),
12300 SND_SOC_DAPM_AIF_IN("MM_DL15", "MultiMedia15 Playback", 0, 0, 0, 0),
12301 SND_SOC_DAPM_AIF_IN("MM_DL16", "MultiMedia16 Playback", 0, 0, 0, 0),
12302 SND_SOC_DAPM_AIF_IN("MM_DL20", "MultiMedia20 Playback", 0, 0, 0, 0),
12303 SND_SOC_DAPM_AIF_IN("VOIP_DL", "VoIP Playback", 0, 0, 0, 0),
12304 SND_SOC_DAPM_AIF_OUT("MM_UL1", "MultiMedia1 Capture", 0, 0, 0, 0),
12305 SND_SOC_DAPM_AIF_OUT("MM_UL2", "MultiMedia2 Capture", 0, 0, 0, 0),
12306 SND_SOC_DAPM_AIF_OUT("MM_UL3", "MultiMedia3 Capture", 0, 0, 0, 0),
12307 SND_SOC_DAPM_AIF_OUT("MM_UL4", "MultiMedia4 Capture", 0, 0, 0, 0),
12308 SND_SOC_DAPM_AIF_OUT("MM_UL5", "MultiMedia5 Capture", 0, 0, 0, 0),
12309 SND_SOC_DAPM_AIF_OUT("MM_UL6", "MultiMedia6 Capture", 0, 0, 0, 0),
12310 SND_SOC_DAPM_AIF_OUT("MM_UL8", "MultiMedia8 Capture", 0, 0, 0, 0),
12311 SND_SOC_DAPM_AIF_OUT("MM_UL9", "MultiMedia9 Capture", 0, 0, 0, 0),
Laxminath Kasam38070be2017-08-17 18:21:59 +053012312 SND_SOC_DAPM_AIF_OUT("MM_UL10", "MultiMedia10 Capture", 0, 0, 0, 0),
Asish Bhattacharya34504582017-08-08 12:55:01 +053012313 SND_SOC_DAPM_AIF_OUT("MM_UL16", "MultiMedia16 Capture", 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012314 SND_SOC_DAPM_AIF_OUT("MM_UL17", "MultiMedia17 Capture", 0, 0, 0, 0),
12315 SND_SOC_DAPM_AIF_OUT("MM_UL18", "MultiMedia18 Capture", 0, 0, 0, 0),
12316 SND_SOC_DAPM_AIF_OUT("MM_UL19", "MultiMedia19 Capture", 0, 0, 0, 0),
12317 SND_SOC_DAPM_AIF_OUT("MM_UL20", "MultiMedia20 Capture", 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012318 SND_SOC_DAPM_AIF_OUT("VOIP_UL", "VoIP Capture", 0, 0, 0, 0),
12319 SND_SOC_DAPM_AIF_IN("VOICEMMODE1_DL",
12320 "VoiceMMode1 Playback", 0, 0, 0, 0),
12321 SND_SOC_DAPM_AIF_OUT("VOICEMMODE1_UL",
12322 "VoiceMMode1 Capture", 0, 0, 0, 0),
12323 SND_SOC_DAPM_AIF_IN("VOICEMMODE2_DL",
12324 "VoiceMMode2 Playback", 0, 0, 0, 0),
12325 SND_SOC_DAPM_AIF_OUT("VOICEMMODE2_UL",
12326 "VoiceMMode2 Capture", 0, 0, 0, 0),
12327 SND_SOC_DAPM_AIF_IN("SLIM0_DL_HL", "SLIMBUS0_HOSTLESS Playback",
12328 0, 0, 0, 0),
12329 SND_SOC_DAPM_AIF_OUT("SLIM0_UL_HL", "SLIMBUS0_HOSTLESS Capture",
12330 0, 0, 0, 0),
12331 SND_SOC_DAPM_AIF_OUT("CPE_LSM_UL_HL", "CPE LSM capture",
12332 0, 0, 0, 0),
12333 SND_SOC_DAPM_AIF_IN("SLIM1_DL_HL", "SLIMBUS1_HOSTLESS Playback",
12334 0, 0, 0, 0),
12335 SND_SOC_DAPM_AIF_OUT("SLIM1_UL_HL", "SLIMBUS1_HOSTLESS Capture",
12336 0, 0, 0, 0),
12337 SND_SOC_DAPM_AIF_IN("SLIM3_DL_HL", "SLIMBUS3_HOSTLESS Playback",
12338 0, 0, 0, 0),
12339 SND_SOC_DAPM_AIF_OUT("SLIM3_UL_HL", "SLIMBUS3_HOSTLESS Capture",
12340 0, 0, 0, 0),
12341 SND_SOC_DAPM_AIF_IN("SLIM4_DL_HL", "SLIMBUS4_HOSTLESS Playback",
12342 0, 0, 0, 0),
12343 SND_SOC_DAPM_AIF_OUT("SLIM4_UL_HL", "SLIMBUS4_HOSTLESS Capture",
12344 0, 0, 0, 0),
12345 SND_SOC_DAPM_AIF_IN("SLIM6_DL_HL", "SLIMBUS6_HOSTLESS Playback",
12346 0, 0, 0, 0),
12347 SND_SOC_DAPM_AIF_OUT("SLIM6_UL_HL", "SLIMBUS6_HOSTLESS Capture",
12348 0, 0, 0, 0),
12349 SND_SOC_DAPM_AIF_IN("SLIM7_DL_HL", "SLIMBUS7_HOSTLESS Playback",
12350 0, 0, 0, 0),
12351 SND_SOC_DAPM_AIF_OUT("SLIM7_UL_HL", "SLIMBUS7_HOSTLESS Capture",
12352 0, 0, 0, 0),
12353 SND_SOC_DAPM_AIF_IN("SLIM8_DL_HL", "SLIMBUS8_HOSTLESS Playback",
12354 0, 0, 0, 0),
12355 SND_SOC_DAPM_AIF_OUT("SLIM8_UL_HL", "SLIMBUS8_HOSTLESS Capture",
12356 0, 0, 0, 0),
12357 SND_SOC_DAPM_AIF_IN("INTFM_DL_HL", "INT_FM_HOSTLESS Playback",
12358 0, 0, 0, 0),
12359 SND_SOC_DAPM_AIF_OUT("INTFM_UL_HL", "INT_FM_HOSTLESS Capture",
12360 0, 0, 0, 0),
12361 SND_SOC_DAPM_AIF_IN("INTHFP_DL_HL", "INT_HFP_BT_HOSTLESS Playback",
12362 0, 0, 0, 0),
12363 SND_SOC_DAPM_AIF_OUT("INTHFP_UL_HL", "INT_HFP_BT_HOSTLESS Capture",
12364 0, 0, 0, 0),
12365 SND_SOC_DAPM_AIF_IN("USBAUDIO_DL_HL", "USBAUDIO_HOSTLESS Playback",
12366 0, 0, 0, 0),
12367 SND_SOC_DAPM_AIF_OUT("USBAUDIO_UL_HL", "USBAUDIO_HOSTLESS Capture",
12368 0, 0, 0, 0),
12369 SND_SOC_DAPM_AIF_IN("HDMI_DL_HL", "HDMI_HOSTLESS Playback", 0, 0, 0, 0),
12370 SND_SOC_DAPM_AIF_IN("SEC_I2S_DL_HL", "SEC_I2S_RX_HOSTLESS Playback",
12371 0, 0, 0, 0),
12372 SND_SOC_DAPM_AIF_IN("INT0_MI2S_DL_HL",
12373 "INT0 MI2S_RX Hostless Playback",
12374 0, 0, 0, 0),
12375 SND_SOC_DAPM_AIF_IN("INT4_MI2S_DL_HL",
12376 "INT4 MI2S_RX Hostless Playback",
12377 0, 0, 0, 0),
12378 SND_SOC_DAPM_AIF_IN("PRI_MI2S_DL_HL",
12379 "Primary MI2S_RX Hostless Playback",
12380 0, 0, 0, 0),
12381 SND_SOC_DAPM_AIF_IN("SEC_MI2S_DL_HL",
12382 "Secondary MI2S_RX Hostless Playback",
12383 0, 0, 0, 0),
12384 SND_SOC_DAPM_AIF_IN("TERT_MI2S_DL_HL",
12385 "Tertiary MI2S_RX Hostless Playback",
12386 0, 0, 0, 0),
12387 SND_SOC_DAPM_AIF_IN("QUAT_MI2S_DL_HL",
12388 "Quaternary MI2S_RX Hostless Playback",
12389 0, 0, 0, 0),
Rohit Kumara5077932017-09-10 22:05:05 +053012390 SND_SOC_DAPM_AIF_IN("QUIN_MI2S_DL_HL",
12391 "Quinary MI2S_RX Hostless Playback",
12392 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012393
12394 SND_SOC_DAPM_AIF_IN("AUXPCM_DL_HL", "AUXPCM_HOSTLESS Playback",
12395 0, 0, 0, 0),
12396 SND_SOC_DAPM_AIF_OUT("AUXPCM_UL_HL", "AUXPCM_HOSTLESS Capture",
12397 0, 0, 0, 0),
Karthikeyan Mani9f66f6f2017-12-13 13:38:46 -080012398 SND_SOC_DAPM_AIF_IN("SEC_AUXPCM_DL_HL", "SEC_AUXPCM_HOSTLESS Playback",
12399 0, 0, 0, 0),
12400 SND_SOC_DAPM_AIF_OUT("SEC_AUXPCM_UL_HL", "SEC_AUXPCM_HOSTLESS Capture",
12401 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012402 SND_SOC_DAPM_AIF_OUT("MI2S_UL_HL", "MI2S_TX_HOSTLESS Capture",
12403 0, 0, 0, 0),
12404 SND_SOC_DAPM_AIF_OUT("INT3_MI2S_UL_HL",
12405 "INT3 MI2S_TX Hostless Capture",
12406 0, 0, 0, 0),
12407 SND_SOC_DAPM_AIF_OUT("TERT_MI2S_UL_HL",
12408 "Tertiary MI2S_TX Hostless Capture",
12409 0, 0, 0, 0),
12410 SND_SOC_DAPM_AIF_OUT("SEC_MI2S_UL_HL",
12411 "Secondary MI2S_TX Hostless Capture",
12412 0, 0, 0, 0),
12413 SND_SOC_DAPM_AIF_OUT("PRI_MI2S_UL_HL",
12414 "Primary MI2S_TX Hostless Capture",
12415 0, 0, 0, 0),
12416 SND_SOC_DAPM_AIF_OUT("MI2S_DL_HL", "MI2S_RX_HOSTLESS Playback",
12417 0, 0, 0, 0),
12418 SND_SOC_DAPM_AIF_IN("DTMF_DL_HL", "DTMF_RX_HOSTLESS Playback",
12419 0, 0, 0, 0),
12420 SND_SOC_DAPM_AIF_OUT("QUAT_MI2S_UL_HL",
12421 "Quaternary MI2S_TX Hostless Capture",
12422 0, 0, 0, 0),
Rohit Kumara5077932017-09-10 22:05:05 +053012423 SND_SOC_DAPM_AIF_OUT("QUIN_MI2S_UL_HL",
12424 "Quinary MI2S_TX Hostless Capture",
12425 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012426
12427 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_0_DL_HL",
12428 "Primary TDM0 Hostless Playback",
12429 0, 0, 0, 0),
12430 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_0_UL_HL",
12431 "Primary TDM0 Hostless Capture",
12432 0, 0, 0, 0),
12433 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_1_DL_HL",
12434 "Primary TDM1 Hostless Playback",
12435 0, 0, 0, 0),
12436 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_1_UL_HL",
12437 "Primary TDM1 Hostless Capture",
12438 0, 0, 0, 0),
12439 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_2_DL_HL",
12440 "Primary TDM2 Hostless Playback",
12441 0, 0, 0, 0),
12442 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_2_UL_HL",
12443 "Primary TDM2 Hostless Capture",
12444 0, 0, 0, 0),
12445 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_3_DL_HL",
12446 "Primary TDM3 Hostless Playback",
12447 0, 0, 0, 0),
12448 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_3_UL_HL",
12449 "Primary TDM3 Hostless Capture",
12450 0, 0, 0, 0),
12451 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_4_DL_HL",
12452 "Primary TDM4 Hostless Playback",
12453 0, 0, 0, 0),
12454 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_4_UL_HL",
12455 "Primary TDM4 Hostless Capture",
12456 0, 0, 0, 0),
12457 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_5_DL_HL",
12458 "Primary TDM5 Hostless Playback",
12459 0, 0, 0, 0),
12460 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_5_UL_HL",
12461 "Primary TDM5 Hostless Capture",
12462 0, 0, 0, 0),
12463 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_6_DL_HL",
12464 "Primary TDM6 Hostless Playback",
12465 0, 0, 0, 0),
12466 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_6_UL_HL",
12467 "Primary TDM6 Hostless Capture",
12468 0, 0, 0, 0),
12469 SND_SOC_DAPM_AIF_IN("PRI_TDM_RX_7_DL_HL",
12470 "Primary TDM7 Hostless Playback",
12471 0, 0, 0, 0),
12472 SND_SOC_DAPM_AIF_OUT("PRI_TDM_TX_7_UL_HL",
12473 "Primary TDM7 Hostless Capture",
12474 0, 0, 0, 0),
12475 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_0_DL_HL",
12476 "Secondary TDM0 Hostless Playback",
12477 0, 0, 0, 0),
12478 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_0_UL_HL",
12479 "Secondary TDM0 Hostless Capture",
12480 0, 0, 0, 0),
12481 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_1_DL_HL",
12482 "Secondary TDM1 Hostless Playback",
12483 0, 0, 0, 0),
12484 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_1_UL_HL",
12485 "Secondary TDM1 Hostless Capture",
12486 0, 0, 0, 0),
12487 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_2_DL_HL",
12488 "Secondary TDM2 Hostless Playback",
12489 0, 0, 0, 0),
12490 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_2_UL_HL",
12491 "Secondary TDM2 Hostless Capture",
12492 0, 0, 0, 0),
12493 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_3_DL_HL",
12494 "Secondary TDM3 Hostless Playback",
12495 0, 0, 0, 0),
12496 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_3_UL_HL",
12497 "Secondary TDM3 Hostless Capture",
12498 0, 0, 0, 0),
12499 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_4_DL_HL",
12500 "Secondary TDM4 Hostless Playback",
12501 0, 0, 0, 0),
12502 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_4_UL_HL",
12503 "Secondary TDM4 Hostless Capture",
12504 0, 0, 0, 0),
12505 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_5_DL_HL",
12506 "Secondary TDM5 Hostless Playback",
12507 0, 0, 0, 0),
12508 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_5_UL_HL",
12509 "Secondary TDM5 Hostless Capture",
12510 0, 0, 0, 0),
12511 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_6_DL_HL",
12512 "Secondary TDM6 Hostless Playback",
12513 0, 0, 0, 0),
12514 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_6_UL_HL",
12515 "Secondary TDM6 Hostless Capture",
12516 0, 0, 0, 0),
12517 SND_SOC_DAPM_AIF_IN("SEC_TDM_RX_7_DL_HL",
12518 "Secondary TDM7 Hostless Playback",
12519 0, 0, 0, 0),
12520 SND_SOC_DAPM_AIF_OUT("SEC_TDM_TX_7_UL_HL",
12521 "Secondary TDM7 Hostless Capture",
12522 0, 0, 0, 0),
12523 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_0_DL_HL",
12524 "Tertiary TDM0 Hostless Playback",
12525 0, 0, 0, 0),
12526 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_0_UL_HL",
12527 "Tertiary TDM0 Hostless Capture",
12528 0, 0, 0, 0),
12529 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_1_DL_HL",
12530 "Tertiary TDM1 Hostless Playback",
12531 0, 0, 0, 0),
12532 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_1_UL_HL",
12533 "Tertiary TDM1 Hostless Capture",
12534 0, 0, 0, 0),
12535 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_2_DL_HL",
12536 "Tertiary TDM2 Hostless Playback",
12537 0, 0, 0, 0),
12538 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_2_UL_HL",
12539 "Tertiary TDM2 Hostless Capture",
12540 0, 0, 0, 0),
12541 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_3_DL_HL",
12542 "Tertiary TDM3 Hostless Playback",
12543 0, 0, 0, 0),
12544 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_3_UL_HL",
12545 "Tertiary TDM3 Hostless Capture",
12546 0, 0, 0, 0),
12547 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_4_DL_HL",
12548 "Tertiary TDM4 Hostless Playback",
12549 0, 0, 0, 0),
12550 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_4_UL_HL",
12551 "Tertiary TDM4 Hostless Capture",
12552 0, 0, 0, 0),
12553 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_5_DL_HL",
12554 "Tertiary TDM5 Hostless Playback",
12555 0, 0, 0, 0),
12556 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_5_UL_HL",
12557 "Tertiary TDM5 Hostless Capture",
12558 0, 0, 0, 0),
12559 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_6_DL_HL",
12560 "Tertiary TDM6 Hostless Playback",
12561 0, 0, 0, 0),
12562 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_6_UL_HL",
12563 "Tertiary TDM6 Hostless Capture",
12564 0, 0, 0, 0),
12565 SND_SOC_DAPM_AIF_IN("TERT_TDM_RX_7_DL_HL",
12566 "Tertiary TDM7 Hostless Playback",
12567 0, 0, 0, 0),
12568 SND_SOC_DAPM_AIF_OUT("TERT_TDM_TX_7_UL_HL",
12569 "Tertiary TDM7 Hostless Capture",
12570 0, 0, 0, 0),
12571 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_0_DL_HL",
12572 "Quaternary TDM0 Hostless Playback",
12573 0, 0, 0, 0),
12574 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_0_UL_HL",
12575 "Quaternary TDM0 Hostless Capture",
12576 0, 0, 0, 0),
12577 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_1_DL_HL",
12578 "Quaternary TDM1 Hostless Playback",
12579 0, 0, 0, 0),
12580 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_1_UL_HL",
12581 "Quaternary TDM1 Hostless Capture",
12582 0, 0, 0, 0),
12583 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_2_DL_HL",
12584 "Quaternary TDM2 Hostless Playback",
12585 0, 0, 0, 0),
12586 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_2_UL_HL",
12587 "Quaternary TDM2 Hostless Capture",
12588 0, 0, 0, 0),
12589 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_3_DL_HL",
12590 "Quaternary TDM3 Hostless Playback",
12591 0, 0, 0, 0),
12592 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_3_UL_HL",
12593 "Quaternary TDM3 Hostless Capture",
12594 0, 0, 0, 0),
12595 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_4_DL_HL",
12596 "Quaternary TDM4 Hostless Playback",
12597 0, 0, 0, 0),
12598 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_4_UL_HL",
12599 "Quaternary TDM4 Hostless Capture",
12600 0, 0, 0, 0),
12601 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_5_DL_HL",
12602 "Quaternary TDM5 Hostless Playback",
12603 0, 0, 0, 0),
12604 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_5_UL_HL",
12605 "Quaternary TDM5 Hostless Capture",
12606 0, 0, 0, 0),
12607 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_6_DL_HL",
12608 "Quaternary TDM6 Hostless Playback",
12609 0, 0, 0, 0),
12610 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_6_UL_HL",
12611 "Quaternary TDM6 Hostless Capture",
12612 0, 0, 0, 0),
12613 SND_SOC_DAPM_AIF_IN("QUAT_TDM_RX_7_DL_HL",
12614 "Quaternary TDM7 Hostless Playback",
12615 0, 0, 0, 0),
12616 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_TX_7_UL_HL",
12617 "Quaternary TDM7 Hostless Capture",
12618 0, 0, 0, 0),
Rohit Kumara5077932017-09-10 22:05:05 +053012619 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_0_DL_HL",
12620 "Quinary TDM0 Hostless Playback",
12621 0, 0, 0, 0),
12622 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_0_UL_HL",
12623 "Quinary TDM0 Hostless Capture",
12624 0, 0, 0, 0),
12625 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_1_DL_HL",
12626 "Quinary TDM1 Hostless Playback",
12627 0, 0, 0, 0),
12628 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_1_UL_HL",
12629 "Quinary TDM1 Hostless Capture",
12630 0, 0, 0, 0),
12631 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_2_DL_HL",
12632 "Quinary TDM2 Hostless Playback",
12633 0, 0, 0, 0),
12634 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_2_UL_HL",
12635 "Quinary TDM2 Hostless Capture",
12636 0, 0, 0, 0),
12637 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_3_DL_HL",
12638 "Quinary TDM3 Hostless Playback",
12639 0, 0, 0, 0),
12640 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_3_UL_HL",
12641 "Quinary TDM3 Hostless Capture",
12642 0, 0, 0, 0),
12643 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_4_DL_HL",
12644 "Quinary TDM4 Hostless Playback",
12645 0, 0, 0, 0),
12646 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_4_UL_HL",
12647 "Quinary TDM4 Hostless Capture",
12648 0, 0, 0, 0),
12649 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_5_DL_HL",
12650 "Quinary TDM5 Hostless Playback",
12651 0, 0, 0, 0),
12652 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_5_UL_HL",
12653 "Quinary TDM5 Hostless Capture",
12654 0, 0, 0, 0),
12655 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_6_DL_HL",
12656 "Quinary TDM6 Hostless Playback",
12657 0, 0, 0, 0),
12658 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_6_UL_HL",
12659 "Quinary TDM6 Hostless Capture",
12660 0, 0, 0, 0),
12661 SND_SOC_DAPM_AIF_IN("QUIN_TDM_RX_7_DL_HL",
12662 "Quinary TDM7 Hostless Playback",
12663 0, 0, 0, 0),
12664 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_TX_7_UL_HL",
12665 "Quinary TDM7 Hostless Capture",
12666 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012667
12668 /* LSM */
12669 SND_SOC_DAPM_AIF_OUT("LSM1_UL_HL", "Listen 1 Audio Service Capture",
12670 0, 0, 0, 0),
12671 SND_SOC_DAPM_AIF_OUT("LSM2_UL_HL", "Listen 2 Audio Service Capture",
12672 0, 0, 0, 0),
12673 SND_SOC_DAPM_AIF_OUT("LSM3_UL_HL", "Listen 3 Audio Service Capture",
12674 0, 0, 0, 0),
12675 SND_SOC_DAPM_AIF_OUT("LSM4_UL_HL", "Listen 4 Audio Service Capture",
12676 0, 0, 0, 0),
12677 SND_SOC_DAPM_AIF_OUT("LSM5_UL_HL", "Listen 5 Audio Service Capture",
12678 0, 0, 0, 0),
12679 SND_SOC_DAPM_AIF_OUT("LSM6_UL_HL", "Listen 6 Audio Service Capture",
12680 0, 0, 0, 0),
12681 SND_SOC_DAPM_AIF_OUT("LSM7_UL_HL", "Listen 7 Audio Service Capture",
12682 0, 0, 0, 0),
12683 SND_SOC_DAPM_AIF_OUT("LSM8_UL_HL", "Listen 8 Audio Service Capture",
12684 0, 0, 0, 0),
12685 SND_SOC_DAPM_AIF_IN("QCHAT_DL", "QCHAT Playback", 0, 0, 0, 0),
12686 SND_SOC_DAPM_AIF_OUT("QCHAT_UL", "QCHAT Capture", 0, 0, 0, 0),
12687 /* Backend AIF */
12688 /* Stream name equals to backend dai link stream name */
12689 SND_SOC_DAPM_AIF_OUT("PRI_I2S_RX", "Primary I2S Playback", 0, 0, 0, 0),
12690 SND_SOC_DAPM_AIF_OUT("SEC_I2S_RX", "Secondary I2S Playback",
12691 0, 0, 0, 0),
12692 SND_SOC_DAPM_AIF_OUT("SPDIF_RX", "SPDIF Playback", 0, 0, 0, 0),
12693 SND_SOC_DAPM_AIF_OUT("SLIMBUS_0_RX", "Slimbus Playback", 0, 0, 0, 0),
12694 SND_SOC_DAPM_AIF_OUT("SLIMBUS_2_RX", "Slimbus2 Playback", 0, 0, 0, 0),
12695 SND_SOC_DAPM_AIF_OUT("SLIMBUS_5_RX", "Slimbus5 Playback", 0, 0, 0, 0),
12696 SND_SOC_DAPM_AIF_OUT("HDMI", "HDMI Playback", 0, 0, 0, 0),
12697 SND_SOC_DAPM_AIF_OUT("DISPLAY_PORT", "Display Port Playback",
12698 0, 0, 0, 0),
12699 SND_SOC_DAPM_AIF_OUT("MI2S_RX", "MI2S Playback", 0, 0, 0, 0),
12700 SND_SOC_DAPM_AIF_OUT("QUAT_MI2S_RX", "Quaternary MI2S Playback",
12701 0, 0, 0, 0),
12702 SND_SOC_DAPM_AIF_OUT("TERT_MI2S_RX", "Tertiary MI2S Playback",
12703 0, 0, 0, 0),
12704 SND_SOC_DAPM_AIF_OUT("SEC_MI2S_RX", "Secondary MI2S Playback",
12705 0, 0, 0, 0),
12706 SND_SOC_DAPM_AIF_OUT("SEC_MI2S_RX_SD1",
12707 "Secondary MI2S Playback SD1",
12708 0, 0, 0, 0),
12709 SND_SOC_DAPM_AIF_OUT("PRI_MI2S_RX", "Primary MI2S Playback",
12710 0, 0, 0, 0),
12711 SND_SOC_DAPM_AIF_OUT("INT0_MI2S_RX", "INT0 MI2S Playback",
12712 0, 0, 0, 0),
Laxminath Kasam52697fe2017-11-29 15:44:14 +053012713 SND_SOC_DAPM_AIF_OUT("INT2_MI2S_RX", "INT2 MI2S Playback",
12714 0, 0, 0, 0),
12715 SND_SOC_DAPM_AIF_OUT("INT3_MI2S_RX", "INT3 MI2S Playback",
12716 0, 0, 0, 0),
12717 SND_SOC_DAPM_AIF_OUT("INT5_MI2S_RX", "INT5 MI2S Playback",
12718 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012719 SND_SOC_DAPM_AIF_OUT("INT4_MI2S_RX", "INT4 MI2S Playback",
12720 0, 0, 0, 0),
Laxminath Kasam52697fe2017-11-29 15:44:14 +053012721 SND_SOC_DAPM_AIF_OUT("INT4_MI2S_TX", "INT4 MI2S Capture",
12722 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012723 SND_SOC_DAPM_AIF_OUT("QUIN_MI2S_RX", "Quinary MI2S Playback",
12724 0, 0, 0, 0),
12725 SND_SOC_DAPM_AIF_IN("PRI_I2S_TX", "Primary I2S Capture", 0, 0, 0, 0),
12726 SND_SOC_DAPM_AIF_IN("MI2S_TX", "MI2S Capture", 0, 0, 0, 0),
12727 SND_SOC_DAPM_AIF_IN("QUAT_MI2S_TX", "Quaternary MI2S Capture",
12728 0, 0, 0, 0),
12729 SND_SOC_DAPM_AIF_IN("PRI_MI2S_TX", "Primary MI2S Capture",
12730 0, 0, 0, 0),
12731 SND_SOC_DAPM_AIF_IN("TERT_MI2S_TX", "Tertiary MI2S Capture",
12732 0, 0, 0, 0),
Laxminath Kasam52697fe2017-11-29 15:44:14 +053012733 SND_SOC_DAPM_AIF_OUT("INT0_MI2S_TX", "INT0 MI2S Capture",
12734 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012735 SND_SOC_DAPM_AIF_IN("INT2_MI2S_TX", "INT2 MI2S Capture",
12736 0, 0, 0, 0),
12737 SND_SOC_DAPM_AIF_IN("INT3_MI2S_TX", "INT3 MI2S Capture",
12738 0, 0, 0, 0),
12739 SND_SOC_DAPM_AIF_IN("SEC_MI2S_TX", "Secondary MI2S Capture",
12740 0, 0, 0, 0),
12741 SND_SOC_DAPM_AIF_IN("SLIMBUS_0_TX", "Slimbus Capture", 0, 0, 0, 0),
12742 SND_SOC_DAPM_AIF_IN("SLIMBUS_2_TX", "Slimbus2 Capture", 0, 0, 0, 0),
12743 SND_SOC_DAPM_AIF_IN("QUIN_MI2S_TX", "Quinary MI2S Capture",
12744 0, 0, 0, 0),
12745 SND_SOC_DAPM_AIF_IN("SENARY_MI2S_TX", "Senary MI2S Capture",
12746 0, 0, 0, 0),
12747 SND_SOC_DAPM_AIF_OUT("INT_BT_SCO_RX", "Internal BT-SCO Playback",
12748 0, 0, 0, 0),
12749 SND_SOC_DAPM_AIF_IN("INT_BT_SCO_TX", "Internal BT-SCO Capture",
12750 0, 0, 0, 0),
12751 SND_SOC_DAPM_AIF_OUT("INT_BT_A2DP_RX", "Internal BT-A2DP Playback",
12752 0, 0, 0, 0),
12753 SND_SOC_DAPM_AIF_OUT("INT_FM_RX", "Internal FM Playback",
12754 0, 0, 0, 0),
12755 SND_SOC_DAPM_AIF_IN("INT_FM_TX", "Internal FM Capture",
12756 0, 0, 0, 0),
12757 SND_SOC_DAPM_AIF_OUT("PCM_RX", "AFE Playback",
12758 0, 0, 0, 0),
12759 SND_SOC_DAPM_AIF_IN("PCM_TX", "AFE Capture",
12760 0, 0, 0, 0),
12761 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_0", "Primary TDM0 Playback",
12762 0, 0, 0, 0),
12763 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_0", "Primary TDM0 Capture",
12764 0, 0, 0, 0),
12765 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_1", "Primary TDM1 Playback",
12766 0, 0, 0, 0),
12767 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_1", "Primary TDM1 Capture",
12768 0, 0, 0, 0),
12769 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_2", "Primary TDM2 Playback",
12770 0, 0, 0, 0),
12771 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_2", "Primary TDM2 Capture",
12772 0, 0, 0, 0),
12773 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_3", "Primary TDM3 Playback",
12774 0, 0, 0, 0),
12775 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_3", "Primary TDM3 Capture",
12776 0, 0, 0, 0),
12777 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_4", "Primary TDM4 Playback",
12778 0, 0, 0, 0),
12779 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_4", "Primary TDM4 Capture",
12780 0, 0, 0, 0),
12781 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_5", "Primary TDM5 Playback",
12782 0, 0, 0, 0),
12783 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_5", "Primary TDM5 Capture",
12784 0, 0, 0, 0),
12785 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_6", "Primary TDM6 Playback",
12786 0, 0, 0, 0),
12787 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_6", "Primary TDM6 Capture",
12788 0, 0, 0, 0),
12789 SND_SOC_DAPM_AIF_OUT("PRI_TDM_RX_7", "Primary TDM7 Playback",
12790 0, 0, 0, 0),
12791 SND_SOC_DAPM_AIF_IN("PRI_TDM_TX_7", "Primary TDM7 Capture",
12792 0, 0, 0, 0),
12793 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_0", "Secondary TDM0 Playback",
12794 0, 0, 0, 0),
12795 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_0", "Secondary TDM0 Capture",
12796 0, 0, 0, 0),
12797 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_1", "Secondary TDM1 Playback",
12798 0, 0, 0, 0),
12799 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_1", "Secondary TDM1 Capture",
12800 0, 0, 0, 0),
12801 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_2", "Secondary TDM2 Playback",
12802 0, 0, 0, 0),
12803 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_2", "Secondary TDM2 Capture",
12804 0, 0, 0, 0),
12805 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_3", "Secondary TDM3 Playback",
12806 0, 0, 0, 0),
12807 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_3", "Secondary TDM3 Capture",
12808 0, 0, 0, 0),
12809 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_4", "Secondary TDM4 Playback",
12810 0, 0, 0, 0),
12811 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_4", "Secondary TDM4 Capture",
12812 0, 0, 0, 0),
12813 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_5", "Secondary TDM5 Playback",
12814 0, 0, 0, 0),
12815 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_5", "Secondary TDM5 Capture",
12816 0, 0, 0, 0),
12817 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_6", "Secondary TDM6 Playback",
12818 0, 0, 0, 0),
12819 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_6", "Secondary TDM6 Capture",
12820 0, 0, 0, 0),
12821 SND_SOC_DAPM_AIF_OUT("SEC_TDM_RX_7", "Secondary TDM7 Playback",
12822 0, 0, 0, 0),
12823 SND_SOC_DAPM_AIF_IN("SEC_TDM_TX_7", "Secondary TDM7 Capture",
12824 0, 0, 0, 0),
12825 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_0", "Tertiary TDM0 Playback",
12826 0, 0, 0, 0),
12827 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_0", "Tertiary TDM0 Capture",
12828 0, 0, 0, 0),
12829 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_1", "Tertiary TDM1 Playback",
12830 0, 0, 0, 0),
12831 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_1", "Tertiary TDM1 Capture",
12832 0, 0, 0, 0),
12833 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_2", "Tertiary TDM2 Playback",
12834 0, 0, 0, 0),
12835 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_2", "Tertiary TDM2 Capture",
12836 0, 0, 0, 0),
12837 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_3", "Tertiary TDM3 Playback",
12838 0, 0, 0, 0),
12839 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_3", "Tertiary TDM3 Capture",
12840 0, 0, 0, 0),
12841 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_4", "Tertiary TDM4 Playback",
12842 0, 0, 0, 0),
12843 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_4", "Tertiary TDM4 Capture",
12844 0, 0, 0, 0),
12845 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_5", "Tertiary TDM5 Playback",
12846 0, 0, 0, 0),
12847 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_5", "Tertiary TDM5 Capture",
12848 0, 0, 0, 0),
12849 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_6", "Tertiary TDM6 Playback",
12850 0, 0, 0, 0),
12851 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_6", "Tertiary TDM6 Capture",
12852 0, 0, 0, 0),
12853 SND_SOC_DAPM_AIF_OUT("TERT_TDM_RX_7", "Tertiary TDM7 Playback",
12854 0, 0, 0, 0),
12855 SND_SOC_DAPM_AIF_IN("TERT_TDM_TX_7", "Tertiary TDM7 Capture",
12856 0, 0, 0, 0),
12857 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_0", "Quaternary TDM0 Playback",
12858 0, 0, 0, 0),
12859 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_0", "Quaternary TDM0 Capture",
12860 0, 0, 0, 0),
12861 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_1", "Quaternary TDM1 Playback",
12862 0, 0, 0, 0),
12863 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_1", "Quaternary TDM1 Capture",
12864 0, 0, 0, 0),
12865 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_2", "Quaternary TDM2 Playback",
12866 0, 0, 0, 0),
12867 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_2", "Quaternary TDM2 Capture",
12868 0, 0, 0, 0),
12869 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_3", "Quaternary TDM3 Playback",
12870 0, 0, 0, 0),
12871 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_3", "Quaternary TDM3 Capture",
12872 0, 0, 0, 0),
12873 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_4", "Quaternary TDM4 Playback",
12874 0, 0, 0, 0),
12875 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_4", "Quaternary TDM4 Capture",
12876 0, 0, 0, 0),
12877 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_5", "Quaternary TDM5 Playback",
12878 0, 0, 0, 0),
12879 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_5", "Quaternary TDM5 Capture",
12880 0, 0, 0, 0),
12881 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_6", "Quaternary TDM6 Playback",
12882 0, 0, 0, 0),
12883 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_6", "Quaternary TDM6 Capture",
12884 0, 0, 0, 0),
12885 SND_SOC_DAPM_AIF_OUT("QUAT_TDM_RX_7", "Quaternary TDM7 Playback",
12886 0, 0, 0, 0),
12887 SND_SOC_DAPM_AIF_IN("QUAT_TDM_TX_7", "Quaternary TDM7 Capture",
12888 0, 0, 0, 0),
Rohit Kumara5077932017-09-10 22:05:05 +053012889 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_0", "Quinary TDM0 Playback",
12890 0, 0, 0, 0),
12891 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_0", "Quinary TDM0 Capture",
12892 0, 0, 0, 0),
12893 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_1", "Quinary TDM1 Playback",
12894 0, 0, 0, 0),
12895 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_1", "Quinary TDM1 Capture",
12896 0, 0, 0, 0),
12897 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_2", "Quinary TDM2 Playback",
12898 0, 0, 0, 0),
12899 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_2", "Quinary TDM2 Capture",
12900 0, 0, 0, 0),
12901 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_3", "Quinary TDM3 Playback",
12902 0, 0, 0, 0),
12903 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_3", "Quinary TDM3 Capture",
12904 0, 0, 0, 0),
12905 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_4", "Quinary TDM4 Playback",
12906 0, 0, 0, 0),
12907 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_4", "Quinary TDM4 Capture",
12908 0, 0, 0, 0),
12909 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_5", "Quinary TDM5 Playback",
12910 0, 0, 0, 0),
12911 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_5", "Quinary TDM5 Capture",
12912 0, 0, 0, 0),
12913 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_6", "Quinary TDM6 Playback",
12914 0, 0, 0, 0),
12915 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_6", "Quinary TDM6 Capture",
12916 0, 0, 0, 0),
12917 SND_SOC_DAPM_AIF_OUT("QUIN_TDM_RX_7", "Quinary TDM7 Playback",
12918 0, 0, 0, 0),
12919 SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_7", "Quinary TDM7 Capture",
12920 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012921 /* incall */
12922 SND_SOC_DAPM_AIF_OUT("VOICE_PLAYBACK_TX", "Voice Farend Playback",
12923 0, 0, 0, 0),
12924 SND_SOC_DAPM_AIF_OUT("VOICE2_PLAYBACK_TX", "Voice2 Farend Playback",
12925 0, 0, 0, 0),
12926 SND_SOC_DAPM_AIF_OUT("SLIMBUS_4_RX", "Slimbus4 Playback",
12927 0, 0, 0, 0),
12928 SND_SOC_DAPM_AIF_IN("INCALL_RECORD_TX", "Voice Uplink Capture",
12929 0, 0, 0, 0),
12930 SND_SOC_DAPM_AIF_IN("INCALL_RECORD_RX", "Voice Downlink Capture",
12931 0, 0, 0, 0),
12932 SND_SOC_DAPM_AIF_IN("SLIMBUS_4_TX", "Slimbus4 Capture",
12933 0, 0, 0, 0),
12934 SND_SOC_DAPM_AIF_IN("SENARY_TX", "Senary_mi2s Capture",
12935 0, 0, 0, 0),
12936 SND_SOC_DAPM_AIF_IN("INT5_MI2S_TX", "INT5 MI2S Capture",
12937 0, 0, 0, 0),
12938 SND_SOC_DAPM_AIF_IN("SLIMBUS_5_TX", "Slimbus5 Capture", 0, 0, 0, 0),
12939
12940 SND_SOC_DAPM_AIF_OUT("AUX_PCM_RX", "AUX PCM Playback", 0, 0, 0, 0),
12941 SND_SOC_DAPM_AIF_IN("AUX_PCM_TX", "AUX PCM Capture", 0, 0, 0, 0),
12942 SND_SOC_DAPM_AIF_OUT("SEC_AUX_PCM_RX", "Sec AUX PCM Playback",
12943 0, 0, 0, 0),
12944 SND_SOC_DAPM_AIF_IN("SEC_AUX_PCM_TX", "Sec AUX PCM Capture",
12945 0, 0, 0, 0),
12946 SND_SOC_DAPM_AIF_OUT("TERT_AUX_PCM_RX", "Tert AUX PCM Playback",
12947 0, 0, 0, 0),
12948 SND_SOC_DAPM_AIF_IN("TERT_AUX_PCM_TX", "Tert AUX PCM Capture",
12949 0, 0, 0, 0),
12950 SND_SOC_DAPM_AIF_OUT("QUAT_AUX_PCM_RX", "Quat AUX PCM Playback",
12951 0, 0, 0, 0),
12952 SND_SOC_DAPM_AIF_IN("QUAT_AUX_PCM_TX", "Quat AUX PCM Capture",
12953 0, 0, 0, 0),
Rohit Kumara5077932017-09-10 22:05:05 +053012954 SND_SOC_DAPM_AIF_OUT("QUIN_AUX_PCM_RX", "Quin AUX PCM Playback",
12955 0, 0, 0, 0),
12956 SND_SOC_DAPM_AIF_IN("QUIN_AUX_PCM_TX", "Quin AUX PCM Capture",
12957 0, 0, 0, 0),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053012958 SND_SOC_DAPM_AIF_IN("VOICE_STUB_DL", "VOICE_STUB Playback", 0, 0, 0, 0),
12959 SND_SOC_DAPM_AIF_OUT("VOICE_STUB_UL", "VOICE_STUB Capture", 0, 0, 0, 0),
12960 SND_SOC_DAPM_AIF_IN("VOICE2_STUB_DL", "VOICE2_STUB Playback",
12961 0, 0, 0, 0),
12962 SND_SOC_DAPM_AIF_OUT("VOICE2_STUB_UL", "VOICE2_STUB Capture",
12963 0, 0, 0, 0),
12964 SND_SOC_DAPM_AIF_IN("VOLTE_STUB_DL", "VOLTE_STUB Playback", 0, 0, 0, 0),
12965 SND_SOC_DAPM_AIF_OUT("VOLTE_STUB_UL", "VOLTE_STUB Capture", 0, 0, 0, 0),
12966 SND_SOC_DAPM_AIF_OUT("STUB_RX", "Stub Playback", 0, 0, 0, 0),
12967 SND_SOC_DAPM_AIF_IN("STUB_TX", "Stub Capture", 0, 0, 0, 0),
12968 SND_SOC_DAPM_AIF_OUT("SLIMBUS_1_RX", "Slimbus1 Playback", 0, 0, 0, 0),
12969 SND_SOC_DAPM_AIF_IN("SLIMBUS_1_TX", "Slimbus1 Capture", 0, 0, 0, 0),
12970 SND_SOC_DAPM_AIF_IN("STUB_1_TX", "Stub1 Capture", 0, 0, 0, 0),
12971 SND_SOC_DAPM_AIF_OUT("SLIMBUS_3_RX", "Slimbus3 Playback", 0, 0, 0, 0),
12972 SND_SOC_DAPM_AIF_IN("SLIMBUS_3_TX", "Slimbus3 Capture", 0, 0, 0, 0),
12973 /* In- call recording */
12974 SND_SOC_DAPM_AIF_OUT("SLIMBUS_6_RX", "Slimbus6 Playback", 0, 0, 0, 0),
12975 SND_SOC_DAPM_AIF_IN("SLIMBUS_6_TX", "Slimbus6 Capture", 0, 0, 0, 0),
12976
12977 SND_SOC_DAPM_AIF_OUT("SLIMBUS_7_RX", "Slimbus7 Playback", 0, 0, 0, 0),
12978 SND_SOC_DAPM_AIF_IN("SLIMBUS_7_TX", "Slimbus7 Capture", 0, 0, 0, 0),
12979
12980 SND_SOC_DAPM_AIF_OUT("SLIMBUS_8_RX", "Slimbus8 Playback", 0, 0, 0, 0),
12981 SND_SOC_DAPM_AIF_IN("SLIMBUS_8_TX", "Slimbus8 Capture", 0, 0, 0, 0),
12982 SND_SOC_DAPM_AIF_OUT("USB_AUDIO_RX", "USB Audio Playback", 0, 0, 0, 0),
12983 SND_SOC_DAPM_AIF_IN("USB_AUDIO_TX", "USB Audio Capture", 0, 0, 0, 0),
12984
12985 /* Switch Definitions */
12986 SND_SOC_DAPM_SWITCH("SLIMBUS_DL_HL", SND_SOC_NOPM, 0, 0,
12987 &slim_fm_switch_mixer_controls),
12988 SND_SOC_DAPM_SWITCH("SLIMBUS1_DL_HL", SND_SOC_NOPM, 0, 0,
12989 &slim1_fm_switch_mixer_controls),
12990 SND_SOC_DAPM_SWITCH("SLIMBUS3_DL_HL", SND_SOC_NOPM, 0, 0,
12991 &slim3_fm_switch_mixer_controls),
12992 SND_SOC_DAPM_SWITCH("SLIMBUS4_DL_HL", SND_SOC_NOPM, 0, 0,
12993 &slim4_fm_switch_mixer_controls),
12994 SND_SOC_DAPM_SWITCH("SLIMBUS6_DL_HL", SND_SOC_NOPM, 0, 0,
12995 &slim6_fm_switch_mixer_controls),
12996 SND_SOC_DAPM_SWITCH("PCM_RX_DL_HL", SND_SOC_NOPM, 0, 0,
12997 &pcm_rx_switch_mixer_controls),
12998 SND_SOC_DAPM_SWITCH("INT0_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
12999 &int0_mi2s_rx_switch_mixer_controls),
13000 SND_SOC_DAPM_SWITCH("INT4_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13001 &int4_mi2s_rx_switch_mixer_controls),
13002 SND_SOC_DAPM_SWITCH("PRI_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13003 &pri_mi2s_rx_switch_mixer_controls),
13004 SND_SOC_DAPM_SWITCH("SEC_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13005 &sec_mi2s_rx_switch_mixer_controls),
13006 SND_SOC_DAPM_SWITCH("TERT_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13007 &tert_mi2s_rx_switch_mixer_controls),
13008 SND_SOC_DAPM_SWITCH("QUAT_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13009 &quat_mi2s_rx_switch_mixer_controls),
Rohit Kumara5077932017-09-10 22:05:05 +053013010 SND_SOC_DAPM_SWITCH("QUIN_MI2S_RX_DL_HL", SND_SOC_NOPM, 0, 0,
13011 &quin_mi2s_rx_switch_mixer_controls),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013012 SND_SOC_DAPM_SWITCH("HFP_PRI_AUX_UL_HL", SND_SOC_NOPM, 0, 0,
13013 &hfp_pri_aux_switch_mixer_controls),
13014 SND_SOC_DAPM_SWITCH("HFP_AUX_UL_HL", SND_SOC_NOPM, 0, 0,
13015 &hfp_aux_switch_mixer_controls),
13016 SND_SOC_DAPM_SWITCH("HFP_INT_UL_HL", SND_SOC_NOPM, 0, 0,
13017 &hfp_int_switch_mixer_controls),
13018 SND_SOC_DAPM_SWITCH("HFP_SLIM7_UL_HL", SND_SOC_NOPM, 0, 0,
13019 &hfp_slim7_switch_mixer_controls),
13020 SND_SOC_DAPM_SWITCH("USB_DL_HL", SND_SOC_NOPM, 0, 0,
13021 &usb_switch_mixer_controls),
13022
13023 /* Mixer definitions */
13024 SND_SOC_DAPM_MIXER("PRI_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13025 pri_i2s_rx_mixer_controls, ARRAY_SIZE(pri_i2s_rx_mixer_controls)),
13026 SND_SOC_DAPM_MIXER("SEC_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13027 sec_i2s_rx_mixer_controls, ARRAY_SIZE(sec_i2s_rx_mixer_controls)),
13028 SND_SOC_DAPM_MIXER("SLIMBUS_0_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13029 slimbus_rx_mixer_controls, ARRAY_SIZE(slimbus_rx_mixer_controls)),
13030 SND_SOC_DAPM_MIXER("SLIMBUS_2_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13031 slimbus_2_rx_mixer_controls, ARRAY_SIZE(slimbus_2_rx_mixer_controls)),
13032 SND_SOC_DAPM_MIXER("SLIMBUS_5_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13033 slimbus_5_rx_mixer_controls, ARRAY_SIZE(slimbus_5_rx_mixer_controls)),
13034 SND_SOC_DAPM_MIXER("SLIMBUS_7_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13035 slimbus_7_rx_mixer_controls, ARRAY_SIZE(slimbus_7_rx_mixer_controls)),
13036 SND_SOC_DAPM_MIXER("HDMI Mixer", SND_SOC_NOPM, 0, 0,
13037 hdmi_mixer_controls, ARRAY_SIZE(hdmi_mixer_controls)),
13038 SND_SOC_DAPM_MIXER("DISPLAY_PORT Mixer", SND_SOC_NOPM, 0, 0,
13039 display_port_mixer_controls, ARRAY_SIZE(display_port_mixer_controls)),
13040 SND_SOC_DAPM_MIXER("SPDIF_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13041 spdif_rx_mixer_controls, ARRAY_SIZE(spdif_rx_mixer_controls)),
13042 SND_SOC_DAPM_MIXER("MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13043 mi2s_rx_mixer_controls, ARRAY_SIZE(mi2s_rx_mixer_controls)),
13044 SND_SOC_DAPM_MIXER("QUAT_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13045 quaternary_mi2s_rx_mixer_controls,
13046 ARRAY_SIZE(quaternary_mi2s_rx_mixer_controls)),
13047 SND_SOC_DAPM_MIXER("TERT_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13048 tertiary_mi2s_rx_mixer_controls,
13049 ARRAY_SIZE(tertiary_mi2s_rx_mixer_controls)),
13050 SND_SOC_DAPM_MIXER("SEC_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13051 secondary_mi2s_rx_mixer_controls,
13052 ARRAY_SIZE(secondary_mi2s_rx_mixer_controls)),
13053 SND_SOC_DAPM_MIXER("SEC_MI2S_RX_SD1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13054 secondary_mi2s_rx2_mixer_controls,
13055 ARRAY_SIZE(secondary_mi2s_rx2_mixer_controls)),
13056 SND_SOC_DAPM_MIXER("PRI_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13057 primary_mi2s_rx_mixer_controls,
13058 ARRAY_SIZE(primary_mi2s_rx_mixer_controls)),
13059 SND_SOC_DAPM_MIXER("INT0_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13060 int0_mi2s_rx_mixer_controls,
13061 ARRAY_SIZE(int0_mi2s_rx_mixer_controls)),
13062 SND_SOC_DAPM_MIXER("INT4_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13063 int4_mi2s_rx_mixer_controls,
13064 ARRAY_SIZE(int4_mi2s_rx_mixer_controls)),
13065 SND_SOC_DAPM_MIXER("QUIN_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13066 quinary_mi2s_rx_mixer_controls,
13067 ARRAY_SIZE(quinary_mi2s_rx_mixer_controls)),
13068 SND_SOC_DAPM_MIXER("PRI_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13069 pri_tdm_rx_0_mixer_controls,
13070 ARRAY_SIZE(pri_tdm_rx_0_mixer_controls)),
13071 SND_SOC_DAPM_MIXER("PRI_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13072 pri_tdm_rx_1_mixer_controls,
13073 ARRAY_SIZE(pri_tdm_rx_1_mixer_controls)),
13074 SND_SOC_DAPM_MIXER("PRI_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13075 pri_tdm_rx_2_mixer_controls,
13076 ARRAY_SIZE(pri_tdm_rx_2_mixer_controls)),
13077 SND_SOC_DAPM_MIXER("PRI_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
13078 pri_tdm_rx_3_mixer_controls,
13079 ARRAY_SIZE(pri_tdm_rx_3_mixer_controls)),
13080 SND_SOC_DAPM_MIXER("PRI_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13081 pri_tdm_tx_0_mixer_controls,
13082 ARRAY_SIZE(pri_tdm_tx_0_mixer_controls)),
13083 SND_SOC_DAPM_MIXER("SEC_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13084 sec_tdm_rx_0_mixer_controls,
13085 ARRAY_SIZE(sec_tdm_rx_0_mixer_controls)),
13086 SND_SOC_DAPM_MIXER("SEC_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13087 sec_tdm_rx_1_mixer_controls,
13088 ARRAY_SIZE(sec_tdm_rx_1_mixer_controls)),
13089 SND_SOC_DAPM_MIXER("SEC_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13090 sec_tdm_rx_2_mixer_controls,
13091 ARRAY_SIZE(sec_tdm_rx_2_mixer_controls)),
13092 SND_SOC_DAPM_MIXER("SEC_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
13093 sec_tdm_rx_3_mixer_controls,
13094 ARRAY_SIZE(sec_tdm_rx_3_mixer_controls)),
13095 SND_SOC_DAPM_MIXER("SEC_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13096 sec_tdm_tx_0_mixer_controls,
13097 ARRAY_SIZE(sec_tdm_tx_0_mixer_controls)),
13098 SND_SOC_DAPM_MIXER("TERT_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13099 tert_tdm_rx_0_mixer_controls,
13100 ARRAY_SIZE(tert_tdm_rx_0_mixer_controls)),
13101 SND_SOC_DAPM_MIXER("TERT_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13102 tert_tdm_tx_0_mixer_controls,
13103 ARRAY_SIZE(tert_tdm_tx_0_mixer_controls)),
13104 SND_SOC_DAPM_MIXER("TERT_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13105 tert_tdm_rx_1_mixer_controls,
13106 ARRAY_SIZE(tert_tdm_rx_1_mixer_controls)),
13107 SND_SOC_DAPM_MIXER("TERT_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13108 tert_tdm_rx_2_mixer_controls,
13109 ARRAY_SIZE(tert_tdm_rx_2_mixer_controls)),
13110 SND_SOC_DAPM_MIXER("TERT_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
13111 tert_tdm_rx_3_mixer_controls,
13112 ARRAY_SIZE(tert_tdm_rx_3_mixer_controls)),
13113 SND_SOC_DAPM_MIXER("TERT_TDM_RX_4 Audio Mixer", SND_SOC_NOPM, 0, 0,
13114 tert_tdm_rx_4_mixer_controls,
13115 ARRAY_SIZE(tert_tdm_rx_4_mixer_controls)),
13116 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13117 quat_tdm_rx_0_mixer_controls,
13118 ARRAY_SIZE(quat_tdm_rx_0_mixer_controls)),
13119 SND_SOC_DAPM_MIXER("QUAT_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13120 quat_tdm_tx_0_mixer_controls,
13121 ARRAY_SIZE(quat_tdm_tx_0_mixer_controls)),
13122 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13123 quat_tdm_rx_1_mixer_controls,
13124 ARRAY_SIZE(quat_tdm_rx_1_mixer_controls)),
13125 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13126 quat_tdm_rx_2_mixer_controls,
13127 ARRAY_SIZE(quat_tdm_rx_2_mixer_controls)),
13128 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
13129 quat_tdm_rx_3_mixer_controls,
13130 ARRAY_SIZE(quat_tdm_rx_3_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013131 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13132 quin_tdm_rx_0_mixer_controls,
13133 ARRAY_SIZE(quin_tdm_rx_0_mixer_controls)),
13134 SND_SOC_DAPM_MIXER("QUIN_TDM_TX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
13135 quin_tdm_tx_0_mixer_controls,
13136 ARRAY_SIZE(quin_tdm_tx_0_mixer_controls)),
13137 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
13138 quin_tdm_rx_1_mixer_controls,
13139 ARRAY_SIZE(quin_tdm_rx_1_mixer_controls)),
13140 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13141 quin_tdm_rx_2_mixer_controls,
13142 ARRAY_SIZE(quin_tdm_rx_2_mixer_controls)),
13143 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
13144 quin_tdm_rx_3_mixer_controls,
13145 ARRAY_SIZE(quin_tdm_rx_3_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013146 SND_SOC_DAPM_MIXER("MultiMedia1 Mixer", SND_SOC_NOPM, 0, 0,
13147 mmul1_mixer_controls, ARRAY_SIZE(mmul1_mixer_controls)),
13148 SND_SOC_DAPM_MIXER("MultiMedia2 Mixer", SND_SOC_NOPM, 0, 0,
13149 mmul2_mixer_controls, ARRAY_SIZE(mmul2_mixer_controls)),
13150 SND_SOC_DAPM_MIXER("MultiMedia3 Mixer", SND_SOC_NOPM, 0, 0,
13151 mmul3_mixer_controls, ARRAY_SIZE(mmul3_mixer_controls)),
13152 SND_SOC_DAPM_MIXER("MultiMedia4 Mixer", SND_SOC_NOPM, 0, 0,
13153 mmul4_mixer_controls, ARRAY_SIZE(mmul4_mixer_controls)),
13154 SND_SOC_DAPM_MIXER("MultiMedia5 Mixer", SND_SOC_NOPM, 0, 0,
13155 mmul5_mixer_controls, ARRAY_SIZE(mmul5_mixer_controls)),
13156 SND_SOC_DAPM_MIXER("MultiMedia6 Mixer", SND_SOC_NOPM, 0, 0,
13157 mmul6_mixer_controls, ARRAY_SIZE(mmul6_mixer_controls)),
13158 SND_SOC_DAPM_MIXER("MultiMedia8 Mixer", SND_SOC_NOPM, 0, 0,
13159 mmul8_mixer_controls, ARRAY_SIZE(mmul8_mixer_controls)),
13160 SND_SOC_DAPM_MIXER("MultiMedia9 Mixer", SND_SOC_NOPM, 0, 0,
13161 mmul9_mixer_controls, ARRAY_SIZE(mmul9_mixer_controls)),
Laxminath Kasam38070be2017-08-17 18:21:59 +053013162 SND_SOC_DAPM_MIXER("MultiMedia10 Mixer", SND_SOC_NOPM, 0, 0,
13163 mmul10_mixer_controls, ARRAY_SIZE(mmul10_mixer_controls)),
Asish Bhattacharya34504582017-08-08 12:55:01 +053013164 SND_SOC_DAPM_MIXER("MultiMedia16 Mixer", SND_SOC_NOPM, 0, 0,
13165 mmul16_mixer_controls, ARRAY_SIZE(mmul16_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013166 SND_SOC_DAPM_MIXER("MultiMedia17 Mixer", SND_SOC_NOPM, 0, 0,
13167 mmul17_mixer_controls, ARRAY_SIZE(mmul17_mixer_controls)),
13168 SND_SOC_DAPM_MIXER("MultiMedia18 Mixer", SND_SOC_NOPM, 0, 0,
13169 mmul18_mixer_controls, ARRAY_SIZE(mmul18_mixer_controls)),
13170 SND_SOC_DAPM_MIXER("MultiMedia19 Mixer", SND_SOC_NOPM, 0, 0,
13171 mmul19_mixer_controls, ARRAY_SIZE(mmul19_mixer_controls)),
13172 SND_SOC_DAPM_MIXER("MultiMedia20 Mixer", SND_SOC_NOPM, 0, 0,
13173 mmul20_mixer_controls, ARRAY_SIZE(mmul20_mixer_controls)),
13174 SND_SOC_DAPM_MIXER("AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13175 auxpcm_rx_mixer_controls, ARRAY_SIZE(auxpcm_rx_mixer_controls)),
13176 SND_SOC_DAPM_MIXER("SEC_AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13177 sec_auxpcm_rx_mixer_controls, ARRAY_SIZE(sec_auxpcm_rx_mixer_controls)),
13178 SND_SOC_DAPM_MIXER("TERT_AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13179 tert_auxpcm_rx_mixer_controls,
13180 ARRAY_SIZE(tert_auxpcm_rx_mixer_controls)),
13181 SND_SOC_DAPM_MIXER("QUAT_AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13182 quat_auxpcm_rx_mixer_controls,
13183 ARRAY_SIZE(quat_auxpcm_rx_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013184 SND_SOC_DAPM_MIXER("QUIN_AUX_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13185 quin_auxpcm_rx_mixer_controls,
13186 ARRAY_SIZE(quin_auxpcm_rx_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013187 /* incall */
13188 SND_SOC_DAPM_MIXER("Incall_Music Audio Mixer", SND_SOC_NOPM, 0, 0,
13189 incall_music_delivery_mixer_controls,
13190 ARRAY_SIZE(incall_music_delivery_mixer_controls)),
13191 SND_SOC_DAPM_MIXER("Incall_Music_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
13192 incall_music2_delivery_mixer_controls,
13193 ARRAY_SIZE(incall_music2_delivery_mixer_controls)),
13194 SND_SOC_DAPM_MIXER("SLIMBUS_4_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13195 slimbus_4_rx_mixer_controls,
13196 ARRAY_SIZE(slimbus_4_rx_mixer_controls)),
13197 SND_SOC_DAPM_MIXER("SLIMBUS_6_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13198 slimbus_6_rx_mixer_controls,
13199 ARRAY_SIZE(slimbus_6_rx_mixer_controls)),
13200 SND_SOC_DAPM_MIXER("USB_AUDIO_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13201 usb_audio_rx_mixer_controls,
13202 ARRAY_SIZE(usb_audio_rx_mixer_controls)),
13203 /* Voice Mixer */
13204 SND_SOC_DAPM_MIXER("PRI_RX_Voice Mixer",
13205 SND_SOC_NOPM, 0, 0, pri_rx_voice_mixer_controls,
13206 ARRAY_SIZE(pri_rx_voice_mixer_controls)),
13207 SND_SOC_DAPM_MIXER("SEC_RX_Voice Mixer",
13208 SND_SOC_NOPM, 0, 0,
13209 sec_i2s_rx_voice_mixer_controls,
13210 ARRAY_SIZE(sec_i2s_rx_voice_mixer_controls)),
13211 SND_SOC_DAPM_MIXER("SEC_MI2S_RX_Voice Mixer",
13212 SND_SOC_NOPM, 0, 0,
13213 sec_mi2s_rx_voice_mixer_controls,
13214 ARRAY_SIZE(sec_mi2s_rx_voice_mixer_controls)),
13215 SND_SOC_DAPM_MIXER("SLIM_0_RX_Voice Mixer",
13216 SND_SOC_NOPM, 0, 0,
13217 slimbus_rx_voice_mixer_controls,
13218 ARRAY_SIZE(slimbus_rx_voice_mixer_controls)),
13219 SND_SOC_DAPM_MIXER("INTERNAL_BT_SCO_RX_Voice Mixer",
13220 SND_SOC_NOPM, 0, 0,
13221 bt_sco_rx_voice_mixer_controls,
13222 ARRAY_SIZE(bt_sco_rx_voice_mixer_controls)),
13223 SND_SOC_DAPM_MIXER("AFE_PCM_RX_Voice Mixer",
13224 SND_SOC_NOPM, 0, 0,
13225 afe_pcm_rx_voice_mixer_controls,
13226 ARRAY_SIZE(afe_pcm_rx_voice_mixer_controls)),
13227 SND_SOC_DAPM_MIXER("AUX_PCM_RX_Voice Mixer",
13228 SND_SOC_NOPM, 0, 0,
13229 aux_pcm_rx_voice_mixer_controls,
13230 ARRAY_SIZE(aux_pcm_rx_voice_mixer_controls)),
13231 SND_SOC_DAPM_MIXER("SEC_AUX_PCM_RX_Voice Mixer",
13232 SND_SOC_NOPM, 0, 0,
13233 sec_aux_pcm_rx_voice_mixer_controls,
13234 ARRAY_SIZE(sec_aux_pcm_rx_voice_mixer_controls)),
13235 SND_SOC_DAPM_MIXER("TERT_AUX_PCM_RX_Voice Mixer",
13236 SND_SOC_NOPM, 0, 0,
13237 tert_aux_pcm_rx_voice_mixer_controls,
13238 ARRAY_SIZE(tert_aux_pcm_rx_voice_mixer_controls)),
13239 SND_SOC_DAPM_MIXER("QUAT_AUX_PCM_RX_Voice Mixer",
13240 SND_SOC_NOPM, 0, 0,
13241 quat_aux_pcm_rx_voice_mixer_controls,
13242 ARRAY_SIZE(quat_aux_pcm_rx_voice_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013243 SND_SOC_DAPM_MIXER("QUIN_AUX_PCM_RX_Voice Mixer",
13244 SND_SOC_NOPM, 0, 0,
13245 quin_aux_pcm_rx_voice_mixer_controls,
13246 ARRAY_SIZE(quin_aux_pcm_rx_voice_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013247 SND_SOC_DAPM_MIXER("HDMI_RX_Voice Mixer",
13248 SND_SOC_NOPM, 0, 0,
13249 hdmi_rx_voice_mixer_controls,
13250 ARRAY_SIZE(hdmi_rx_voice_mixer_controls)),
13251 SND_SOC_DAPM_MIXER("MI2S_RX_Voice Mixer",
13252 SND_SOC_NOPM, 0, 0,
13253 mi2s_rx_voice_mixer_controls,
13254 ARRAY_SIZE(mi2s_rx_voice_mixer_controls)),
13255 SND_SOC_DAPM_MIXER("PRI_MI2S_RX_Voice Mixer",
13256 SND_SOC_NOPM, 0, 0,
13257 pri_mi2s_rx_voice_mixer_controls,
13258 ARRAY_SIZE(pri_mi2s_rx_voice_mixer_controls)),
13259 SND_SOC_DAPM_MIXER("INT0_MI2S_RX_Voice Mixer",
13260 SND_SOC_NOPM, 0, 0,
13261 int0_mi2s_rx_voice_mixer_controls,
13262 ARRAY_SIZE(int0_mi2s_rx_voice_mixer_controls)),
13263 SND_SOC_DAPM_MIXER("INT4_MI2S_RX_Voice Mixer",
13264 SND_SOC_NOPM, 0, 0,
13265 int4_mi2s_rx_voice_mixer_controls,
13266 ARRAY_SIZE(int4_mi2s_rx_voice_mixer_controls)),
13267 SND_SOC_DAPM_MIXER("TERT_MI2S_RX_Voice Mixer",
13268 SND_SOC_NOPM, 0, 0,
13269 tert_mi2s_rx_voice_mixer_controls,
13270 ARRAY_SIZE(tert_mi2s_rx_voice_mixer_controls)),
13271 SND_SOC_DAPM_MIXER("QUAT_MI2S_RX_Voice Mixer",
13272 SND_SOC_NOPM, 0, 0,
13273 quat_mi2s_rx_voice_mixer_controls,
13274 ARRAY_SIZE(quat_mi2s_rx_voice_mixer_controls)),
13275 SND_SOC_DAPM_MIXER("QUIN_MI2S_RX_Voice Mixer",
13276 SND_SOC_NOPM, 0, 0,
13277 quin_mi2s_rx_voice_mixer_controls,
13278 ARRAY_SIZE(quin_mi2s_rx_voice_mixer_controls)),
13279 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_2_Voice Mixer",
13280 SND_SOC_NOPM, 0, 0,
13281 quat_tdm_rx_2_voice_mixer_controls,
13282 ARRAY_SIZE(quat_tdm_rx_2_voice_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013283 SND_SOC_DAPM_MIXER("Voip_Tx Mixer",
13284 SND_SOC_NOPM, 0, 0, tx_voip_mixer_controls,
13285 ARRAY_SIZE(tx_voip_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013286 SND_SOC_DAPM_MIXER("VoiceMMode1_Tx Mixer",
13287 SND_SOC_NOPM, 0, 0, tx_voicemmode1_mixer_controls,
13288 ARRAY_SIZE(tx_voicemmode1_mixer_controls)),
13289 SND_SOC_DAPM_MIXER("VoiceMMode2_Tx Mixer",
13290 SND_SOC_NOPM, 0, 0, tx_voicemmode2_mixer_controls,
13291 ARRAY_SIZE(tx_voicemmode2_mixer_controls)),
13292 SND_SOC_DAPM_MIXER("INTERNAL_BT_SCO_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13293 int_bt_sco_rx_mixer_controls, ARRAY_SIZE(int_bt_sco_rx_mixer_controls)),
13294 SND_SOC_DAPM_MIXER("INTERNAL_A2DP_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13295 int_bt_a2dp_rx_mixer_controls,
13296 ARRAY_SIZE(int_bt_a2dp_rx_mixer_controls)),
13297 SND_SOC_DAPM_MIXER("INTERNAL_FM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13298 int_fm_rx_mixer_controls, ARRAY_SIZE(int_fm_rx_mixer_controls)),
13299 SND_SOC_DAPM_MIXER("AFE_PCM_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
13300 afe_pcm_rx_mixer_controls, ARRAY_SIZE(afe_pcm_rx_mixer_controls)),
13301 SND_SOC_DAPM_MIXER("Voice Stub Tx Mixer", SND_SOC_NOPM, 0, 0,
13302 tx_voice_stub_mixer_controls, ARRAY_SIZE(tx_voice_stub_mixer_controls)),
13303 SND_SOC_DAPM_MIXER("Voice2 Stub Tx Mixer", SND_SOC_NOPM, 0, 0,
13304 tx_voice2_stub_mixer_controls,
13305 ARRAY_SIZE(tx_voice2_stub_mixer_controls)),
13306 SND_SOC_DAPM_MIXER("VoLTE Stub Tx Mixer", SND_SOC_NOPM, 0, 0,
13307 tx_volte_stub_mixer_controls, ARRAY_SIZE(tx_volte_stub_mixer_controls)),
13308 SND_SOC_DAPM_MIXER("STUB_RX Mixer", SND_SOC_NOPM, 0, 0,
13309 stub_rx_mixer_controls, ARRAY_SIZE(stub_rx_mixer_controls)),
13310 SND_SOC_DAPM_MIXER("SLIMBUS_1_RX Mixer", SND_SOC_NOPM, 0, 0,
13311 slimbus_1_rx_mixer_controls, ARRAY_SIZE(slimbus_1_rx_mixer_controls)),
13312 SND_SOC_DAPM_MIXER("SLIMBUS_3_RX_Voice Mixer", SND_SOC_NOPM, 0, 0,
13313 slimbus_3_rx_mixer_controls, ARRAY_SIZE(slimbus_3_rx_mixer_controls)),
13314 SND_SOC_DAPM_MIXER("SLIM_6_RX_Voice Mixer",
13315 SND_SOC_NOPM, 0, 0,
13316 slimbus_6_rx_voice_mixer_controls,
13317 ARRAY_SIZE(slimbus_6_rx_voice_mixer_controls)),
13318 SND_SOC_DAPM_MIXER("SLIM_7_RX_Voice Mixer", SND_SOC_NOPM, 0, 0,
13319 slimbus_7_rx_voice_mixer_controls,
13320 ARRAY_SIZE(slimbus_7_rx_voice_mixer_controls)),
13321 SND_SOC_DAPM_MIXER("SLIM_8_RX_Voice Mixer", SND_SOC_NOPM, 0, 0,
13322 slimbus_8_rx_voice_mixer_controls,
13323 ARRAY_SIZE(slimbus_8_rx_voice_mixer_controls)),
13324 /* port mixer */
13325 SND_SOC_DAPM_MIXER("SLIMBUS_0_RX Port Mixer",
13326 SND_SOC_NOPM, 0, 0, sbus_0_rx_port_mixer_controls,
13327 ARRAY_SIZE(sbus_0_rx_port_mixer_controls)),
13328 SND_SOC_DAPM_MIXER("AUX_PCM_RX Port Mixer",
13329 SND_SOC_NOPM, 0, 0, aux_pcm_rx_port_mixer_controls,
13330 ARRAY_SIZE(aux_pcm_rx_port_mixer_controls)),
13331 SND_SOC_DAPM_MIXER("SEC_AUXPCM_RX Port Mixer",
13332 SND_SOC_NOPM, 0, 0, sec_auxpcm_rx_port_mixer_controls,
13333 ARRAY_SIZE(sec_auxpcm_rx_port_mixer_controls)),
13334 SND_SOC_DAPM_MIXER("TERT_AUXPCM_RX Port Mixer",
13335 SND_SOC_NOPM, 0, 0, tert_auxpcm_rx_port_mixer_controls,
13336 ARRAY_SIZE(tert_auxpcm_rx_port_mixer_controls)),
13337 SND_SOC_DAPM_MIXER("QUAT_AUXPCM_RX Port Mixer",
13338 SND_SOC_NOPM, 0, 0, quat_auxpcm_rx_port_mixer_controls,
13339 ARRAY_SIZE(quat_auxpcm_rx_port_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013340 SND_SOC_DAPM_MIXER("QUIN_AUXPCM_RX Port Mixer",
13341 SND_SOC_NOPM, 0, 0, quin_auxpcm_rx_port_mixer_controls,
13342 ARRAY_SIZE(quin_auxpcm_rx_port_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013343 SND_SOC_DAPM_MIXER("SLIMBUS_1_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13344 sbus_1_rx_port_mixer_controls,
13345 ARRAY_SIZE(sbus_1_rx_port_mixer_controls)),
13346 SND_SOC_DAPM_MIXER("INTERNAL_BT_SCO_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13347 bt_sco_rx_port_mixer_controls,
13348 ARRAY_SIZE(bt_sco_rx_port_mixer_controls)),
13349 SND_SOC_DAPM_MIXER("AFE_PCM_RX Port Mixer",
13350 SND_SOC_NOPM, 0, 0, afe_pcm_rx_port_mixer_controls,
13351 ARRAY_SIZE(afe_pcm_rx_port_mixer_controls)),
13352 SND_SOC_DAPM_MIXER("HDMI_RX Port Mixer",
13353 SND_SOC_NOPM, 0, 0, hdmi_rx_port_mixer_controls,
13354 ARRAY_SIZE(hdmi_rx_port_mixer_controls)),
13355 SND_SOC_DAPM_MIXER("DISPLAY_PORT_RX Port Mixer",
13356 SND_SOC_NOPM, 0, 0, display_port_rx_port_mixer_controls,
13357 ARRAY_SIZE(display_port_rx_port_mixer_controls)),
13358 SND_SOC_DAPM_MIXER("SEC_I2S_RX Port Mixer",
13359 SND_SOC_NOPM, 0, 0, sec_i2s_rx_port_mixer_controls,
13360 ARRAY_SIZE(sec_i2s_rx_port_mixer_controls)),
13361 SND_SOC_DAPM_MIXER("SLIMBUS_3_RX Port Mixer",
13362 SND_SOC_NOPM, 0, 0, sbus_3_rx_port_mixer_controls,
13363 ARRAY_SIZE(sbus_3_rx_port_mixer_controls)),
13364 SND_SOC_DAPM_MIXER("SLIMBUS_6_RX Port Mixer",
13365 SND_SOC_NOPM, 0, 0, sbus_6_rx_port_mixer_controls,
13366 ARRAY_SIZE(sbus_6_rx_port_mixer_controls)),
13367 SND_SOC_DAPM_MIXER("MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13368 mi2s_rx_port_mixer_controls, ARRAY_SIZE(mi2s_rx_port_mixer_controls)),
13369 SND_SOC_DAPM_MIXER("PRI_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13370 primary_mi2s_rx_port_mixer_controls,
13371 ARRAY_SIZE(primary_mi2s_rx_port_mixer_controls)),
13372 SND_SOC_DAPM_MIXER("SEC_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13373 sec_mi2s_rx_port_mixer_controls,
13374 ARRAY_SIZE(sec_mi2s_rx_port_mixer_controls)),
13375 SND_SOC_DAPM_MIXER("TERT_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13376 tert_mi2s_rx_port_mixer_controls,
13377 ARRAY_SIZE(tert_mi2s_rx_port_mixer_controls)),
13378 SND_SOC_DAPM_MIXER("QUAT_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13379 quat_mi2s_rx_port_mixer_controls,
13380 ARRAY_SIZE(quat_mi2s_rx_port_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013381 SND_SOC_DAPM_MIXER("QUIN_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13382 quin_mi2s_rx_port_mixer_controls,
13383 ARRAY_SIZE(quin_mi2s_rx_port_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013384 SND_SOC_DAPM_MIXER("PRI_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
13385 pri_tdm_rx_0_port_mixer_controls,
13386 ARRAY_SIZE(pri_tdm_rx_0_port_mixer_controls)),
13387 SND_SOC_DAPM_MIXER("PRI_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
13388 pri_tdm_rx_1_port_mixer_controls,
13389 ARRAY_SIZE(pri_tdm_rx_1_port_mixer_controls)),
13390 SND_SOC_DAPM_MIXER("PRI_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
13391 pri_tdm_rx_2_port_mixer_controls,
13392 ARRAY_SIZE(pri_tdm_rx_2_port_mixer_controls)),
13393 SND_SOC_DAPM_MIXER("PRI_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
13394 pri_tdm_rx_3_port_mixer_controls,
13395 ARRAY_SIZE(pri_tdm_rx_3_port_mixer_controls)),
13396 SND_SOC_DAPM_MIXER("SEC_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
13397 sec_tdm_rx_0_port_mixer_controls,
13398 ARRAY_SIZE(sec_tdm_rx_0_port_mixer_controls)),
13399 SND_SOC_DAPM_MIXER("SEC_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
13400 sec_tdm_rx_1_port_mixer_controls,
13401 ARRAY_SIZE(sec_tdm_rx_1_port_mixer_controls)),
13402 SND_SOC_DAPM_MIXER("SEC_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
13403 sec_tdm_rx_2_port_mixer_controls,
13404 ARRAY_SIZE(sec_tdm_rx_2_port_mixer_controls)),
13405 SND_SOC_DAPM_MIXER("SEC_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
13406 sec_tdm_rx_3_port_mixer_controls,
13407 ARRAY_SIZE(sec_tdm_rx_3_port_mixer_controls)),
13408 SND_SOC_DAPM_MIXER("TERT_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
13409 tert_tdm_rx_0_port_mixer_controls,
13410 ARRAY_SIZE(tert_tdm_rx_0_port_mixer_controls)),
13411 SND_SOC_DAPM_MIXER("TERT_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
13412 tert_tdm_rx_1_port_mixer_controls,
13413 ARRAY_SIZE(tert_tdm_rx_1_port_mixer_controls)),
13414 SND_SOC_DAPM_MIXER("TERT_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
13415 tert_tdm_rx_2_port_mixer_controls,
13416 ARRAY_SIZE(tert_tdm_rx_2_port_mixer_controls)),
13417 SND_SOC_DAPM_MIXER("TERT_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
13418 tert_tdm_rx_3_port_mixer_controls,
13419 ARRAY_SIZE(tert_tdm_rx_3_port_mixer_controls)),
13420 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
13421 quat_tdm_rx_0_port_mixer_controls,
13422 ARRAY_SIZE(quat_tdm_rx_0_port_mixer_controls)),
13423 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
13424 quat_tdm_rx_1_port_mixer_controls,
13425 ARRAY_SIZE(quat_tdm_rx_1_port_mixer_controls)),
13426 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
13427 quat_tdm_rx_2_port_mixer_controls,
13428 ARRAY_SIZE(quat_tdm_rx_2_port_mixer_controls)),
13429 SND_SOC_DAPM_MIXER("QUAT_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
13430 quat_tdm_rx_3_port_mixer_controls,
13431 ARRAY_SIZE(quat_tdm_rx_3_port_mixer_controls)),
Rohit Kumara5077932017-09-10 22:05:05 +053013432 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0,
13433 quin_tdm_rx_0_port_mixer_controls,
13434 ARRAY_SIZE(quin_tdm_rx_0_port_mixer_controls)),
13435 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_1 Port Mixer", SND_SOC_NOPM, 0, 0,
13436 quin_tdm_rx_1_port_mixer_controls,
13437 ARRAY_SIZE(quin_tdm_rx_1_port_mixer_controls)),
13438 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_2 Port Mixer", SND_SOC_NOPM, 0, 0,
13439 quin_tdm_rx_2_port_mixer_controls,
13440 ARRAY_SIZE(quin_tdm_rx_2_port_mixer_controls)),
13441 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0,
13442 quin_tdm_rx_3_port_mixer_controls,
13443 ARRAY_SIZE(quin_tdm_rx_3_port_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013444 SND_SOC_DAPM_MIXER("INT0_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13445 int0_mi2s_rx_port_mixer_controls,
13446 ARRAY_SIZE(int0_mi2s_rx_port_mixer_controls)),
13447 SND_SOC_DAPM_MIXER("INT4_MI2S_RX Port Mixer", SND_SOC_NOPM, 0, 0,
13448 int4_mi2s_rx_port_mixer_controls,
13449 ARRAY_SIZE(int4_mi2s_rx_port_mixer_controls)),
13450 SND_SOC_DAPM_MIXER("QCHAT_Tx Mixer",
13451 SND_SOC_NOPM, 0, 0, tx_qchat_mixer_controls,
13452 ARRAY_SIZE(tx_qchat_mixer_controls)),
13453 SND_SOC_DAPM_MIXER("USB_AUDIO_RX_Voice Mixer",
13454 SND_SOC_NOPM, 0, 0, usb_audio_rx_voice_mixer_controls,
13455 ARRAY_SIZE(usb_audio_rx_voice_mixer_controls)),
13456 SND_SOC_DAPM_MIXER("USB_AUDIO_RX Port Mixer",
13457 SND_SOC_NOPM, 0, 0, usb_rx_port_mixer_controls,
13458 ARRAY_SIZE(usb_rx_port_mixer_controls)),
Aalique Grahamee4fd7d52017-11-28 13:24:13 -080013459 SND_SOC_DAPM_MIXER("DISPLAY_PORT_RX_Voice Mixer",
13460 SND_SOC_NOPM, 0, 0, display_port_rx_voice_mixer_controls,
13461 ARRAY_SIZE(display_port_rx_voice_mixer_controls)),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013462 /* lsm mixer definitions */
13463 SND_SOC_DAPM_MIXER("LSM1 Mixer", SND_SOC_NOPM, 0, 0,
13464 lsm1_mixer_controls, ARRAY_SIZE(lsm1_mixer_controls)),
13465 SND_SOC_DAPM_MIXER("LSM2 Mixer", SND_SOC_NOPM, 0, 0,
13466 lsm2_mixer_controls, ARRAY_SIZE(lsm2_mixer_controls)),
13467 SND_SOC_DAPM_MIXER("LSM3 Mixer", SND_SOC_NOPM, 0, 0,
13468 lsm3_mixer_controls, ARRAY_SIZE(lsm3_mixer_controls)),
13469 SND_SOC_DAPM_MIXER("LSM4 Mixer", SND_SOC_NOPM, 0, 0,
13470 lsm4_mixer_controls, ARRAY_SIZE(lsm4_mixer_controls)),
13471 SND_SOC_DAPM_MIXER("LSM5 Mixer", SND_SOC_NOPM, 0, 0,
13472 lsm5_mixer_controls, ARRAY_SIZE(lsm5_mixer_controls)),
13473 SND_SOC_DAPM_MIXER("LSM6 Mixer", SND_SOC_NOPM, 0, 0,
13474 lsm6_mixer_controls, ARRAY_SIZE(lsm6_mixer_controls)),
13475 SND_SOC_DAPM_MIXER("LSM7 Mixer", SND_SOC_NOPM, 0, 0,
13476 lsm7_mixer_controls, ARRAY_SIZE(lsm7_mixer_controls)),
13477 SND_SOC_DAPM_MIXER("LSM8 Mixer", SND_SOC_NOPM, 0, 0,
13478 lsm8_mixer_controls, ARRAY_SIZE(lsm8_mixer_controls)),
13479 /* Virtual Pins to force backends ON atm */
13480 SND_SOC_DAPM_OUTPUT("BE_OUT"),
13481 SND_SOC_DAPM_INPUT("BE_IN"),
13482
13483 SND_SOC_DAPM_MUX("SLIM0_RX_VI_FB_LCH_MUX", SND_SOC_NOPM, 0, 0,
13484 &slim0_rx_vi_fb_lch_mux),
13485 SND_SOC_DAPM_MUX("SLIM0_RX_VI_FB_RCH_MUX", SND_SOC_NOPM, 0, 0,
13486 &slim0_rx_vi_fb_rch_mux),
13487 SND_SOC_DAPM_MUX("PRI_MI2S_RX_VI_FB_MUX", SND_SOC_NOPM, 0, 0,
13488 &mi2s_rx_vi_fb_mux),
13489 SND_SOC_DAPM_MUX("INT4_MI2S_RX_VI_FB_MONO_CH_MUX", SND_SOC_NOPM, 0, 0,
13490 &int4_mi2s_rx_vi_fb_mono_ch_mux),
13491 SND_SOC_DAPM_MUX("INT4_MI2S_RX_VI_FB_STEREO_CH_MUX", SND_SOC_NOPM, 0, 0,
13492 &int4_mi2s_rx_vi_fb_stereo_ch_mux),
13493
13494 SND_SOC_DAPM_MUX("VOC_EXT_EC MUX", SND_SOC_NOPM, 0, 0,
13495 &voc_ext_ec_mux),
13496 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL1 MUX", SND_SOC_NOPM, 0, 0,
13497 &ext_ec_ref_mux_ul1),
13498 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL2 MUX", SND_SOC_NOPM, 0, 0,
13499 &ext_ec_ref_mux_ul2),
13500 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL3 MUX", SND_SOC_NOPM, 0, 0,
13501 &ext_ec_ref_mux_ul3),
13502 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL4 MUX", SND_SOC_NOPM, 0, 0,
13503 &ext_ec_ref_mux_ul4),
13504 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL5 MUX", SND_SOC_NOPM, 0, 0,
13505 &ext_ec_ref_mux_ul5),
13506 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL6 MUX", SND_SOC_NOPM, 0, 0,
13507 &ext_ec_ref_mux_ul6),
13508 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL8 MUX", SND_SOC_NOPM, 0, 0,
13509 &ext_ec_ref_mux_ul8),
13510 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL9 MUX", SND_SOC_NOPM, 0, 0,
13511 &ext_ec_ref_mux_ul9),
Laxminath Kasam38070be2017-08-17 18:21:59 +053013512 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL10 MUX", SND_SOC_NOPM, 0, 0,
13513 &ext_ec_ref_mux_ul10),
Asish Bhattacharya34504582017-08-08 12:55:01 +053013514 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL16 MUX", SND_SOC_NOPM, 0, 0,
13515 &ext_ec_ref_mux_ul16),
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013516 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL17 MUX", SND_SOC_NOPM, 0, 0,
13517 &ext_ec_ref_mux_ul17),
13518 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL18 MUX", SND_SOC_NOPM, 0, 0,
13519 &ext_ec_ref_mux_ul18),
13520 SND_SOC_DAPM_MUX("AUDIO_REF_EC_UL19 MUX", SND_SOC_NOPM, 0, 0,
13521 &ext_ec_ref_mux_ul19),
13522};
13523
13524static const struct snd_soc_dapm_route intercon[] = {
13525 {"PRI_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13526 {"PRI_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13527 {"PRI_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13528 {"PRI_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13529 {"PRI_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13530 {"PRI_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13531 {"PRI_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13532 {"PRI_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13533 {"PRI_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
13534 {"PRI_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13535 {"PRI_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13536 {"PRI_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13537 {"PRI_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13538 {"PRI_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13539 {"PRI_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13540 {"PRI_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13541 {"PRI_I2S_RX", NULL, "PRI_RX Audio Mixer"},
13542
13543 {"SEC_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13544 {"SEC_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13545 {"SEC_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13546 {"SEC_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13547 {"SEC_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13548 {"SEC_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13549 {"SEC_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13550 {"SEC_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13551 {"SEC_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
13552 {"SEC_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13553 {"SEC_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13554 {"SEC_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13555 {"SEC_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13556 {"SEC_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13557 {"SEC_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13558 {"SEC_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13559 {"SEC_I2S_RX", NULL, "SEC_RX Audio Mixer"},
13560
13561 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13562 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13563 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13564 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13565 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13566 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13567 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13568 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13569 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
13570 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13571 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13572 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13573 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13574 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13575 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13576 {"SLIMBUS_0_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13577 {"SLIMBUS_0_RX", NULL, "SLIMBUS_0_RX Audio Mixer"},
13578
13579 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13580 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13581 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13582 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13583 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13584 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13585 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13586 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13587 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
13588 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13589 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13590 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13591 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13592 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13593 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13594 {"SLIMBUS_2_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13595 {"SLIMBUS_2_RX", NULL, "SLIMBUS_2_RX Audio Mixer"},
13596
13597 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13598 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13599 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13600 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13601 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13602 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13603 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13604 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13605 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
13606 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13607 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13608 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13609 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13610 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13611 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13612 {"SLIMBUS_5_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13613 {"SLIMBUS_5_RX", NULL, "SLIMBUS_5_RX Audio Mixer"},
13614
13615 {"HDMI Mixer", "MultiMedia1", "MM_DL1"},
13616 {"HDMI Mixer", "MultiMedia2", "MM_DL2"},
13617 {"HDMI Mixer", "MultiMedia3", "MM_DL3"},
13618 {"HDMI Mixer", "MultiMedia4", "MM_DL4"},
13619 {"HDMI Mixer", "MultiMedia5", "MM_DL5"},
13620 {"HDMI Mixer", "MultiMedia6", "MM_DL6"},
13621 {"HDMI Mixer", "MultiMedia7", "MM_DL7"},
13622 {"HDMI Mixer", "MultiMedia8", "MM_DL8"},
13623 {"HDMI Mixer", "MultiMedia9", "MM_DL9"},
13624 {"HDMI Mixer", "MultiMedia10", "MM_DL10"},
13625 {"HDMI Mixer", "MultiMedia11", "MM_DL11"},
13626 {"HDMI Mixer", "MultiMedia12", "MM_DL12"},
13627 {"HDMI Mixer", "MultiMedia13", "MM_DL13"},
13628 {"HDMI Mixer", "MultiMedia14", "MM_DL14"},
13629 {"HDMI Mixer", "MultiMedia15", "MM_DL15"},
13630 {"HDMI Mixer", "MultiMedia16", "MM_DL16"},
13631 {"HDMI", NULL, "HDMI Mixer"},
13632
13633 {"DISPLAY_PORT Mixer", "MultiMedia1", "MM_DL1"},
13634 {"DISPLAY_PORT Mixer", "MultiMedia2", "MM_DL2"},
13635 {"DISPLAY_PORT Mixer", "MultiMedia3", "MM_DL3"},
13636 {"DISPLAY_PORT Mixer", "MultiMedia4", "MM_DL4"},
13637 {"DISPLAY_PORT Mixer", "MultiMedia5", "MM_DL5"},
13638 {"DISPLAY_PORT Mixer", "MultiMedia6", "MM_DL6"},
13639 {"DISPLAY_PORT Mixer", "MultiMedia7", "MM_DL7"},
13640 {"DISPLAY_PORT Mixer", "MultiMedia8", "MM_DL8"},
13641 {"DISPLAY_PORT Mixer", "MultiMedia9", "MM_DL9"},
13642 {"DISPLAY_PORT Mixer", "MultiMedia10", "MM_DL10"},
13643 {"DISPLAY_PORT Mixer", "MultiMedia11", "MM_DL11"},
13644 {"DISPLAY_PORT Mixer", "MultiMedia12", "MM_DL12"},
13645 {"DISPLAY_PORT Mixer", "MultiMedia13", "MM_DL13"},
13646 {"DISPLAY_PORT Mixer", "MultiMedia14", "MM_DL14"},
13647 {"DISPLAY_PORT Mixer", "MultiMedia15", "MM_DL15"},
13648 {"DISPLAY_PORT Mixer", "MultiMedia16", "MM_DL16"},
13649 {"DISPLAY_PORT", NULL, "DISPLAY_PORT Mixer"},
13650
13651 {"SPDIF_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13652 {"SPDIF_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13653 {"SPDIF_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13654 {"SPDIF_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13655 {"SPDIF_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13656 {"SPDIF_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13657 {"SPDIF_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13658 {"SPDIF_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13659 {"SPDIF_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
13660 {"SPDIF_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13661 {"SPDIF_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13662 {"SPDIF_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13663 {"SPDIF_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13664 {"SPDIF_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13665 {"SPDIF_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13666 {"SPDIF_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13667 {"SPDIF_RX", NULL, "SPDIF_RX Audio Mixer"},
13668
13669 /* incall */
13670 {"Incall_Music Audio Mixer", "MultiMedia1", "MM_DL1"},
13671 {"Incall_Music Audio Mixer", "MultiMedia2", "MM_DL2"},
13672 {"Incall_Music Audio Mixer", "MultiMedia5", "MM_DL5"},
13673 {"Incall_Music Audio Mixer", "MultiMedia9", "MM_DL9"},
13674 {"VOICE_PLAYBACK_TX", NULL, "Incall_Music Audio Mixer"},
13675 {"Incall_Music_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
13676 {"Incall_Music_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
13677 {"Incall_Music_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
13678 {"Incall_Music_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
13679 {"VOICE2_PLAYBACK_TX", NULL, "Incall_Music_2 Audio Mixer"},
13680 {"SLIMBUS_4_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13681 {"SLIMBUS_4_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13682 {"SLIMBUS_4_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13683 {"SLIMBUS_4_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
13684 {"SLIMBUS_4_RX", NULL, "SLIMBUS_4_RX Audio Mixer"},
13685
13686 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13687 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13688 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13689 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13690 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13691 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13692 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13693 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13694 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
13695 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13696 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13697 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13698 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13699 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13700 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13701 {"SLIMBUS_6_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13702 {"SLIMBUS_6_RX", NULL, "SLIMBUS_6_RX Audio Mixer"},
13703
13704 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13705 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13706 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13707 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13708 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13709 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13710 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13711 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13712 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
13713 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13714 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13715 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13716 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13717 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13718 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13719 {"SLIMBUS_7_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13720 {"SLIMBUS_7_RX", NULL, "SLIMBUS_7_RX Audio Mixer"},
13721
13722 {"USB_AUDIO_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13723 {"USB_AUDIO_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13724 {"USB_AUDIO_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13725 {"USB_AUDIO_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13726 {"USB_AUDIO_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13727 {"USB_AUDIO_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13728 {"USB_AUDIO_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13729 {"USB_AUDIO_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13730 {"USB_AUDIO_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
13731 {"USB_AUDIO_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13732 {"USB_AUDIO_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13733 {"USB_AUDIO_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13734 {"USB_AUDIO_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13735 {"USB_AUDIO_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13736 {"USB_AUDIO_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13737 {"USB_AUDIO_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13738 {"USB_AUDIO_RX", NULL, "USB_AUDIO_RX Audio Mixer"},
13739
13740 {"MultiMedia1 Mixer", "VOC_REC_UL", "INCALL_RECORD_TX"},
13741 {"MultiMedia4 Mixer", "VOC_REC_UL", "INCALL_RECORD_TX"},
13742 {"MultiMedia8 Mixer", "VOC_REC_UL", "INCALL_RECORD_TX"},
13743 {"MultiMedia1 Mixer", "VOC_REC_DL", "INCALL_RECORD_RX"},
13744 {"MultiMedia4 Mixer", "VOC_REC_DL", "INCALL_RECORD_RX"},
13745 {"MultiMedia8 Mixer", "VOC_REC_DL", "INCALL_RECORD_RX"},
13746 {"MultiMedia1 Mixer", "SLIM_4_TX", "SLIMBUS_4_TX"},
13747 {"MultiMedia1 Mixer", "SLIM_6_TX", "SLIMBUS_6_TX"},
13748 {"MultiMedia1 Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
13749 {"MultiMedia1 Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
13750 {"MultiMedia8 Mixer", "SLIM_6_TX", "SLIMBUS_6_TX"},
13751 {"MultiMedia8 Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
13752 {"MultiMedia4 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
13753 {"MultiMedia17 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
13754 {"MultiMedia18 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
13755 {"MultiMedia19 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
13756 {"MultiMedia8 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
13757 {"MultiMedia2 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
13758 {"MultiMedia4 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
13759 {"MultiMedia17 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
13760 {"MultiMedia18 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
13761 {"MultiMedia19 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
13762 {"MultiMedia8 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
13763 {"MultiMedia18 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
13764 {"MultiMedia8 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
13765 {"MultiMedia3 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
13766 {"MultiMedia5 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053013767 {"MultiMedia10 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053013768 {"MultiMedia16 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013769 {"MultiMedia5 Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
13770 {"MultiMedia5 Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053013771 {"MultiMedia10 Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053013772 {"MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13773 {"MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13774 {"MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13775 {"MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13776 {"MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13777 {"MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13778 {"MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13779 {"MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13780 {"MI2S_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
13781 {"MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13782 {"MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13783 {"MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13784 {"MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13785 {"MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13786 {"MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13787 {"MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13788 {"MI2S_RX", NULL, "MI2S_RX Audio Mixer"},
13789
13790 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13791 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13792 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13793 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13794 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13795 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13796 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13797 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13798 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13799 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13800 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13801 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13802 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13803 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13804 {"QUAT_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13805 {"QUAT_MI2S_RX", NULL, "QUAT_MI2S_RX Audio Mixer"},
13806
13807 {"TERT_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13808 {"TERT_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13809 {"TERT_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13810 {"TERT_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13811 {"TERT_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13812 {"TERT_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13813 {"TERT_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13814 {"TERT_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13815 {"TERT_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13816 {"TERT_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13817 {"TERT_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13818 {"TERT_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13819 {"TERT_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13820 {"TERT_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13821 {"TERT_MI2S_RX", NULL, "TERT_MI2S_RX Audio Mixer"},
13822
13823 {"SEC_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13824 {"SEC_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13825 {"SEC_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13826 {"SEC_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13827 {"SEC_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13828 {"SEC_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13829 {"SEC_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13830 {"SEC_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13831 {"SEC_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13832 {"SEC_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13833 {"SEC_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13834 {"SEC_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13835 {"SEC_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13836 {"SEC_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13837 {"SEC_MI2S_RX", NULL, "SEC_MI2S_RX Audio Mixer"},
13838
13839 {"SEC_MI2S_RX_SD1 Audio Mixer", "MultiMedia6", "MM_DL6"},
13840 {"SEC_MI2S_RX_SD1", NULL, "SEC_MI2S_RX_SD1 Audio Mixer"},
13841
13842 {"SEC_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
13843 {"SEC_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
13844
13845 {"PRI_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13846 {"PRI_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13847 {"PRI_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13848 {"PRI_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13849 {"PRI_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13850 {"PRI_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13851 {"PRI_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13852 {"PRI_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13853 {"PRI_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13854 {"PRI_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13855 {"PRI_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13856 {"PRI_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13857 {"PRI_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13858 {"PRI_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13859 {"PRI_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13860 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX Audio Mixer"},
13861
13862 {"INT0_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13863 {"INT0_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13864 {"INT0_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13865 {"INT0_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13866 {"INT0_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13867 {"INT0_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13868 {"INT0_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13869 {"INT0_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13870 {"INT0_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13871 {"INT0_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13872 {"INT0_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13873 {"INT0_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13874 {"INT0_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13875 {"INT0_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13876 {"INT0_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13877 {"INT0_MI2S_RX", NULL, "INT0_MI2S_RX Audio Mixer"},
13878
13879 {"INT4_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13880 {"INT4_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13881 {"INT4_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13882 {"INT4_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13883 {"INT4_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13884 {"INT4_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13885 {"INT4_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13886 {"INT4_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13887 {"INT4_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13888 {"INT4_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13889 {"INT4_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13890 {"INT4_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13891 {"INT4_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13892 {"INT4_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13893 {"INT4_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13894 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX Audio Mixer"},
13895
13896 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13897 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13898 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
13899 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
13900 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
13901 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
13902 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
13903 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
13904 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
13905 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
13906 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
13907 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
13908 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
13909 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
13910 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
13911 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
13912 {"QUIN_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
13913 {"QUIN_MI2S_RX", NULL, "QUIN_MI2S_RX Audio Mixer"},
13914
13915 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
13916 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
13917 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
13918 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
13919 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
13920 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
13921 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
13922 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
13923 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
13924 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
13925 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
13926 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
13927 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
13928 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
13929 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
13930 {"PRI_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
13931 {"PRI_TDM_RX_0", NULL, "PRI_TDM_RX_0 Audio Mixer"},
13932
13933 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
13934 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
13935 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
13936 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
13937 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
13938 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
13939 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
13940 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
13941 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
13942 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
13943 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
13944 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
13945 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
13946 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
13947 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
13948 {"PRI_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
13949 {"PRI_TDM_RX_1", NULL, "PRI_TDM_RX_1 Audio Mixer"},
13950
13951 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
13952 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
13953 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
13954 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
13955 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
13956 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
13957 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
13958 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
13959 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
13960 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
13961 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
13962 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
13963 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
13964 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
13965 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
13966 {"PRI_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
13967 {"PRI_TDM_RX_2", NULL, "PRI_TDM_RX_2 Audio Mixer"},
13968
13969 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
13970 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
13971 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
13972 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
13973 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
13974 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
13975 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
13976 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
13977 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
13978 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
13979 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
13980 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
13981 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
13982 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
13983 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
13984 {"PRI_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
13985 {"PRI_TDM_RX_3", NULL, "PRI_TDM_RX_3 Audio Mixer"},
13986
13987 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
13988 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
13989 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
13990 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
13991 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
13992 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
13993 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
13994 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
13995 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
13996 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
13997 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
13998 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
13999 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14000 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14001 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14002 {"PRI_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14003 {"PRI_TDM_TX_0", NULL, "PRI_TDM_TX_0 Audio Mixer"},
14004
14005 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14006 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14007 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14008 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14009 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14010 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14011 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14012 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14013 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14014 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14015 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14016 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14017 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14018 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14019 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14020 {"SEC_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14021 {"SEC_TDM_RX_0", NULL, "SEC_TDM_RX_0 Audio Mixer"},
14022
14023 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
14024 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
14025 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
14026 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
14027 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
14028 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
14029 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
14030 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
14031 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
14032 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
14033 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
14034 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
14035 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
14036 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
14037 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
14038 {"SEC_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
14039 {"SEC_TDM_RX_1", NULL, "SEC_TDM_RX_1 Audio Mixer"},
14040
14041 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
14042 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
14043 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
14044 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
14045 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
14046 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
14047 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
14048 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
14049 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
14050 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
14051 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
14052 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
14053 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
14054 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
14055 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
14056 {"SEC_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
14057 {"SEC_TDM_RX_2", NULL, "SEC_TDM_RX_2 Audio Mixer"},
14058
14059 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
14060 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
14061 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
14062 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
14063 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
14064 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
14065 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
14066 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
14067 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
14068 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
14069 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
14070 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
14071 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
14072 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
14073 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
14074 {"SEC_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
14075 {"SEC_TDM_RX_3", NULL, "SEC_TDM_RX_3 Audio Mixer"},
14076
14077 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14078 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14079 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14080 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14081 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14082 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14083 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14084 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14085 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14086 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14087 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14088 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14089 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14090 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14091 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14092 {"SEC_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14093 {"SEC_TDM_TX_0", NULL, "SEC_TDM_TX_0 Audio Mixer"},
14094
14095 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14096 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14097 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14098 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14099 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14100 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14101 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14102 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14103 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14104 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14105 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14106 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14107 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14108 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14109 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14110 {"TERT_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14111 {"TERT_TDM_RX_0", NULL, "TERT_TDM_RX_0 Audio Mixer"},
14112
14113 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14114 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14115 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14116 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14117 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14118 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14119 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14120 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14121 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14122 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14123 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14124 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14125 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14126 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14127 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14128 {"TERT_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14129 {"TERT_TDM_TX_0", NULL, "TERT_TDM_TX_0 Audio Mixer"},
14130
14131 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
14132 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
14133 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
14134 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
14135 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
14136 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
14137 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
14138 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
14139 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
14140 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
14141 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
14142 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
14143 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
14144 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
14145 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
14146 {"TERT_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
14147 {"TERT_TDM_RX_1", NULL, "TERT_TDM_RX_1 Audio Mixer"},
14148
14149 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
14150 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
14151 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
14152 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
14153 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
14154 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
14155 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
14156 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
14157 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
14158 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
14159 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
14160 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
14161 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
14162 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
14163 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
14164 {"TERT_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
14165 {"TERT_TDM_RX_2", NULL, "TERT_TDM_RX_2 Audio Mixer"},
14166
14167 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
14168 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
14169 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
14170 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
14171 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
14172 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
14173 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
14174 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
14175 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
14176 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
14177 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
14178 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
14179 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
14180 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
14181 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
14182 {"TERT_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
14183 {"TERT_TDM_RX_3", NULL, "TERT_TDM_RX_3 Audio Mixer"},
14184
14185 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia1", "MM_DL1"},
14186 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia2", "MM_DL2"},
14187 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia3", "MM_DL3"},
14188 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia4", "MM_DL4"},
14189 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia5", "MM_DL5"},
14190 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia6", "MM_DL6"},
14191 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia7", "MM_DL7"},
14192 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia8", "MM_DL8"},
14193 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia9", "MM_DL9"},
14194 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia10", "MM_DL10"},
14195 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia11", "MM_DL11"},
14196 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia12", "MM_DL12"},
14197 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia13", "MM_DL13"},
14198 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia14", "MM_DL14"},
14199 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia15", "MM_DL15"},
14200 {"TERT_TDM_RX_4 Audio Mixer", "MultiMedia16", "MM_DL16"},
14201 {"TERT_TDM_RX_4", NULL, "TERT_TDM_RX_4 Audio Mixer"},
14202
14203 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14204 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14205 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14206 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14207 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14208 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14209 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14210 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14211 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14212 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14213 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14214 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14215 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14216 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14217 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14218 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14219 {"QUAT_TDM_RX_0 Audio Mixer", "MultiMedia20", "MM_DL20"},
14220 {"QUAT_TDM_RX_0", NULL, "QUAT_TDM_RX_0 Audio Mixer"},
14221
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014222 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14223 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14224 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14225 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14226 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14227 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14228 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14229 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14230 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14231 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14232 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14233 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14234 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14235 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14236 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14237 {"QUAT_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14238 {"QUAT_TDM_TX_0", NULL, "QUAT_TDM_TX_0 Audio Mixer"},
14239
14240 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
14241 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
14242 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
14243 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
14244 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
14245 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
14246 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
14247 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
14248 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
14249 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
14250 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
14251 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
14252 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
14253 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
14254 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
14255 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
14256 {"QUAT_TDM_RX_1 Audio Mixer", "MultiMedia20", "MM_DL20"},
14257 {"QUAT_TDM_RX_1", NULL, "QUAT_TDM_RX_1 Audio Mixer"},
14258
14259 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
14260 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
14261 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
14262 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
14263 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
14264 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
14265 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
14266 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
14267 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
14268 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
14269 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
14270 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
14271 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
14272 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
14273 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
14274 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
14275 {"QUAT_TDM_RX_2 Audio Mixer", "MultiMedia20", "MM_DL20"},
14276 {"QUAT_TDM_RX_2", NULL, "QUAT_TDM_RX_2 Audio Mixer"},
14277
14278 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
14279 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
14280 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
14281 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
14282 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
14283 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
14284 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
14285 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
14286 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
14287 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
14288 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
14289 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
14290 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
14291 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
14292 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
14293 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
14294 {"QUAT_TDM_RX_3 Audio Mixer", "MultiMedia20", "MM_DL20"},
14295 {"QUAT_TDM_RX_3", NULL, "QUAT_TDM_RX_3 Audio Mixer"},
14296
Rohit Kumara5077932017-09-10 22:05:05 +053014297 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14298 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14299 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14300 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14301 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14302 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14303 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14304 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14305 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14306 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14307 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14308 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14309 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14310 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14311 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14312 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14313 {"QUIN_TDM_RX_0 Audio Mixer", "MultiMedia20", "MM_DL20"},
14314 {"QUIN_TDM_RX_0", NULL, "QUIN_TDM_RX_0 Audio Mixer"},
14315
14316 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
14317 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
14318 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},
14319 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia4", "MM_DL4"},
14320 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia5", "MM_DL5"},
14321 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia6", "MM_DL6"},
14322 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia7", "MM_DL7"},
14323 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia8", "MM_DL8"},
14324 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia9", "MM_DL9"},
14325 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia10", "MM_DL10"},
14326 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia11", "MM_DL11"},
14327 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia12", "MM_DL12"},
14328 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia13", "MM_DL13"},
14329 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia14", "MM_DL14"},
14330 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia15", "MM_DL15"},
14331 {"QUIN_TDM_TX_0 Audio Mixer", "MultiMedia16", "MM_DL16"},
14332 {"QUIN_TDM_TX_0", NULL, "QUIN_TDM_TX_0 Audio Mixer"},
14333
14334 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"},
14335 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"},
14336 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"},
14337 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"},
14338 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"},
14339 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"},
14340 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"},
14341 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"},
14342 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"},
14343 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"},
14344 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"},
14345 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"},
14346 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"},
14347 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"},
14348 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"},
14349 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"},
14350 {"QUIN_TDM_RX_1 Audio Mixer", "MultiMedia20", "MM_DL20"},
14351 {"QUIN_TDM_RX_1", NULL, "QUIN_TDM_RX_1 Audio Mixer"},
14352
14353 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"},
14354 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia2", "MM_DL2"},
14355 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia3", "MM_DL3"},
14356 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia4", "MM_DL4"},
14357 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia5", "MM_DL5"},
14358 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia6", "MM_DL6"},
14359 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia7", "MM_DL7"},
14360 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia8", "MM_DL8"},
14361 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia9", "MM_DL9"},
14362 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia10", "MM_DL10"},
14363 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia11", "MM_DL11"},
14364 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia12", "MM_DL12"},
14365 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia13", "MM_DL13"},
14366 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia14", "MM_DL14"},
14367 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"},
14368 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"},
14369 {"QUIN_TDM_RX_2 Audio Mixer", "MultiMedia20", "MM_DL20"},
14370 {"QUIN_TDM_RX_2", NULL, "QUIN_TDM_RX_2 Audio Mixer"},
14371
14372 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"},
14373 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia2", "MM_DL2"},
14374 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia3", "MM_DL3"},
14375 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia4", "MM_DL4"},
14376 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia5", "MM_DL5"},
14377 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia6", "MM_DL6"},
14378 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia7", "MM_DL7"},
14379 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia8", "MM_DL8"},
14380 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia9", "MM_DL9"},
14381 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia10", "MM_DL10"},
14382 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia11", "MM_DL11"},
14383 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia12", "MM_DL12"},
14384 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia13", "MM_DL13"},
14385 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia14", "MM_DL14"},
14386 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"},
14387 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"},
14388 {"QUIN_TDM_RX_3 Audio Mixer", "MultiMedia20", "MM_DL20"},
14389 {"QUIN_TDM_RX_3", NULL, "QUIN_TDM_RX_3 Audio Mixer"},
14390
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014391 {"MultiMedia1 Mixer", "PRI_TX", "PRI_I2S_TX"},
14392 {"MultiMedia1 Mixer", "MI2S_TX", "MI2S_TX"},
14393 {"MultiMedia2 Mixer", "MI2S_TX", "MI2S_TX"},
14394 {"MultiMedia3 Mixer", "MI2S_TX", "MI2S_TX"},
14395 {"MultiMedia5 Mixer", "MI2S_TX", "MI2S_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014396 {"MultiMedia10 Mixer", "MI2S_TX", "MI2S_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014397 {"MultiMedia16 Mixer", "MI2S_TX", "MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014398 {"MultiMedia1 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14399 {"MultiMedia2 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14400 {"MultiMedia6 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
14401 {"MultiMedia1 Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
14402 {"MultiMedia2 Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
14403 {"MultiMedia1 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14404 {"MultiMedia2 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14405 {"MultiMedia1 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
14406 {"MultiMedia2 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
14407 {"MultiMedia1 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14408 {"MultiMedia2 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14409 {"MultiMedia1 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14410 {"MultiMedia1 Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
14411 {"MultiMedia3 Mixer", "AUX_PCM_TX", "AUX_PCM_TX"},
14412 {"MultiMedia5 Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014413 {"MultiMedia10 Mixer", "AUX_PCM_TX", "AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014414 {"MultiMedia1 Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
14415 {"MultiMedia3 Mixer", "SEC_AUX_PCM_TX", "SEC_AUX_PCM_TX"},
14416 {"MultiMedia5 Mixer", "SEC_AUX_PCM_TX", "SEC_AUX_PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014417 {"MultiMedia10 Mixer", "SEC_AUX_PCM_TX", "SEC_AUX_PCM_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014418 {"MultiMedia16 Mixer", "AUX_PCM_TX", "AUX_PCM_TX"},
14419 {"MultiMedia16 Mixer", "SEC_AUX_PCM_TX", "SEC_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014420 {"MultiMedia1 Mixer", "TERT_AUXPCM_UL_TX", "TERT_AUX_PCM_TX"},
14421 {"MultiMedia3 Mixer", "TERT_AUX_PCM_TX", "TERT_AUX_PCM_TX"},
14422 {"MultiMedia5 Mixer", "TERT_AUX_PCM_TX", "TERT_AUX_PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014423 {"MultiMedia10 Mixer", "TERT_AUX_PCM_TX", "TERT_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014424 {"MultiMedia1 Mixer", "QUAT_AUXPCM_UL_TX", "QUAT_AUX_PCM_TX"},
14425 {"MultiMedia3 Mixer", "QUAT_AUX_PCM_TX", "QUAT_AUX_PCM_TX"},
14426 {"MultiMedia5 Mixer", "QUAT_AUX_PCM_TX", "QUAT_AUX_PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014427 {"MultiMedia10 Mixer", "QUAT_AUX_PCM_TX", "QUAT_AUX_PCM_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014428 {"MultiMedia16 Mixer", "QUAT_AUX_PCM_TX", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053014429 {"MultiMedia1 Mixer", "QUIN_AUXPCM_UL_TX", "QUIN_AUX_PCM_TX"},
14430 {"MultiMedia3 Mixer", "QUIN_AUX_PCM_TX", "QUIN_AUX_PCM_TX"},
14431 {"MultiMedia5 Mixer", "QUIN_AUX_PCM_TX", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014432 {"MultiMedia2 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14433 {"MultiMedia2 Mixer", "SLIM_6_TX", "SLIMBUS_6_TX"},
14434 {"MultiMedia2 Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
14435 {"MultiMedia2 Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
14436 {"MultiMedia1 Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
14437 {"MultiMedia1 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14438 {"MultiMedia2 Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
14439 {"MultiMedia6 Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
14440 {"MultiMedia6 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14441 {"MultiMedia3 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14442 {"MultiMedia5 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014443 {"MultiMedia10 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014444 {"MultiMedia6 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
14445 {"MultiMedia3 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
14446 {"MultiMedia5 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014447 {"MultiMedia10 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014448 {"MultiMedia16 Mixer", "INT2_MI2S_TX", "INT2_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014449 {"MultiMedia6 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14450 {"MultiMedia3 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
14451 {"MultiMedia5 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014452 {"MultiMedia10 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014453 {"MultiMedia16 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014454 {"MultiMedia6 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14455 {"MultiMedia6 Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
14456 {"MultiMedia6 Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
14457 {"MultiMedia6 Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053014458 {"MultiMedia6 Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014459
14460 {"MultiMedia1 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
14461 {"MultiMedia1 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
14462 {"MultiMedia1 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
14463 {"MultiMedia1 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
14464 {"MultiMedia1 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
14465 {"MultiMedia1 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
14466 {"MultiMedia1 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
14467 {"MultiMedia1 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
14468 {"MultiMedia1 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14469 {"MultiMedia1 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14470 {"MultiMedia1 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14471 {"MultiMedia1 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14472 {"MultiMedia1 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14473 {"MultiMedia1 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14474 {"MultiMedia1 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14475 {"MultiMedia1 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053014476 {"MultiMedia1 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
14477 {"MultiMedia1 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
14478 {"MultiMedia1 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
14479 {"MultiMedia1 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014480
14481 {"MultiMedia2 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
14482 {"MultiMedia2 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
14483 {"MultiMedia2 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
14484 {"MultiMedia2 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
14485 {"MultiMedia2 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
14486 {"MultiMedia2 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
14487 {"MultiMedia2 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
14488 {"MultiMedia2 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
14489 {"MultiMedia2 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14490 {"MultiMedia2 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14491 {"MultiMedia2 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14492 {"MultiMedia2 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14493 {"MultiMedia2 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14494 {"MultiMedia2 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14495 {"MultiMedia2 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14496 {"MultiMedia2 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053014497 {"MultiMedia2 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
14498 {"MultiMedia2 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
14499 {"MultiMedia2 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
14500 {"MultiMedia2 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014501
14502 {"MultiMedia3 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
14503 {"MultiMedia3 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
14504 {"MultiMedia3 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
14505 {"MultiMedia3 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
14506 {"MultiMedia3 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
14507 {"MultiMedia3 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
14508 {"MultiMedia3 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
14509 {"MultiMedia3 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
14510 {"MultiMedia3 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14511 {"MultiMedia3 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14512 {"MultiMedia3 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14513 {"MultiMedia3 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14514 {"MultiMedia3 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14515 {"MultiMedia3 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14516 {"MultiMedia3 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14517 {"MultiMedia3 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053014518 {"MultiMedia3 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
14519 {"MultiMedia3 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
14520 {"MultiMedia3 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
14521 {"MultiMedia3 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014522
14523 {"MultiMedia4 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
14524 {"MultiMedia4 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
14525 {"MultiMedia4 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
14526 {"MultiMedia4 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
14527 {"MultiMedia4 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
14528 {"MultiMedia4 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
14529 {"MultiMedia4 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
14530 {"MultiMedia4 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
14531 {"MultiMedia4 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14532 {"MultiMedia4 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14533 {"MultiMedia4 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14534 {"MultiMedia4 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14535 {"MultiMedia4 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14536 {"MultiMedia4 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14537 {"MultiMedia4 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14538 {"MultiMedia4 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053014539 {"MultiMedia4 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
14540 {"MultiMedia4 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
14541 {"MultiMedia4 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
14542 {"MultiMedia4 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014543
14544 {"MultiMedia5 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
14545 {"MultiMedia5 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
14546 {"MultiMedia5 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
14547 {"MultiMedia5 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
14548 {"MultiMedia5 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
14549 {"MultiMedia5 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
14550 {"MultiMedia5 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
14551 {"MultiMedia5 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
14552 {"MultiMedia5 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14553 {"MultiMedia5 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14554 {"MultiMedia5 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14555 {"MultiMedia5 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14556 {"MultiMedia5 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14557 {"MultiMedia5 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14558 {"MultiMedia5 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14559 {"MultiMedia5 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053014560 {"MultiMedia5 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
14561 {"MultiMedia5 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
14562 {"MultiMedia5 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
14563 {"MultiMedia5 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014564
14565 {"MultiMedia6 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
14566 {"MultiMedia6 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
14567 {"MultiMedia6 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
14568 {"MultiMedia6 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
14569 {"MultiMedia6 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
14570 {"MultiMedia6 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
14571 {"MultiMedia6 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
14572 {"MultiMedia6 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
14573 {"MultiMedia6 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14574 {"MultiMedia6 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14575 {"MultiMedia6 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14576 {"MultiMedia6 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14577 {"MultiMedia6 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14578 {"MultiMedia6 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14579 {"MultiMedia6 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14580 {"MultiMedia6 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053014581 {"MultiMedia6 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
14582 {"MultiMedia6 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
14583 {"MultiMedia6 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
14584 {"MultiMedia6 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014585
14586 {"MultiMedia8 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
14587 {"MultiMedia8 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
14588 {"MultiMedia8 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
14589 {"MultiMedia8 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
14590 {"MultiMedia8 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
14591 {"MultiMedia8 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
14592 {"MultiMedia8 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
14593 {"MultiMedia8 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
14594 {"MultiMedia8 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14595 {"MultiMedia8 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14596 {"MultiMedia8 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14597 {"MultiMedia8 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14598 {"MultiMedia8 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14599 {"MultiMedia8 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14600 {"MultiMedia8 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14601 {"MultiMedia8 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053014602 {"MultiMedia8 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
14603 {"MultiMedia8 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
14604 {"MultiMedia8 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
14605 {"MultiMedia8 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014606
14607 {"MultiMedia9 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14608 {"MultiMedia9 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14609 {"MultiMedia9 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14610 {"MultiMedia9 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14611 {"MultiMedia9 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14612 {"MultiMedia9 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14613 {"MultiMedia9 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14614 {"MultiMedia9 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053014615 {"MultiMedia9 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
14616 {"MultiMedia9 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
14617 {"MultiMedia9 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
14618 {"MultiMedia9 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014619
Laxminath Kasam38070be2017-08-17 18:21:59 +053014620 {"MultiMedia10 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14621 {"MultiMedia10 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14622 {"MultiMedia10 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14623 {"MultiMedia10 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14624 {"MultiMedia10 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14625 {"MultiMedia10 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14626 {"MultiMedia10 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14627 {"MultiMedia10 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014628 {"MultiMedia20 Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
14629 {"MultiMedia20 Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
14630 {"MultiMedia20 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
14631 {"MultiMedia20 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053014632 {"MultiMedia20 Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014633 {"MultiMedia20 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
14634 {"MultiMedia20 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
14635 {"MultiMedia20 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
14636 {"MultiMedia20 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
14637 {"MultiMedia20 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
14638 {"MultiMedia20 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
14639 {"MultiMedia20 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
14640 {"MultiMedia20 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
14641 {"MultiMedia20 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14642 {"MultiMedia20 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14643 {"MultiMedia20 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14644 {"MultiMedia20 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14645 {"MultiMedia20 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14646 {"MultiMedia20 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14647 {"MultiMedia20 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14648 {"MultiMedia20 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053014649 {"MultiMedia20 Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
14650 {"MultiMedia20 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
14651 {"MultiMedia20 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
14652 {"MultiMedia20 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014653
14654 {"MultiMedia1 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
14655 {"MultiMedia2 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
14656 {"MultiMedia4 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
14657 {"MultiMedia5 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
14658 {"MultiMedia6 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
14659 {"MultiMedia8 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014660 {"MultiMedia10 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014661
Asish Bhattacharya34504582017-08-08 12:55:01 +053014662 {"MultiMedia16 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
14663 {"MultiMedia16 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
14664 {"MultiMedia16 Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
14665 {"MultiMedia16 Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
14666 {"MultiMedia16 Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
14667 {"MultiMedia16 Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
14668 {"MultiMedia16 Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
14669 {"MultiMedia16 Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
14670 {"MultiMedia16 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
14671 {"MultiMedia16 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
14672 {"MultiMedia16 Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
14673 {"MultiMedia16 Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
14674 {"MultiMedia16 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
14675 {"MultiMedia16 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
14676 {"MultiMedia16 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
14677 {"MultiMedia16 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
14678 {"MultiMedia16 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
14679
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014680 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14681 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14682 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14683 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14684 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14685 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14686 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14687 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14688 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14689 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14690 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14691 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14692 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14693 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14694 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14695 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14696 {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia6", "MM_UL6"},
14697 {"INT_BT_SCO_RX", NULL, "INTERNAL_BT_SCO_RX Audio Mixer"},
14698
14699 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14700 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14701 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14702 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14703 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14704 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14705 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14706 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14707 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14708 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14709 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14710 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14711 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14712 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14713 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14714 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14715 {"INTERNAL_A2DP_RX Audio Mixer", "MultiMedia6", "MM_UL6"},
14716 {"INT_BT_A2DP_RX", NULL, "INTERNAL_A2DP_RX Audio Mixer"},
14717
14718 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14719 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14720 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14721 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14722 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14723 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14724 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14725 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14726 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14727 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14728 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14729 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14730 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14731 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14732 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14733 {"INTERNAL_FM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14734 {"INT_FM_RX", NULL, "INTERNAL_FM_RX Audio Mixer"},
14735
14736 {"AFE_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14737 {"AFE_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14738 {"AFE_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14739 {"AFE_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14740 {"AFE_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14741 {"AFE_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14742 {"AFE_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14743 {"AFE_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14744 {"AFE_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14745 {"AFE_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14746 {"AFE_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14747 {"AFE_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14748 {"AFE_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14749 {"AFE_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14750 {"AFE_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14751 {"AFE_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14752 {"PCM_RX", NULL, "AFE_PCM_RX Audio Mixer"},
14753
14754 {"MultiMedia1 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
14755 {"MultiMedia3 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
14756 {"MultiMedia4 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014757 {"MultiMedia10 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014758 {"MultiMedia17 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
14759 {"MultiMedia18 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
14760 {"MultiMedia19 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
14761 {"MultiMedia5 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
14762 {"MultiMedia8 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014763 {"MultiMedia16 Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014764 {"MultiMedia1 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
14765 {"MultiMedia4 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014766 {"MultiMedia16 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014767 {"MultiMedia17 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
14768 {"MultiMedia18 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
14769 {"MultiMedia19 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
14770 {"MultiMedia5 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
14771 {"MultiMedia6 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
14772 {"MultiMedia8 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
14773
14774 {"MultiMedia1 Mixer", "AFE_PCM_TX", "PCM_TX"},
14775 {"MultiMedia3 Mixer", "AFE_PCM_TX", "PCM_TX"},
14776 {"MultiMedia4 Mixer", "AFE_PCM_TX", "PCM_TX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014777 {"MultiMedia10 Mixer", "AFE_PCM_TX", "PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014778 {"MultiMedia17 Mixer", "AFE_PCM_TX", "PCM_TX"},
14779 {"MultiMedia18 Mixer", "AFE_PCM_TX", "PCM_TX"},
14780 {"MultiMedia19 Mixer", "AFE_PCM_TX", "PCM_TX"},
14781 {"MultiMedia5 Mixer", "AFE_PCM_TX", "PCM_TX"},
14782 {"MultiMedia8 Mixer", "AFE_PCM_TX", "PCM_TX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014783 {"MultiMedia16 Mixer", "AFE_PCM_TX", "PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014784 {"MM_UL1", NULL, "MultiMedia1 Mixer"},
14785 {"MultiMedia2 Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
14786 {"MM_UL2", NULL, "MultiMedia2 Mixer"},
14787 {"MM_UL3", NULL, "MultiMedia3 Mixer"},
14788 {"MM_UL4", NULL, "MultiMedia4 Mixer"},
14789 {"MM_UL5", NULL, "MultiMedia5 Mixer"},
14790 {"MM_UL6", NULL, "MultiMedia6 Mixer"},
14791 {"MM_UL8", NULL, "MultiMedia8 Mixer"},
14792 {"MM_UL9", NULL, "MultiMedia9 Mixer"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053014793 {"MM_UL10", NULL, "MultiMedia10 Mixer"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053014794 {"MM_UL16", NULL, "MultiMedia16 Mixer"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014795 {"MM_UL17", NULL, "MultiMedia17 Mixer"},
14796 {"MM_UL18", NULL, "MultiMedia18 Mixer"},
14797 {"MM_UL19", NULL, "MultiMedia19 Mixer"},
14798 {"MM_UL20", NULL, "MultiMedia20 Mixer"},
14799
14800 {"AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14801 {"AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14802 {"AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14803 {"AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14804 {"AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14805 {"AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14806 {"AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14807 {"AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14808 {"AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14809 {"AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14810 {"AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14811 {"AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14812 {"AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14813 {"AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14814 {"AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14815 {"AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14816 {"AUX_PCM_RX", NULL, "AUX_PCM_RX Audio Mixer"},
14817
14818 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14819 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14820 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14821 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14822 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14823 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14824 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14825 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14826 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14827 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14828 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14829 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14830 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14831 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14832 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14833 {"SEC_AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14834 {"SEC_AUX_PCM_RX", NULL, "SEC_AUX_PCM_RX Audio Mixer"},
14835
14836 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14837 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14838 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14839 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14840 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14841 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14842 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14843 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14844 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14845 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14846 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14847 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14848 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14849 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14850 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14851 {"TERT_AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14852 {"TERT_AUX_PCM_RX", NULL, "TERT_AUX_PCM_RX Audio Mixer"},
14853
14854 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14855 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14856 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14857 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14858 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14859 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14860 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14861 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14862 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14863 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14864 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14865 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14866 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14867 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14868 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14869 {"QUAT_AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14870 {"QUAT_AUX_PCM_RX", NULL, "QUAT_AUX_PCM_RX Audio Mixer"},
14871
Rohit Kumara5077932017-09-10 22:05:05 +053014872 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
14873 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
14874 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
14875 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
14876 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
14877 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
14878 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
14879 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
14880 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
14881 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
14882 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
14883 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
14884 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
14885 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
14886 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
14887 {"QUIN_AUX_PCM_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
14888 {"QUIN_AUX_PCM_RX", NULL, "QUIN_AUX_PCM_RX Audio Mixer"},
14889
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014890 {"PRI_RX_Voice Mixer", "Voip", "VOIP_DL"},
14891 {"PRI_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
14892 {"PRI_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
14893 {"PRI_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
14894 {"PRI_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
14895 {"PRI_I2S_RX", NULL, "PRI_RX_Voice Mixer"},
14896
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014897 {"SEC_RX_Voice Mixer", "Voip", "VOIP_DL"},
14898 {"SEC_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
14899 {"SEC_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
14900 {"SEC_I2S_RX", NULL, "SEC_RX_Voice Mixer"},
14901
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014902 {"SEC_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
14903 {"SEC_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
14904 {"SEC_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
14905 {"SEC_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
14906 {"SEC_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
14907 {"SEC_MI2S_RX", NULL, "SEC_MI2S_RX_Voice Mixer"},
14908
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014909 {"SLIM_0_RX_Voice Mixer", "Voip", "VOIP_DL"},
14910 {"SLIM_0_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014911 {"SLIM_0_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
14912 {"SLIM_0_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
14913 {"SLIM_0_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
14914 {"SLIMBUS_0_RX", NULL, "SLIM_0_RX_Voice Mixer"},
14915
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014916 {"SLIM_6_RX_Voice Mixer", "Voip", "VOIP_DL"},
14917 {"SLIM_6_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014918 {"SLIM_6_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
14919 {"SLIM_6_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
14920 {"SLIM_6_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
14921 {"SLIMBUS_6_RX", NULL, "SLIM_6_RX_Voice Mixer"},
14922
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014923 {"USB_AUDIO_RX_Voice Mixer", "Voip", "VOIP_DL"},
14924 {"USB_AUDIO_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014925 {"USB_AUDIO_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
14926 {"USB_AUDIO_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
14927 {"USB_AUDIO_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
14928 {"USB_AUDIO_RX", NULL, "USB_AUDIO_RX_Voice Mixer"},
14929
Aalique Grahamee4fd7d52017-11-28 13:24:13 -080014930 {"DISPLAY_PORT_RX_Voice Mixer", "Voip", "VOIP_DL"},
14931 {"DISPLAY_PORT_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Aalique Grahamee4fd7d52017-11-28 13:24:13 -080014932 {"DISPLAY_PORT_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
14933 {"DISPLAY_PORT_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
14934 {"DISPLAY_PORT_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
14935 {"DISPLAY_PORT", NULL, "DISPLAY_PORT_RX_Voice Mixer"},
14936
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014937 {"INTERNAL_BT_SCO_RX_Voice Mixer", "Voip", "VOIP_DL"},
14938 {"INTERNAL_BT_SCO_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
14939 {"INTERNAL_BT_SCO_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
14940 {"INTERNAL_BT_SCO_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
14941 {"INTERNAL_BT_SCO_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014942 {"INT_BT_SCO_RX", NULL, "INTERNAL_BT_SCO_RX_Voice Mixer"},
14943
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014944 {"AFE_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
14945 {"AFE_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
14946 {"AFE_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
14947 {"AFE_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
14948 {"AFE_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
14949 {"PCM_RX", NULL, "AFE_PCM_RX_Voice Mixer"},
14950
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014951 {"AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
14952 {"AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014953 {"AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
14954 {"AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
14955 {"AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
14956 {"AUX_PCM_RX", NULL, "AUX_PCM_RX_Voice Mixer"},
14957
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014958 {"SEC_AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
14959 {"SEC_AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014960 {"SEC_AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
14961 {"SEC_AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
14962 {"SEC_AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
14963 {"SEC_AUX_PCM_RX", NULL, "SEC_AUX_PCM_RX_Voice Mixer"},
14964
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014965 {"TERT_AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
14966 {"TERT_AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014967 {"TERT_AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
14968 {"TERT_AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
14969 {"TERT_AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
14970 {"TERT_AUX_PCM_RX", NULL, "TERT_AUX_PCM_RX_Voice Mixer"},
14971
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014972 {"QUAT_AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
14973 {"QUAT_AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014974 {"QUAT_AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
14975 {"QUAT_AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
14976 {"QUAT_AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
14977 {"QUAT_AUX_PCM_RX", NULL, "QUAT_AUX_PCM_RX_Voice Mixer"},
14978
Rohit Kumara5077932017-09-10 22:05:05 +053014979 {"QUIN_AUX_PCM_RX_Voice Mixer", "Voip", "VOIP_DL"},
14980 {"QUIN_AUX_PCM_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Rohit Kumara5077932017-09-10 22:05:05 +053014981 {"QUIN_AUX_PCM_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
14982 {"QUIN_AUX_PCM_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
14983 {"QUIN_AUX_PCM_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
14984 {"QUIN_AUX_PCM_RX", NULL, "QUIN_AUX_PCM_RX_Voice Mixer"},
14985
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014986 {"HDMI_RX_Voice Mixer", "Voip", "VOIP_DL"},
14987 {"HDMI_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
14988 {"HDMI_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
14989 {"HDMI_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
14990 {"HDMI_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
14991 {"HDMI", NULL, "HDMI_RX_Voice Mixer"},
14992 {"HDMI", NULL, "HDMI_DL_HL"},
14993
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014994 {"MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014995 {"MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
14996 {"MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
14997 {"MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
kunleiz8a60b822017-10-11 15:04:02 +080014998 {"MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053014999 {"MI2S_RX", NULL, "MI2S_RX_Voice Mixer"},
15000
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015001 {"PRI_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015002 {"PRI_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15003 {"PRI_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15004 {"PRI_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15005 {"PRI_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15006 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX_Voice Mixer"},
15007
15008 {"INT0_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
15009 {"INT0_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15010 {"INT0_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15011 {"INT0_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15012 {"INT0_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15013 {"INT0_MI2S_RX", NULL, "INT0_MI2S_RX_Voice Mixer"},
15014
15015 {"INT4_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
15016 {"INT4_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15017 {"INT4_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15018 {"INT4_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15019 {"INT4_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15020 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX_Voice Mixer"},
15021
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015022 {"TERT_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015023 {"TERT_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15024 {"TERT_MI2S_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
15025 {"TERT_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15026 {"TERT_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15027 {"TERT_MI2S_RX", NULL, "TERT_MI2S_RX_Voice Mixer"},
15028
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015029 {"QUAT_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015030 {"QUAT_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15031 {"QUAT_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15032 {"QUAT_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15033 {"QUAT_MI2S_RX", NULL, "QUAT_MI2S_RX_Voice Mixer"},
15034
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015035 {"QUIN_MI2S_RX_Voice Mixer", "Voip", "VOIP_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015036 {"QUIN_MI2S_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15037 {"QUIN_MI2S_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15038 {"QUIN_MI2S_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15039 {"QUIN_MI2S_RX", NULL, "QUIN_MI2S_RX_Voice Mixer"},
15040
15041 {"QUAT_TDM_RX_2_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15042 {"QUAT_TDM_RX_2", NULL, "QUAT_TDM_RX_2_Voice Mixer"},
15043
15044 {"VOC_EXT_EC MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15045 {"VOC_EXT_EC MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15046 {"VOC_EXT_EC MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15047 {"VOC_EXT_EC MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015048 {"VOC_EXT_EC MUX", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015049 {"VOC_EXT_EC MUX", "SLIM_1_TX", "SLIMBUS_1_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015050 {"VOIP_UL", NULL, "VOC_EXT_EC MUX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015051 {"VOICEMMODE1_UL", NULL, "VOC_EXT_EC MUX"},
15052 {"VOICEMMODE2_UL", NULL, "VOC_EXT_EC MUX"},
15053
15054 {"AUDIO_REF_EC_UL1 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15055 {"AUDIO_REF_EC_UL1 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15056 {"AUDIO_REF_EC_UL1 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15057 {"AUDIO_REF_EC_UL1 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15058 {"AUDIO_REF_EC_UL1 MUX", "SLIM_1_TX", "SLIMBUS_1_TX"},
15059 {"AUDIO_REF_EC_UL1 MUX", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15060 {"AUDIO_REF_EC_UL1 MUX", "QUAT_TDM_RX_0", "QUAT_TDM_RX_0"},
15061 {"AUDIO_REF_EC_UL1 MUX", "QUAT_TDM_RX_1", "QUAT_TDM_RX_1"},
15062 {"AUDIO_REF_EC_UL1 MUX", "QUAT_TDM_RX_2", "QUAT_TDM_RX_2"},
15063 {"AUDIO_REF_EC_UL1 MUX", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15064
15065 {"AUDIO_REF_EC_UL2 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15066 {"AUDIO_REF_EC_UL2 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15067 {"AUDIO_REF_EC_UL2 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15068 {"AUDIO_REF_EC_UL2 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15069
15070 {"AUDIO_REF_EC_UL3 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15071 {"AUDIO_REF_EC_UL3 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15072 {"AUDIO_REF_EC_UL3 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15073 {"AUDIO_REF_EC_UL3 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15074
15075 {"AUDIO_REF_EC_UL4 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15076 {"AUDIO_REF_EC_UL4 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15077 {"AUDIO_REF_EC_UL4 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15078 {"AUDIO_REF_EC_UL4 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15079
15080 {"AUDIO_REF_EC_UL5 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15081 {"AUDIO_REF_EC_UL5 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15082 {"AUDIO_REF_EC_UL5 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15083 {"AUDIO_REF_EC_UL5 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15084
15085 {"AUDIO_REF_EC_UL6 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15086 {"AUDIO_REF_EC_UL6 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15087 {"AUDIO_REF_EC_UL6 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15088 {"AUDIO_REF_EC_UL6 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15089
15090 {"AUDIO_REF_EC_UL8 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15091 {"AUDIO_REF_EC_UL8 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15092 {"AUDIO_REF_EC_UL8 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15093 {"AUDIO_REF_EC_UL8 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15094
15095 {"AUDIO_REF_EC_UL9 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15096 {"AUDIO_REF_EC_UL9 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15097 {"AUDIO_REF_EC_UL9 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15098 {"AUDIO_REF_EC_UL9 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15099
Laxminath Kasam38070be2017-08-17 18:21:59 +053015100 {"AUDIO_REF_EC_UL10 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15101 {"AUDIO_REF_EC_UL10 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15102 {"AUDIO_REF_EC_UL10 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15103 {"AUDIO_REF_EC_UL10 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15104 {"AUDIO_REF_EC_UL10 MUX", "SLIM_1_TX", "SLIMBUS_1_TX"},
15105 {"AUDIO_REF_EC_UL10 MUX", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15106 {"AUDIO_REF_EC_UL10 MUX", "QUAT_TDM_RX_0", "QUAT_TDM_RX_0"},
15107 {"AUDIO_REF_EC_UL10 MUX", "QUAT_TDM_RX_1", "QUAT_TDM_RX_1"},
15108 {"AUDIO_REF_EC_UL10 MUX", "QUAT_TDM_RX_2", "QUAT_TDM_RX_2"},
15109 {"AUDIO_REF_EC_UL10 MUX", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
Vikram Panduranga016c49f2017-09-11 15:15:56 -070015110
15111 {"AUDIO_REF_EC_UL16 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15112 {"AUDIO_REF_EC_UL16 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15113 {"AUDIO_REF_EC_UL16 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15114 {"AUDIO_REF_EC_UL16 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15115
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015116 {"AUDIO_REF_EC_UL17 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15117 {"AUDIO_REF_EC_UL17 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15118 {"AUDIO_REF_EC_UL17 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15119 {"AUDIO_REF_EC_UL17 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15120
15121 {"AUDIO_REF_EC_UL18 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15122 {"AUDIO_REF_EC_UL18 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15123 {"AUDIO_REF_EC_UL18 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15124 {"AUDIO_REF_EC_UL18 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15125
15126 {"AUDIO_REF_EC_UL19 MUX", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15127 {"AUDIO_REF_EC_UL19 MUX", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15128 {"AUDIO_REF_EC_UL19 MUX", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15129 {"AUDIO_REF_EC_UL19 MUX", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15130
Yunfei Zhang3efc4a22017-11-07 16:30:13 +080015131
15132 {"LSM1_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15133 {"LSM2_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15134 {"LSM3_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15135 {"LSM4_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15136 {"LSM5_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15137 {"LSM6_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15138 {"LSM7_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15139 {"LSM8_UL_HL", NULL, "AUDIO_REF_EC_UL1 MUX"},
15140
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015141 {"MM_UL1", NULL, "AUDIO_REF_EC_UL1 MUX"},
15142 {"MM_UL2", NULL, "AUDIO_REF_EC_UL2 MUX"},
15143 {"MM_UL3", NULL, "AUDIO_REF_EC_UL3 MUX"},
15144 {"MM_UL4", NULL, "AUDIO_REF_EC_UL4 MUX"},
15145 {"MM_UL5", NULL, "AUDIO_REF_EC_UL5 MUX"},
15146 {"MM_UL6", NULL, "AUDIO_REF_EC_UL6 MUX"},
15147 {"MM_UL8", NULL, "AUDIO_REF_EC_UL8 MUX"},
15148 {"MM_UL9", NULL, "AUDIO_REF_EC_UL9 MUX"},
Laxminath Kasam38070be2017-08-17 18:21:59 +053015149 {"MM_UL10", NULL, "AUDIO_REF_EC_UL10 MUX"},
Asish Bhattacharya34504582017-08-08 12:55:01 +053015150 {"MM_UL16", NULL, "AUDIO_REF_EC_UL16 MUX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015151 {"MM_UL17", NULL, "AUDIO_REF_EC_UL17 MUX"},
15152 {"MM_UL18", NULL, "AUDIO_REF_EC_UL18 MUX"},
15153 {"MM_UL19", NULL, "AUDIO_REF_EC_UL19 MUX"},
15154
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015155 {"VoiceMMode1_Tx Mixer", "PRI_TX_MMode1", "PRI_I2S_TX"},
15156 {"VoiceMMode1_Tx Mixer", "PRI_MI2S_TX_MMode1", "PRI_MI2S_TX"},
15157 {"VoiceMMode1_Tx Mixer", "MI2S_TX_MMode1", "MI2S_TX"},
15158 {"VoiceMMode1_Tx Mixer", "TERT_MI2S_TX_MMode1", "TERT_MI2S_TX"},
15159 {"VoiceMMode1_Tx Mixer", "INT3_MI2S_TX_MMode1", "INT3_MI2S_TX"},
15160 {"VoiceMMode1_Tx Mixer", "SLIM_0_TX_MMode1", "SLIMBUS_0_TX"},
15161 {"VoiceMMode1_Tx Mixer", "SLIM_7_TX_MMode1", "SLIMBUS_7_TX"},
15162 {"VoiceMMode1_Tx Mixer", "SLIM_8_TX_MMode1", "SLIMBUS_8_TX"},
15163 {"VoiceMMode1_Tx Mixer", "USB_AUDIO_TX_MMode1", "USB_AUDIO_TX"},
15164 {"VoiceMMode1_Tx Mixer", "INT_BT_SCO_TX_MMode1", "INT_BT_SCO_TX"},
15165 {"VoiceMMode1_Tx Mixer", "AFE_PCM_TX_MMode1", "PCM_TX"},
15166 {"VoiceMMode1_Tx Mixer", "AUX_PCM_TX_MMode1", "AUX_PCM_TX"},
15167 {"VoiceMMode1_Tx Mixer", "SEC_AUX_PCM_TX_MMode1", "SEC_AUX_PCM_TX"},
15168 {"VoiceMMode1_Tx Mixer", "TERT_AUX_PCM_TX_MMode1", "TERT_AUX_PCM_TX"},
15169 {"VoiceMMode1_Tx Mixer", "QUAT_AUX_PCM_TX_MMode1", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015170 {"VoiceMMode1_Tx Mixer", "QUIN_AUX_PCM_TX_MMode1", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015171 {"VoiceMMode1_Tx Mixer", "QUAT_TDM_TX_0_MMode1", "QUAT_TDM_TX_0"},
15172 {"VOICEMMODE1_UL", NULL, "VoiceMMode1_Tx Mixer"},
15173
15174 {"VoiceMMode2_Tx Mixer", "PRI_TX_MMode2", "PRI_I2S_TX"},
15175 {"VoiceMMode2_Tx Mixer", "PRI_MI2S_TX_MMode2", "PRI_MI2S_TX"},
15176 {"VoiceMMode2_Tx Mixer", "MI2S_TX_MMode2", "MI2S_TX"},
15177 {"VoiceMMode2_Tx Mixer", "TERT_MI2S_TX_MMode2", "TERT_MI2S_TX"},
15178 {"VoiceMMode2_Tx Mixer", "INT3_MI2S_TX_MMode2", "INT3_MI2S_TX"},
15179 {"VoiceMMode2_Tx Mixer", "SLIM_0_TX_MMode2", "SLIMBUS_0_TX"},
15180 {"VoiceMMode2_Tx Mixer", "SLIM_7_TX_MMode2", "SLIMBUS_7_TX"},
15181 {"VoiceMMode2_Tx Mixer", "SLIM_8_TX_MMode2", "SLIMBUS_8_TX"},
15182 {"VoiceMMode2_Tx Mixer", "USB_AUDIO_TX_MMode2", "USB_AUDIO_TX"},
15183 {"VoiceMMode2_Tx Mixer", "INT_BT_SCO_TX_MMode2", "INT_BT_SCO_TX"},
15184 {"VoiceMMode2_Tx Mixer", "AFE_PCM_TX_MMode2", "PCM_TX"},
15185 {"VoiceMMode2_Tx Mixer", "AUX_PCM_TX_MMode2", "AUX_PCM_TX"},
15186 {"VoiceMMode2_Tx Mixer", "SEC_AUX_PCM_TX_MMode2", "SEC_AUX_PCM_TX"},
15187 {"VoiceMMode2_Tx Mixer", "TERT_AUX_PCM_TX_MMode2", "TERT_AUX_PCM_TX"},
15188 {"VoiceMMode2_Tx Mixer", "QUAT_AUX_PCM_TX_MMode2", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015189 {"VoiceMMode2_Tx Mixer", "QUIN_AUX_PCM_TX_MMode2", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015190 {"VOICEMMODE2_UL", NULL, "VoiceMMode2_Tx Mixer"},
15191
15192 {"Voip_Tx Mixer", "PRI_TX_Voip", "PRI_I2S_TX"},
15193 {"Voip_Tx Mixer", "MI2S_TX_Voip", "MI2S_TX"},
15194 {"Voip_Tx Mixer", "TERT_MI2S_TX_Voip", "TERT_MI2S_TX"},
15195 {"Voip_Tx Mixer", "INT3_MI2S_TX_Voip", "INT3_MI2S_TX"},
15196 {"Voip_Tx Mixer", "SLIM_0_TX_Voip", "SLIMBUS_0_TX"},
15197 {"Voip_Tx Mixer", "SLIM_7_TX_Voip", "SLIMBUS_7_TX"},
15198 {"Voip_Tx Mixer", "SLIM_8_TX_Voip", "SLIMBUS_8_TX"},
15199 {"Voip_Tx Mixer", "USB_AUDIO_TX_Voip", "USB_AUDIO_TX"},
15200 {"Voip_Tx Mixer", "INTERNAL_BT_SCO_TX_Voip", "INT_BT_SCO_TX"},
15201 {"Voip_Tx Mixer", "AFE_PCM_TX_Voip", "PCM_TX"},
15202 {"Voip_Tx Mixer", "AUX_PCM_TX_Voip", "AUX_PCM_TX"},
15203 {"Voip_Tx Mixer", "SEC_AUX_PCM_TX_Voip", "SEC_AUX_PCM_TX"},
15204 {"Voip_Tx Mixer", "TERT_AUX_PCM_TX_Voip", "TERT_AUX_PCM_TX"},
15205 {"Voip_Tx Mixer", "QUAT_AUX_PCM_TX_Voip", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015206 {"Voip_Tx Mixer", "QUIN_AUX_PCM_TX_Voip", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015207 {"Voip_Tx Mixer", "PRI_MI2S_TX_Voip", "PRI_MI2S_TX"},
15208 {"VOIP_UL", NULL, "Voip_Tx Mixer"},
15209
15210 {"SLIMBUS_DL_HL", "Switch", "SLIM0_DL_HL"},
15211 {"SLIMBUS_0_RX", NULL, "SLIMBUS_DL_HL"},
15212 {"SLIMBUS1_DL_HL", "Switch", "SLIM1_DL_HL"},
15213 {"SLIMBUS_1_RX", NULL, "SLIMBUS1_DL_HL"},
15214 {"SLIMBUS3_DL_HL", "Switch", "SLIM3_DL_HL"},
15215 {"SLIMBUS_3_RX", NULL, "SLIMBUS3_DL_HL"},
15216 {"SLIMBUS4_DL_HL", "Switch", "SLIM4_DL_HL"},
15217 {"SLIMBUS_4_RX", NULL, "SLIMBUS4_DL_HL"},
15218 {"SLIMBUS6_DL_HL", "Switch", "SLIM0_DL_HL"},
15219 {"SLIMBUS_6_RX", NULL, "SLIMBUS6_DL_HL"},
15220 {"SLIM0_UL_HL", NULL, "SLIMBUS_0_TX"},
15221 {"SLIM1_UL_HL", NULL, "SLIMBUS_1_TX"},
15222 {"SLIM3_UL_HL", NULL, "SLIMBUS_3_TX"},
15223 {"SLIM4_UL_HL", NULL, "SLIMBUS_4_TX"},
15224 {"SLIM8_UL_HL", NULL, "SLIMBUS_8_TX"},
15225
15226 {"LSM1 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15227 {"LSM1 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15228 {"LSM1 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15229 {"LSM1 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15230 {"LSM1 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15231 {"LSM1 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15232 {"LSM1 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15233 {"LSM1 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
15234 {"LSM1_UL_HL", NULL, "LSM1 Mixer"},
15235
15236 {"LSM2 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15237 {"LSM2 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15238 {"LSM2 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15239 {"LSM2 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15240 {"LSM2 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15241 {"LSM2 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15242 {"LSM2 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15243 {"LSM2 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
15244 {"LSM2_UL_HL", NULL, "LSM2 Mixer"},
15245
15246
15247 {"LSM3 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15248 {"LSM3 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15249 {"LSM3 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15250 {"LSM3 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15251 {"LSM3 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15252 {"LSM3 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15253 {"LSM3 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15254 {"LSM3 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
15255 {"LSM3_UL_HL", NULL, "LSM3 Mixer"},
15256
15257
15258 {"LSM4 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15259 {"LSM4 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15260 {"LSM4 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15261 {"LSM4 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15262 {"LSM4 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15263 {"LSM4 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15264 {"LSM4 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15265 {"LSM4 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
15266 {"LSM4_UL_HL", NULL, "LSM4 Mixer"},
15267
15268 {"LSM5 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15269 {"LSM5 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15270 {"LSM5 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15271 {"LSM5 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15272 {"LSM5 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15273 {"LSM5 Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15274 {"LSM5 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15275 {"LSM5 Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
15276 {"LSM5_UL_HL", NULL, "LSM5 Mixer"},
15277
15278 {"LSM6 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15279 {"LSM6 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15280 {"LSM6 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15281 {"LSM6 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15282 {"LSM6 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15283 {"LSM6 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15284 {"LSM6_UL_HL", NULL, "LSM6 Mixer"},
15285
15286 {"LSM7 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15287 {"LSM7 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15288 {"LSM7 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15289 {"LSM7 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15290 {"LSM7 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15291 {"LSM7 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15292 {"LSM7_UL_HL", NULL, "LSM7 Mixer"},
15293
15294 {"LSM8 Mixer", "SLIMBUS_0_TX", "SLIMBUS_0_TX"},
15295 {"LSM8 Mixer", "SLIMBUS_1_TX", "SLIMBUS_1_TX"},
15296 {"LSM8 Mixer", "SLIMBUS_3_TX", "SLIMBUS_3_TX"},
15297 {"LSM8 Mixer", "SLIMBUS_4_TX", "SLIMBUS_4_TX"},
15298 {"LSM8 Mixer", "SLIMBUS_5_TX", "SLIMBUS_5_TX"},
15299 {"LSM8 Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15300 {"LSM8_UL_HL", NULL, "LSM8 Mixer"},
15301
15302
15303 {"CPE_LSM_UL_HL", NULL, "BE_IN"},
15304 {"QCHAT_Tx Mixer", "PRI_TX_QCHAT", "PRI_I2S_TX"},
15305 {"QCHAT_Tx Mixer", "SLIM_0_TX_QCHAT", "SLIMBUS_0_TX"},
15306 {"QCHAT_Tx Mixer", "SLIM_7_TX_QCHAT", "SLIMBUS_7_TX"},
15307 {"QCHAT_Tx Mixer", "SLIM_8_TX_QCHAT", "SLIMBUS_8_TX"},
15308 {"QCHAT_Tx Mixer", "INTERNAL_BT_SCO_TX_QCHAT", "INT_BT_SCO_TX"},
15309 {"QCHAT_Tx Mixer", "AFE_PCM_TX_QCHAT", "PCM_TX"},
15310 {"QCHAT_Tx Mixer", "AUX_PCM_TX_QCHAT", "AUX_PCM_TX"},
15311 {"QCHAT_Tx Mixer", "SEC_AUX_PCM_TX_QCHAT", "SEC_AUX_PCM_TX"},
15312 {"QCHAT_Tx Mixer", "TERT_AUX_PCM_TX_QCHAT", "TERT_AUX_PCM_TX"},
15313 {"QCHAT_Tx Mixer", "QUAT_AUX_PCM_TX_QCHAT", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015314 {"QCHAT_Tx Mixer", "QUIN_AUX_PCM_TX_QCHAT", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015315 {"QCHAT_Tx Mixer", "MI2S_TX_QCHAT", "MI2S_TX"},
15316 {"QCHAT_Tx Mixer", "PRI_MI2S_TX_QCHAT", "PRI_MI2S_TX"},
15317 {"QCHAT_Tx Mixer", "TERT_MI2S_TX_QCHAT", "TERT_MI2S_TX"},
15318 {"QCHAT_Tx Mixer", "INT3_MI2S_TX_QCHAT", "INT3_MI2S_TX"},
15319 {"QCHAT_Tx Mixer", "USB_AUDIO_TX_QCHAT", "USB_AUDIO_TX"},
15320 {"QCHAT_UL", NULL, "QCHAT_Tx Mixer"},
15321
15322 {"INT_FM_RX", NULL, "INTFM_DL_HL"},
15323 {"INTFM_UL_HL", NULL, "INT_FM_TX"},
15324 {"INTHFP_UL_HL", NULL, "HFP_PRI_AUX_UL_HL"},
15325 {"HFP_PRI_AUX_UL_HL", "Switch", "AUX_PCM_TX"},
15326 {"INTHFP_UL_HL", NULL, "HFP_AUX_UL_HL"},
15327 {"HFP_AUX_UL_HL", "Switch", "SEC_AUX_PCM_TX"},
15328 {"INTHFP_UL_HL", NULL, "HFP_INT_UL_HL"},
15329 {"HFP_INT_UL_HL", "Switch", "INT_BT_SCO_TX"},
15330 {"SLIM7_UL_HL", NULL, "HFP_SLIM7_UL_HL"},
15331 {"HFP_SLIM7_UL_HL", "Switch", "SLIMBUS_7_TX"},
15332 {"AUX_PCM_RX", NULL, "AUXPCM_DL_HL"},
15333 {"AUX_PCM_RX", NULL, "INTHFP_DL_HL"},
Karthikeyan Mani9f66f6f2017-12-13 13:38:46 -080015334 {"SEC_AUX_PCM_RX", NULL, "SEC_AUXPCM_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015335 {"AUXPCM_UL_HL", NULL, "AUX_PCM_TX"},
Karthikeyan Mani9f66f6f2017-12-13 13:38:46 -080015336 {"SEC_AUXPCM_UL_HL", NULL, "SEC_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015337 {"MI2S_RX", NULL, "MI2S_DL_HL"},
15338 {"MI2S_UL_HL", NULL, "MI2S_TX"},
15339 {"PCM_RX_DL_HL", "Switch", "SLIM0_DL_HL"},
15340 {"PCM_RX", NULL, "PCM_RX_DL_HL"},
15341
15342 /* connect to INT4_MI2S_DL_HL since same pcm_id */
15343 {"INT0_MI2S_RX_DL_HL", "Switch", "INT4_MI2S_DL_HL"},
15344 {"INT0_MI2S_RX", NULL, "INT0_MI2S_RX_DL_HL"},
15345 {"INT4_MI2S_RX_DL_HL", "Switch", "INT4_MI2S_DL_HL"},
15346 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX_DL_HL"},
15347 {"PRI_MI2S_RX_DL_HL", "Switch", "PRI_MI2S_DL_HL"},
15348 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX_DL_HL"},
15349 {"SEC_MI2S_RX_DL_HL", "Switch", "SEC_MI2S_DL_HL"},
15350 {"SEC_MI2S_RX", NULL, "SEC_MI2S_RX_DL_HL"},
15351 {"TERT_MI2S_RX_DL_HL", "Switch", "TERT_MI2S_DL_HL"},
15352 {"TERT_MI2S_RX", NULL, "TERT_MI2S_RX_DL_HL"},
15353
15354 {"QUAT_MI2S_RX_DL_HL", "Switch", "QUAT_MI2S_DL_HL"},
15355 {"QUAT_MI2S_RX", NULL, "QUAT_MI2S_RX_DL_HL"},
Rohit Kumara5077932017-09-10 22:05:05 +053015356 {"QUIN_MI2S_RX_DL_HL", "Switch", "QUIN_MI2S_DL_HL"},
15357 {"QUIN_MI2S_RX", NULL, "QUIN_MI2S_RX_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015358 {"MI2S_UL_HL", NULL, "TERT_MI2S_TX"},
15359 {"INT3_MI2S_UL_HL", NULL, "INT3_MI2S_TX"},
15360 {"TERT_MI2S_UL_HL", NULL, "TERT_MI2S_TX"},
15361 {"SEC_I2S_RX", NULL, "SEC_I2S_DL_HL"},
15362 {"PRI_MI2S_UL_HL", NULL, "PRI_MI2S_TX"},
15363 {"SEC_MI2S_UL_HL", NULL, "SEC_MI2S_TX"},
15364 {"SEC_MI2S_RX", NULL, "SEC_MI2S_DL_HL"},
15365 {"PRI_MI2S_RX", NULL, "PRI_MI2S_DL_HL"},
15366 {"TERT_MI2S_RX", NULL, "TERT_MI2S_DL_HL"},
15367 {"QUAT_MI2S_UL_HL", NULL, "QUAT_MI2S_TX"},
15368
15369 {"PRI_TDM_TX_0_UL_HL", NULL, "PRI_TDM_TX_0"},
15370 {"PRI_TDM_TX_1_UL_HL", NULL, "PRI_TDM_TX_1"},
15371 {"PRI_TDM_TX_2_UL_HL", NULL, "PRI_TDM_TX_2"},
15372 {"PRI_TDM_TX_3_UL_HL", NULL, "PRI_TDM_TX_3"},
15373 {"PRI_TDM_RX_0", NULL, "PRI_TDM_RX_0_DL_HL"},
15374 {"PRI_TDM_RX_1", NULL, "PRI_TDM_RX_1_DL_HL"},
15375 {"PRI_TDM_RX_2", NULL, "PRI_TDM_RX_2_DL_HL"},
15376 {"PRI_TDM_RX_3", NULL, "PRI_TDM_RX_3_DL_HL"},
15377 {"SEC_TDM_TX_0_UL_HL", NULL, "SEC_TDM_TX_0"},
15378 {"SEC_TDM_TX_1_UL_HL", NULL, "SEC_TDM_TX_1"},
15379 {"SEC_TDM_TX_2_UL_HL", NULL, "SEC_TDM_TX_2"},
15380 {"SEC_TDM_TX_3_UL_HL", NULL, "SEC_TDM_TX_3"},
15381 {"SEC_TDM_RX_0", NULL, "SEC_TDM_RX_0_DL_HL"},
15382 {"SEC_TDM_RX_1", NULL, "SEC_TDM_RX_1_DL_HL"},
15383 {"SEC_TDM_RX_2", NULL, "SEC_TDM_RX_2_DL_HL"},
15384 {"SEC_TDM_RX_3", NULL, "SEC_TDM_RX_3_DL_HL"},
15385 {"TERT_TDM_TX_0_UL_HL", NULL, "TERT_TDM_TX_0"},
15386 {"TERT_TDM_TX_1_UL_HL", NULL, "TERT_TDM_TX_1"},
15387 {"TERT_TDM_TX_2_UL_HL", NULL, "TERT_TDM_TX_2"},
15388 {"TERT_TDM_TX_3_UL_HL", NULL, "TERT_TDM_TX_3"},
15389 {"TERT_TDM_RX_0", NULL, "TERT_TDM_RX_0_DL_HL"},
15390 {"TERT_TDM_RX_1", NULL, "TERT_TDM_RX_1_DL_HL"},
15391 {"TERT_TDM_RX_2", NULL, "TERT_TDM_RX_2_DL_HL"},
15392 {"TERT_TDM_RX_3", NULL, "TERT_TDM_RX_3_DL_HL"},
15393 {"QUAT_TDM_TX_0_UL_HL", NULL, "QUAT_TDM_TX_0"},
15394 {"QUAT_TDM_TX_1_UL_HL", NULL, "QUAT_TDM_TX_1"},
15395 {"QUAT_TDM_TX_2_UL_HL", NULL, "QUAT_TDM_TX_2"},
15396 {"QUAT_TDM_TX_3_UL_HL", NULL, "QUAT_TDM_TX_3"},
15397 {"QUAT_TDM_RX_0", NULL, "QUAT_TDM_RX_0_DL_HL"},
15398 {"QUAT_TDM_RX_1", NULL, "QUAT_TDM_RX_1_DL_HL"},
15399 {"QUAT_TDM_RX_2", NULL, "QUAT_TDM_RX_2_DL_HL"},
15400 {"QUAT_TDM_RX_3", NULL, "QUAT_TDM_RX_3_DL_HL"},
Rohit Kumara5077932017-09-10 22:05:05 +053015401 {"QUIN_TDM_TX_0_UL_HL", NULL, "QUIN_TDM_TX_0"},
15402 {"QUIN_TDM_TX_1_UL_HL", NULL, "QUIN_TDM_TX_1"},
15403 {"QUIN_TDM_TX_2_UL_HL", NULL, "QUIN_TDM_TX_2"},
15404 {"QUIN_TDM_TX_3_UL_HL", NULL, "QUIN_TDM_TX_3"},
15405 {"QUIN_TDM_RX_0", NULL, "QUIN_TDM_RX_0_DL_HL"},
15406 {"QUIN_TDM_RX_1", NULL, "QUIN_TDM_RX_1_DL_HL"},
15407 {"QUIN_TDM_RX_2", NULL, "QUIN_TDM_RX_2_DL_HL"},
15408 {"QUIN_TDM_RX_3", NULL, "QUIN_TDM_RX_3_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015409
15410 {"PRI_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15411 {"PRI_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15412 {"PRI_TDM_RX_0 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15413 {"PRI_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15414 {"PRI_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15415 {"PRI_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15416 {"PRI_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15417 {"PRI_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15418 {"PRI_TDM_RX_0 Port Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15419 {"PRI_TDM_RX_0 Port Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15420 {"PRI_TDM_RX_0 Port Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15421 {"PRI_TDM_RX_0 Port Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15422 {"PRI_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15423 {"PRI_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15424 {"PRI_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15425 {"PRI_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015426 {"PRI_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15427 {"PRI_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15428 {"PRI_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15429 {"PRI_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015430 {"PRI_TDM_RX_0", NULL, "PRI_TDM_RX_0 Port Mixer"},
15431
15432 {"PRI_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15433 {"PRI_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15434 {"PRI_TDM_RX_1 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15435 {"PRI_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15436 {"PRI_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15437 {"PRI_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15438 {"PRI_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15439 {"PRI_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15440 {"PRI_TDM_RX_1 Port Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15441 {"PRI_TDM_RX_1 Port Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15442 {"PRI_TDM_RX_1 Port Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15443 {"PRI_TDM_RX_1 Port Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15444 {"PRI_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15445 {"PRI_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15446 {"PRI_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15447 {"PRI_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015448 {"PRI_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15449 {"PRI_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15450 {"PRI_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15451 {"PRI_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015452 {"PRI_TDM_RX_1", NULL, "PRI_TDM_RX_1 Port Mixer"},
15453
15454 {"PRI_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15455 {"PRI_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15456 {"PRI_TDM_RX_2 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15457 {"PRI_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15458 {"PRI_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15459 {"PRI_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15460 {"PRI_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15461 {"PRI_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15462 {"PRI_TDM_RX_2 Port Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15463 {"PRI_TDM_RX_2 Port Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15464 {"PRI_TDM_RX_2 Port Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15465 {"PRI_TDM_RX_2 Port Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15466 {"PRI_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15467 {"PRI_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15468 {"PRI_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15469 {"PRI_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015470 {"PRI_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15471 {"PRI_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15472 {"PRI_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15473 {"PRI_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015474 {"PRI_TDM_RX_2", NULL, "PRI_TDM_RX_2 Port Mixer"},
15475
15476 {"PRI_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15477 {"PRI_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15478 {"PRI_TDM_RX_3 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15479 {"PRI_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15480 {"PRI_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15481 {"PRI_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15482 {"PRI_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15483 {"PRI_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15484 {"PRI_TDM_RX_3 Port Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"},
15485 {"PRI_TDM_RX_3 Port Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"},
15486 {"PRI_TDM_RX_3 Port Mixer", "PRI_TDM_TX_2", "PRI_TDM_TX_2"},
15487 {"PRI_TDM_RX_3 Port Mixer", "PRI_TDM_TX_3", "PRI_TDM_TX_3"},
15488 {"PRI_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15489 {"PRI_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15490 {"PRI_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15491 {"PRI_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015492 {"PRI_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15493 {"PRI_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15494 {"PRI_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15495 {"PRI_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015496 {"PRI_TDM_RX_3", NULL, "PRI_TDM_RX_3 Port Mixer"},
15497
15498 {"SEC_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15499 {"SEC_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15500 {"SEC_TDM_RX_0 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15501 {"SEC_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15502 {"SEC_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15503 {"SEC_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15504 {"SEC_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15505 {"SEC_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15506 {"SEC_TDM_RX_0 Port Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15507 {"SEC_TDM_RX_0 Port Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15508 {"SEC_TDM_RX_0 Port Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15509 {"SEC_TDM_RX_0 Port Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15510 {"SEC_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15511 {"SEC_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15512 {"SEC_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15513 {"SEC_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015514 {"SEC_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15515 {"SEC_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15516 {"SEC_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15517 {"SEC_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015518 {"SEC_TDM_RX_0", NULL, "SEC_TDM_RX_0 Port Mixer"},
15519
15520 {"SEC_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15521 {"SEC_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15522 {"SEC_TDM_RX_1 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15523 {"SEC_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15524 {"SEC_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15525 {"SEC_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15526 {"SEC_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15527 {"SEC_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15528 {"SEC_TDM_RX_1 Port Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15529 {"SEC_TDM_RX_1 Port Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15530 {"SEC_TDM_RX_1 Port Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15531 {"SEC_TDM_RX_1 Port Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15532 {"SEC_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15533 {"SEC_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15534 {"SEC_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15535 {"SEC_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015536 {"SEC_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15537 {"SEC_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15538 {"SEC_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15539 {"SEC_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015540 {"SEC_TDM_RX_1", NULL, "SEC_TDM_RX_1 Port Mixer"},
15541
15542 {"SEC_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15543 {"SEC_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15544 {"SEC_TDM_RX_2 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15545 {"SEC_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15546 {"SEC_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15547 {"SEC_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15548 {"SEC_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15549 {"SEC_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15550 {"SEC_TDM_RX_2 Port Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15551 {"SEC_TDM_RX_2 Port Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15552 {"SEC_TDM_RX_2 Port Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15553 {"SEC_TDM_RX_2 Port Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15554 {"SEC_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15555 {"SEC_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15556 {"SEC_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15557 {"SEC_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015558 {"SEC_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15559 {"SEC_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15560 {"SEC_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15561 {"SEC_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015562 {"SEC_TDM_RX_2", NULL, "SEC_TDM_RX_2 Port Mixer"},
15563
15564 {"SEC_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15565 {"SEC_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15566 {"SEC_TDM_RX_3 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15567 {"SEC_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15568 {"SEC_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15569 {"SEC_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15570 {"SEC_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15571 {"SEC_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15572 {"SEC_TDM_RX_3 Port Mixer", "SEC_TDM_TX_0", "SEC_TDM_TX_0"},
15573 {"SEC_TDM_RX_3 Port Mixer", "SEC_TDM_TX_1", "SEC_TDM_TX_1"},
15574 {"SEC_TDM_RX_3 Port Mixer", "SEC_TDM_TX_2", "SEC_TDM_TX_2"},
15575 {"SEC_TDM_RX_3 Port Mixer", "SEC_TDM_TX_3", "SEC_TDM_TX_3"},
15576 {"SEC_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15577 {"SEC_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15578 {"SEC_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15579 {"SEC_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015580 {"SEC_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15581 {"SEC_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15582 {"SEC_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15583 {"SEC_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015584 {"SEC_TDM_RX_3", NULL, "SEC_TDM_RX_3 Port Mixer"},
15585
15586 {"TERT_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15587 {"TERT_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15588 {"TERT_TDM_RX_0 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15589 {"TERT_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15590 {"TERT_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15591 {"TERT_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15592 {"TERT_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15593 {"TERT_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15594 {"TERT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15595 {"TERT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15596 {"TERT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15597 {"TERT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15598 {"TERT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15599 {"TERT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15600 {"TERT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15601 {"TERT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015602 {"TERT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15603 {"TERT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15604 {"TERT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15605 {"TERT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015606 {"TERT_TDM_RX_0", NULL, "TERT_TDM_RX_0 Port Mixer"},
15607
15608 {"TERT_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15609 {"TERT_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15610 {"TERT_TDM_RX_1 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15611 {"TERT_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15612 {"TERT_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15613 {"TERT_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15614 {"TERT_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15615 {"TERT_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15616 {"TERT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15617 {"TERT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15618 {"TERT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15619 {"TERT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15620 {"TERT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15621 {"TERT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15622 {"TERT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15623 {"TERT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015624 {"TERT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15625 {"TERT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15626 {"TERT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15627 {"TERT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015628 {"TERT_TDM_RX_1", NULL, "TERT_TDM_RX_1 Port Mixer"},
15629
15630 {"TERT_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15631 {"TERT_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15632 {"TERT_TDM_RX_2 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15633 {"TERT_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15634 {"TERT_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15635 {"TERT_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15636 {"TERT_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15637 {"TERT_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15638 {"TERT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15639 {"TERT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15640 {"TERT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15641 {"TERT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15642 {"TERT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15643 {"TERT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15644 {"TERT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15645 {"TERT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015646 {"TERT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15647 {"TERT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15648 {"TERT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15649 {"TERT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015650 {"TERT_TDM_RX_2", NULL, "TERT_TDM_RX_2 Port Mixer"},
15651
15652 {"TERT_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15653 {"TERT_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15654 {"TERT_TDM_RX_3 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15655 {"TERT_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15656 {"TERT_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15657 {"TERT_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15658 {"TERT_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15659 {"TERT_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15660 {"TERT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15661 {"TERT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15662 {"TERT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15663 {"TERT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15664 {"TERT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15665 {"TERT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15666 {"TERT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15667 {"TERT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015668 {"TERT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15669 {"TERT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15670 {"TERT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15671 {"TERT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015672 {"TERT_TDM_RX_3", NULL, "TERT_TDM_RX_3 Port Mixer"},
15673
15674 {"QUAT_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15675 {"QUAT_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15676 {"QUAT_TDM_RX_0 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15677 {"QUAT_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15678 {"QUAT_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15679 {"QUAT_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15680 {"QUAT_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15681 {"QUAT_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15682 {"QUAT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15683 {"QUAT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15684 {"QUAT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15685 {"QUAT_TDM_RX_0 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15686 {"QUAT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15687 {"QUAT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15688 {"QUAT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15689 {"QUAT_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015690 {"QUAT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15691 {"QUAT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15692 {"QUAT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15693 {"QUAT_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015694 {"QUAT_TDM_RX_0", NULL, "QUAT_TDM_RX_0 Port Mixer"},
15695
15696 {"QUAT_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15697 {"QUAT_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15698 {"QUAT_TDM_RX_1 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15699 {"QUAT_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15700 {"QUAT_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15701 {"QUAT_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15702 {"QUAT_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15703 {"QUAT_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15704 {"QUAT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15705 {"QUAT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15706 {"QUAT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15707 {"QUAT_TDM_RX_1 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15708 {"QUAT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15709 {"QUAT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15710 {"QUAT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15711 {"QUAT_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015712 {"QUAT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15713 {"QUAT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15714 {"QUAT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15715 {"QUAT_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015716 {"QUAT_TDM_RX_1", NULL, "QUAT_TDM_RX_1 Port Mixer"},
15717
15718 {"QUAT_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15719 {"QUAT_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15720 {"QUAT_TDM_RX_2 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15721 {"QUAT_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15722 {"QUAT_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15723 {"QUAT_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15724 {"QUAT_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15725 {"QUAT_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15726 {"QUAT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15727 {"QUAT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15728 {"QUAT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15729 {"QUAT_TDM_RX_2 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15730 {"QUAT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15731 {"QUAT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15732 {"QUAT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15733 {"QUAT_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015734 {"QUAT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15735 {"QUAT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15736 {"QUAT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15737 {"QUAT_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015738 {"QUAT_TDM_RX_2", NULL, "QUAT_TDM_RX_2 Port Mixer"},
15739
15740 {"QUAT_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15741 {"QUAT_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15742 {"QUAT_TDM_RX_3 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15743 {"QUAT_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15744 {"QUAT_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15745 {"QUAT_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15746 {"QUAT_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15747 {"QUAT_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15748 {"QUAT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15749 {"QUAT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15750 {"QUAT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15751 {"QUAT_TDM_RX_3 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15752 {"QUAT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15753 {"QUAT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15754 {"QUAT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15755 {"QUAT_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053015756 {"QUAT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15757 {"QUAT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15758 {"QUAT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15759 {"QUAT_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015760 {"QUAT_TDM_RX_3", NULL, "QUAT_TDM_RX_3 Port Mixer"},
15761
Rohit Kumara5077932017-09-10 22:05:05 +053015762 {"QUIN_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15763 {"QUIN_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15764 {"QUIN_TDM_RX_0 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15765 {"QUIN_TDM_RX_0 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15766 {"QUIN_TDM_RX_0 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15767 {"QUIN_TDM_RX_0 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15768 {"QUIN_TDM_RX_0 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15769 {"QUIN_TDM_RX_0 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15770 {"QUIN_TDM_RX_0 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15771 {"QUIN_TDM_RX_0 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15772 {"QUIN_TDM_RX_0 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15773 {"QUIN_TDM_RX_0 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15774 {"QUIN_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15775 {"QUIN_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15776 {"QUIN_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15777 {"QUIN_TDM_RX_0 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
15778 {"QUIN_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15779 {"QUIN_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15780 {"QUIN_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15781 {"QUIN_TDM_RX_0 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Rohit Kumarc08b14f2017-10-06 10:52:17 +053015782 {"QUIN_TDM_RX_0", NULL, "QUIN_TDM_RX_0 Port Mixer"},
Rohit Kumara5077932017-09-10 22:05:05 +053015783
15784 {"QUIN_TDM_RX_1 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15785 {"QUIN_TDM_RX_1 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15786 {"QUIN_TDM_RX_1 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15787 {"QUIN_TDM_RX_1 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15788 {"QUIN_TDM_RX_1 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15789 {"QUIN_TDM_RX_1 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15790 {"QUIN_TDM_RX_1 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15791 {"QUIN_TDM_RX_1 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15792 {"QUIN_TDM_RX_1 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15793 {"QUIN_TDM_RX_1 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15794 {"QUIN_TDM_RX_1 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15795 {"QUIN_TDM_RX_1 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15796 {"QUIN_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15797 {"QUIN_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15798 {"QUIN_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15799 {"QUIN_TDM_RX_1 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
15800 {"QUIN_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15801 {"QUIN_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15802 {"QUIN_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15803 {"QUIN_TDM_RX_1 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Rohit Kumarc08b14f2017-10-06 10:52:17 +053015804 {"QUIN_TDM_RX_1", NULL, "QUIN_TDM_RX_1 Port Mixer"},
Rohit Kumara5077932017-09-10 22:05:05 +053015805
15806 {"QUIN_TDM_RX_2 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15807 {"QUIN_TDM_RX_2 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15808 {"QUIN_TDM_RX_2 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15809 {"QUIN_TDM_RX_2 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15810 {"QUIN_TDM_RX_2 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15811 {"QUIN_TDM_RX_2 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15812 {"QUIN_TDM_RX_2 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15813 {"QUIN_TDM_RX_2 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15814 {"QUIN_TDM_RX_2 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15815 {"QUIN_TDM_RX_2 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15816 {"QUIN_TDM_RX_2 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15817 {"QUIN_TDM_RX_2 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15818 {"QUIN_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15819 {"QUIN_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15820 {"QUIN_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15821 {"QUIN_TDM_RX_2 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
15822 {"QUIN_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15823 {"QUIN_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15824 {"QUIN_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15825 {"QUIN_TDM_RX_2 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Rohit Kumarc08b14f2017-10-06 10:52:17 +053015826 {"QUIN_TDM_RX_2", NULL, "QUIN_TDM_RX_2 Port Mixer"},
Rohit Kumara5077932017-09-10 22:05:05 +053015827
15828 {"QUIN_TDM_RX_3 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15829 {"QUIN_TDM_RX_3 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15830 {"QUIN_TDM_RX_3 Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15831 {"QUIN_TDM_RX_3 Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15832 {"QUIN_TDM_RX_3 Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15833 {"QUIN_TDM_RX_3 Port Mixer", "AFE_PCM_TX", "PCM_TX"},
15834 {"QUIN_TDM_RX_3 Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15835 {"QUIN_TDM_RX_3 Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15836 {"QUIN_TDM_RX_3 Port Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"},
15837 {"QUIN_TDM_RX_3 Port Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"},
15838 {"QUIN_TDM_RX_3 Port Mixer", "TERT_TDM_TX_2", "TERT_TDM_TX_2"},
15839 {"QUIN_TDM_RX_3 Port Mixer", "TERT_TDM_TX_3", "TERT_TDM_TX_3"},
15840 {"QUIN_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
15841 {"QUIN_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
15842 {"QUIN_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
15843 {"QUIN_TDM_RX_3 Port Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
15844 {"QUIN_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_0", "QUIN_TDM_TX_0"},
15845 {"QUIN_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"},
15846 {"QUIN_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"},
15847 {"QUIN_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"},
Rohit Kumarc08b14f2017-10-06 10:52:17 +053015848 {"QUIN_TDM_RX_3", NULL, "QUIN_TDM_RX_3 Port Mixer"},
Rohit Kumara5077932017-09-10 22:05:05 +053015849
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015850 {"INT0_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15851 {"INT0_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15852 {"INT0_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15853 {"INT0_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015854 {"INT0_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015855 {"INT0_MI2S_RX Port Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
15856 {"INT0_MI2S_RX Port Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
15857 {"INT0_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
15858 {"INT0_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15859 {"INT0_MI2S_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15860 {"INT0_MI2S_RX", NULL, "INT0_MI2S_RX Port Mixer"},
15861
15862 {"INT4_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15863 {"INT4_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15864 {"INT4_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15865 {"INT4_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015866 {"INT4_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015867 {"INT4_MI2S_RX Port Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
15868 {"INT4_MI2S_RX Port Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
15869 {"INT4_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
15870 {"INT4_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15871 {"INT4_MI2S_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15872 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX Port Mixer"},
15873
15874 {"SLIMBUS_0_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15875 {"SLIMBUS_0_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
15876 {"SLIMBUS_0_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
15877 {"SLIMBUS_0_RX Port Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
15878 {"SLIMBUS_0_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
15879 {"SLIMBUS_0_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15880 {"SLIMBUS_0_RX Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15881 {"SLIMBUS_0_RX Port Mixer", "TERT_AUXPCM_UL_TX", "TERT_AUX_PCM_TX"},
15882 {"SLIMBUS_0_RX Port Mixer", "QUAT_AUXPCM_UL_TX", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015883 {"SLIMBUS_0_RX Port Mixer", "QUIN_AUXPCM_UL_TX", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015884 {"SLIMBUS_0_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
15885 {"SLIMBUS_0_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15886 {"SLIMBUS_0_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
15887 {"SLIMBUS_0_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15888 {"SLIMBUS_0_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015889 {"SLIMBUS_0_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015890 {"SLIMBUS_0_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15891 {"SLIMBUS_0_RX", NULL, "SLIMBUS_0_RX Port Mixer"},
15892 {"AFE_PCM_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
15893 {"AFE_PCM_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
15894 {"PCM_RX", NULL, "AFE_PCM_RX Port Mixer"},
15895 {"USB_AUDIO_RX Port Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"},
15896 {"USB_AUDIO_RX", NULL, "USB_AUDIO_RX Port Mixer"},
15897 {"USB_DL_HL", "Switch", "USBAUDIO_DL_HL"},
15898 {"USB_AUDIO_RX", NULL, "USB_DL_HL"},
15899 {"USBAUDIO_UL_HL", NULL, "USB_AUDIO_TX"},
15900
15901
15902 {"AUX_PCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15903 {"AUX_PCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
15904 {"AUX_PCM_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
15905 {"AUX_PCM_RX Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15906 {"AUX_PCM_RX Port Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
Karthikeyan Mani9f66f6f2017-12-13 13:38:46 -080015907 {"AUX_PCM_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015908 {"AUX_PCM_RX", NULL, "AUX_PCM_RX Port Mixer"},
15909
15910 {"SEC_AUXPCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15911 {"SEC_AUXPCM_RX Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15912 {"SEC_AUXPCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
Karthikeyan Mani9f66f6f2017-12-13 13:38:46 -080015913 {"SEC_AUXPCM_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015914 {"SEC_AUX_PCM_RX", NULL, "SEC_AUXPCM_RX Port Mixer"},
15915
15916 {"TERT_AUXPCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15917 {"TERT_AUXPCM_RX Port Mixer", "TERT_AUXPCM_UL_TX", "TERT_AUX_PCM_TX"},
15918 {"TERT_AUXPCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
15919 {"TERT_AUX_PCM_RX", NULL, "TERT_AUXPCM_RX Port Mixer"},
15920
15921 {"QUAT_AUXPCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15922 {"QUAT_AUXPCM_RX Port Mixer", "QUAT_AUXPCM_UL_TX", "QUAT_AUX_PCM_TX"},
15923 {"QUAT_AUXPCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
15924 {"QUAT_AUX_PCM_RX", NULL, "QUAT_AUXPCM_RX Port Mixer"},
15925
Rohit Kumara5077932017-09-10 22:05:05 +053015926 {"QUIN_AUXPCM_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15927 {"QUIN_AUXPCM_RX Port Mixer", "QUIN_AUXPCM_UL_TX", "QUIN_AUX_PCM_TX"},
15928 {"QUIN_AUXPCM_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
15929 {"QUIN_AUX_PCM_RX", NULL, "QUIN_AUXPCM_RX Port Mixer"},
15930
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015931 {"Voice Stub Tx Mixer", "STUB_TX_HL", "STUB_TX"},
15932 {"Voice Stub Tx Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
15933 {"Voice Stub Tx Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
15934 {"Voice Stub Tx Mixer", "STUB_1_TX_HL", "STUB_1_TX"},
15935 {"Voice Stub Tx Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15936 {"Voice Stub Tx Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
15937 {"Voice Stub Tx Mixer", "TERT_AUXPCM_UL_TX", "TERT_AUX_PCM_TX"},
15938 {"Voice Stub Tx Mixer", "QUAT_AUXPCM_UL_TX", "QUAT_AUX_PCM_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053015939 {"Voice Stub Tx Mixer", "QUIN_AUXPCM_UL_TX", "QUIN_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015940 {"Voice Stub Tx Mixer", "MI2S_TX", "MI2S_TX"},
15941 {"Voice Stub Tx Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15942 {"Voice Stub Tx Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
15943 {"Voice Stub Tx Mixer", "INT3_MI2S_TX", "INT3_MI2S_TX"},
15944 {"Voice Stub Tx Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15945 {"Voice Stub Tx Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
15946 {"Voice Stub Tx Mixer", "SLIM_3_TX", "SLIMBUS_3_TX"},
15947 {"Voice Stub Tx Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
15948 {"Voice Stub Tx Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
15949 {"Voice Stub Tx Mixer", "AFE_PCM_TX", "PCM_TX"},
15950 {"VOICE_STUB_UL", NULL, "Voice Stub Tx Mixer"},
15951
15952 {"VoLTE Stub Tx Mixer", "STUB_TX_HL", "STUB_TX"},
15953 {"VoLTE Stub Tx Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
15954 {"VoLTE Stub Tx Mixer", "STUB_1_TX_HL", "STUB_1_TX"},
15955 {"VoLTE Stub Tx Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15956 {"VoLTE Stub Tx Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
15957 {"VoLTE Stub Tx Mixer", "SLIM_3_TX", "SLIMBUS_3_TX"},
15958 {"VoLTE Stub Tx Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
15959 {"VoLTE Stub Tx Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
15960 {"VoLTE Stub Tx Mixer", "AFE_PCM_TX", "PCM_TX"},
15961 {"VoLTE Stub Tx Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15962 {"VoLTE Stub Tx Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15963 {"VOLTE_STUB_UL", NULL, "VoLTE Stub Tx Mixer"},
15964
15965 {"Voice2 Stub Tx Mixer", "STUB_TX_HL", "STUB_TX"},
15966 {"Voice2 Stub Tx Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
15967 {"Voice2 Stub Tx Mixer", "STUB_1_TX_HL", "STUB_1_TX"},
15968 {"Voice2 Stub Tx Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
15969 {"Voice2 Stub Tx Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
15970 {"Voice2 Stub Tx Mixer", "SLIM_3_TX", "SLIMBUS_3_TX"},
15971 {"Voice2 Stub Tx Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
15972 {"Voice2 Stub Tx Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
15973 {"Voice2 Stub Tx Mixer", "AFE_PCM_TX", "PCM_TX"},
15974 {"Voice2 Stub Tx Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
15975 {"Voice2 Stub Tx Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
15976 {"VOICE2_STUB_UL", NULL, "Voice2 Stub Tx Mixer"},
15977
kunleizdf5a00a2017-11-27 15:27:36 +080015978 {"STUB_RX Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15979 {"STUB_RX Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015980 {"STUB_RX", NULL, "STUB_RX Mixer"},
kunleizdf5a00a2017-11-27 15:27:36 +080015981
15982 {"SLIMBUS_1_RX Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15983 {"SLIMBUS_1_RX Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015984 {"SLIMBUS_1_RX", NULL, "SLIMBUS_1_RX Mixer"},
kunleizdf5a00a2017-11-27 15:27:36 +080015985
15986 {"SLIMBUS_3_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15987 {"SLIMBUS_3_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015988 {"SLIMBUS_3_RX", NULL, "SLIMBUS_3_RX_Voice Mixer"},
15989
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015990 {"SLIM_7_RX_Voice Mixer", "Voip", "VOIP_DL"},
15991 {"SLIM_7_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015992 {"SLIM_7_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
15993 {"SLIM_7_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
15994 {"SLIM_7_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
15995 {"SLIMBUS_7_RX", NULL, "SLIM_7_RX_Voice Mixer"},
15996
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015997 {"SLIM_8_RX_Voice Mixer", "Voip", "VOIP_DL"},
15998 {"SLIM_8_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053015999 {"SLIM_8_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
16000 {"SLIM_8_RX_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
16001 {"SLIM_8_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
16002 {"SLIMBUS_8_RX", NULL, "SLIM_8_RX_Voice Mixer"},
16003
16004 {"SLIMBUS_1_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16005 {"SLIMBUS_1_RX Port Mixer", "AFE_PCM_TX", "PCM_TX"},
16006 {"SLIMBUS_1_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16007 {"SLIMBUS_1_RX", NULL, "SLIMBUS_1_RX Port Mixer"},
16008 {"INTERNAL_BT_SCO_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16009 {"INTERNAL_BT_SCO_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16010 {"INT_BT_SCO_RX", NULL, "INTERNAL_BT_SCO_RX Port Mixer"},
16011 {"SLIMBUS_3_RX Port Mixer", "INTERNAL_BT_SCO_RX", "INT_BT_SCO_RX"},
16012 {"SLIMBUS_3_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16013 {"SLIMBUS_3_RX Port Mixer", "AFE_PCM_RX", "PCM_RX"},
16014 {"SLIMBUS_3_RX Port Mixer", "AUX_PCM_RX", "AUX_PCM_RX"},
16015 {"SLIMBUS_3_RX Port Mixer", "SLIM_0_RX", "SLIMBUS_0_RX"},
16016 {"SLIMBUS_3_RX", NULL, "SLIMBUS_3_RX Port Mixer"},
16017
16018 {"SLIMBUS_6_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16019 {"SLIMBUS_6_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16020 {"SLIMBUS_6_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16021 {"SLIMBUS_6_RX Port Mixer", "SLIM_7_TX", "SLIMBUS_7_TX"},
16022 {"SLIMBUS_6_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16023 {"SLIMBUS_6_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16024 {"SLIMBUS_6_RX Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
16025 {"SLIMBUS_6_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16026 {"SLIMBUS_6_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16027 {"SLIMBUS_6_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16028 {"SLIMBUS_6_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16029 {"SLIMBUS_6_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16030 {"SLIMBUS_6_RX", NULL, "SLIMBUS_6_RX Port Mixer"},
16031
16032 {"HDMI_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16033 {"HDMI", NULL, "HDMI_RX Port Mixer"},
16034
16035 {"DISPLAY_PORT_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16036 {"DISPLAY_PORT", NULL, "DISPLAY_PORT_RX Port Mixer"},
16037
16038 {"SEC_I2S_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16039 {"SEC_I2S_RX", NULL, "SEC_I2S_RX Port Mixer"},
16040
16041 {"MI2S_RX Port Mixer", "SLIM_1_TX", "SLIMBUS_1_TX"},
16042 {"MI2S_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
16043 {"MI2S_RX", NULL, "MI2S_RX Port Mixer"},
16044
16045 {"PRI_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16046 {"PRI_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16047 {"PRI_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16048 {"PRI_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016049 {"PRI_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016050 {"PRI_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16051 {"PRI_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16052 {"PRI_MI2S_RX Port Mixer", "INTERNAL_BT_SCO_TX", "INT_BT_SCO_TX"},
16053 {"PRI_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
Karthikeyan Mani9f66f6f2017-12-13 13:38:46 -080016054 {"PRI_MI2S_RX Port Mixer", "SEC_AUX_PCM_UL_TX", "SEC_AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016055 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX Port Mixer"},
16056
16057 {"SEC_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16058 {"SEC_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16059 {"SEC_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16060 {"SEC_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016061 {"SEC_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016062 {"SEC_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16063 {"SEC_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16064 {"SEC_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
Karthikeyan Mani9f66f6f2017-12-13 13:38:46 -080016065 {"SEC_MI2S_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016066 {"SEC_MI2S_RX", NULL, "SEC_MI2S_RX Port Mixer"},
16067
16068 {"TERT_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16069 {"TERT_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16070 {"TERT_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16071 {"TERT_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016072 {"TERT_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016073 {"TERT_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16074 {"TERT_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16075 {"TERT_MI2S_RX", NULL, "TERT_MI2S_RX Port Mixer"},
16076
16077 {"QUAT_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16078 {"QUAT_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16079 {"QUAT_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16080 {"QUAT_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016081 {"QUAT_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016082 {"QUAT_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16083 {"QUAT_MI2S_RX Port Mixer", "INTERNAL_FM_TX", "INT_FM_TX"},
16084 {"QUAT_MI2S_RX Port Mixer", "AUX_PCM_UL_TX", "AUX_PCM_TX"},
16085 {"QUAT_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16086 {"QUAT_MI2S_RX", NULL, "QUAT_MI2S_RX Port Mixer"},
16087
Rohit Kumara5077932017-09-10 22:05:05 +053016088 {"QUIN_MI2S_RX Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"},
16089 {"QUIN_MI2S_RX Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"},
16090 {"QUIN_MI2S_RX Port Mixer", "TERT_MI2S_TX", "TERT_MI2S_TX"},
16091 {"QUIN_MI2S_RX Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"},
16092 {"QUIN_MI2S_RX Port Mixer", "QUIN_MI2S_TX", "QUIN_MI2S_TX"},
16093 {"QUIN_MI2S_RX Port Mixer", "SLIM_0_TX", "SLIMBUS_0_TX"},
16094 {"QUIN_MI2S_RX Port Mixer", "SLIM_8_TX", "SLIMBUS_8_TX"},
16095 {"QUIN_MI2S_RX", NULL, "QUIN_MI2S_RX Port Mixer"},
16096
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016097 /* Backend Enablement */
16098
16099 {"BE_OUT", NULL, "PRI_I2S_RX"},
16100 {"BE_OUT", NULL, "SEC_I2S_RX"},
16101 {"BE_OUT", NULL, "SLIMBUS_0_RX"},
16102 {"BE_OUT", NULL, "SLIMBUS_1_RX"},
16103 {"BE_OUT", NULL, "SLIMBUS_2_RX"},
16104 {"BE_OUT", NULL, "SLIMBUS_3_RX"},
16105 {"BE_OUT", NULL, "SLIMBUS_4_RX"},
16106 {"BE_OUT", NULL, "SLIMBUS_5_RX"},
16107 {"BE_OUT", NULL, "SLIMBUS_6_RX"},
16108 {"BE_OUT", NULL, "SLIMBUS_7_RX"},
16109 {"BE_OUT", NULL, "SLIMBUS_8_RX"},
16110 {"BE_OUT", NULL, "USB_AUDIO_RX"},
16111 {"BE_OUT", NULL, "HDMI"},
16112 {"BE_OUT", NULL, "DISPLAY_PORT"},
16113 {"BE_OUT", NULL, "SPDIF_RX"},
16114 {"BE_OUT", NULL, "MI2S_RX"},
16115 {"BE_OUT", NULL, "QUAT_MI2S_RX"},
16116 {"BE_OUT", NULL, "QUIN_MI2S_RX"},
16117 {"BE_OUT", NULL, "TERT_MI2S_RX"},
16118 {"BE_OUT", NULL, "SEC_MI2S_RX"},
16119 {"BE_OUT", NULL, "SEC_MI2S_RX_SD1"},
16120 {"BE_OUT", NULL, "PRI_MI2S_RX"},
16121 {"BE_OUT", NULL, "INT0_MI2S_RX"},
16122 {"BE_OUT", NULL, "INT4_MI2S_RX"},
Laxminath Kasam52697fe2017-11-29 15:44:14 +053016123 {"BE_OUT", NULL, "INT2_MI2S_RX"},
16124 {"BE_OUT", NULL, "INT3_MI2S_RX"},
16125 {"BE_OUT", NULL, "INT5_MI2S_RX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016126 {"BE_OUT", NULL, "INT_BT_SCO_RX"},
16127 {"BE_OUT", NULL, "INT_BT_A2DP_RX"},
16128 {"BE_OUT", NULL, "INT_FM_RX"},
16129 {"BE_OUT", NULL, "PCM_RX"},
16130 {"BE_OUT", NULL, "SLIMBUS_3_RX"},
16131 {"BE_OUT", NULL, "AUX_PCM_RX"},
16132 {"BE_OUT", NULL, "SEC_AUX_PCM_RX"},
16133 {"BE_OUT", NULL, "TERT_AUX_PCM_RX"},
16134 {"BE_OUT", NULL, "QUAT_AUX_PCM_RX"},
Rohit Kumara5077932017-09-10 22:05:05 +053016135 {"BE_OUT", NULL, "QUIN_AUX_PCM_RX"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016136 {"BE_OUT", NULL, "INT_BT_SCO_RX"},
16137 {"BE_OUT", NULL, "INT_FM_RX"},
16138 {"BE_OUT", NULL, "PCM_RX"},
16139 {"BE_OUT", NULL, "SLIMBUS_3_RX"},
16140 {"BE_OUT", NULL, "VOICE_PLAYBACK_TX"},
16141 {"BE_OUT", NULL, "VOICE2_PLAYBACK_TX"},
16142 {"BE_OUT", NULL, "PRI_TDM_RX_0"},
16143 {"BE_OUT", NULL, "PRI_TDM_RX_1"},
16144 {"BE_OUT", NULL, "PRI_TDM_RX_2"},
16145 {"BE_OUT", NULL, "PRI_TDM_RX_3"},
16146 {"BE_OUT", NULL, "SEC_TDM_RX_0"},
16147 {"BE_OUT", NULL, "SEC_TDM_RX_1"},
16148 {"BE_OUT", NULL, "SEC_TDM_RX_2"},
16149 {"BE_OUT", NULL, "SEC_TDM_RX_3"},
16150 {"BE_OUT", NULL, "TERT_TDM_RX_0"},
16151 {"BE_OUT", NULL, "TERT_TDM_RX_1"},
16152 {"BE_OUT", NULL, "TERT_TDM_RX_2"},
16153 {"BE_OUT", NULL, "TERT_TDM_RX_3"},
16154 {"BE_OUT", NULL, "TERT_TDM_RX_4"},
16155 {"BE_OUT", NULL, "QUAT_TDM_RX_0"},
16156 {"BE_OUT", NULL, "QUAT_TDM_RX_1"},
16157 {"BE_OUT", NULL, "QUAT_TDM_RX_2"},
16158 {"BE_OUT", NULL, "QUAT_TDM_RX_3"},
Rohit Kumara5077932017-09-10 22:05:05 +053016159 {"BE_OUT", NULL, "QUIN_TDM_RX_0"},
16160 {"BE_OUT", NULL, "QUIN_TDM_RX_1"},
16161 {"BE_OUT", NULL, "QUIN_TDM_RX_2"},
16162 {"BE_OUT", NULL, "QUIN_TDM_RX_3"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016163
16164 {"PRI_I2S_TX", NULL, "BE_IN"},
16165 {"MI2S_TX", NULL, "BE_IN"},
16166 {"QUAT_MI2S_TX", NULL, "BE_IN"},
16167 {"QUIN_MI2S_TX", NULL, "BE_IN"},
16168 {"PRI_MI2S_TX", NULL, "BE_IN"},
16169 {"TERT_MI2S_TX", NULL, "BE_IN"},
Laxminath Kasam52697fe2017-11-29 15:44:14 +053016170 {"INT0_MI2S_TX", NULL, "BE_IN"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016171 {"INT2_MI2S_TX", NULL, "BE_IN"},
16172 {"INT3_MI2S_TX", NULL, "BE_IN"},
Laxminath Kasam52697fe2017-11-29 15:44:14 +053016173 {"INT4_MI2S_TX", NULL, "BE_IN"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016174 {"INT5_MI2S_TX", NULL, "BE_IN"},
16175 {"SEC_MI2S_TX", NULL, "BE_IN"},
16176 {"SENARY_MI2S_TX", NULL, "BE_IN" },
16177 {"SLIMBUS_0_TX", NULL, "BE_IN" },
16178 {"SLIMBUS_1_TX", NULL, "BE_IN" },
16179 {"SLIMBUS_3_TX", NULL, "BE_IN" },
16180 {"SLIMBUS_4_TX", NULL, "BE_IN" },
16181 {"SLIMBUS_5_TX", NULL, "BE_IN" },
16182 {"SLIMBUS_6_TX", NULL, "BE_IN" },
16183 {"SLIMBUS_7_TX", NULL, "BE_IN" },
16184 {"SLIMBUS_8_TX", NULL, "BE_IN" },
16185 {"USB_AUDIO_TX", NULL, "BE_IN" },
16186 {"INT_BT_SCO_TX", NULL, "BE_IN"},
16187 {"INT_FM_TX", NULL, "BE_IN"},
16188 {"PCM_TX", NULL, "BE_IN"},
16189 {"BE_OUT", NULL, "SLIMBUS_3_RX"},
16190 {"BE_OUT", NULL, "STUB_RX"},
16191 {"STUB_TX", NULL, "BE_IN"},
16192 {"STUB_1_TX", NULL, "BE_IN"},
16193 {"BE_OUT", NULL, "AUX_PCM_RX"},
16194 {"AUX_PCM_TX", NULL, "BE_IN"},
16195 {"SEC_AUX_PCM_TX", NULL, "BE_IN"},
16196 {"TERT_AUX_PCM_TX", NULL, "BE_IN"},
16197 {"QUAT_AUX_PCM_TX", NULL, "BE_IN"},
Rohit Kumara5077932017-09-10 22:05:05 +053016198 {"QUIN_AUX_PCM_TX", NULL, "BE_IN"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016199 {"INCALL_RECORD_TX", NULL, "BE_IN"},
16200 {"INCALL_RECORD_RX", NULL, "BE_IN"},
16201 {"SLIM0_RX_VI_FB_LCH_MUX", "SLIM4_TX", "SLIMBUS_4_TX"},
16202 {"SLIM0_RX_VI_FB_RCH_MUX", "SLIM4_TX", "SLIMBUS_4_TX"},
16203 {"PRI_MI2S_RX_VI_FB_MUX", "SENARY_TX", "SENARY_TX"},
16204 {"INT4_MI2S_RX_VI_FB_MONO_CH_MUX", "INT5_MI2S_TX", "INT5_MI2S_TX"},
16205 {"INT4_MI2S_RX_VI_FB_STEREO_CH_MUX", "INT5_MI2S_TX", "INT5_MI2S_TX"},
16206 {"SLIMBUS_0_RX", NULL, "SLIM0_RX_VI_FB_LCH_MUX"},
16207 {"SLIMBUS_0_RX", NULL, "SLIM0_RX_VI_FB_RCH_MUX"},
16208 {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX_VI_FB_MUX"},
16209 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX_VI_FB_MONO_CH_MUX"},
16210 {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX_VI_FB_STEREO_CH_MUX"},
16211 {"PRI_TDM_TX_0", NULL, "BE_IN"},
16212 {"PRI_TDM_TX_1", NULL, "BE_IN"},
16213 {"PRI_TDM_TX_2", NULL, "BE_IN"},
16214 {"PRI_TDM_TX_3", NULL, "BE_IN"},
16215 {"SEC_TDM_TX_0", NULL, "BE_IN"},
16216 {"SEC_TDM_TX_1", NULL, "BE_IN"},
16217 {"SEC_TDM_TX_2", NULL, "BE_IN"},
16218 {"SEC_TDM_TX_3", NULL, "BE_IN"},
16219 {"TERT_TDM_TX_0", NULL, "BE_IN"},
16220 {"TERT_TDM_TX_1", NULL, "BE_IN"},
16221 {"TERT_TDM_TX_2", NULL, "BE_IN"},
16222 {"TERT_TDM_TX_3", NULL, "BE_IN"},
16223 {"QUAT_TDM_TX_0", NULL, "BE_IN"},
16224 {"QUAT_TDM_TX_1", NULL, "BE_IN"},
16225 {"QUAT_TDM_TX_2", NULL, "BE_IN"},
16226 {"QUAT_TDM_TX_3", NULL, "BE_IN"},
Rohit Kumara5077932017-09-10 22:05:05 +053016227 {"QUIN_TDM_TX_0", NULL, "BE_IN"},
16228 {"QUIN_TDM_TX_1", NULL, "BE_IN"},
16229 {"QUIN_TDM_TX_2", NULL, "BE_IN"},
16230 {"QUIN_TDM_TX_3", NULL, "BE_IN"},
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016231};
16232
16233static int msm_pcm_routing_hw_params(struct snd_pcm_substream *substream,
16234 struct snd_pcm_hw_params *params)
16235{
16236 struct snd_soc_pcm_runtime *rtd = substream->private_data;
16237 unsigned int be_id = rtd->dai_link->id;
16238
16239 if (be_id >= MSM_BACKEND_DAI_MAX) {
16240 pr_err("%s: unexpected BE id %d\n", __func__, be_id);
16241 return -EINVAL;
16242 }
16243
16244 mutex_lock(&routing_lock);
16245 msm_bedais[be_id].sample_rate = params_rate(params);
16246 msm_bedais[be_id].channel = params_channels(params);
16247 msm_bedais[be_id].format = params_format(params);
16248 pr_debug("%s: BE Sample Rate (%d) format (%d) BE id %d\n",
16249 __func__, msm_bedais[be_id].sample_rate,
16250 msm_bedais[be_id].format, be_id);
16251 mutex_unlock(&routing_lock);
16252 return 0;
16253}
16254
16255static int msm_pcm_routing_close(struct snd_pcm_substream *substream)
16256{
16257 struct snd_soc_pcm_runtime *rtd = substream->private_data;
16258 unsigned int be_id = rtd->dai_link->id;
16259 int i, session_type, path_type, topology;
16260 struct msm_pcm_routing_bdai_data *bedai;
16261 struct msm_pcm_routing_fdai_data *fdai;
16262
16263 pr_debug("%s: substream->pcm->id:%s\n",
16264 __func__, substream->pcm->id);
16265
16266 if (be_id >= MSM_BACKEND_DAI_MAX) {
16267 pr_err("%s: unexpected BE id %d\n", __func__, be_id);
16268 return -EINVAL;
16269 }
16270
16271 bedai = &msm_bedais[be_id];
16272 session_type = (substream->stream == SNDRV_PCM_STREAM_PLAYBACK ?
16273 0 : 1);
16274 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
16275 path_type = ADM_PATH_PLAYBACK;
16276 else
16277 path_type = ADM_PATH_LIVE_REC;
16278
16279 mutex_lock(&routing_lock);
16280 for_each_set_bit(i, &bedai->fe_sessions[0], MSM_FRONTEND_DAI_MAX) {
16281 if (!is_mm_lsm_fe_id(i))
16282 continue;
16283 fdai = &fe_dai_map[i][session_type];
16284 if (fdai->strm_id != INVALID_SESSION) {
16285 int idx;
16286 int port_id;
16287 unsigned long copp =
16288 session_copp_map[i][session_type][be_id];
16289 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++)
16290 if (test_bit(idx, &copp))
16291 break;
16292 fdai->be_srate = bedai->sample_rate;
16293 port_id = bedai->port_id;
16294 topology = adm_get_topology_for_port_copp_idx(port_id,
16295 idx);
16296 adm_close(bedai->port_id, fdai->perf_mode, idx);
16297 pr_debug("%s: copp:%ld,idx bit fe:%d, type:%d,be:%d topology=0x%x\n",
16298 __func__, copp, i, session_type, be_id,
16299 topology);
16300 clear_bit(idx,
16301 &session_copp_map[i][session_type][be_id]);
16302 if ((fdai->perf_mode == LEGACY_PCM_MODE) &&
16303 (bedai->passthr_mode[i] == LEGACY_PCM))
16304 msm_pcm_routing_deinit_pp(bedai->port_id,
16305 topology);
16306 }
16307 }
16308
16309 bedai->active = 0;
16310 bedai->sample_rate = 0;
16311 bedai->channel = 0;
16312 for (i = 0; i < MSM_FRONTEND_DAI_MAX; i++) {
16313 if (bedai->passthr_mode[i] != LISTEN)
16314 bedai->passthr_mode[i] = LEGACY_PCM;
16315 }
16316 mutex_unlock(&routing_lock);
16317
16318 return 0;
16319}
16320
16321static int msm_pcm_routing_prepare(struct snd_pcm_substream *substream)
16322{
16323 struct snd_soc_pcm_runtime *rtd = substream->private_data;
16324 unsigned int be_id = rtd->dai_link->id;
16325 int i, path_type, topology;
16326 int session_type = INVALID_SESSION;
16327 struct msm_pcm_routing_bdai_data *bedai;
16328 u32 channels, sample_rate;
16329 uint16_t bits_per_sample = 16, voc_path_type;
16330 struct msm_pcm_routing_fdai_data *fdai;
16331 u32 session_id;
16332 struct media_format_info voc_be_media_format;
16333 bool is_lsm;
16334
16335 pr_debug("%s: substream->pcm->id:%s\n",
16336 __func__, substream->pcm->id);
16337
16338 if (be_id >= MSM_BACKEND_DAI_MAX) {
16339 pr_err("%s: unexpected BE id %d\n", __func__, be_id);
16340 return -EINVAL;
16341 }
16342
16343 bedai = &msm_bedais[be_id];
16344
16345 mutex_lock(&routing_lock);
16346 if (bedai->active == 1)
16347 goto done; /* Ignore prepare if back-end already active */
16348
16349 /* AFE port is not active at this point. However, still
16350 * go ahead setting active flag under the notion that
16351 * QDSP6 is able to handle ADM starting before AFE port
16352 * is started.
16353 */
16354 bedai->active = 1;
16355
16356 for_each_set_bit(i, &bedai->fe_sessions[0], MSM_FRONTEND_DAI_MAX) {
16357 if (!(is_mm_lsm_fe_id(i) &&
16358 route_check_fe_id_adm_support(i)))
16359 continue;
16360
16361 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
16362 if (bedai->passthr_mode[i] != LEGACY_PCM)
16363 path_type = ADM_PATH_COMPRESSED_RX;
16364 else
16365 path_type = ADM_PATH_PLAYBACK;
16366 session_type = SESSION_TYPE_RX;
16367 } else {
16368 path_type = ADM_PATH_LIVE_REC;
16369 session_type = SESSION_TYPE_TX;
16370 }
16371
16372 is_lsm = (i >= MSM_FRONTEND_DAI_LSM1) &&
16373 (i <= MSM_FRONTEND_DAI_LSM8);
16374 fdai = &fe_dai_map[i][session_type];
16375 if (fdai->strm_id != INVALID_SESSION) {
16376 int app_type, app_type_idx, copp_idx, acdb_dev_id;
16377
16378 if (session_type == SESSION_TYPE_TX &&
16379 fdai->be_srate &&
16380 (fdai->be_srate != bedai->sample_rate)) {
16381 pr_debug("%s: flush strm %d diff BE rates\n",
16382 __func__,
16383 fdai->strm_id);
16384
16385 if (fdai->event_info.event_func)
16386 fdai->event_info.event_func(
16387 MSM_PCM_RT_EVT_BUF_RECFG,
16388 fdai->event_info.priv_data);
16389 fdai->be_srate = 0; /* might not need it */
16390 }
16391 bits_per_sample = msm_routing_get_bit_width(
16392 bedai->format);
16393
16394 app_type =
16395 fe_dai_app_type_cfg[i][session_type][be_id].app_type;
16396 if (app_type && is_lsm) {
16397 app_type_idx =
16398 msm_pcm_routing_get_lsm_app_type_idx(app_type);
16399 sample_rate =
16400 fe_dai_app_type_cfg[i][session_type][be_id]
16401 .sample_rate;
16402 bits_per_sample =
16403 lsm_app_type_cfg[app_type_idx].bit_width;
16404 } else if (app_type) {
16405 app_type_idx =
16406 msm_pcm_routing_get_app_type_idx(app_type);
16407 sample_rate =
16408 fe_dai_app_type_cfg[i][session_type]
16409 [be_id].sample_rate;
16410 bits_per_sample =
16411 app_type_cfg[app_type_idx].bit_width;
16412 } else
16413 sample_rate = bedai->sample_rate;
16414 /*
16415 * check if ADM needs to be configured with different
16416 * channel mapping than backend
16417 */
16418 if (!bedai->adm_override_ch)
16419 channels = bedai->channel;
16420 else
16421 channels = bedai->adm_override_ch;
16422 acdb_dev_id =
16423 fe_dai_app_type_cfg[i][session_type][be_id].acdb_dev_id;
16424 topology = msm_routing_get_adm_topology(i, session_type,
16425 be_id);
16426 copp_idx = adm_open(bedai->port_id, path_type,
16427 sample_rate, channels, topology,
16428 fdai->perf_mode, bits_per_sample,
16429 app_type, acdb_dev_id);
16430 if ((copp_idx < 0) ||
16431 (copp_idx >= MAX_COPPS_PER_PORT)) {
16432 pr_err("%s: adm open failed\n", __func__);
16433 mutex_unlock(&routing_lock);
16434 return -EINVAL;
16435 }
16436 pr_debug("%s: setting idx bit of fe:%d, type: %d, be:%d\n",
16437 __func__, i, session_type, be_id);
16438 set_bit(copp_idx,
16439 &session_copp_map[i][session_type][be_id]);
16440
16441 if (msm_is_resample_needed(
16442 sample_rate,
16443 bedai->sample_rate))
16444 adm_copp_mfc_cfg(
16445 bedai->port_id, copp_idx,
16446 bedai->sample_rate);
16447
16448 msm_pcm_routing_build_matrix(i, session_type, path_type,
16449 fdai->perf_mode,
16450 bedai->passthr_mode[i]);
16451 if ((fdai->perf_mode == LEGACY_PCM_MODE) &&
16452 (bedai->passthr_mode[i] == LEGACY_PCM))
16453 msm_pcm_routing_cfg_pp(bedai->port_id, copp_idx,
16454 topology, channels);
16455 }
16456 }
16457
16458 for_each_set_bit(i, &bedai->fe_sessions[0], MSM_FRONTEND_DAI_MAX) {
16459 session_id = msm_pcm_routing_get_voc_sessionid(i);
16460 if (session_id) {
16461 pr_debug("%s voice session_id: 0x%x\n", __func__,
16462 session_id);
16463
16464 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
16465 voc_path_type = RX_PATH;
16466 else
16467 voc_path_type = TX_PATH;
16468
16469 voc_set_route_flag(session_id, voc_path_type, 1);
16470
16471 memset(&voc_be_media_format, 0,
16472 sizeof(struct media_format_info));
16473
16474 voc_be_media_format.port_id = bedai->port_id;
16475 voc_be_media_format.num_channels = bedai->channel;
16476 voc_be_media_format.sample_rate = bedai->sample_rate;
16477 voc_be_media_format.bits_per_sample = bedai->format;
16478 /* Defaulting this to 1 for voice call usecases */
16479 voc_be_media_format.channel_mapping[0] = 1;
16480
16481 voc_set_device_config(session_id, voc_path_type,
16482 &voc_be_media_format);
16483
16484 if (voc_get_route_flag(session_id, RX_PATH) &&
16485 voc_get_route_flag(session_id, TX_PATH))
16486 voc_enable_device(session_id);
16487 }
16488 }
16489
16490 /* Check if backend is an external ec ref port and set as needed */
16491 if (unlikely(bedai->port_id == voc_get_ext_ec_ref_port_id())) {
16492
16493 memset(&voc_be_media_format, 0,
16494 sizeof(struct media_format_info));
16495
16496 /* Get format info for ec ref port from msm_bedais[] */
16497 voc_be_media_format.port_id = bedai->port_id;
16498 voc_be_media_format.num_channels = bedai->channel;
16499 voc_be_media_format.bits_per_sample = bedai->format;
16500 voc_be_media_format.sample_rate = bedai->sample_rate;
16501 /* Defaulting this to 1 for voice call usecases */
16502 voc_be_media_format.channel_mapping[0] = 1;
16503 voc_set_ext_ec_ref_media_fmt_info(&voc_be_media_format);
16504 pr_debug("%s: EC Ref media format info set to port_id=%d, num_channels=%d, bits_per_sample=%d, sample_rate=%d\n",
16505 __func__, voc_be_media_format.port_id,
16506 voc_be_media_format.num_channels,
16507 voc_be_media_format.bits_per_sample,
16508 voc_be_media_format.sample_rate);
16509 }
16510
16511done:
16512 mutex_unlock(&routing_lock);
16513
16514 return 0;
16515}
16516
16517static int msm_routing_send_device_pp_params(int port_id, int copp_idx,
16518 int fe_id)
16519{
16520 int index, topo_id, be_idx;
16521 unsigned long pp_config = 0;
16522 bool mute_on;
16523 int latency;
16524 bool compr_passthr_mode = true;
16525
16526 pr_debug("%s: port_id %d, copp_idx %d\n", __func__, port_id, copp_idx);
16527
16528 if (port_id != HDMI_RX && port_id != DISPLAY_PORT_RX) {
16529 pr_err("%s: Device pp params on invalid port %d\n",
16530 __func__, port_id);
16531 return -EINVAL;
16532 }
16533
16534 for (be_idx = 0; be_idx < MSM_BACKEND_DAI_MAX; be_idx++) {
16535 if (port_id == msm_bedais[be_idx].port_id)
16536 break;
16537 }
16538
16539 if (be_idx >= MSM_BACKEND_DAI_MAX) {
16540 pr_debug("%s: Invalid be id %d\n", __func__, be_idx);
16541 return -EINVAL;
16542 }
16543
16544 for (index = 0; index < MSM_BACKEND_DAI_PP_PARAMS_REQ_MAX; index++) {
16545 if (msm_bedais_pp_params[index].port_id == port_id)
16546 break;
16547 }
16548 if (index >= MSM_BACKEND_DAI_PP_PARAMS_REQ_MAX) {
16549 pr_err("%s: Invalid backend pp params index %d\n",
16550 __func__, index);
16551 return -EINVAL;
16552 }
16553
16554 topo_id = adm_get_topology_for_port_copp_idx(port_id, copp_idx);
16555 if (topo_id != COMPRESSED_PASSTHROUGH_DEFAULT_TOPOLOGY) {
16556 pr_err("%s: Invalid passthrough topology 0x%x\n",
16557 __func__, topo_id);
16558 return -EINVAL;
16559 }
16560
16561 if ((msm_bedais[be_idx].passthr_mode[fe_id] == LEGACY_PCM) ||
16562 (msm_bedais[be_idx].passthr_mode[fe_id] == LISTEN))
16563 compr_passthr_mode = false;
16564
16565 pp_config = msm_bedais_pp_params[index].pp_params_config;
16566 if (test_bit(ADM_PP_PARAM_MUTE_BIT, &pp_config)) {
16567 pr_debug("%s: ADM_PP_PARAM_MUTE\n", __func__);
16568 clear_bit(ADM_PP_PARAM_MUTE_BIT, &pp_config);
16569 mute_on = msm_bedais_pp_params[index].mute_on;
16570 if ((msm_bedais[be_idx].active) && compr_passthr_mode)
16571 adm_send_compressed_device_mute(port_id,
16572 copp_idx,
16573 mute_on);
16574 }
16575 if (test_bit(ADM_PP_PARAM_LATENCY_BIT, &pp_config)) {
16576 pr_debug("%s: ADM_PP_PARAM_LATENCY\n", __func__);
16577 clear_bit(ADM_PP_PARAM_LATENCY_BIT,
16578 &pp_config);
16579 latency = msm_bedais_pp_params[index].latency;
16580 if ((msm_bedais[be_idx].active) && compr_passthr_mode)
16581 adm_send_compressed_device_latency(port_id,
16582 copp_idx,
16583 latency);
16584 }
16585 return 0;
16586}
16587
16588static int msm_routing_put_device_pp_params_mixer(struct snd_kcontrol *kcontrol,
16589 struct snd_ctl_elem_value *ucontrol)
16590{
16591 int pp_id = ucontrol->value.integer.value[0];
16592 int port_id = 0;
16593 int index, be_idx, i, topo_id, idx;
16594 bool mute;
16595 int latency;
16596 bool compr_passthr_mode = true;
16597
16598 pr_debug("%s: pp_id: 0x%x\n", __func__, pp_id);
16599
16600 for (be_idx = 0; be_idx < MSM_BACKEND_DAI_MAX; be_idx++) {
16601 port_id = msm_bedais[be_idx].port_id;
16602 if (port_id == HDMI_RX || port_id == DISPLAY_PORT_RX)
16603 break;
16604 }
16605
16606 if (be_idx >= MSM_BACKEND_DAI_MAX) {
16607 pr_debug("%s: Invalid be id %d\n", __func__, be_idx);
16608 return -EINVAL;
16609 }
16610
16611 for (index = 0; index < MSM_BACKEND_DAI_PP_PARAMS_REQ_MAX; index++) {
16612 if (msm_bedais_pp_params[index].port_id == port_id)
16613 break;
16614 }
16615 if (index >= MSM_BACKEND_DAI_PP_PARAMS_REQ_MAX) {
16616 pr_err("%s: Invalid pp params backend index %d\n",
16617 __func__, index);
16618 return -EINVAL;
16619 }
16620
16621 for_each_set_bit(i, &msm_bedais[be_idx].fe_sessions[0],
16622 MSM_FRONTEND_DAI_MM_SIZE) {
16623 if ((msm_bedais[be_idx].passthr_mode[i] == LEGACY_PCM) ||
16624 (msm_bedais[be_idx].passthr_mode[i] == LISTEN))
16625 compr_passthr_mode = false;
16626
16627 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++) {
16628 unsigned long copp =
16629 session_copp_map[i]
16630 [SESSION_TYPE_RX][be_idx];
16631 if (!test_bit(idx, &copp))
16632 continue;
16633 topo_id = adm_get_topology_for_port_copp_idx(port_id,
16634 idx);
16635 if (topo_id != COMPRESSED_PASSTHROUGH_DEFAULT_TOPOLOGY)
16636 continue;
16637 pr_debug("%s: port: 0x%x, copp %ld, be active: %d, passt: %d\n",
16638 __func__, port_id, copp, msm_bedais[be_idx].active,
16639 msm_bedais[be_idx].passthr_mode[i]);
16640 switch (pp_id) {
16641 case ADM_PP_PARAM_MUTE_ID:
16642 pr_debug("%s: ADM_PP_PARAM_MUTE\n", __func__);
16643 mute = ucontrol->value.integer.value[1] ? true : false;
16644 msm_bedais_pp_params[index].mute_on = mute;
16645 set_bit(ADM_PP_PARAM_MUTE_BIT,
16646 &msm_bedais_pp_params[index].pp_params_config);
16647 if ((msm_bedais[be_idx].active) && compr_passthr_mode)
16648 adm_send_compressed_device_mute(port_id,
16649 idx, mute);
16650 break;
16651 case ADM_PP_PARAM_LATENCY_ID:
16652 pr_debug("%s: ADM_PP_PARAM_LATENCY\n", __func__);
16653 msm_bedais_pp_params[index].latency =
16654 ucontrol->value.integer.value[1];
16655 set_bit(ADM_PP_PARAM_LATENCY_BIT,
16656 &msm_bedais_pp_params[index].pp_params_config);
16657 latency = msm_bedais_pp_params[index].latency =
16658 ucontrol->value.integer.value[1];
16659 if ((msm_bedais[be_idx].active) && compr_passthr_mode)
16660 adm_send_compressed_device_latency(port_id,
16661 idx, latency);
16662 break;
16663 default:
16664 pr_info("%s, device pp param %d not supported\n",
16665 __func__, pp_id);
16666 break;
16667 }
16668 }
16669 }
16670 return 0;
16671}
16672
16673static int msm_routing_get_device_pp_params_mixer(struct snd_kcontrol *kcontrol,
16674 struct snd_ctl_elem_value *ucontrol)
16675{
16676 pr_debug("%s:msm_routing_get_device_pp_params_mixer", __func__);
16677 return 0;
16678}
16679
16680static const struct snd_kcontrol_new device_pp_params_mixer_controls[] = {
16681 SOC_SINGLE_MULTI_EXT("Device PP Params", SND_SOC_NOPM, 0, 0xFFFFFFFF,
16682 0, 3, msm_routing_get_device_pp_params_mixer,
16683 msm_routing_put_device_pp_params_mixer),
16684};
16685
16686static int msm_aptx_dec_license_control_get(struct snd_kcontrol *kcontrol,
16687 struct snd_ctl_elem_value *ucontrol)
16688{
16689 ucontrol->value.integer.value[0] =
16690 core_get_license_status(ASM_MEDIA_FMT_APTX);
16691 pr_debug("%s: status %ld\n", __func__,
16692 ucontrol->value.integer.value[0]);
16693 return 0;
16694}
16695
16696static int msm_aptx_dec_license_control_put(struct snd_kcontrol *kcontrol,
16697 struct snd_ctl_elem_value *ucontrol)
16698{
16699 int32_t status = 0;
16700
16701 status = core_set_license(ucontrol->value.integer.value[0],
16702 APTX_CLASSIC_DEC_LICENSE_ID);
16703 pr_debug("%s: status %d\n", __func__, status);
16704 return status;
16705}
16706
16707static const struct snd_kcontrol_new aptx_dec_license_controls[] = {
16708 SOC_SINGLE_EXT("APTX Dec License", SND_SOC_NOPM, 0,
16709 0xFFFF, 0, msm_aptx_dec_license_control_get,
16710 msm_aptx_dec_license_control_put),
16711};
16712
16713static int msm_routing_be_dai_name_table_info(struct snd_kcontrol *kcontrol,
16714 struct snd_ctl_elem_info *uinfo)
16715{
16716 uinfo->type = SNDRV_CTL_ELEM_TYPE_BYTES;
16717 uinfo->count = sizeof(be_dai_name_table);
16718 return 0;
16719}
16720
16721static int msm_routing_be_dai_name_table_tlv_get(struct snd_kcontrol *kcontrol,
16722 unsigned int __user *bytes,
16723 unsigned int size)
16724{
16725 int i;
16726 int ret;
16727
16728 if (size < sizeof(be_dai_name_table)) {
16729 pr_err("%s: invalid size %d requested, returning\n",
16730 __func__, size);
16731 ret = -EINVAL;
16732 goto done;
16733 }
16734
16735 /*
16736 * Fill be_dai_name_table from msm_bedais table to reduce code changes
16737 * needed when adding new backends
16738 */
16739 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
16740 be_dai_name_table[i].be_id = i;
16741 strlcpy(be_dai_name_table[i].be_name,
16742 msm_bedais[i].name,
16743 LPASS_BE_NAME_MAX_LENGTH);
16744 }
16745
16746 ret = copy_to_user(bytes, &be_dai_name_table,
16747 sizeof(be_dai_name_table));
16748 if (ret) {
16749 pr_err("%s: failed to copy be_dai_name_table\n", __func__);
16750 ret = -EFAULT;
16751 }
16752
16753done:
16754 return ret;
16755}
16756
16757static const struct snd_kcontrol_new
16758 msm_routing_be_dai_name_table_mixer_controls[] = {
16759 {
16760 .access = SNDRV_CTL_ELEM_ACCESS_TLV_READ |
16761 SNDRV_CTL_ELEM_ACCESS_TLV_CALLBACK,
16762 .info = msm_routing_be_dai_name_table_info,
16763 .name = "Backend DAI Name Table",
16764 .tlv.c = snd_soc_bytes_tlv_callback,
16765 .private_value = (unsigned long) &(struct soc_bytes_ext) {
16766 .max = sizeof(be_dai_name_table),
16767 .get = msm_routing_be_dai_name_table_tlv_get,
16768 }
16769 },
16770};
16771
16772static int msm_routing_stereo_channel_reverse_control_get(
16773 struct snd_kcontrol *kcontrol,
16774 struct snd_ctl_elem_value *ucontrol)
16775{
16776 ucontrol->value.integer.value[0] = swap_ch;
16777 pr_debug("%s: Swap channel value: %ld\n", __func__,
16778 ucontrol->value.integer.value[0]);
16779 return 0;
16780}
16781
16782static int msm_routing_stereo_channel_reverse_control_put(
16783 struct snd_kcontrol *kcontrol,
16784 struct snd_ctl_elem_value *ucontrol)
16785{
16786 int i, idx, be_index, port_id;
16787 int ret = 0;
16788 unsigned long copp;
16789
16790 pr_debug("%s Swap channel value:%ld\n", __func__,
16791 ucontrol->value.integer.value[0]);
16792
16793 swap_ch = ucontrol->value.integer.value[0];
16794
16795 mutex_lock(&routing_lock);
16796 for (be_index = 0; be_index < MSM_BACKEND_DAI_MAX; be_index++) {
16797 port_id = msm_bedais[be_index].port_id;
16798 if (!msm_bedais[be_index].active)
16799 continue;
16800
16801 for_each_set_bit(i, &msm_bedais[be_index].fe_sessions[0],
16802 MSM_FRONTEND_DAI_MM_SIZE) {
16803 copp = session_copp_map[i][SESSION_TYPE_RX][be_index];
16804 for (idx = 0; idx < MAX_COPPS_PER_PORT; idx++) {
16805 if (!test_bit(idx, &copp))
16806 continue;
16807
16808 pr_debug("%s: swap channel control of portid:%d, coppid:%d\n",
16809 __func__, port_id, idx);
16810 ret = adm_swap_speaker_channels(
16811 port_id, idx,
16812 msm_bedais[be_index].sample_rate,
16813 swap_ch);
16814 if (ret) {
16815 pr_err("%s:Swap_channel failed, err=%d\n",
16816 __func__, ret);
16817 goto done;
16818 }
16819 }
16820 }
16821 }
16822done:
16823 mutex_unlock(&routing_lock);
16824 return ret;
16825}
16826
16827static const struct snd_kcontrol_new stereo_channel_reverse_control[] = {
16828 SOC_SINGLE_EXT("Swap channel", SND_SOC_NOPM, 0,
16829 1, 0, msm_routing_stereo_channel_reverse_control_get,
16830 msm_routing_stereo_channel_reverse_control_put),
16831};
16832
Vignesh Kulothungan5c109922018-01-24 17:36:18 -080016833static int msm_routing_instance_id_support_info(struct snd_kcontrol *kcontrol,
16834 struct snd_ctl_elem_info *uinfo)
16835{
16836 uinfo->type = SNDRV_CTL_ELEM_TYPE_BOOLEAN;
16837 uinfo->count = 1;
16838 return 0;
16839}
16840
16841static int msm_routing_instance_id_support_put(
16842 struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol)
16843{
16844 bool supported = ucontrol->value.integer.value[0] ? true : false;
16845
16846 q6common_update_instance_id_support(supported);
16847 return 0;
16848}
16849
16850static int msm_routing_instance_id_support_get(
16851 struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol)
16852{
16853 bool supported = false;
16854
16855 supported = q6common_is_instance_id_supported();
16856 ucontrol->value.integer.value[0] = supported ? 1 : 0;
16857
16858 return 0;
16859}
16860
16861static const struct snd_kcontrol_new
16862 msm_routing_feature_support_mixer_controls[] = {
16863 {
16864 .access = SNDRV_CTL_ELEM_ACCESS_READ |
16865 SNDRV_CTL_ELEM_ACCESS_WRITE,
16866 .info = msm_routing_instance_id_support_info,
16867 .name = "Instance ID Support",
16868 .put = msm_routing_instance_id_support_put,
16869 .get = msm_routing_instance_id_support_get,
16870 },
16871};
16872
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016873static const struct snd_pcm_ops msm_routing_pcm_ops = {
16874 .hw_params = msm_pcm_routing_hw_params,
16875 .close = msm_pcm_routing_close,
16876 .prepare = msm_pcm_routing_prepare,
16877};
16878
16879/* Not used but frame seems to require it */
16880static int msm_routing_probe(struct snd_soc_platform *platform)
16881{
16882 snd_soc_dapm_new_controls(&platform->component.dapm, msm_qdsp6_widgets,
16883 ARRAY_SIZE(msm_qdsp6_widgets));
16884 snd_soc_dapm_add_routes(&platform->component.dapm, intercon,
16885 ARRAY_SIZE(intercon));
16886
16887 snd_soc_dapm_new_widgets(platform->component.dapm.card);
16888
16889 snd_soc_add_platform_controls(platform, lsm_controls,
16890 ARRAY_SIZE(lsm_controls));
16891
16892 snd_soc_add_platform_controls(platform, aanc_slim_0_rx_mux,
16893 ARRAY_SIZE(aanc_slim_0_rx_mux));
16894
16895 snd_soc_add_platform_controls(platform, msm_voc_session_controls,
16896 ARRAY_SIZE(msm_voc_session_controls));
16897
16898 snd_soc_add_platform_controls(platform, app_type_cfg_controls,
16899 ARRAY_SIZE(app_type_cfg_controls));
16900
16901 snd_soc_add_platform_controls(platform, lsm_app_type_cfg_controls,
16902 ARRAY_SIZE(lsm_app_type_cfg_controls));
16903
Vikram Pandurangaee9c03a2017-09-07 15:06:17 -070016904 snd_soc_add_platform_controls(platform, module_cfg_controls,
16905 ARRAY_SIZE(module_cfg_controls));
16906
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016907 snd_soc_add_platform_controls(platform,
16908 stereo_to_custom_stereo_controls,
16909 ARRAY_SIZE(stereo_to_custom_stereo_controls));
16910
16911 snd_soc_add_platform_controls(platform, ec_ref_param_controls,
16912 ARRAY_SIZE(ec_ref_param_controls));
16913
16914 snd_soc_add_platform_controls(platform, channel_mixer_controls,
16915 ARRAY_SIZE(channel_mixer_controls));
16916
16917 msm_qti_pp_add_controls(platform);
16918
16919 msm_dts_srs_tm_add_controls(platform);
16920
16921 msm_dolby_dap_add_controls(platform);
16922
16923 snd_soc_add_platform_controls(platform,
16924 use_ds1_or_ds2_controls,
16925 ARRAY_SIZE(use_ds1_or_ds2_controls));
16926
16927 snd_soc_add_platform_controls(platform,
16928 device_pp_params_mixer_controls,
16929 ARRAY_SIZE(device_pp_params_mixer_controls));
16930
16931 snd_soc_add_platform_controls(platform,
16932 msm_routing_be_dai_name_table_mixer_controls,
16933 ARRAY_SIZE(msm_routing_be_dai_name_table_mixer_controls));
16934
16935 snd_soc_add_platform_controls(platform, msm_source_tracking_controls,
16936 ARRAY_SIZE(msm_source_tracking_controls));
16937 snd_soc_add_platform_controls(platform, adm_channel_config_controls,
16938 ARRAY_SIZE(adm_channel_config_controls));
16939
16940 snd_soc_add_platform_controls(platform, aptx_dec_license_controls,
16941 ARRAY_SIZE(aptx_dec_license_controls));
16942 snd_soc_add_platform_controls(platform, stereo_channel_reverse_control,
16943 ARRAY_SIZE(stereo_channel_reverse_control));
Vignesh Kulothungan5c109922018-01-24 17:36:18 -080016944 snd_soc_add_platform_controls(
16945 platform, msm_routing_feature_support_mixer_controls,
16946 ARRAY_SIZE(msm_routing_feature_support_mixer_controls));
16947
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053016948 return 0;
16949}
16950
16951int msm_routing_pcm_new(struct snd_soc_pcm_runtime *runtime)
16952{
16953 return msm_pcm_routing_hwdep_new(runtime, msm_bedais);
16954}
16955
16956void msm_routing_pcm_free(struct snd_pcm *pcm)
16957{
16958 msm_pcm_routing_hwdep_free(pcm);
16959}
16960
16961static struct snd_soc_platform_driver msm_soc_routing_platform = {
16962 .ops = &msm_routing_pcm_ops,
16963 .probe = msm_routing_probe,
16964 .pcm_new = msm_routing_pcm_new,
16965 .pcm_free = msm_routing_pcm_free,
16966};
16967
16968static int msm_routing_pcm_probe(struct platform_device *pdev)
16969{
16970
16971 dev_dbg(&pdev->dev, "dev name %s\n", dev_name(&pdev->dev));
16972 return snd_soc_register_platform(&pdev->dev,
16973 &msm_soc_routing_platform);
16974}
16975
16976static int msm_routing_pcm_remove(struct platform_device *pdev)
16977{
16978 snd_soc_unregister_platform(&pdev->dev);
16979 return 0;
16980}
16981
16982static const struct of_device_id msm_pcm_routing_dt_match[] = {
16983 {.compatible = "qcom,msm-pcm-routing"},
16984 {}
16985};
16986MODULE_DEVICE_TABLE(of, msm_pcm_routing_dt_match);
16987
16988static struct platform_driver msm_routing_pcm_driver = {
16989 .driver = {
16990 .name = "msm-pcm-routing",
16991 .owner = THIS_MODULE,
16992 .of_match_table = msm_pcm_routing_dt_match,
16993 },
16994 .probe = msm_routing_pcm_probe,
16995 .remove = msm_routing_pcm_remove,
16996};
16997
16998int msm_routing_check_backend_enabled(int fedai_id)
16999{
17000 int i;
17001
17002 if (fedai_id > MSM_FRONTEND_DAI_MM_MAX_ID) {
17003 /* bad ID assigned in machine driver */
17004 pr_err("%s: bad MM ID\n", __func__);
17005 return 0;
17006 }
17007 for (i = 0; i < MSM_BACKEND_DAI_MAX; i++) {
17008 if (test_bit(fedai_id, &msm_bedais[i].fe_sessions[0]))
17009 return msm_bedais[i].active;
17010 }
17011 return 0;
17012}
17013
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053017014static int get_cal_type_index(int32_t cal_type)
17015{
17016 int ret = -EINVAL;
17017
17018 switch (cal_type) {
17019 case ADM_TOPOLOGY_CAL_TYPE:
17020 ret = ADM_TOPOLOGY_CAL_TYPE_IDX;
17021 break;
17022 case ADM_LSM_TOPOLOGY_CAL_TYPE:
17023 ret = ADM_LSM_TOPOLOGY_CAL_TYPE_IDX;
17024 break;
17025 default:
17026 pr_err("%s: Invalid cal type %d\n", __func__, cal_type);
17027 }
17028 return ret;
17029}
17030
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017031static int msm_routing_set_cal(int32_t cal_type,
17032 size_t data_size, void *data)
17033{
17034 int ret = 0;
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053017035 int cal_index;
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017036 pr_debug("%s\n", __func__);
17037
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053017038 cal_index = get_cal_type_index(cal_type);
17039 if (cal_index < 0) {
17040 pr_err("%s: Could not get cal index %d\n",
17041 __func__, cal_index);
17042 ret = -EINVAL;
17043 goto done;
17044 }
17045
17046 ret = cal_utils_set_cal(data_size, data, cal_data[cal_index], 0, NULL);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017047 if (ret < 0) {
17048 pr_err("%s: cal_utils_set_cal failed, ret = %d, cal type = %d!\n",
17049 __func__, ret, cal_type);
17050 ret = -EINVAL;
17051 goto done;
17052 }
17053done:
17054 return ret;
17055}
17056
17057static void msm_routing_delete_cal_data(void)
17058{
17059 pr_debug("%s\n", __func__);
17060
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053017061 cal_utils_destroy_cal_types(MAX_ROUTING_CAL_TYPES, &cal_data[0]);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017062}
17063
17064static int msm_routing_init_cal_data(void)
17065{
17066 int ret = 0;
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053017067 struct cal_type_info cal_type_info[] = {
17068 {{ADM_TOPOLOGY_CAL_TYPE,
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017069 {NULL, NULL, NULL,
17070 msm_routing_set_cal, NULL, NULL} },
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053017071 {NULL, NULL, cal_utils_match_buf_num} },
17072
17073 {{ADM_LSM_TOPOLOGY_CAL_TYPE,
17074 {NULL, NULL, NULL,
17075 msm_routing_set_cal, NULL, NULL} },
17076 {NULL, NULL, cal_utils_match_buf_num} },
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017077 };
17078 pr_debug("%s\n", __func__);
17079
Aditya Bavanari2a627ae2017-11-21 20:24:53 +053017080 ret = cal_utils_create_cal_types(MAX_ROUTING_CAL_TYPES, &cal_data[0],
17081 &cal_type_info[0]);
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017082 if (ret < 0) {
17083 pr_err("%s: could not create cal type!\n",
17084 __func__);
17085 ret = -EINVAL;
17086 goto err;
17087 }
17088
17089 return ret;
17090err:
17091 msm_routing_delete_cal_data();
17092 return ret;
17093}
17094
Laxminath Kasam8b1366a2017-10-05 01:44:16 +053017095int __init msm_soc_routing_platform_init(void)
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017096{
17097 mutex_init(&routing_lock);
17098 if (msm_routing_init_cal_data())
17099 pr_err("%s: could not init cal data!\n", __func__);
17100
17101 afe_set_routing_callback(
17102 (routing_cb)msm_pcm_get_dev_acdb_id_by_port_id);
17103
17104 memset(&be_dai_name_table, 0, sizeof(be_dai_name_table));
17105 memset(&last_be_id_configured, 0, sizeof(last_be_id_configured));
17106
17107 return platform_driver_register(&msm_routing_pcm_driver);
17108}
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017109
Asish Bhattacharya5faacb32017-12-04 17:23:15 +053017110void msm_soc_routing_platform_exit(void)
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017111{
17112 msm_routing_delete_cal_data();
17113 memset(&be_dai_name_table, 0, sizeof(be_dai_name_table));
17114 mutex_destroy(&routing_lock);
17115 platform_driver_unregister(&msm_routing_pcm_driver);
17116}
Asish Bhattacharya8e2277f2017-07-20 18:31:55 +053017117
17118MODULE_DESCRIPTION("MSM routing platform driver");
17119MODULE_LICENSE("GPL v2");